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(-)
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;
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
dri-devel@lists.freedesktop.org