Re: [PATCH] Recent Lenovo ThinkPads define a dummy grahpics device, find it and ignore it

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've had more time to look at this now. Let's take one of the most 
pathological cases, the Dell d610. It's available with either Intel or 
ATI graphics. The DSDT declares three video devices. Two are called VID, 
the third is called VID2. I'll call the first two VID(a) and VID(b) to 
reduce confusion.

The layout is as follows:

              host bridge (_ADR 0x00)
                       |
                       |
                      / \
                     /   \
AGP (_ADR 0x00010000)    |
           |            / \
           |           /   \
VID(a) (_ADR 0x00)    /     \
VID(b) (_ADR 0x00020000)    VID2 (_ADR 0x00020001)

If we call acpi_get_physical_device on VID(a), we'll get nothing - there 
isn't a corresponding physical device. Therefore we have to call it on 
the parent, and so will get the AGP bridge if the machine is configured 
that way. If not, we can be sure that VID(a) doesn't exist.

If we call acpi_get_physical_device on VID(b), then either the device 
exists and we get something, or the device doesn't exist and we don't. 
In the second case, how do we distinguish between that being because the 
device doesn't exist and that being because the physical device is the 
parent? If we call acpi_get_physical_device on the parent of VID(b), 
then we'll hit the host bridge and we'll get a PCI device back. This 
then looks almost identical to the AGP bridge case.

There are two things we can do here. The first is to examine the _ADR 
field and use that to determine whether we should look at the parent or 
not (if it's parsable as a PCI address, look at the current device. If 
not, look at the parent device). The second is to always look at the 
parent device and ignore it if the host bridge is returned.

I think the first approach is probably better, since it doesn't result 
in us depending on the vagueries of bus topology. However, I'm concerned 
about the inherent assumption it makes about video devices being 
PCI-like. That's true now, but I'm aware of at least one forthcoming 
platform where that may not be the case. The spec certainly doesn't 
require it. I'll try to come up with a patch in any case.

-- 
Matthew Garrett | mjg59@xxxxxxxxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux