Message ID | 1453708558-24184-1-git-send-email-kraxel@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, 25 Jan 2016, Gerd Hoffmann <kraxel@redhat.com> wrote: > The test for the qemu q35 south bridge added by commit > "39bfcd52 drm/i915: more virtual south bridge detection" > also matches on real hardware. Having the check for > virtual systems last in the list is not enough to avoid > that ... > > Refine the check by additionally verifying the pci > subsystem id to see whenever it *really* is qemu. > > Reported-by: Bjørn Mork <bjorn@mork.no> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Already sent the revert in [1], but I'm fine with this if it works for Bjørn. BR, Jani. [1] http://mid.gmane.org/1453710360-30099-1-git-send-email-jani.nikula@intel.com > --- > drivers/gpu/drm/i915/i915_drv.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index 3ac616d..9668162 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -501,7 +501,9 @@ void intel_detect_pch(struct drm_device *dev) > WARN_ON(!IS_SKYLAKE(dev) && > !IS_KABYLAKE(dev)); > } else if ((id == INTEL_PCH_P2X_DEVICE_ID_TYPE) || > - (id == INTEL_PCH_QEMU_DEVICE_ID_TYPE)) { > + ((id == INTEL_PCH_QEMU_DEVICE_ID_TYPE) && > + pch->subsystem_vendor == 0x1a4f && > + pch->subsystem_device == 0x1100)) { > dev_priv->pch_type = intel_virt_detect_pch(dev); > } else > continue;
Jani Nikula <jani.nikula@linux.intel.com> writes: > On Mon, 25 Jan 2016, Gerd Hoffmann <kraxel@redhat.com> wrote: >> The test for the qemu q35 south bridge added by commit >> "39bfcd52 drm/i915: more virtual south bridge detection" >> also matches on real hardware. Having the check for >> virtual systems last in the list is not enough to avoid >> that ... >> >> Refine the check by additionally verifying the pci >> subsystem id to see whenever it *really* is qemu. >> >> Reported-by: Bjørn Mork <bjorn@mork.no> >> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > > Already sent the revert in [1], but I'm fine with this if it works for > Bjørn. Gerd's fix works fine for me (of course). Tested it now just to be 100% sure, although it was pretty obvious from the code that it would have the same effect as an revert on my system. But I have a feeling Gerd might want to send you a v2 of it in any case... I was curious about this QEMU subsystem vendor ID, so I went grepping for it - and found nothing! |> + pch->subsystem_vendor == 0x1a4f && |> + pch->subsystem_device == 0x1100)) { Looks like a typo: bjorn@nemi:/usr/local/src/git/qemu$ git grep PCI_SUBVENDOR_ID_REDHAT_QUMRANET hw/pci/pci.c:static uint16_t pci_default_sub_vendor_id = PCI_SUBVENDOR_ID_REDHAT_QUMRANET; include/hw/pci/pci.h:#define PCI_SUBVENDOR_ID_REDHAT_QUMRANET 0x1af4 0x1af4 != 0x1a4f Thanks a lot both of you for a really fast fix. But it seems Gerd was a little too fast :) Bjørn
Hi,
> 0x1af4 != 0x1a4f
Good catch, new patch sent.
thanks,
Gerd
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 3ac616d..9668162 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -501,7 +501,9 @@ void intel_detect_pch(struct drm_device *dev) WARN_ON(!IS_SKYLAKE(dev) && !IS_KABYLAKE(dev)); } else if ((id == INTEL_PCH_P2X_DEVICE_ID_TYPE) || - (id == INTEL_PCH_QEMU_DEVICE_ID_TYPE)) { + ((id == INTEL_PCH_QEMU_DEVICE_ID_TYPE) && + pch->subsystem_vendor == 0x1a4f && + pch->subsystem_device == 0x1100)) { dev_priv->pch_type = intel_virt_detect_pch(dev); } else continue;
The test for the qemu q35 south bridge added by commit "39bfcd52 drm/i915: more virtual south bridge detection" also matches on real hardware. Having the check for virtual systems last in the list is not enough to avoid that ... Refine the check by additionally verifying the pci subsystem id to see whenever it *really* is qemu. Reported-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- drivers/gpu/drm/i915/i915_drv.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)