[PATCH] Repost: acpi_ibm_notify.patch

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

 



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

Signed-off-by: Thomas Renninger <mail@xxxxxxxxxxxx>

 drivers/acpi/ibm_acpi.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

Index: linux-2.6.18-rc2/drivers/acpi/ibm_acpi.c
===================================================================
--- linux-2.6.18-rc2.orig/drivers/acpi/ibm_acpi.c
+++ 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

Signed-off-by: Thomas Renninger <mail@xxxxxxxxxxxx>

 drivers/acpi/ibm_acpi.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

Index: linux-2.6.18-rc2/drivers/acpi/ibm_acpi.c
===================================================================
--- linux-2.6.18-rc2.orig/drivers/acpi/ibm_acpi.c
+++ 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;
 	}
 

[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