thanks for the update, matthew. applied, -len On Wednesday 06 February 2008 20:44, Matthew Garrett wrote: > Vendors often ship machines with a choice of integrated or discrete > graphics, and use the same DSDT for both. As a result, the ACPI video > module will locate devices that may not exist on this specific platform. > Attempt to determine whether the device exists or not, and abort the\ > device creation if it doesn't > > Signed-off-by: Matthew Garrett <mjg59@xxxxxxxxxxxxx> > --- > > diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c > index 09a85eb..11c8335 100644 > --- a/drivers/acpi/video.c > +++ b/drivers/acpi/video.c > @@ -735,11 +735,40 @@ static void acpi_video_bus_find_cap(struct acpi_video_bus *video) > static int acpi_video_bus_check(struct acpi_video_bus *video) > { > acpi_status status = -ENOENT; > - > + long device_id; > + struct device *dev; > + struct acpi_device *device; > > if (!video) > return -EINVAL; > > + device = video->device; > + > + status = > + acpi_evaluate_integer(device->handle, "_ADR", NULL, &device_id); > + > + if (!ACPI_SUCCESS(status)) > + return -ENODEV; > + > + /* We need to attempt to determine whether the _ADR refers to a > + PCI device or not. There's no terribly good way to do this, > + so the best we can hope for is to assume that there'll never > + be a video device in the host bridge */ > + if (device_id >= 0x10000) { > + /* It looks like a PCI device. Does it exist? */ > + dev = acpi_get_physical_device(device->handle); > + } else { > + /* It doesn't look like a PCI device. Does its parent > + exist? */ > + acpi_handle phandle; > + if (acpi_get_parent(device->handle, &phandle)) > + return -ENODEV; > + dev = acpi_get_physical_device(phandle); > + } > + if (!dev) > + return -ENODEV; > + put_device(dev); > + > /* Since there is no HID, CID and so on for VGA driver, we have > * to check well known required nodes. > */ > - 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