public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* [patch 09/12] acpi: fix container's notify handler to handle proper cases properly
@ 2005-02-23  9:53 akpm-3NddpPZAyC0
       [not found] ` <200502230953.j1N9rMN2020714-bipKiLWnuIsyyg0EjBt7GtHuzzzSOjJt@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: akpm-3NddpPZAyC0 @ 2005-02-23  9:53 UTC (permalink / raw)
  To: len.brown-ral2JQCrhuEAvxtiuMwx3w
  Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, akpm-3NddpPZAyC0,
	tokunaga.keiich-+CUm20s59erQFUHtdCDX3A


From: Keiichiro Tokunaga <tokunaga.keiich-+CUm20s59erQFUHtdCDX3A@public.gmane.org>

This is to fix container's ACPI notify handler to handle proper cases
properly.

Previously, the handler tried to make a container device be offline if an
ACPI_NOTIFY_BUS/DEVICE_CHECK notification is performed on the device was
present and has its acpi_device.  But, the condition is weird.  Whenever
the notification is performed, there should be only the following two
conditions:

  1. the device is present, but does not have its acpi_device.
  2. the device is not present, but has its acpi_device.

#1 is a hot-addition case, which was handled properly also in previous
handler.  #2 is a surprising hot-removal case, which was not handled in
previous handler.

Signed-off-by: Keiichiro Tokunaga <tokunaga.keiich-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
Signed-off-by: Andrew Morton <akpm-3NddpPZAyC0@public.gmane.org>
---

 25-akpm/drivers/acpi/container.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff -puN drivers/acpi/container.c~acpi-fix-containers-notify-handler-to-handle-proper-cases-properly drivers/acpi/container.c
--- 25/drivers/acpi/container.c~acpi-fix-containers-notify-handler-to-handle-proper-cases-properly	2005-02-23 01:48:06.000000000 -0800
+++ 25-akpm/drivers/acpi/container.c	2005-02-23 01:48:06.000000000 -0800
@@ -177,13 +177,18 @@ container_notify_cb(acpi_handle handle, 
 		printk("Container driver received %s event\n",
 			(type == ACPI_NOTIFY_BUS_CHECK)?
 			"ACPI_NOTIFY_BUS_CHECK":"ACPI_NOTIFY_DEVICE_CHECK");
+		status = acpi_bus_get_device(handle, &device);
 		if (present) {
-			status = acpi_bus_get_device(handle, &device);
 			if (ACPI_FAILURE(status) || !device) {
 				result = container_device_add(&device, handle);
 				if (!result)
-					kobject_hotplug(&device->kobj, KOBJ_ONLINE);
-			} else {
+					kobject_hotplug(&device->kobj,
+							KOBJ_ONLINE);
+				else
+					printk("Failed to add container\n");
+			}
+		} else {
+			if (ACPI_SUCCESS(status)) {
 				/* device exist and this is a remove request */
 				kobject_hotplug(&device->kobj, KOBJ_OFFLINE);
 			}
_


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2005-03-02 19:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-23  9:53 [patch 09/12] acpi: fix container's notify handler to handle proper cases properly akpm-3NddpPZAyC0
     [not found] ` <200502230953.j1N9rMN2020714-bipKiLWnuIsyyg0EjBt7GtHuzzzSOjJt@public.gmane.org>
2005-03-02 19:08   ` Len Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox