From: Len Brown <lenb@kernel.org>
To: linux-acpi@vger.kernel.org, linux-pm@lists.linux-foundation.org
Cc: linux-kernel@vger.kernel.org, Toshi Kani <toshi.kani@hp.com>,
Len Brown <len.brown@intel.com>
Subject: [PATCH 24/52] ACPI: Add _OST support for ACPI container hotplug
Date: Tue, 24 Jul 2012 23:41:20 -0400 [thread overview]
Message-ID: <0c67dc242cf73b9c99a05bfd0122fc9ba1970d37.1343187617.git.len.brown@intel.com> (raw)
In-Reply-To: <1343187708-19532-1-git-send-email-lenb@kernel.org>
In-Reply-To: <6af1c4fc5227af65092ebc848989693562bfa3e8.1343187617.git.len.brown@intel.com>
From: Toshi Kani <toshi.kani@hp.com>
Changed container_notify_cb() to call ACPI _OST method when ACPI
container hotplug operation has completed. Slightly restructured
the code with the same logic. The function sets eject_pending bit
for an eject request since it does not initiate hot-remove operation.
This bit is checked by the sysfs eject handler to determine if the
request is originated from an ACPI eject notification.
Signed-off-by: Toshi Kani <toshi.kani@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
drivers/acpi/container.c | 43 ++++++++++++++++++++++++++++---------------
1 file changed, 28 insertions(+), 15 deletions(-)
diff --git a/drivers/acpi/container.c b/drivers/acpi/container.c
index 45cd03b..1f9f7d7 100644
--- a/drivers/acpi/container.c
+++ b/drivers/acpi/container.c
@@ -158,9 +158,7 @@ static void container_notify_cb(acpi_handle handle, u32 type, void *context)
int result;
int present;
acpi_status status;
-
-
- present = is_device_present(handle);
+ u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE; /* default */
switch (type) {
case ACPI_NOTIFY_BUS_CHECK:
@@ -169,32 +167,47 @@ static void container_notify_cb(acpi_handle handle, u32 type, void *context)
printk(KERN_WARNING "Container driver received %s event\n",
(type == ACPI_NOTIFY_BUS_CHECK) ?
"ACPI_NOTIFY_BUS_CHECK" : "ACPI_NOTIFY_DEVICE_CHECK");
+
+ present = is_device_present(handle);
status = acpi_bus_get_device(handle, &device);
- if (present) {
- if (ACPI_FAILURE(status) || !device) {
- result = container_device_add(&device, handle);
- if (!result)
- kobject_uevent(&device->dev.kobj,
- KOBJ_ONLINE);
- else
- printk(KERN_WARNING
- "Failed to add container\n");
- }
- } else {
+ if (!present) {
if (ACPI_SUCCESS(status)) {
/* device exist and this is a remove request */
+ device->flags.eject_pending = 1;
kobject_uevent(&device->dev.kobj, KOBJ_OFFLINE);
+ return;
}
+ break;
+ }
+
+ if (!ACPI_FAILURE(status) || device)
+ break;
+
+ result = container_device_add(&device, handle);
+ if (result) {
+ printk(KERN_WARNING "Failed to add container\n");
+ break;
}
+
+ kobject_uevent(&device->dev.kobj, KOBJ_ONLINE);
+ ost_code = ACPI_OST_SC_SUCCESS;
break;
+
case ACPI_NOTIFY_EJECT_REQUEST:
if (!acpi_bus_get_device(handle, &device) && device) {
+ device->flags.eject_pending = 1;
kobject_uevent(&device->dev.kobj, KOBJ_OFFLINE);
+ return;
}
break;
+
default:
- break;
+ /* non-hotplug event; possibly handled by other handler */
+ return;
}
+
+ /* Inform firmware that the hotplug operation has completed */
+ (void) acpi_evaluate_hotplug_ost(handle, type, ost_code, NULL);
return;
}
--
1.7.12.rc0
next prev parent reply other threads:[~2012-07-25 3:41 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-25 3:40 ACPI & Power Management Patches for Linux-3.6-merge - part 1 Len Brown
2012-07-25 3:40 ` [PATCH 01/52] ACPICA: AML Parser: Fix two possible memory leaks in error path Len Brown
2012-07-25 3:40 ` [PATCH 02/52] ACPICA: Object dump routines: Use common function for string output Len Brown
2012-07-25 3:40 ` [PATCH 03/52] ACPICA: Lint fixes for acpi_write, no functional changes Len Brown
2012-07-25 3:41 ` [PATCH 04/52] ACPICA: Add support for multiple notify handlers Len Brown
2012-07-25 3:41 ` [PATCH 05/52] ACPICA: Update to version 20120420 Len Brown
2012-07-25 3:41 ` [PATCH 06/52] ACPICA: Disassembler: Add support for Operation Region externals Len Brown
2012-07-25 3:41 ` [PATCH 07/52] ACPICA: ACPI 5/iASL: Add support for PCC keyword Len Brown
2012-07-25 3:41 ` [PATCH 08/52] ACPICA: iASL: Improved pathname support Len Brown
2012-07-25 3:41 ` [PATCH 09/52] ACPICA: Remove argument of acpi_os_wait_events_complete Len Brown
2012-07-25 3:41 ` [PATCH 10/52] ACPICA: Add FADT error message for GAS BitWidth overflow Len Brown
2012-07-25 3:41 ` [PATCH 11/52] ACPICA: Update to version 20120518 Len Brown
2012-07-25 3:41 ` [PATCH 12/52] cpuidle: remove unused hrtimer_peek_ahead_timers() call Len Brown
2012-07-25 3:41 ` [PATCH 13/52] cpuidle: add checks to avoid NULL pointer dereference Len Brown
2012-07-25 3:41 ` [PATCH 14/52] ACPI Battery: Added capacity Len Brown
2012-07-25 3:41 ` [PATCH 15/52] cpuidle: refactor out cpuidle_enter_state Len Brown
2012-07-25 3:41 ` [PATCH 16/52] cpuidle: fix error handling in __cpuidle_register_device Len Brown
2012-07-25 3:41 ` [PATCH 17/52] cpuidle: add support for states that affect multiple cpus Len Brown
2012-07-25 3:41 ` [PATCH 18/52] cpuidle: coupled: add parallel barrier function Len Brown
2012-07-25 3:41 ` [PATCH 19/52] drivers/thermal/spear_thermal.c: add Device Tree probing capability Len Brown
2012-07-25 3:41 ` [PATCH 20/52] ACPI: Add an interface to evaluate _OST Len Brown
2012-07-25 3:41 ` [PATCH 21/52] ACPI: Add _OST support for sysfs eject Len Brown
2012-07-25 3:41 ` [PATCH 22/52] ACPI: Add _OST support for ACPI CPU hotplug Len Brown
2012-07-25 3:41 ` [PATCH 23/52] ACPI: Add _OST support for ACPI memory hotplug Len Brown
2012-07-25 3:41 ` Len Brown [this message]
2012-07-25 3:41 ` [PATCH 25/52] ACPI: Set hotplug _OST support bit to _OSC Len Brown
2012-07-25 3:41 ` [PATCH 26/52] ACPI, PM, Specify lowest allowed state for device sleep state Len Brown
2012-07-25 3:41 ` [PATCH 27/52] intel_idle: initial IVB support Len Brown
2012-07-25 3:41 ` [PATCH 28/52] ACPI: remove acpi_pad MAINTAINERS entry Len Brown
2012-07-25 3:41 ` [PATCH 29/52] ACPI: acpi_pad: rename "power_saving" thread to "acpi_pad" thread Len Brown
2012-07-25 3:41 ` [PATCH 30/52] ACPI, APEI: Fixup common access width firmware bug Len Brown
2012-07-25 3:41 ` [PATCH 31/52] ACPICA: Disassembler: Emit descriptions for ACPI predefined names Len Brown
2012-07-25 3:41 ` [PATCH 32/52] ACPICA: Utilities: conditionally compile backslash removal function Len Brown
2012-07-25 3:41 ` [PATCH 33/52] ACPICA: Update comments; no functional change Len Brown
2012-07-25 3:41 ` [PATCH 34/52] ACPICA: Add support for implicit notify on multiple devices Len Brown
2012-07-25 3:41 ` [PATCH 35/52] ACPICA: Update to version 20120620 Len Brown
2012-07-25 3:41 ` [PATCH 36/52] ACPI: acpi_pad: tune round_robin_time Len Brown
2012-07-25 3:41 ` [PATCH 37/52] ACPICA: Split exception code utilities to a new file, utexcep.c Len Brown
2012-07-25 3:41 ` [PATCH 38/52] ACPICA: Add new interfaces for BIOS(firmware) errors and warnings Len Brown
2012-07-25 3:41 ` [PATCH 39/52] ACPICA: Table manager: deploy new firmware error/warning interfaces Len Brown
2012-07-25 3:41 ` [PATCH 40/52] ACPICA: Fix some comment fields Len Brown
2012-07-25 3:41 ` [PATCH 41/52] ACPICA: Add PCC address space to space ID decode function Len Brown
2012-07-25 3:41 ` [PATCH 42/52] ACPICA: Split file: tbxface.c -> tbxfload.c Len Brown
2012-07-25 3:41 ` [PATCH 43/52] ACPICA: Add new ACPI table load/unload external interfaces Len Brown
2012-07-25 3:41 ` [PATCH 44/52] ACPICA: Update header files copyrights to 2012 Len Brown
2012-07-25 3:41 ` [PATCH 45/52] ACPICA: AcpiSrc: Fix some translation issues for Linux conversion Len Brown
2012-07-25 3:41 ` [PATCH 46/52] ACPICA: Update to version 20120711 Len Brown
2012-07-25 3:41 ` [PATCH 47/52] tools/power: turbostat v2 - re-write for efficiency Len Brown
2012-07-25 3:41 ` [PATCH 48/52] tools/power: turbostat: fix large c1% issue Len Brown
2012-07-25 13:03 ` Konrad Rzeszutek Wilk
2012-07-25 3:41 ` [PATCH 49/52] ACPI/AC: prevent OOPS on some boxes due to missing check power_supply_register() return value check Len Brown
2012-07-25 3:41 ` [PATCH 50/52] Thermal: Make Thermal trip points writeable Len Brown
2012-07-25 11:13 ` Rafael J. Wysocki
2012-07-25 11:15 ` [linux-pm] " R, Durgadoss
2012-07-25 3:41 ` [PATCH 51/52] Thermal: Add Hysteresis attributes Len Brown
2012-07-25 3:41 ` [PATCH 52/52] Thermal: Documentation update Len Brown
2012-07-25 6:47 ` [linux-pm] ACPI & Power Management Patches for Linux-3.6-merge - part 1 Amit Kachhap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0c67dc242cf73b9c99a05bfd0122fc9ba1970d37.1343187617.git.len.brown@intel.com \
--to=lenb@kernel.org \
--cc=len.brown@intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=toshi.kani@hp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).