All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC Patch v1 0/6] Miscellaneous improvements for ACPI
@ 2014-02-17  5:01 Jiang Liu
  2014-02-17  5:02 ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Jiang Liu
  0 siblings, 1 reply; 15+ messages in thread
From: Jiang Liu @ 2014-02-17  5:01 UTC (permalink / raw)
  To: Rafael J . Wysocki, Lv Zheng, Len Brown
  Cc: Jiang Liu, Tony Luck, linux-acpi, linux-kernel

Hi,
	This is a miscellaneous patch set to improve ACPI code. due to
resource limitation, I can't find hardware to test all patches.
So appreciate any help to these patches.

Thanks!
Gerry

Jiang Liu (6):
  acpi_pad: simplify notify handler by using acpi_drv_ops->notify
  ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse
  acpi_pad: use acpi_evaluate_pad() to replace open-coded version
  xen, acpi_pad: use acpi_evaluate_pad() to replace open-coded version
  acpi_processor: use acpi_evaluate_pad() to replace open-coded version
  ACPI: use device name LNXSYBUS.xx for ACPI \_SB and \_TZ objects

 drivers/acpi/acpi_pad.c          |   49 ++++++++------------------------------
 drivers/acpi/processor_perflib.c |   14 +++--------
 drivers/acpi/scan.c              |   20 ++++++++++++++--
 drivers/acpi/utils.c             |   14 ++++-------
 drivers/xen/xen-acpi-pad.c       |   26 ++++++--------------
 include/acpi/acpi_bus.h          |   10 +++++++-
 6 files changed, 51 insertions(+), 82 deletions(-)

-- 
1.7.10.4


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

* [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify
  2014-02-17  5:01 [RFC Patch v1 0/6] Miscellaneous improvements for ACPI Jiang Liu
@ 2014-02-17  5:02 ` Jiang Liu
  2014-02-17  5:02   ` [RFC Patch v1 2/6] ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse Jiang Liu
                     ` (6 more replies)
  0 siblings, 7 replies; 15+ messages in thread
From: Jiang Liu @ 2014-02-17  5:02 UTC (permalink / raw)
  To: Rafael J . Wysocki, Lv Zheng, Len Brown, Rafael J. Wysocki
  Cc: Jiang Liu, Tony Luck, linux-acpi, linux-kernel

Use callback acpi_drv_ops->notify to simplify acpi_pad driver's
notification handling code.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/acpi/acpi_pad.c |   25 +++++--------------------
 1 file changed, 5 insertions(+), 20 deletions(-)

diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
index df96a0f..1e3ce76 100644
--- a/drivers/acpi/acpi_pad.c
+++ b/drivers/acpi/acpi_pad.c
@@ -443,14 +443,11 @@ static void acpi_pad_handle_notify(acpi_handle handle)
 	mutex_unlock(&isolated_cpus_lock);
 }
 
-static void acpi_pad_notify(acpi_handle handle, u32 event,
-	void *data)
+static void acpi_pad_notify(struct acpi_device *device, u32 event)
 {
-	struct acpi_device *device = data;
-
 	switch (event) {
 	case ACPI_PROCESSOR_AGGREGATOR_NOTIFY:
-		acpi_pad_handle_notify(handle);
+		acpi_pad_handle_notify(device->handle);
 		acpi_bus_generate_netlink_event(device->pnp.device_class,
 			dev_name(&device->dev), event, 0);
 		break;
@@ -462,22 +459,10 @@ static void acpi_pad_notify(acpi_handle handle, u32 event,
 
 static int acpi_pad_add(struct acpi_device *device)
 {
-	acpi_status status;
-
 	strcpy(acpi_device_name(device), ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME);
 	strcpy(acpi_device_class(device), ACPI_PROCESSOR_AGGREGATOR_CLASS);
 
-	if (acpi_pad_add_sysfs(device))
-		return -ENODEV;
-
-	status = acpi_install_notify_handler(device->handle,
-		ACPI_DEVICE_NOTIFY, acpi_pad_notify, device);
-	if (ACPI_FAILURE(status)) {
-		acpi_pad_remove_sysfs(device);
-		return -ENODEV;
-	}
-
-	return 0;
+	return acpi_pad_add_sysfs(device);
 }
 
 static int acpi_pad_remove(struct acpi_device *device)
@@ -486,9 +471,8 @@ static int acpi_pad_remove(struct acpi_device *device)
 	acpi_pad_idle_cpus(0);
 	mutex_unlock(&isolated_cpus_lock);
 
-	acpi_remove_notify_handler(device->handle,
-		ACPI_DEVICE_NOTIFY, acpi_pad_notify);
 	acpi_pad_remove_sysfs(device);
+
 	return 0;
 }
 
@@ -505,6 +489,7 @@ static struct acpi_driver acpi_pad_driver = {
 	.ops = {
 		.add = acpi_pad_add,
 		.remove = acpi_pad_remove,
+		.notify = acpi_pad_notify,
 	},
 };
 
-- 
1.7.10.4


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

* [RFC Patch v1 2/6] ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse
  2014-02-17  5:02 ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Jiang Liu
@ 2014-02-17  5:02   ` Jiang Liu
  2014-02-18  1:06     ` Rafael J. Wysocki
  2014-02-17  5:02   ` [RFC Patch v1 3/6] acpi_pad: use acpi_evaluate_pad() to replace open-coded version Jiang Liu
                     ` (5 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Jiang Liu @ 2014-02-17  5:02 UTC (permalink / raw)
  To: Rafael J . Wysocki, Lv Zheng, Len Brown, Rafael J. Wysocki, Robert Moore
  Cc: Jiang Liu, Tony Luck, linux-acpi, linux-kernel, devel

Rename acpi_evaluate_hotplug_ost() to acpi_evaluate_ost() for later resue.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/acpi/utils.c    |   14 ++++----------
 include/acpi/acpi_bus.h |   10 +++++++++-
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index 85e3b61..19d0169 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -433,17 +433,15 @@ EXPORT_SYMBOL(acpi_get_physical_device_location);
  * When the platform does not support _OST, this function has no effect.
  */
 acpi_status
-acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
-		u32 status_code, struct acpi_buffer *status_buf)
+acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
+		  struct acpi_buffer *status_buf)
 {
-#ifdef ACPI_HOTPLUG_OST
 	union acpi_object params[3] = {
 		{.type = ACPI_TYPE_INTEGER,},
 		{.type = ACPI_TYPE_INTEGER,},
 		{.type = ACPI_TYPE_BUFFER,}
 	};
 	struct acpi_object_list arg_list = {3, params};
-	acpi_status status;
 
 	params[0].integer.value = source_event;
 	params[1].integer.value = status_code;
@@ -455,13 +453,9 @@ acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
 		params[2].buffer.length = 0;
 	}
 
-	status = acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
-	return status;
-#else
-	return AE_OK;
-#endif
+	return acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
 }
-EXPORT_SYMBOL(acpi_evaluate_hotplug_ost);
+EXPORT_SYMBOL(acpi_evaluate_ost);
 
 /**
  * acpi_handle_printk: Print message with ACPI prefix and object path
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 8256eb4..adef502 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -49,8 +49,16 @@ acpi_evaluate_reference(acpi_handle handle,
 			struct acpi_object_list *arguments,
 			struct acpi_handle_list *list);
 acpi_status
+acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
+		  struct acpi_buffer *status_buf);
+#ifdef ACPI_HOTPLUG_OST
+#define	acpi_evaluate_hotplug_ost	acpi_evaluate_ost
+#else
+static inline acpi_status
 acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
-			u32 status_code, struct acpi_buffer *status_buf);
+			u32 status_code, struct acpi_buffer *status_buf)
+{ return AE_OK; }
+#endif
 
 acpi_status
 acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld);
-- 
1.7.10.4

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

* [RFC Patch v1 3/6] acpi_pad: use acpi_evaluate_pad() to replace open-coded version
  2014-02-17  5:02 ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Jiang Liu
  2014-02-17  5:02   ` [RFC Patch v1 2/6] ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse Jiang Liu
@ 2014-02-17  5:02   ` Jiang Liu
  2014-02-18  1:07     ` Rafael J. Wysocki
  2014-02-17  5:02   ` [RFC Patch v1 4/6] xen, " Jiang Liu
                     ` (4 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Jiang Liu @ 2014-02-17  5:02 UTC (permalink / raw)
  To: Rafael J . Wysocki, Lv Zheng, Len Brown, Rafael J. Wysocki
  Cc: Jiang Liu, Tony Luck, linux-acpi, linux-kernel

Use public function acpi_evaluate_pad() to replace open-coded
version of evaluating ACPI _OST method.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/acpi/acpi_pad.c |   24 +++++-------------------
 1 file changed, 5 insertions(+), 19 deletions(-)

diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
index 1e3ce76..86b4e11 100644
--- a/drivers/acpi/acpi_pad.c
+++ b/drivers/acpi/acpi_pad.c
@@ -408,28 +408,14 @@ static int acpi_pad_pur(acpi_handle handle)
 	return num;
 }
 
-/* Notify firmware how many CPUs are idle */
-static void acpi_pad_ost(acpi_handle handle, int stat,
-	uint32_t idle_cpus)
-{
-	union acpi_object params[3] = {
-		{.type = ACPI_TYPE_INTEGER,},
-		{.type = ACPI_TYPE_INTEGER,},
-		{.type = ACPI_TYPE_BUFFER,},
-	};
-	struct acpi_object_list arg_list = {3, params};
-
-	params[0].integer.value = ACPI_PROCESSOR_AGGREGATOR_NOTIFY;
-	params[1].integer.value =  stat;
-	params[2].buffer.length = 4;
-	params[2].buffer.pointer = (void *)&idle_cpus;
-	acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
-}
-
 static void acpi_pad_handle_notify(acpi_handle handle)
 {
 	int num_cpus;
 	uint32_t idle_cpus;
+	struct acpi_buffer param = {
+		.length = 4,
+		.pointer = (void *)&idle_cpus,
+	};
 
 	mutex_lock(&isolated_cpus_lock);
 	num_cpus = acpi_pad_pur(handle);
@@ -439,7 +425,7 @@ static void acpi_pad_handle_notify(acpi_handle handle)
 	}
 	acpi_pad_idle_cpus(num_cpus);
 	idle_cpus = acpi_pad_idle_cpus_num();
-	acpi_pad_ost(handle, 0, idle_cpus);
+	acpi_evaluate_ost(handle, ACPI_PROCESSOR_AGGREGATOR_NOTIFY, 0, &param);
 	mutex_unlock(&isolated_cpus_lock);
 }
 
-- 
1.7.10.4

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

* [RFC Patch v1 4/6] xen, acpi_pad: use acpi_evaluate_pad() to replace open-coded version
  2014-02-17  5:02 ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Jiang Liu
                     ` (2 preceding siblings ...)
  2014-02-17  5:02   ` [RFC Patch v1 4/6] xen, " Jiang Liu
@ 2014-02-17  5:02   ` Jiang Liu
  2014-02-17  5:02   ` [RFC Patch v1 5/6] acpi_processor: " Jiang Liu
                     ` (2 subsequent siblings)
  6 siblings, 0 replies; 15+ messages in thread
From: Jiang Liu @ 2014-02-17  5:02 UTC (permalink / raw)
  To: Rafael J . Wysocki, Lv Zheng, Len Brown, Konrad Rzeszutek Wilk,
	Boris Ostrovsky, David Vrabel
  Cc: Jiang Liu, Tony Luck, linux-acpi, linux-kernel, xen-devel

Use public function acpi_evaluate_pad() to replace open-coded
version of evaluating ACPI _OST method.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/xen/xen-acpi-pad.c |   26 +++++++-------------------
 1 file changed, 7 insertions(+), 19 deletions(-)

diff --git a/drivers/xen/xen-acpi-pad.c b/drivers/xen/xen-acpi-pad.c
index 40c4bc0..f83b754 100644
--- a/drivers/xen/xen-acpi-pad.c
+++ b/drivers/xen/xen-acpi-pad.c
@@ -77,27 +77,14 @@ static int acpi_pad_pur(acpi_handle handle)
 	return num;
 }
 
-/* Notify firmware how many CPUs are idle */
-static void acpi_pad_ost(acpi_handle handle, int stat,
-	uint32_t idle_nums)
-{
-	union acpi_object params[3] = {
-		{.type = ACPI_TYPE_INTEGER,},
-		{.type = ACPI_TYPE_INTEGER,},
-		{.type = ACPI_TYPE_BUFFER,},
-	};
-	struct acpi_object_list arg_list = {3, params};
-
-	params[0].integer.value = ACPI_PROCESSOR_AGGREGATOR_NOTIFY;
-	params[1].integer.value =  stat;
-	params[2].buffer.length = 4;
-	params[2].buffer.pointer = (void *)&idle_nums;
-	acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
-}
-
 static void acpi_pad_handle_notify(acpi_handle handle)
 {
 	int idle_nums;
+	struct acpi_buffer param = {
+		.length = 4,
+		.pointer = (void *)&idle_nums,
+	};
+
 
 	mutex_lock(&xen_cpu_lock);
 	idle_nums = acpi_pad_pur(handle);
@@ -109,7 +96,8 @@ static void acpi_pad_handle_notify(acpi_handle handle)
 	idle_nums = xen_acpi_pad_idle_cpus(idle_nums)
 		    ?: xen_acpi_pad_idle_cpus_num();
 	if (idle_nums >= 0)
-		acpi_pad_ost(handle, 0, idle_nums);
+		acpi_evaluate_ost(handle, ACPI_PROCESSOR_AGGREGATOR_NOTIFY,
+				  0, &param);
 	mutex_unlock(&xen_cpu_lock);
 }
 
-- 
1.7.10.4

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

* [RFC Patch v1 4/6] xen, acpi_pad: use acpi_evaluate_pad() to replace open-coded version
  2014-02-17  5:02 ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Jiang Liu
  2014-02-17  5:02   ` [RFC Patch v1 2/6] ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse Jiang Liu
  2014-02-17  5:02   ` [RFC Patch v1 3/6] acpi_pad: use acpi_evaluate_pad() to replace open-coded version Jiang Liu
@ 2014-02-17  5:02   ` Jiang Liu
  2014-02-17  5:02   ` Jiang Liu
                     ` (3 subsequent siblings)
  6 siblings, 0 replies; 15+ messages in thread
From: Jiang Liu @ 2014-02-17  5:02 UTC (permalink / raw)
  To: Rafael J . Wysocki, Lv Zheng, Len Brown, Konrad Rzeszutek Wilk,
	Boris Ostrovsky, David Vrabel
  Cc: linux-acpi, Tony Luck, xen-devel, Jiang Liu, linux-kernel

Use public function acpi_evaluate_pad() to replace open-coded
version of evaluating ACPI _OST method.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/xen/xen-acpi-pad.c |   26 +++++++-------------------
 1 file changed, 7 insertions(+), 19 deletions(-)

diff --git a/drivers/xen/xen-acpi-pad.c b/drivers/xen/xen-acpi-pad.c
index 40c4bc0..f83b754 100644
--- a/drivers/xen/xen-acpi-pad.c
+++ b/drivers/xen/xen-acpi-pad.c
@@ -77,27 +77,14 @@ static int acpi_pad_pur(acpi_handle handle)
 	return num;
 }
 
-/* Notify firmware how many CPUs are idle */
-static void acpi_pad_ost(acpi_handle handle, int stat,
-	uint32_t idle_nums)
-{
-	union acpi_object params[3] = {
-		{.type = ACPI_TYPE_INTEGER,},
-		{.type = ACPI_TYPE_INTEGER,},
-		{.type = ACPI_TYPE_BUFFER,},
-	};
-	struct acpi_object_list arg_list = {3, params};
-
-	params[0].integer.value = ACPI_PROCESSOR_AGGREGATOR_NOTIFY;
-	params[1].integer.value =  stat;
-	params[2].buffer.length = 4;
-	params[2].buffer.pointer = (void *)&idle_nums;
-	acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
-}
-
 static void acpi_pad_handle_notify(acpi_handle handle)
 {
 	int idle_nums;
+	struct acpi_buffer param = {
+		.length = 4,
+		.pointer = (void *)&idle_nums,
+	};
+
 
 	mutex_lock(&xen_cpu_lock);
 	idle_nums = acpi_pad_pur(handle);
@@ -109,7 +96,8 @@ static void acpi_pad_handle_notify(acpi_handle handle)
 	idle_nums = xen_acpi_pad_idle_cpus(idle_nums)
 		    ?: xen_acpi_pad_idle_cpus_num();
 	if (idle_nums >= 0)
-		acpi_pad_ost(handle, 0, idle_nums);
+		acpi_evaluate_ost(handle, ACPI_PROCESSOR_AGGREGATOR_NOTIFY,
+				  0, &param);
 	mutex_unlock(&xen_cpu_lock);
 }
 
-- 
1.7.10.4

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

* [RFC Patch v1 5/6] acpi_processor: use acpi_evaluate_pad() to replace open-coded version
  2014-02-17  5:02 ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Jiang Liu
                     ` (3 preceding siblings ...)
  2014-02-17  5:02   ` Jiang Liu
@ 2014-02-17  5:02   ` Jiang Liu
  2014-02-17  5:02   ` [RFC Patch v1 6/6] ACPI: use device name LNXSYBUS.xx for ACPI \_SB and \_TZ objects Jiang Liu
  2014-02-18  1:06   ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Rafael J. Wysocki
  6 siblings, 0 replies; 15+ messages in thread
From: Jiang Liu @ 2014-02-17  5:02 UTC (permalink / raw)
  To: Rafael J . Wysocki, Lv Zheng, Len Brown, Rafael J. Wysocki
  Cc: Jiang Liu, Tony Luck, linux-acpi, linux-kernel

Use public function acpi_evaluate_pad() to replace open-coded
version of evaluating ACPI _OST method.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/acpi/processor_perflib.c |   14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c
index ff90054..cfc8aba 100644
--- a/drivers/acpi/processor_perflib.c
+++ b/drivers/acpi/processor_perflib.c
@@ -156,17 +156,9 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr)
  */
 static void acpi_processor_ppc_ost(acpi_handle handle, int status)
 {
-	union acpi_object params[2] = {
-		{.type = ACPI_TYPE_INTEGER,},
-		{.type = ACPI_TYPE_INTEGER,},
-	};
-	struct acpi_object_list arg_list = {2, params};
-
-	if (acpi_has_method(handle, "_OST")) {
-		params[0].integer.value = ACPI_PROCESSOR_NOTIFY_PERFORMANCE;
-		params[1].integer.value =  status;
-		acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
-	}
+	if (acpi_has_method(handle, "_OST"))
+		acpi_evaluate_ost(handle, ACPI_PROCESSOR_NOTIFY_PERFORMANCE,
+				  status, NULL);
 }
 
 int acpi_processor_ppc_has_changed(struct acpi_processor *pr, int event_flag)
-- 
1.7.10.4

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

* [RFC Patch v1 6/6] ACPI: use device name LNXSYBUS.xx for ACPI \_SB and \_TZ objects
  2014-02-17  5:02 ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Jiang Liu
                     ` (4 preceding siblings ...)
  2014-02-17  5:02   ` [RFC Patch v1 5/6] acpi_processor: " Jiang Liu
@ 2014-02-17  5:02   ` Jiang Liu
  2014-02-18  1:06   ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Rafael J. Wysocki
  6 siblings, 0 replies; 15+ messages in thread
From: Jiang Liu @ 2014-02-17  5:02 UTC (permalink / raw)
  To: Rafael J . Wysocki, Lv Zheng, Len Brown, Rafael J. Wysocki
  Cc: Jiang Liu, Tony Luck, linux-acpi, linux-kernel

Use device name "LNXSYBUS:xx" instead  of "device.xx" for ACPI objects
\_SB and \_TZ.

BTW, the original check of "handle == ACPI_ROOT_OBJECT" in statment
"else if (list_empty(&pnp->ids) && handle == ACPI_ROOT_OBJECT)"
is always false because of the code at the begin of that block.
                if (handle == ACPI_ROOT_OBJECT) {
                        acpi_add_id(pnp, ACPI_SYSTEM_HID);
                        break;
                }


Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/acpi/scan.c |   20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 57b053f..62ec4ba 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1706,6 +1706,20 @@ static bool acpi_ibm_smbus_match(acpi_handle handle)
 	return false;
 }
 
+static bool acpi_object_is_system_bus(acpi_handle handle)
+{
+	acpi_handle tmp;
+
+	if (ACPI_SUCCESS(acpi_get_handle(NULL, "\\_SB", &tmp)) &&
+	    tmp == handle)
+		return true;
+	if (ACPI_SUCCESS(acpi_get_handle(NULL, "\\_TZ", &tmp)) &&
+	    tmp == handle)
+		return true;
+
+	return false;
+}
+
 static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,
 				int device_type)
 {
@@ -1757,8 +1771,10 @@ static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,
 			acpi_add_id(pnp, ACPI_DOCK_HID);
 		else if (acpi_ibm_smbus_match(handle))
 			acpi_add_id(pnp, ACPI_SMBUS_IBM_HID);
-		else if (list_empty(&pnp->ids) && handle == ACPI_ROOT_OBJECT) {
-			acpi_add_id(pnp, ACPI_BUS_HID); /* \_SB, LNXSYBUS */
+		else if (list_empty(&pnp->ids) &&
+			 acpi_object_is_system_bus(handle)) {
+			/* \_SB, \_TZ, LNXSYBUS */
+			acpi_add_id(pnp, ACPI_BUS_HID);
 			strcpy(pnp->device_name, ACPI_BUS_DEVICE_NAME);
 			strcpy(pnp->device_class, ACPI_BUS_CLASS);
 		}
-- 
1.7.10.4

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

* Re: [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify
  2014-02-17  5:02 ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Jiang Liu
                     ` (5 preceding siblings ...)
  2014-02-17  5:02   ` [RFC Patch v1 6/6] ACPI: use device name LNXSYBUS.xx for ACPI \_SB and \_TZ objects Jiang Liu
@ 2014-02-18  1:06   ` Rafael J. Wysocki
  2014-02-19  5:45     ` Jiang Liu
  6 siblings, 1 reply; 15+ messages in thread
From: Rafael J. Wysocki @ 2014-02-18  1:06 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Rafael J . Wysocki, Lv Zheng, Len Brown, Tony Luck, linux-acpi,
	linux-kernel

On Monday, February 17, 2014 01:02:48 PM Jiang Liu wrote:
> Use callback acpi_drv_ops->notify to simplify acpi_pad driver's
> notification handling code.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>

There is a plan to move away from using struct acpi_driver objects and
this change will need to be reverted then.  I'm not sure if that's really
useful?

> ---
>  drivers/acpi/acpi_pad.c |   25 +++++--------------------
>  1 file changed, 5 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
> index df96a0f..1e3ce76 100644
> --- a/drivers/acpi/acpi_pad.c
> +++ b/drivers/acpi/acpi_pad.c
> @@ -443,14 +443,11 @@ static void acpi_pad_handle_notify(acpi_handle handle)
>  	mutex_unlock(&isolated_cpus_lock);
>  }
>  
> -static void acpi_pad_notify(acpi_handle handle, u32 event,
> -	void *data)
> +static void acpi_pad_notify(struct acpi_device *device, u32 event)
>  {
> -	struct acpi_device *device = data;
> -
>  	switch (event) {
>  	case ACPI_PROCESSOR_AGGREGATOR_NOTIFY:
> -		acpi_pad_handle_notify(handle);
> +		acpi_pad_handle_notify(device->handle);
>  		acpi_bus_generate_netlink_event(device->pnp.device_class,
>  			dev_name(&device->dev), event, 0);
>  		break;
> @@ -462,22 +459,10 @@ static void acpi_pad_notify(acpi_handle handle, u32 event,
>  
>  static int acpi_pad_add(struct acpi_device *device)
>  {
> -	acpi_status status;
> -
>  	strcpy(acpi_device_name(device), ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME);
>  	strcpy(acpi_device_class(device), ACPI_PROCESSOR_AGGREGATOR_CLASS);
>  
> -	if (acpi_pad_add_sysfs(device))
> -		return -ENODEV;
> -
> -	status = acpi_install_notify_handler(device->handle,
> -		ACPI_DEVICE_NOTIFY, acpi_pad_notify, device);
> -	if (ACPI_FAILURE(status)) {
> -		acpi_pad_remove_sysfs(device);
> -		return -ENODEV;
> -	}
> -
> -	return 0;
> +	return acpi_pad_add_sysfs(device);
>  }
>  
>  static int acpi_pad_remove(struct acpi_device *device)
> @@ -486,9 +471,8 @@ static int acpi_pad_remove(struct acpi_device *device)
>  	acpi_pad_idle_cpus(0);
>  	mutex_unlock(&isolated_cpus_lock);
>  
> -	acpi_remove_notify_handler(device->handle,
> -		ACPI_DEVICE_NOTIFY, acpi_pad_notify);
>  	acpi_pad_remove_sysfs(device);
> +
>  	return 0;
>  }
>  
> @@ -505,6 +489,7 @@ static struct acpi_driver acpi_pad_driver = {
>  	.ops = {
>  		.add = acpi_pad_add,
>  		.remove = acpi_pad_remove,
> +		.notify = acpi_pad_notify,
>  	},
>  };
>  
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [RFC Patch v1 2/6] ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse
  2014-02-17  5:02   ` [RFC Patch v1 2/6] ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse Jiang Liu
@ 2014-02-18  1:06     ` Rafael J. Wysocki
  2014-02-19  5:46       ` Jiang Liu
  0 siblings, 1 reply; 15+ messages in thread
From: Rafael J. Wysocki @ 2014-02-18  1:06 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Rafael J . Wysocki, Lv Zheng, Len Brown, Robert Moore, Tony Luck,
	linux-acpi, linux-kernel, devel

On Monday, February 17, 2014 01:02:49 PM Jiang Liu wrote:
> Rename acpi_evaluate_hotplug_ost() to acpi_evaluate_ost() for later resue.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  drivers/acpi/utils.c    |   14 ++++----------
>  include/acpi/acpi_bus.h |   10 +++++++++-
>  2 files changed, 13 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
> index 85e3b61..19d0169 100644
> --- a/drivers/acpi/utils.c
> +++ b/drivers/acpi/utils.c
> @@ -433,17 +433,15 @@ EXPORT_SYMBOL(acpi_get_physical_device_location);
>   * When the platform does not support _OST, this function has no effect.
>   */
>  acpi_status
> -acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
> -		u32 status_code, struct acpi_buffer *status_buf)

There are users of this, what about updating them?

> +acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
> +		  struct acpi_buffer *status_buf)
>  {
> -#ifdef ACPI_HOTPLUG_OST
>  	union acpi_object params[3] = {
>  		{.type = ACPI_TYPE_INTEGER,},
>  		{.type = ACPI_TYPE_INTEGER,},
>  		{.type = ACPI_TYPE_BUFFER,}
>  	};
>  	struct acpi_object_list arg_list = {3, params};
> -	acpi_status status;
>  
>  	params[0].integer.value = source_event;
>  	params[1].integer.value = status_code;
> @@ -455,13 +453,9 @@ acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
>  		params[2].buffer.length = 0;
>  	}
>  
> -	status = acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
> -	return status;
> -#else
> -	return AE_OK;
> -#endif
> +	return acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
>  }
> -EXPORT_SYMBOL(acpi_evaluate_hotplug_ost);
> +EXPORT_SYMBOL(acpi_evaluate_ost);
>  
>  /**
>   * acpi_handle_printk: Print message with ACPI prefix and object path
> diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> index 8256eb4..adef502 100644
> --- a/include/acpi/acpi_bus.h
> +++ b/include/acpi/acpi_bus.h
> @@ -49,8 +49,16 @@ acpi_evaluate_reference(acpi_handle handle,
>  			struct acpi_object_list *arguments,
>  			struct acpi_handle_list *list);
>  acpi_status
> +acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
> +		  struct acpi_buffer *status_buf);
> +#ifdef ACPI_HOTPLUG_OST
> +#define	acpi_evaluate_hotplug_ost	acpi_evaluate_ost
> +#else
> +static inline acpi_status
>  acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
> -			u32 status_code, struct acpi_buffer *status_buf);
> +			u32 status_code, struct acpi_buffer *status_buf)
> +{ return AE_OK; }
> +#endif
>  
>  acpi_status
>  acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld);
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [RFC Patch v1 3/6] acpi_pad: use acpi_evaluate_pad() to replace open-coded version
  2014-02-17  5:02   ` [RFC Patch v1 3/6] acpi_pad: use acpi_evaluate_pad() to replace open-coded version Jiang Liu
@ 2014-02-18  1:07     ` Rafael J. Wysocki
  2014-02-19  5:57       ` Jiang Liu
  0 siblings, 1 reply; 15+ messages in thread
From: Rafael J. Wysocki @ 2014-02-18  1:07 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Rafael J . Wysocki, Lv Zheng, Len Brown, Tony Luck, linux-acpi,
	linux-kernel

On Monday, February 17, 2014 01:02:50 PM Jiang Liu wrote:
> Use public function acpi_evaluate_pad() to replace open-coded

I suppose you mean acpi_evaluate_ost()?  And in the other patches
in this series too?

> version of evaluating ACPI _OST method.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  drivers/acpi/acpi_pad.c |   24 +++++-------------------
>  1 file changed, 5 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
> index 1e3ce76..86b4e11 100644
> --- a/drivers/acpi/acpi_pad.c
> +++ b/drivers/acpi/acpi_pad.c
> @@ -408,28 +408,14 @@ static int acpi_pad_pur(acpi_handle handle)
>  	return num;
>  }
>  
> -/* Notify firmware how many CPUs are idle */
> -static void acpi_pad_ost(acpi_handle handle, int stat,
> -	uint32_t idle_cpus)
> -{
> -	union acpi_object params[3] = {
> -		{.type = ACPI_TYPE_INTEGER,},
> -		{.type = ACPI_TYPE_INTEGER,},
> -		{.type = ACPI_TYPE_BUFFER,},
> -	};
> -	struct acpi_object_list arg_list = {3, params};
> -
> -	params[0].integer.value = ACPI_PROCESSOR_AGGREGATOR_NOTIFY;
> -	params[1].integer.value =  stat;
> -	params[2].buffer.length = 4;
> -	params[2].buffer.pointer = (void *)&idle_cpus;
> -	acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
> -}
> -
>  static void acpi_pad_handle_notify(acpi_handle handle)
>  {
>  	int num_cpus;
>  	uint32_t idle_cpus;
> +	struct acpi_buffer param = {
> +		.length = 4,
> +		.pointer = (void *)&idle_cpus,
> +	};
>  
>  	mutex_lock(&isolated_cpus_lock);
>  	num_cpus = acpi_pad_pur(handle);
> @@ -439,7 +425,7 @@ static void acpi_pad_handle_notify(acpi_handle handle)
>  	}
>  	acpi_pad_idle_cpus(num_cpus);
>  	idle_cpus = acpi_pad_idle_cpus_num();
> -	acpi_pad_ost(handle, 0, idle_cpus);
> +	acpi_evaluate_ost(handle, ACPI_PROCESSOR_AGGREGATOR_NOTIFY, 0, &param);
>  	mutex_unlock(&isolated_cpus_lock);
>  }
>  
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify
  2014-02-18  1:06   ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Rafael J. Wysocki
@ 2014-02-19  5:45     ` Jiang Liu
  0 siblings, 0 replies; 15+ messages in thread
From: Jiang Liu @ 2014-02-19  5:45 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Rafael J . Wysocki, Lv Zheng, Len Brown, Tony Luck, linux-acpi,
	linux-kernel

Thanks, Rafael. I will drop this patch then.

On 2014/2/18 9:06, Rafael J. Wysocki wrote:
> On Monday, February 17, 2014 01:02:48 PM Jiang Liu wrote:
>> Use callback acpi_drv_ops->notify to simplify acpi_pad driver's
>> notification handling code.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> 
> There is a plan to move away from using struct acpi_driver objects and
> this change will need to be reverted then.  I'm not sure if that's really
> useful?
> 
>> ---
>>  drivers/acpi/acpi_pad.c |   25 +++++--------------------
>>  1 file changed, 5 insertions(+), 20 deletions(-)
>>
>> diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
>> index df96a0f..1e3ce76 100644
>> --- a/drivers/acpi/acpi_pad.c
>> +++ b/drivers/acpi/acpi_pad.c
>> @@ -443,14 +443,11 @@ static void acpi_pad_handle_notify(acpi_handle handle)
>>  	mutex_unlock(&isolated_cpus_lock);
>>  }
>>  
>> -static void acpi_pad_notify(acpi_handle handle, u32 event,
>> -	void *data)
>> +static void acpi_pad_notify(struct acpi_device *device, u32 event)
>>  {
>> -	struct acpi_device *device = data;
>> -
>>  	switch (event) {
>>  	case ACPI_PROCESSOR_AGGREGATOR_NOTIFY:
>> -		acpi_pad_handle_notify(handle);
>> +		acpi_pad_handle_notify(device->handle);
>>  		acpi_bus_generate_netlink_event(device->pnp.device_class,
>>  			dev_name(&device->dev), event, 0);
>>  		break;
>> @@ -462,22 +459,10 @@ static void acpi_pad_notify(acpi_handle handle, u32 event,
>>  
>>  static int acpi_pad_add(struct acpi_device *device)
>>  {
>> -	acpi_status status;
>> -
>>  	strcpy(acpi_device_name(device), ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME);
>>  	strcpy(acpi_device_class(device), ACPI_PROCESSOR_AGGREGATOR_CLASS);
>>  
>> -	if (acpi_pad_add_sysfs(device))
>> -		return -ENODEV;
>> -
>> -	status = acpi_install_notify_handler(device->handle,
>> -		ACPI_DEVICE_NOTIFY, acpi_pad_notify, device);
>> -	if (ACPI_FAILURE(status)) {
>> -		acpi_pad_remove_sysfs(device);
>> -		return -ENODEV;
>> -	}
>> -
>> -	return 0;
>> +	return acpi_pad_add_sysfs(device);
>>  }
>>  
>>  static int acpi_pad_remove(struct acpi_device *device)
>> @@ -486,9 +471,8 @@ static int acpi_pad_remove(struct acpi_device *device)
>>  	acpi_pad_idle_cpus(0);
>>  	mutex_unlock(&isolated_cpus_lock);
>>  
>> -	acpi_remove_notify_handler(device->handle,
>> -		ACPI_DEVICE_NOTIFY, acpi_pad_notify);
>>  	acpi_pad_remove_sysfs(device);
>> +
>>  	return 0;
>>  }
>>  
>> @@ -505,6 +489,7 @@ static struct acpi_driver acpi_pad_driver = {
>>  	.ops = {
>>  		.add = acpi_pad_add,
>>  		.remove = acpi_pad_remove,
>> +		.notify = acpi_pad_notify,
>>  	},
>>  };
>>  
>>
> 

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

* Re: [RFC Patch v1 2/6] ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse
  2014-02-18  1:06     ` Rafael J. Wysocki
@ 2014-02-19  5:46       ` Jiang Liu
  2014-02-19 15:53         ` Rafael J. Wysocki
  0 siblings, 1 reply; 15+ messages in thread
From: Jiang Liu @ 2014-02-19  5:46 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Rafael J . Wysocki, Lv Zheng, Len Brown, Robert Moore, Tony Luck,
	linux-acpi, linux-kernel, devel

Hi Rafael,
	We have following code to deal with existing users.
+#ifdef ACPI_HOTPLUG_OST
+#define	acpi_evaluate_hotplug_ost	acpi_evaluate_ost
+#else
+static inline acpi_status
 acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
-			u32 status_code, struct acpi_buffer *status_buf);
+			u32 status_code, struct acpi_buffer *status_buf)
+{ return AE_OK; }
+#endif

Thanks!

On 2014/2/18 9:06, Rafael J. Wysocki wrote:
> On Monday, February 17, 2014 01:02:49 PM Jiang Liu wrote:
>> Rename acpi_evaluate_hotplug_ost() to acpi_evaluate_ost() for later resue.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
>> ---
>>  drivers/acpi/utils.c    |   14 ++++----------
>>  include/acpi/acpi_bus.h |   10 +++++++++-
>>  2 files changed, 13 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
>> index 85e3b61..19d0169 100644
>> --- a/drivers/acpi/utils.c
>> +++ b/drivers/acpi/utils.c
>> @@ -433,17 +433,15 @@ EXPORT_SYMBOL(acpi_get_physical_device_location);
>>   * When the platform does not support _OST, this function has no effect.
>>   */
>>  acpi_status
>> -acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
>> -		u32 status_code, struct acpi_buffer *status_buf)
> 
> There are users of this, what about updating them?
> 
>> +acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
>> +		  struct acpi_buffer *status_buf)
>>  {
>> -#ifdef ACPI_HOTPLUG_OST
>>  	union acpi_object params[3] = {
>>  		{.type = ACPI_TYPE_INTEGER,},
>>  		{.type = ACPI_TYPE_INTEGER,},
>>  		{.type = ACPI_TYPE_BUFFER,}
>>  	};
>>  	struct acpi_object_list arg_list = {3, params};
>> -	acpi_status status;
>>  
>>  	params[0].integer.value = source_event;
>>  	params[1].integer.value = status_code;
>> @@ -455,13 +453,9 @@ acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
>>  		params[2].buffer.length = 0;
>>  	}
>>  
>> -	status = acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
>> -	return status;
>> -#else
>> -	return AE_OK;
>> -#endif
>> +	return acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
>>  }
>> -EXPORT_SYMBOL(acpi_evaluate_hotplug_ost);
>> +EXPORT_SYMBOL(acpi_evaluate_ost);
>>  
>>  /**
>>   * acpi_handle_printk: Print message with ACPI prefix and object path
>> diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
>> index 8256eb4..adef502 100644
>> --- a/include/acpi/acpi_bus.h
>> +++ b/include/acpi/acpi_bus.h
>> @@ -49,8 +49,16 @@ acpi_evaluate_reference(acpi_handle handle,
>>  			struct acpi_object_list *arguments,
>>  			struct acpi_handle_list *list);
>>  acpi_status
>> +acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
>> +		  struct acpi_buffer *status_buf);
>> +#ifdef ACPI_HOTPLUG_OST
>> +#define	acpi_evaluate_hotplug_ost	acpi_evaluate_ost
>> +#else
>> +static inline acpi_status
>>  acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
>> -			u32 status_code, struct acpi_buffer *status_buf);
>> +			u32 status_code, struct acpi_buffer *status_buf)
>> +{ return AE_OK; }
>> +#endif
>>  
>>  acpi_status
>>  acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld);
>>
> 

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

* Re: [RFC Patch v1 3/6] acpi_pad: use acpi_evaluate_pad() to replace open-coded version
  2014-02-18  1:07     ` Rafael J. Wysocki
@ 2014-02-19  5:57       ` Jiang Liu
  0 siblings, 0 replies; 15+ messages in thread
From: Jiang Liu @ 2014-02-19  5:57 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Rafael J . Wysocki, Lv Zheng, Len Brown, Tony Luck, linux-acpi,
	linux-kernel

Hi Rafael,
	Thanks for reminder, will fix it in next version.

Cheers!
Gerry

On 2014/2/18 9:07, Rafael J. Wysocki wrote:
> On Monday, February 17, 2014 01:02:50 PM Jiang Liu wrote:
>> Use public function acpi_evaluate_pad() to replace open-coded
> 
> I suppose you mean acpi_evaluate_ost()?  And in the other patches
> in this series too?
> 
>> version of evaluating ACPI _OST method.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
>> ---
>>  drivers/acpi/acpi_pad.c |   24 +++++-------------------
>>  1 file changed, 5 insertions(+), 19 deletions(-)
>>
>> diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
>> index 1e3ce76..86b4e11 100644
>> --- a/drivers/acpi/acpi_pad.c
>> +++ b/drivers/acpi/acpi_pad.c
>> @@ -408,28 +408,14 @@ static int acpi_pad_pur(acpi_handle handle)
>>  	return num;
>>  }
>>  
>> -/* Notify firmware how many CPUs are idle */
>> -static void acpi_pad_ost(acpi_handle handle, int stat,
>> -	uint32_t idle_cpus)
>> -{
>> -	union acpi_object params[3] = {
>> -		{.type = ACPI_TYPE_INTEGER,},
>> -		{.type = ACPI_TYPE_INTEGER,},
>> -		{.type = ACPI_TYPE_BUFFER,},
>> -	};
>> -	struct acpi_object_list arg_list = {3, params};
>> -
>> -	params[0].integer.value = ACPI_PROCESSOR_AGGREGATOR_NOTIFY;
>> -	params[1].integer.value =  stat;
>> -	params[2].buffer.length = 4;
>> -	params[2].buffer.pointer = (void *)&idle_cpus;
>> -	acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
>> -}
>> -
>>  static void acpi_pad_handle_notify(acpi_handle handle)
>>  {
>>  	int num_cpus;
>>  	uint32_t idle_cpus;
>> +	struct acpi_buffer param = {
>> +		.length = 4,
>> +		.pointer = (void *)&idle_cpus,
>> +	};
>>  
>>  	mutex_lock(&isolated_cpus_lock);
>>  	num_cpus = acpi_pad_pur(handle);
>> @@ -439,7 +425,7 @@ static void acpi_pad_handle_notify(acpi_handle handle)
>>  	}
>>  	acpi_pad_idle_cpus(num_cpus);
>>  	idle_cpus = acpi_pad_idle_cpus_num();
>> -	acpi_pad_ost(handle, 0, idle_cpus);
>> +	acpi_evaluate_ost(handle, ACPI_PROCESSOR_AGGREGATOR_NOTIFY, 0, &param);
>>  	mutex_unlock(&isolated_cpus_lock);
>>  }
>>  
>>
> 

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

* Re: [RFC Patch v1 2/6] ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse
  2014-02-19  5:46       ` Jiang Liu
@ 2014-02-19 15:53         ` Rafael J. Wysocki
  0 siblings, 0 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2014-02-19 15:53 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Rafael J . Wysocki, Lv Zheng, Len Brown, Robert Moore, Tony Luck,
	linux-acpi, linux-kernel, devel

On Wednesday, February 19, 2014 01:46:39 PM Jiang Liu wrote:
> Hi Rafael,
> 	We have following code to deal with existing users.
> +#ifdef ACPI_HOTPLUG_OST
> +#define	acpi_evaluate_hotplug_ost	acpi_evaluate_ost

Well, I'd very much prefer the users to be updated.

> +#else
> +static inline acpi_status
>  acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
> -			u32 status_code, struct acpi_buffer *status_buf);
> +			u32 status_code, struct acpi_buffer *status_buf)
> +{ return AE_OK; }
> +#endif
> 
> Thanks!
> 
> On 2014/2/18 9:06, Rafael J. Wysocki wrote:
> > On Monday, February 17, 2014 01:02:49 PM Jiang Liu wrote:
> >> Rename acpi_evaluate_hotplug_ost() to acpi_evaluate_ost() for later resue.
> >>
> >> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> >> ---
> >>  drivers/acpi/utils.c    |   14 ++++----------
> >>  include/acpi/acpi_bus.h |   10 +++++++++-
> >>  2 files changed, 13 insertions(+), 11 deletions(-)
> >>
> >> diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
> >> index 85e3b61..19d0169 100644
> >> --- a/drivers/acpi/utils.c
> >> +++ b/drivers/acpi/utils.c
> >> @@ -433,17 +433,15 @@ EXPORT_SYMBOL(acpi_get_physical_device_location);
> >>   * When the platform does not support _OST, this function has no effect.
> >>   */
> >>  acpi_status
> >> -acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
> >> -		u32 status_code, struct acpi_buffer *status_buf)
> > 
> > There are users of this, what about updating them?
> > 
> >> +acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
> >> +		  struct acpi_buffer *status_buf)
> >>  {
> >> -#ifdef ACPI_HOTPLUG_OST
> >>  	union acpi_object params[3] = {
> >>  		{.type = ACPI_TYPE_INTEGER,},
> >>  		{.type = ACPI_TYPE_INTEGER,},
> >>  		{.type = ACPI_TYPE_BUFFER,}
> >>  	};
> >>  	struct acpi_object_list arg_list = {3, params};
> >> -	acpi_status status;
> >>  
> >>  	params[0].integer.value = source_event;
> >>  	params[1].integer.value = status_code;
> >> @@ -455,13 +453,9 @@ acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
> >>  		params[2].buffer.length = 0;
> >>  	}
> >>  
> >> -	status = acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
> >> -	return status;
> >> -#else
> >> -	return AE_OK;
> >> -#endif
> >> +	return acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
> >>  }
> >> -EXPORT_SYMBOL(acpi_evaluate_hotplug_ost);
> >> +EXPORT_SYMBOL(acpi_evaluate_ost);
> >>  
> >>  /**
> >>   * acpi_handle_printk: Print message with ACPI prefix and object path
> >> diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> >> index 8256eb4..adef502 100644
> >> --- a/include/acpi/acpi_bus.h
> >> +++ b/include/acpi/acpi_bus.h
> >> @@ -49,8 +49,16 @@ acpi_evaluate_reference(acpi_handle handle,
> >>  			struct acpi_object_list *arguments,
> >>  			struct acpi_handle_list *list);
> >>  acpi_status
> >> +acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
> >> +		  struct acpi_buffer *status_buf);
> >> +#ifdef ACPI_HOTPLUG_OST
> >> +#define	acpi_evaluate_hotplug_ost	acpi_evaluate_ost
> >> +#else
> >> +static inline acpi_status
> >>  acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
> >> -			u32 status_code, struct acpi_buffer *status_buf);
> >> +			u32 status_code, struct acpi_buffer *status_buf)
> >> +{ return AE_OK; }
> >> +#endif
> >>  
> >>  acpi_status
> >>  acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld);
> >>
> > 
> --
> 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/

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

end of thread, other threads:[~2014-02-19 15:53 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-17  5:01 [RFC Patch v1 0/6] Miscellaneous improvements for ACPI Jiang Liu
2014-02-17  5:02 ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Jiang Liu
2014-02-17  5:02   ` [RFC Patch v1 2/6] ACPI: rename acpi_evaluate_hotplug_ost to acpi_evaluate_ost for reuse Jiang Liu
2014-02-18  1:06     ` Rafael J. Wysocki
2014-02-19  5:46       ` Jiang Liu
2014-02-19 15:53         ` Rafael J. Wysocki
2014-02-17  5:02   ` [RFC Patch v1 3/6] acpi_pad: use acpi_evaluate_pad() to replace open-coded version Jiang Liu
2014-02-18  1:07     ` Rafael J. Wysocki
2014-02-19  5:57       ` Jiang Liu
2014-02-17  5:02   ` [RFC Patch v1 4/6] xen, " Jiang Liu
2014-02-17  5:02   ` Jiang Liu
2014-02-17  5:02   ` [RFC Patch v1 5/6] acpi_processor: " Jiang Liu
2014-02-17  5:02   ` [RFC Patch v1 6/6] ACPI: use device name LNXSYBUS.xx for ACPI \_SB and \_TZ objects Jiang Liu
2014-02-18  1:06   ` [RFC Patch v1 1/6] acpi_pad: simplify notify handler by using acpi_drv_ops->notify Rafael J. Wysocki
2014-02-19  5:45     ` Jiang Liu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.