diff mbox

[v2] drm/i915: refine qemu south bridge detection

Message ID 1453719748-10944-1-git-send-email-kraxel@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Gerd Hoffmann Jan. 25, 2016, 11:02 a.m. UTC
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.

[ v2: fix subvendor tyops ]

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(-)

Comments

Bruno Wolff III Jan. 26, 2016, 8:57 a.m. UTC | #1
On Mon, Jan 25, 2016 at 12:02:28 +0100,
  Gerd Hoffmann <kraxel@redhat.com> wrote:
>
>Refine the check by additionally verifying the pci
>subsystem id to see whenever it *really* is qemu.
>
>[ v2: fix subvendor tyops ]

I tested this patch on my laptop that was getting a black screen part way 
through the boot process and it fixed things.
Bruno Wolff III Jan. 28, 2016, 4:07 p.m. UTC | #2
On Mon, Jan 25, 2016 at 12:02:28 +0100,
  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.
>
>[ v2: fix subvendor tyops ]

I haven't seen this patch (or a revert of 39bfcd52) show up in the intel 
drm repos yet. Has anyone asked for this tpo be included? Is there some 
problem with the patch? (It works for me.)
Jani Nikula Jan. 29, 2016, 7:06 a.m. UTC | #3
On Thu, 28 Jan 2016, Bruno Wolff III <bruno@wolff.to> wrote:
> On Mon, Jan 25, 2016 at 12:02:28 +0100,
>   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.
>>
>>[ v2: fix subvendor tyops ]
>
> I haven't seen this patch (or a revert of 39bfcd52) show up in the intel 
> drm repos yet. Has anyone asked for this tpo be included? Is there some 
> problem with the patch? (It works for me.)

Pushed to drm-intel-next-queued, thanks for the patch and testing.

BR,
Jani.
Jani Nikula Jan. 29, 2016, 7:59 a.m. UTC | #4
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.
>
> [ v2: fix subvendor tyops ]

Incidentally, I just spotted [1]. Gerd, could you review that one
please, and (once it gets merged) post a follow-up changing our magic
numbers to those constants as well?

Thanks,
Jani.


[1] http://mid.gmane.org/1453739846-3549-1-git-send-email-robbat2@gentoo.org



>
> 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..f357058 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 == 0x1af4 &&
> +				    pch->subsystem_device == 0x1100)) {
>  				dev_priv->pch_type = intel_virt_detect_pch(dev);
>  			} else
>  				continue;
Gerd Hoffmann Jan. 29, 2016, 8:49 a.m. UTC | #5
On Fr, 2016-01-29 at 09:59 +0200, Jani Nikula wrote:
> 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.
> >
> > [ v2: fix subvendor tyops ]
> 
> Incidentally, I just spotted [1]. Gerd, could you review that one
> please,

Done.

> and (once it gets merged) post a follow-up changing our magic
> numbers to those constants as well?

Sure.

cheers,
  Gerd
Jani Nikula Jan. 29, 2016, 9:03 a.m. UTC | #6
On Fri, 29 Jan 2016, Gerd Hoffmann <kraxel@redhat.com> wrote:
> On Fr, 2016-01-29 at 09:59 +0200, Jani Nikula wrote:
>> 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.
>> >
>> > [ v2: fix subvendor tyops ]
>> 
>> Incidentally, I just spotted [1]. Gerd, could you review that one
>> please,
>
> Done.
>
>> and (once it gets merged) post a follow-up changing our magic
>> numbers to those constants as well?
>
> Sure.

Many thanks,
Jani.
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 3ac616d..f357058 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 == 0x1af4 &&
+				    pch->subsystem_device == 0x1100)) {
 				dev_priv->pch_type = intel_virt_detect_pch(dev);
 			} else
 				continue;