Skip to contentSkip to conversation

Repost: acpi_ibm_notify.patch

PATCH New Thomas Renninger 1 participant 1 message Aug 1, 2006 ACPI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Repost: acpi_ibm_notify.patch

This one already got the OK of Borislav (ibm_acpi author) See mail:

	Subject: Re: [PATCH] Fix Thinkpad A21m shutdown
	Date: Wed, 12 Apr 2006

on this list.

Fix Thinkpad A21m shutdown

The A21m Thinkpad (maybe also be others, T21,..) have an ACPI GDCK method and an ACPI DOCK device.
It seems that on others machines the GDCK is the docking device. Installing the notify handler for a GDCK fails if it is a method an not a device.
When module is unloaded it is tried to remove the never installed notify handler for the GDCK method which seems to freeze the machine.
Fix: Do not set notify_installed when installing the notify handler fails.

Reference: https://bugzilla.novell.org/show_bug.cgi?id=150851

 drivers/acpi/ibm_acpi.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
drivers/acpi/ibm_acpi.c +4 -2
Index: linux-2.6.18-rc2/drivers/acpi/ibm_acpi.c
===================================================================
@@ -1789,12 +1789,12 @@ static int __init setup_notify(struct ib
 	int ret;
 
 	if (!*ibm->handle)
-		return 0;
+		return 1;
 
 	ret = acpi_bus_get_device(*ibm->handle, &ibm->device);
 	if (ret < 0) {
 		printk(IBM_ERR "%s device not present\n", ibm->name);
-		return 0;
+		return 1;
 	}
 
 	acpi_driver_data(ibm->device) = ibm;
@@ -1884,6 +1884,8 @@ static int __init ibm_init(struct ibm_st
 		ret = setup_notify(ibm);
 		if (ret < 0)
 			return ret;
+		if (ret > 0)
+			return 0;
 		ibm->notify_installed = 1;
 	}
 

Fix Thinkpad A21m shutdown

The A21m Thinkpad (maybe also be others, T21,..) have an ACPI GDCK method and an ACPI DOCK device.
It seems that on others machines the GDCK is the docking device. Installing the notify handler for a GDCK fails if it is a method an not a device.
When module is unloaded it is tried to remove the never installed notify handler for the GDCK method which seems to freeze the machine.
Fix: Do not set notify_installed when installing the notify handler fails.

Reference: https://bugzilla.novell.org/show_bug.cgi?id=150851

 drivers/acpi/ibm_acpi.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
drivers/acpi/ibm_acpi.c +4 -2
Index: linux-2.6.18-rc2/drivers/acpi/ibm_acpi.c
===================================================================
@@ -1789,12 +1789,12 @@ static int __init setup_notify(struct ib
 	int ret;
 
 	if (!*ibm->handle)
-		return 0;
+		return 1;
 
 	ret = acpi_bus_get_device(*ibm->handle, &ibm->device);
 	if (ret < 0) {
 		printk(IBM_ERR "%s device not present\n", ibm->name);
-		return 0;
+		return 1;
 	}
 
 	acpi_driver_data(ibm->device) = ibm;
@@ -1884,6 +1884,8 @@ static int __init ibm_init(struct ibm_st
 		ret = setup_notify(ibm);
 		if (ret < 0)
 			return ret;
+		if (ret > 0)
+			return 0;
 		ibm->notify_installed = 1;
 	}