diff options
Diffstat (limited to 'drivers/acpi/processor_driver.c')
| -rw-r--r-- | drivers/acpi/processor_driver.c | 28 | 
1 files changed, 20 insertions, 8 deletions
diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c index 0734086537b..971c4547470 100644 --- a/drivers/acpi/processor_driver.c +++ b/drivers/acpi/processor_driver.c @@ -701,9 +701,9 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,  {  	struct acpi_processor *pr;  	struct acpi_device *device = NULL; +	u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE; /* default */  	int result; -  	switch (event) {  	case ACPI_NOTIFY_BUS_CHECK:  	case ACPI_NOTIFY_DEVICE_CHECK: @@ -715,14 +715,18 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,  		if (!is_processor_present(handle))  			break; -		if (acpi_bus_get_device(handle, &device)) { -			result = acpi_processor_device_add(handle, &device); -			if (result) -				printk(KERN_ERR PREFIX -					    "Unable to add the device\n"); +		if (!acpi_bus_get_device(handle, &device)) +			break; + +		result = acpi_processor_device_add(handle, &device); +		if (result) { +			printk(KERN_ERR PREFIX "Unable to add the device\n");  			break;  		} + +		ost_code = ACPI_OST_SC_SUCCESS;  		break; +  	case ACPI_NOTIFY_EJECT_REQUEST:  		ACPI_DEBUG_PRINT((ACPI_DB_INFO,  				  "received ACPI_NOTIFY_EJECT_REQUEST\n")); @@ -736,15 +740,23 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,  		if (!pr) {  			printk(KERN_ERR PREFIX  				    "Driver data is NULL, dropping EJECT\n"); -			return; +			break;  		} + +		/* REVISIT: update when eject is supported */ +		ost_code = ACPI_OST_SC_EJECT_NOT_SUPPORTED;  		break; +  	default:  		ACPI_DEBUG_PRINT((ACPI_DB_INFO,  				  "Unsupported event [0x%x]\n", event)); -		break; + +		/* non-hotplug event; possibly handled by other handler */ +		return;  	} +	/* Inform firmware that the hotplug operation has completed */ +	(void) acpi_evaluate_hotplug_ost(handle, event, ost_code, NULL);  	return;  }  |