aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/processor_driver.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-07-26 17:28:55 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-07-26 17:28:55 -0400
commit476525004ac7e2f990b6956efcd44d0780c2ab4c (patch)
tree158cd2bbfb232b4f4327b6c20a4e14c6b095a438 /drivers/acpi/processor_driver.c
parentbd22dc17e49973d3d4925970260e9e37f7580a9f (diff)
parentec033d0a02901551346b9f43f8ff9bad51378891 (diff)
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
Pull ACPI & power management update from Len Brown: "Re-write of the turbostat tool. lower overhead was necessary for measuring very large system when they are very idle. IVB support in intel_idle It's what I run on my IVB, others should be able to also:-) ACPICA core update We have found some bugs due to divergence between Linux and the upstream ACPICA base. Most of these patches are to reduce that divergence to reduce the risk of future bugs. Some cpuidle updates, mostly for non-Intel More will be coming, as they depend on this part. Some thermal management changes needed by non-ACPI systems. Some _OST (OS Status Indication) updates for hot ACPI hot-plug." * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux: (51 commits) Thermal: Documentation update Thermal: Add Hysteresis attributes Thermal: Make Thermal trip points writeable ACPI/AC: prevent OOPS on some boxes due to missing check power_supply_register() return value check tools/power: turbostat: fix large c1% issue tools/power: turbostat v2 - re-write for efficiency ACPICA: Update to version 20120711 ACPICA: AcpiSrc: Fix some translation issues for Linux conversion ACPICA: Update header files copyrights to 2012 ACPICA: Add new ACPI table load/unload external interfaces ACPICA: Split file: tbxface.c -> tbxfload.c ACPICA: Add PCC address space to space ID decode function ACPICA: Fix some comment fields ACPICA: Table manager: deploy new firmware error/warning interfaces ACPICA: Add new interfaces for BIOS(firmware) errors and warnings ACPICA: Split exception code utilities to a new file, utexcep.c ACPI: acpi_pad: tune round_robin_time ACPICA: Update to version 20120620 ACPICA: Add support for implicit notify on multiple devices ACPICA: Update comments; no functional change ...
Diffstat (limited to 'drivers/acpi/processor_driver.c')
-rw-r--r--drivers/acpi/processor_driver.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
index 7048b97853e0..ff8e04f2fab4 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -696,9 +696,9 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,
696{ 696{
697 struct acpi_processor *pr; 697 struct acpi_processor *pr;
698 struct acpi_device *device = NULL; 698 struct acpi_device *device = NULL;
699 u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE; /* default */
699 int result; 700 int result;
700 701
701
702 switch (event) { 702 switch (event) {
703 case ACPI_NOTIFY_BUS_CHECK: 703 case ACPI_NOTIFY_BUS_CHECK:
704 case ACPI_NOTIFY_DEVICE_CHECK: 704 case ACPI_NOTIFY_DEVICE_CHECK:
@@ -710,14 +710,18 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,
710 if (!is_processor_present(handle)) 710 if (!is_processor_present(handle))
711 break; 711 break;
712 712
713 if (acpi_bus_get_device(handle, &device)) { 713 if (!acpi_bus_get_device(handle, &device))
714 result = acpi_processor_device_add(handle, &device); 714 break;
715 if (result) 715
716 printk(KERN_ERR PREFIX 716 result = acpi_processor_device_add(handle, &device);
717 "Unable to add the device\n"); 717 if (result) {
718 printk(KERN_ERR PREFIX "Unable to add the device\n");
718 break; 719 break;
719 } 720 }
721
722 ost_code = ACPI_OST_SC_SUCCESS;
720 break; 723 break;
724
721 case ACPI_NOTIFY_EJECT_REQUEST: 725 case ACPI_NOTIFY_EJECT_REQUEST:
722 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 726 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
723 "received ACPI_NOTIFY_EJECT_REQUEST\n")); 727 "received ACPI_NOTIFY_EJECT_REQUEST\n"));
@@ -731,15 +735,23 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,
731 if (!pr) { 735 if (!pr) {
732 printk(KERN_ERR PREFIX 736 printk(KERN_ERR PREFIX
733 "Driver data is NULL, dropping EJECT\n"); 737 "Driver data is NULL, dropping EJECT\n");
734 return; 738 break;
735 } 739 }
740
741 /* REVISIT: update when eject is supported */
742 ost_code = ACPI_OST_SC_EJECT_NOT_SUPPORTED;
736 break; 743 break;
744
737 default: 745 default:
738 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 746 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
739 "Unsupported event [0x%x]\n", event)); 747 "Unsupported event [0x%x]\n", event));
740 break; 748
749 /* non-hotplug event; possibly handled by other handler */
750 return;
741 } 751 }
742 752
753 /* Inform firmware that the hotplug operation has completed */
754 (void) acpi_evaluate_hotplug_ost(handle, event, ost_code, NULL);
743 return; 755 return;
744} 756}
745 757