diff mbox

ACPI video: print out a warning message when duplicate video bus devices under the same VGA controller are detected

Message ID 1259140608.10510.62.camel@rzhang1-desktop (mailing list archive)
State RFC, archived
Headers show

Commit Message

Zhang, Rui Nov. 25, 2009, 9:16 a.m. UTC
None
diff mbox

Patch

Index: linux-2.6/drivers/acpi/video.c
===================================================================
--- linux-2.6.orig/drivers/acpi/video.c
+++ linux-2.6/drivers/acpi/video.c
@@ -2233,12 +2233,36 @@  static int acpi_video_resume(struct acpi
 	return AE_OK;
 }
 
+static acpi_status
+acpi_video_bus_match(acpi_handle handle, u32 level, void *context,
+			void **return_value)
+{
+	struct acpi_device *device = context;
+	struct acpi_device *sibling;
+	int result;
+
+	if (handle == device->handle)
+		return AE_CTRL_TERMINATE;
+
+	result = acpi_bus_get_device(handle, &sibling);
+	if (result)
+		return AE_OK;
+
+	if (!strcmp(acpi_device_name(sibling), ACPI_VIDEO_BUS_NAME))
+		printk(KERN_WARNING FW_BUG "Duplicate ACPI video bus "
+				"devices for the same VGA controller\n");
+	return AE_OK;
+}
+
 static int acpi_video_bus_add(struct acpi_device *device)
 {
 	struct acpi_video_bus *video;
 	struct input_dev *input;
 	int error;
 
+	acpi_walk_namespace(ACPI_TYPE_DEVICE, device->parent->handle,
+			    1, acpi_video_bus_match, device, NULL);
+
 	video = kzalloc(sizeof(struct acpi_video_bus), GFP_KERNEL);
 	if (!video)
 		return -ENOMEM;