Hi Matthew,
I posted this one already and you had some concerns about it:
http://www.mail-archive.com/[email protected]/msg09510.html
IMO, this one should still be added to -mm, because:
- The patch itself is correct, it is the function that is called
that must make sure to return the corresponding pci device
- There currently is a bug: Lenovos will register a device for which
no physical device exists.
- That means on these machines HW is addressed/poked
which does not exist -> danger.
- There is no other way to fix up acpi_get_physical_device, than to
just do this change (at least I don't see it). People have to
complain that their device is not found (the message they see in
dmesg is obvious).
Then we can make acpi_get_physical_device more robust, which will
come out as a benefit for other functionality too sooner or later to
be able to rely on getting struct pci in the video (and possibly
other) driver(s).
What do you think?
---------------
Recent Lenovo ThinkPads define a dummy grahpics device, find it and ignore it
Signed-off-by: Thomas Renninger <[EMAIL PROTECTED]>
---
drivers/acpi/video.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
Index: linux-2.6/drivers/acpi/video.c
===================================================================
--- linux-2.6.orig/drivers/acpi/video.c
+++ linux-2.6/drivers/acpi/video.c
@@ -35,6 +35,7 @@
#include <linux/input.h>
#include <linux/backlight.h>
#include <linux/video_output.h>
+#include <linux/acpi.h>
#include <asm/uaccess.h>
#include <acpi/acpi_bus.h>
@@ -1896,6 +1897,21 @@ static int acpi_video_bus_add(struct acp
struct acpi_video_bus *video;
struct input_dev *input;
int error;
+ struct device *dev;
+
+
+ /*
+ * Check whether we have really a graphics device physically
+ * in the slot and registered at the system.
+ */
+ dev = acpi_get_physical_device(device->handle);
+ if (!dev) {
+ printk (KERN_DEBUG PREFIX "Video device %s.%s not physically"
+ " connected, ignoring\n", acpi_device_bid(device),
+ device->parent ? acpi_device_bid(device->parent) : "");
+ return -ENODEV;
+ }
+ put_device(dev);
video = kzalloc(sizeof(struct acpi_video_bus), GFP_KERNEL);
if (!video)
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html