Re: [Q] How to tell we're using the KMS (during suspend/resume) outside the graphics driver

From: Pauli Nieminen
Date: Wed Mar 10 2010 - 05:54:57 EST


On Wed, Mar 10, 2010 at 7:50 AM, Paul Mundt <lethal@xxxxxxxxxxxx> wrote:
> On Tue, Mar 09, 2010 at 10:08:28PM +0100, Rafael J. Wysocki wrote:
>> On Tuesday 09 March 2010, James Simmons wrote:
>> >
>> > > > > Second, in the KMS case, we'd be able to skip the kernel VT switch, because
>> > > > > the KMS driver uses its own framebuffer anyway.
>> > > > >
>> > > > > So, is there any reasonable way to check that from the outside of the graphics
>> > > > > driver?  It should be general enough to cover the cases when there are two
>> > > > > graphics adapters with different drivers in the system and so forth.
>> > > >
>> > > > Inside the kernel? If you have a struct pci_dev you can get the
>> > > > associated struct drm_device with pci_get_drvdata and then check the
>> > > > KMS feature: drm_core_check_feature(dev, DRIVER_MODESET).
>> > >
>> > > Yeah, I know that.
>> > >
>> > > > I'm note sure how to check that a device is graphic card though :|
>> > >
>> > > Well, that's the "outside of the graphics driver" part of my question. :-)
>> >
>> > if ((pdev->class >> 8) == PCI_CLASS_DISPLAY_VGA)
>> >     ....
>>
>> I'm not sure if searching through all PCI devices really is an option.
>>
> Why not? The VGA arbitration code tracks a list of VGA class devices, so
> could easily be queried. It looks like it might need a bit more work for
> PCI hotplug, but it should already have all of the infrastructure you
> need for getting at the pdev for the suspend/resume case.
>
>

It would be better to add interface that can be used to query if a
graphic device supports KMS. This should support multi-gpu setups at
least. I don't think anything prevents running mixed system where
secundary gpu is driven by UMS code in X.

Are you sure that all vga class devices have private device data that
matches private drm_device structure?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/