Commit 3de49a73 authored by Zhenyu Wang's avatar Zhenyu Wang
Browse files

drm/i915/gvt: remove detect_host() MPT hook



We only depend on pvinfo register for GVT-g state detection,
not require hypervisor host detect any more.

Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
parent d2896e34
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -68,8 +68,6 @@ static const struct intel_gvt_ops intel_gvt_ops = {
 */
int intel_gvt_init_host(void)
{
	int ret;

	if (intel_gvt_host.initialized)
		return 0;

@@ -103,11 +101,6 @@ int intel_gvt_init_host(void)
	if (!intel_gvt_host.mpt)
		return -EINVAL;

	/* Try to detect if we're running in host instead of VM. */
	ret = intel_gvt_hypervisor_detect_host();
	if (ret)
		return -ENODEV;

	gvt_dbg_core("Running with hypervisor %s in host mode\n",
			supported_hypervisors[intel_gvt_host.hypervisor_type]);

+0 −1
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@
 * both Xen and KVM by providing dedicated hypervisor-related MPT modules.
 */
struct intel_gvt_mpt {
	int (*detect_host)(void);
	int (*host_init)(struct device *dev, void *gvt, const void *ops);
	void (*host_exit)(struct device *dev, void *gvt);
	int (*attach_vgpu)(void *vgpu, unsigned long *handle);
+0 −32
Original line number Diff line number Diff line
@@ -1248,37 +1248,6 @@ static void kvmgt_page_track_flush_slot(struct kvm *kvm,
	spin_unlock(&kvm->mmu_lock);
}

static bool kvmgt_check_guest(void)
{
	unsigned int eax, ebx, ecx, edx;
	char s[12];
	unsigned int *i;

	eax = KVM_CPUID_SIGNATURE;
	ebx = ecx = edx = 0;

	asm volatile ("cpuid"
		      : "+a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx)
		      :
		      : "cc", "memory");
	i = (unsigned int *)s;
	i[0] = ebx;
	i[1] = ecx;
	i[2] = edx;

	return !strncmp(s, "KVMKVMKVM", strlen("KVMKVMKVM"));
}

/**
 * NOTE:
 * It's actually impossible to check if we are running in KVM host,
 * since the "KVM host" is simply native. So we only dectect guest here.
 */
static int kvmgt_detect_host(void)
{
	return kvmgt_check_guest() ? -ENODEV : 0;
}

static bool __kvmgt_vgpu_exist(struct intel_vgpu *vgpu, struct kvm *kvm)
{
	struct intel_vgpu *itr;
@@ -1453,7 +1422,6 @@ static unsigned long kvmgt_virt_to_pfn(void *addr)
}

struct intel_gvt_mpt kvmgt_mpt = {
	.detect_host = kvmgt_detect_host,
	.host_init = kvmgt_host_init,
	.host_exit = kvmgt_host_exit,
	.attach_vgpu = kvmgt_attach_vgpu,
+0 −12
Original line number Diff line number Diff line
@@ -43,18 +43,6 @@
 * hypervisor.
 */

/**
 * intel_gvt_hypervisor_detect_host - check if GVT-g is running within
 * hypervisor host/privilged domain
 *
 * Returns:
 * Zero on success, -ENODEV if current kernel is running inside a VM
 */
static inline int intel_gvt_hypervisor_detect_host(void)
{
	return intel_gvt_host.mpt->detect_host();
}

/**
 * intel_gvt_hypervisor_host_init - init GVT-g host side
 *