Skip to contentSkip to conversation

ACPI: Call ACPI remove handler when handling ACPI eject

PATCH In review [email protected] 2 participants 5 messages Oct 19, 2011 – Oct 20, 2011

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover ACPI: Call ACPI remove handler when handling ACPI eject

From: Liu Ping Fan <[email protected]>

When I tried to enable cpu hotplug feature for qemu-kvm, I found that the ACPI device eject event just skipped by kernel.

static void acpi_bus_notify(acpi_handle handle, u32 type, void *data) {
case ACPI_NOTIFY_EJECT_REQUEST:

		/* TBD */---> skipped from here
}

But I notice, in drivers/acpi/dock.c, dock_notify()->handle_eject_request() will handle such event for ACPI _dock device. So what we shall do, changing Qemu's SeaBIOS or changing the kernel? If changing SeaBIOS, will it affect guest MS-Window?

Thanks,
ping fan

#1 lore raw

PATCH 1/1 ACPI: Call ACPI remove handler when handling ACPI eject event

From: Liu Ping Fan <[email protected]>

Call the remove handler for ACPI_NOTIFY_EJECT_REQUEST

---
 drivers/acpi/bus.c      |    2 +-
 drivers/acpi/scan.c     |    2 +-
 include/acpi/acpi_bus.h |    2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)
drivers/acpi/bus.c +1 -1
index 437ddbf..d06ec6d 100644
@@ -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:
drivers/acpi/scan.c +1 -1
index 449c556..3b97b61 100644
@@ -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;
include/acpi/acpi_bus.h +2 -0
index 6cd5b64..b19c09d 100644
@@ -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
  */
Signature · 1 line
1.7.4.4
#2 lore raw

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

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

Quoted 50 lines · On 2011/10/19 10:53, [email protected] wrote:

From: Liu Ping Fan<[email protected]>

Call the remove handler for ACPI_NOTIFY_EJECT_REQUEST

---
  drivers/acpi/bus.c      |    2 +-
  drivers/acpi/scan.c     |    2 +-
  include/acpi/acpi_bus.h |    2 ++
  3 files changed, 4 insertions(+), 2 deletions(-)
drivers/acpi/bus.c +1 -1
index 437ddbf..d06ec6d 100644
@@ -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:
drivers/acpi/scan.c +1 -1
index 449c556..3b97b61 100644
@@ -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;
include/acpi/acpi_bus.h +2 -0
index 6cd5b64..b19c09d 100644
@@ -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
   */
#3 lore raw

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

Quoted 3 lines · canquan.shen

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

Quoted 64 lines

Thanks.
Canquan.Shen
2011-10-19

Quoted 42 lines · On 2011/10/19 10:53, [email protected] wrote:

From: Liu Ping Fan<[email protected]>

Call the remove handler for ACPI_NOTIFY_EJECT_REQUEST

---
 drivers/acpi/bus.c      |    2 +-
 drivers/acpi/scan.c     |    2 +-
 include/acpi/acpi_bus.h |    2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)
drivers/acpi/bus.c +1 -1
index 437ddbf..d06ec6d 100644
@@ -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:
drivers/acpi/scan.c +1 -1
index 449c556..3b97b61 100644
@@ -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;
include/acpi/acpi_bus.h +0 -0
index 6cd5b64..b19c09d 100644

include/acpi/acpi_bus.h extern int unregister_acpi_notifier(struct notifier_block *); · line 317

Quoted 8 lines
include/acpi/acpi_bus.h +2 -0
@@ -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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

#4 lore raw

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

Quoted 7 lines · liu ping fan
Quoted 3 lines · canquan.shen

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

Quoted 1 line

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

Quoted 67 lines
Quoted 48 lines

Thanks.
Canquan.Shen
2011-10-19

Quoted 43 lines · On 2011/10/19 10:53, [email protected] wrote:

From: Liu Ping Fan<[email protected]>

Call the remove handler for ACPI_NOTIFY_EJECT_REQUEST

---
  drivers/acpi/bus.c      |    2 +-
  drivers/acpi/scan.c     |    2 +-
  include/acpi/acpi_bus.h |    2 ++
  3 files changed, 4 insertions(+), 2 deletions(-)
drivers/acpi/bus.c +1 -1
index 437ddbf..d06ec6d 100644
@@ -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:
drivers/acpi/scan.c +1 -1
index 449c556..3b97b61 100644
@@ -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;
include/acpi/acpi_bus.h +0 -0
index 6cd5b64..b19c09d 100644
@@ -310,6 +310,8 @@ extern int unregister_acpi_notifier(struct notifier_block *);
 
Quoted 15 lines

include/acpi/acpi_bus.h extern int unregister_acpi_notifier(struct notifier_block *); · line 317

Quoted 7 lines
include/acpi/acpi_bus.h +2 -0
  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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

.