Commit 28284943 authored by Zhenyu Wang's avatar Zhenyu Wang
Browse files

drm/i915/gvt: Fix port number for BDW on EDID region setup



Current BDW virtual display port is initialized as PORT_B, so need
to use same port for VFIO EDID region, otherwise invalid EDID blob
pointer is assigned which caused kernel null pointer reference. We
might evaluate actual display hotplug for BDW to make this function
work as expected, anyway this is always required to be fixed first.

Reported-by: default avatarAlejandro Sior <aho@sior.be>
Cc: Alejandro Sior <aho@sior.be>
Fixes: 0178f4ce ("drm/i915/gvt: Enable vfio edid for all GVT supported platform")
Reviewed-by: default avatarHang Yuan <hang.yuan@intel.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20200914030302.2775505-1-zhenyuw@linux.intel.com
parent a291e4fb
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -367,6 +367,7 @@ void intel_gvt_destroy_idle_vgpu(struct intel_vgpu *vgpu)
static struct intel_vgpu *__intel_gvt_create_vgpu(struct intel_gvt *gvt,
		struct intel_vgpu_creation_params *param)
{
	struct drm_i915_private *dev_priv = gvt->gt->i915;
	struct intel_vgpu *vgpu;
	int ret;

@@ -434,6 +435,9 @@ static struct intel_vgpu *__intel_gvt_create_vgpu(struct intel_gvt *gvt,
	if (ret)
		goto out_clean_sched_policy;

	if (IS_BROADWELL(dev_priv))
		ret = intel_gvt_hypervisor_set_edid(vgpu, PORT_B);
	else
		ret = intel_gvt_hypervisor_set_edid(vgpu, PORT_D);
	if (ret)
		goto out_clean_sched_policy;