Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752659Ab2FLFdL (ORCPT ); Tue, 12 Jun 2012 01:33:11 -0400 Received: from fgwmail5.fujitsu.co.jp ([192.51.44.35]:33671 "EHLO fgwmail5.fujitsu.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751492Ab2FLFdJ (ORCPT ); Tue, 12 Jun 2012 01:33:09 -0400 X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.4.0 Message-ID: <4FD6D492.504@jp.fujitsu.com> Date: Tue, 12 Jun 2012 14:33:06 +0900 From: Yasuaki Ishimatsu User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: lenb@kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] ACPI : Implement ACPI_NOTIFY_EJECT_REQUEST for ACPI container References: <4FCDA69C.3040204@jp.fujitsu.com> In-Reply-To: <4FCDA69C.3040204@jp.fujitsu.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3006 Lines: 91 Please ignore the patch. I found that ACPI container driver does not need to implement EJECT routine because it has already prepared eject file at userland. 2012/06/05 15:26, Yasuaki Ishimatsu wrote: > Even if ACPI_NOTIFY_EJECT_REQUEST is notified to ACPI container, ACPI > container just calls kobject_uevent(). The patch implements a function > to remove all devices included in ACPI container. > > Signed-off-by: Yasuaki Ishimatsu > > --- > drivers/acpi/container.c | 32 ++++++++++++++++++++++++++++++-- > 1 file changed, 30 insertions(+), 2 deletions(-) > > Index: linux-3.5-rc1/drivers/acpi/container.c > =================================================================== > --- linux-3.5-rc1.orig/drivers/acpi/container.c 2012-06-05 14:01:54.000000000 +0900 > +++ linux-3.5-rc1/drivers/acpi/container.c 2012-06-05 14:17:40.940836226 +0900 > @@ -123,6 +123,8 @@ static int acpi_container_remove(struct > acpi_status status = AE_OK; > struct acpi_container *pc = NULL; > > + kobject_uevent(&device->dev.kobj, KOBJ_OFFLINE); > + > pc = acpi_driver_data(device); > kfree(pc); > return status; > @@ -152,6 +154,32 @@ static int container_device_add(struct a > return result; > } > > +static void container_device_remove(struct acpi_device *device, > + acpi_handle handle) > +{ > + struct acpi_object_list arg_list; > + union acpi_object arg; > + int result; > + acpi_status status; > + > + result = acpi_bus_trim(device, 1); > + if (result) { > + printk(KERN_WARNING "Removing contaier failed"); > + return; > + } > + > + arg_list.count = 1; > + arg_list.pointer =&arg; > + arg.type = ACPI_TYPE_INTEGER; > + arg.integer.value = 1; > + > + status = acpi_evaluate_object(handle, "_EJ0",&arg_list, NULL); > + if (ACPI_FAILURE(status)) > + printk(KERN_WARNING "Eject device failed\n"); > + > + return; > +} > + > static void container_notify_cb(acpi_handle handle, u32 type, void *context) > { > struct acpi_device *device = NULL; > @@ -183,13 +211,13 @@ static void container_notify_cb(acpi_han > } else { > if (ACPI_SUCCESS(status)) { > /* device exist and this is a remove request */ > - kobject_uevent(&device->dev.kobj, KOBJ_OFFLINE); > + container_device_remove(device, handle); > } > } > break; > case ACPI_NOTIFY_EJECT_REQUEST: > if (!acpi_bus_get_device(handle,&device)&& device) { > - kobject_uevent(&device->dev.kobj, KOBJ_OFFLINE); > + container_device_remove(device, handle); > } > break; > default: > > -- > To unsubscribe from this list: send the line "unsubscribe linux-acpi" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/