Patchwork [1/1] ACPI: Call ACPI remove handler when handling ACPI eject event

login
register
mail settings
Submitter pingfank@linux.vnet.ibm.com
Date Oct. 19, 2011, 2:53 a.m.
Message ID <1318992821-10552-2-git-send-email-pingfank@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/120550/
State New
Headers show

Comments

pingfank@linux.vnet.ibm.com - Oct. 19, 2011, 2:53 a.m.
From: Liu Ping Fan <pingfank@linux.vnet.ibm.com>

Call the remove handler for ACPI_NOTIFY_EJECT_REQUEST

Signed-off-by: Liu Ping Fan <pingfank@linux.vnet.ibm.com>
---
 drivers/acpi/bus.c      |    2 +-
 drivers/acpi/scan.c     |    2 +-
 include/acpi/acpi_bus.h |    2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)
canquan.shen - Oct. 19, 2011, 3:50 a.m.
Hi ping fan,
    Your patch is similar with my patch, my patch name is "acpi: Fix CPU 
hot removal problem".

Thanks.
Canquan.Shen
2011-10-19

On 2011/10/19 10:53, pingfank@linux.vnet.ibm.com wrote:
> From: Liu Ping Fan<pingfank@linux.vnet.ibm.com>
>
> Call the remove handler for ACPI_NOTIFY_EJECT_REQUEST
>
> Signed-off-by: Liu Ping Fan<pingfank@linux.vnet.ibm.com>
> ---
>   drivers/acpi/bus.c      |    2 +-
>   drivers/acpi/scan.c     |    2 +-
>   include/acpi/acpi_bus.h |    2 ++
>   3 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> index 437ddbf..d06ec6d 100644
> --- a/drivers/acpi/bus.c
> +++ b/drivers/acpi/bus.c
> @@ -764,7 +764,7 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
>   		break;
>
>   	case ACPI_NOTIFY_EJECT_REQUEST:
> -		/* TBD */
> +		acpi_os_hotplug_execute(acpi_bus_hot_remove_device, handle);
>   		break;
>
>   	case ACPI_NOTIFY_DEVICE_CHECK_LIGHT:
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 449c556..3b97b61 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -83,7 +83,7 @@ acpi_device_modalias_show(struct device *dev, struct device_attribute *attr, cha
>   }
>   static DEVICE_ATTR(modalias, 0444, acpi_device_modalias_show, NULL);
>
> -static void acpi_bus_hot_remove_device(void *context)
> +void acpi_bus_hot_remove_device(void *context)
>   {
>   	struct acpi_device *device;
>   	acpi_handle handle = context;
> diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> index 6cd5b64..b19c09d 100644
> --- a/include/acpi/acpi_bus.h
> +++ b/include/acpi/acpi_bus.h
> @@ -310,6 +310,8 @@ extern int unregister_acpi_notifier(struct notifier_block *);
>
>   extern int register_acpi_bus_notifier(struct notifier_block *nb);
>   extern void unregister_acpi_bus_notifier(struct notifier_block *nb);
> +extern void acpi_bus_hot_remove_device(void *context);
> +
>   /*
>    * External Functions
>    */
pingfank@linux.vnet.ibm.com - Oct. 20, 2011, 8:08 a.m.
On Wed, Oct 19, 2011 at 11:50:19AM +0800, canquan.shen wrote:
> Hi ping fan,
>    Your patch is similar with my patch, my patch name is "acpi: Fix
> CPU hot removal problem".
I saw your patch, a little similar. BTW, how are things going on? It is a
long time since V0 patch
> 
> Thanks.
> Canquan.Shen
> 2011-10-19
> 
> On 2011/10/19 10:53, pingfank@linux.vnet.ibm.com wrote:
> >From: Liu Ping Fan<pingfank@linux.vnet.ibm.com>
> >
> >Call the remove handler for ACPI_NOTIFY_EJECT_REQUEST
> >
> >Signed-off-by: Liu Ping Fan<pingfank@linux.vnet.ibm.com>
> >---
> >  drivers/acpi/bus.c      |    2 +-
> >  drivers/acpi/scan.c     |    2 +-
> >  include/acpi/acpi_bus.h |    2 ++
> >  3 files changed, 4 insertions(+), 2 deletions(-)
> >
> >diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> >index 437ddbf..d06ec6d 100644
> >--- a/drivers/acpi/bus.c
> >+++ b/drivers/acpi/bus.c
> >@@ -764,7 +764,7 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
> >  		break;
> >
> >  	case ACPI_NOTIFY_EJECT_REQUEST:
> >-		/* TBD */
> >+		acpi_os_hotplug_execute(acpi_bus_hot_remove_device, handle);
> >  		break;
> >
> >  	case ACPI_NOTIFY_DEVICE_CHECK_LIGHT:
> >diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> >index 449c556..3b97b61 100644
> >--- a/drivers/acpi/scan.c
> >+++ b/drivers/acpi/scan.c
> >@@ -83,7 +83,7 @@ acpi_device_modalias_show(struct device *dev, struct device_attribute *attr, cha
> >  }
> >  static DEVICE_ATTR(modalias, 0444, acpi_device_modalias_show, NULL);
> >
> >-static void acpi_bus_hot_remove_device(void *context)
> >+void acpi_bus_hot_remove_device(void *context)
> >  {
> >  	struct acpi_device *device;
> >  	acpi_handle handle = context;
> >diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> >index 6cd5b64..b19c09d 100644
> >--- a/include/acpi/acpi_bus.h
> >+++ b/include/acpi/acpi_bus.h
> >@@ -310,6 +310,8 @@ extern int unregister_acpi_notifier(struct notifier_block *);
> >
> >  extern int register_acpi_bus_notifier(struct notifier_block *nb);
> >  extern void unregister_acpi_bus_notifier(struct notifier_block *nb);
> >+extern void acpi_bus_hot_remove_device(void *context);
> >+
> >  /*
> >   * External Functions
> >   */
> 
> 
> --
> 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/
>
canquan.shen - Oct. 20, 2011, 8:34 a.m.
On 2011/10/20 16:08, liu ping fan wrote:
> On Wed, Oct 19, 2011 at 11:50:19AM +0800, canquan.shen wrote:
>> Hi ping fan,
>>     Your patch is similar with my patch, my patch name is "acpi: Fix
>> CPU hot removal problem".
> I saw your patch, a little similar. BTW, how are things going on? It is a
> long time since V0 patch
>>

This patch has reviewed by Bjorn, and I am waiting for len.brown's 
response .

>> Thanks.
>> Canquan.Shen
>> 2011-10-19
>>
>> On 2011/10/19 10:53, pingfank@linux.vnet.ibm.com wrote:
>>> From: Liu Ping Fan<pingfank@linux.vnet.ibm.com>
>>>
>>> Call the remove handler for ACPI_NOTIFY_EJECT_REQUEST
>>>
>>> Signed-off-by: Liu Ping Fan<pingfank@linux.vnet.ibm.com>
>>> ---
>>>   drivers/acpi/bus.c      |    2 +-
>>>   drivers/acpi/scan.c     |    2 +-
>>>   include/acpi/acpi_bus.h |    2 ++
>>>   3 files changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
>>> index 437ddbf..d06ec6d 100644
>>> --- a/drivers/acpi/bus.c
>>> +++ b/drivers/acpi/bus.c
>>> @@ -764,7 +764,7 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
>>>   		break;
>>>
>>>   	case ACPI_NOTIFY_EJECT_REQUEST:
>>> -		/* TBD */
>>> +		acpi_os_hotplug_execute(acpi_bus_hot_remove_device, handle);
>>>   		break;
>>>
>>>   	case ACPI_NOTIFY_DEVICE_CHECK_LIGHT:
>>> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
>>> index 449c556..3b97b61 100644
>>> --- a/drivers/acpi/scan.c
>>> +++ b/drivers/acpi/scan.c
>>> @@ -83,7 +83,7 @@ acpi_device_modalias_show(struct device *dev, struct device_attribute *attr, cha
>>>   }
>>>   static DEVICE_ATTR(modalias, 0444, acpi_device_modalias_show, NULL);
>>>
>>> -static void acpi_bus_hot_remove_device(void *context)
>>> +void acpi_bus_hot_remove_device(void *context)
>>>   {
>>>   	struct acpi_device *device;
>>>   	acpi_handle handle = context;
>>> diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
>>> index 6cd5b64..b19c09d 100644
>>> --- a/include/acpi/acpi_bus.h
>>> +++ b/include/acpi/acpi_bus.h
>>> @@ -310,6 +310,8 @@ extern int unregister_acpi_notifier(struct notifier_block *);
>>>
>>>   extern int register_acpi_bus_notifier(struct notifier_block *nb);
>>>   extern void unregister_acpi_bus_notifier(struct notifier_block *nb);
>>> +extern void acpi_bus_hot_remove_device(void *context);
>>> +
>>>   /*
>>>    * External Functions
>>>    */
>>
>>
>> --
>> 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/
>>
>
>
> .
>

Patch

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 437ddbf..d06ec6d 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -764,7 +764,7 @@  static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
 		break;
 
 	case ACPI_NOTIFY_EJECT_REQUEST:
-		/* TBD */
+		acpi_os_hotplug_execute(acpi_bus_hot_remove_device, handle);
 		break;
 
 	case ACPI_NOTIFY_DEVICE_CHECK_LIGHT:
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 449c556..3b97b61 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -83,7 +83,7 @@  acpi_device_modalias_show(struct device *dev, struct device_attribute *attr, cha
 }
 static DEVICE_ATTR(modalias, 0444, acpi_device_modalias_show, NULL);
 
-static void acpi_bus_hot_remove_device(void *context)
+void acpi_bus_hot_remove_device(void *context)
 {
 	struct acpi_device *device;
 	acpi_handle handle = context;
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 6cd5b64..b19c09d 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -310,6 +310,8 @@  extern int unregister_acpi_notifier(struct notifier_block *);
 
 extern int register_acpi_bus_notifier(struct notifier_block *nb);
 extern void unregister_acpi_bus_notifier(struct notifier_block *nb);
+extern void acpi_bus_hot_remove_device(void *context);
+
 /*
  * External Functions
  */