Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.6.
 1// SPDX-License-Identifier: MIT
 2/*
 3 * Copyright © 2023 Intel Corporation
 4 */
 5
 6#include "xe_assert.h"
 7#include "xe_sriov.h"
 8
 9/**
10 * xe_sriov_mode_to_string - Convert enum value to string.
11 * @mode: the &xe_sriov_mode to convert
12 *
13 * Returns: SR-IOV mode as a user friendly string.
14 */
15const char *xe_sriov_mode_to_string(enum xe_sriov_mode mode)
16{
17	switch (mode) {
18	case XE_SRIOV_MODE_NONE:
19		return "none";
20	case XE_SRIOV_MODE_PF:
21		return "SR-IOV PF";
22	case XE_SRIOV_MODE_VF:
23		return "SR-IOV VF";
24	default:
25		return "<invalid>";
26	}
27}
28
29/**
30 * xe_sriov_probe_early - Probe a SR-IOV mode.
31 * @xe: the &xe_device to probe mode on
32 * @has_sriov: flag indicating hardware support for SR-IOV
33 *
34 * This function should be called only once and as soon as possible during
35 * driver probe to detect whether we are running a SR-IOV Physical Function
36 * (PF) or a Virtual Function (VF) device.
37 *
38 * SR-IOV PF mode detection is based on PCI @dev_is_pf() function.
39 * SR-IOV VF mode detection is based on dedicated MMIO register read.
40 */
41void xe_sriov_probe_early(struct xe_device *xe, bool has_sriov)
42{
43	enum xe_sriov_mode mode = XE_SRIOV_MODE_NONE;
44
45	/* TODO: replace with proper mode detection */
46	xe_assert(xe, !has_sriov);
47
48	xe_assert(xe, !xe->sriov.__mode);
49	xe->sriov.__mode = mode;
50	xe_assert(xe, xe->sriov.__mode);
51
52	if (has_sriov)
53		drm_info(&xe->drm, "Running in %s mode\n",
54			 xe_sriov_mode_to_string(xe_device_sriov_mode(xe)));
55}