Merge branch 'acpi-ost'
* acpi-ost: ACPI: Drop acpi_evaluate_hotplug_ost() and ACPI_HOTPLUG_OST ACPI: use device name LNXSYBUS.xx for ACPI \_SB and \_TZ objects ACPI / processor: use acpi_evaluate_ost() to replace open-coded version ACPI / PAD / xen: use acpi_evaluate_ost() to replace open-coded version ACPI / PAD: use acpi_evaluate_ost() to replace open-coded version ACPI: rename acpi_evaluate_hotplug_ost() to acpi_evaluate_ost()
This commit is contained in:
commit
2eb060975d
|
@ -408,28 +408,14 @@ static int acpi_pad_pur(acpi_handle handle)
|
||||||
return num;
|
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)
|
static void acpi_pad_handle_notify(acpi_handle handle)
|
||||||
{
|
{
|
||||||
int num_cpus;
|
int num_cpus;
|
||||||
uint32_t idle_cpus;
|
uint32_t idle_cpus;
|
||||||
|
struct acpi_buffer param = {
|
||||||
|
.length = 4,
|
||||||
|
.pointer = (void *)&idle_cpus,
|
||||||
|
};
|
||||||
|
|
||||||
mutex_lock(&isolated_cpus_lock);
|
mutex_lock(&isolated_cpus_lock);
|
||||||
num_cpus = acpi_pad_pur(handle);
|
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);
|
acpi_pad_idle_cpus(num_cpus);
|
||||||
idle_cpus = acpi_pad_idle_cpus_num();
|
idle_cpus = acpi_pad_idle_cpus_num();
|
||||||
acpi_pad_ost(handle, 0, idle_cpus);
|
acpi_evaluate_ost(handle, ACPI_PROCESSOR_AGGREGATOR_NOTIFY, 0, ¶m);
|
||||||
mutex_unlock(&isolated_cpus_lock);
|
mutex_unlock(&isolated_cpus_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -311,9 +311,7 @@ static void acpi_bus_osc_support(void)
|
||||||
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PPC_OST_SUPPORT;
|
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PPC_OST_SUPPORT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ACPI_HOTPLUG_OST
|
|
||||||
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_OST_SUPPORT;
|
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_OST_SUPPORT;
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!ghes_disable)
|
if (!ghes_disable)
|
||||||
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_APEI_SUPPORT;
|
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_APEI_SUPPORT;
|
||||||
|
@ -410,7 +408,7 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
acpi_evaluate_hotplug_ost(handle, type, ost_code, NULL);
|
acpi_evaluate_ost(handle, type, ost_code, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------
|
||||||
|
|
|
@ -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)
|
static void acpi_processor_ppc_ost(acpi_handle handle, int status)
|
||||||
{
|
{
|
||||||
union acpi_object params[2] = {
|
if (acpi_has_method(handle, "_OST"))
|
||||||
{.type = ACPI_TYPE_INTEGER,},
|
acpi_evaluate_ost(handle, ACPI_PROCESSOR_NOTIFY_PERFORMANCE,
|
||||||
{.type = ACPI_TYPE_INTEGER,},
|
status, NULL);
|
||||||
};
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int acpi_processor_ppc_has_changed(struct acpi_processor *pr, int event_flag)
|
int acpi_processor_ppc_has_changed(struct acpi_processor *pr, int event_flag)
|
||||||
|
|
|
@ -474,8 +474,8 @@ static int acpi_generic_hotplug_event(struct acpi_device *adev, u32 type)
|
||||||
dev_info(&adev->dev, "Eject disabled\n");
|
dev_info(&adev->dev, "Eject disabled\n");
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
}
|
}
|
||||||
acpi_evaluate_hotplug_ost(adev->handle, ACPI_NOTIFY_EJECT_REQUEST,
|
acpi_evaluate_ost(adev->handle, ACPI_NOTIFY_EJECT_REQUEST,
|
||||||
ACPI_OST_SC_EJECT_IN_PROGRESS, NULL);
|
ACPI_OST_SC_EJECT_IN_PROGRESS, NULL);
|
||||||
return acpi_scan_hot_remove(adev);
|
return acpi_scan_hot_remove(adev);
|
||||||
}
|
}
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -524,7 +524,7 @@ void acpi_device_hotplug(struct acpi_device *adev, u32 src)
|
||||||
ost_code = ACPI_OST_SC_SUCCESS;
|
ost_code = ACPI_OST_SC_SUCCESS;
|
||||||
|
|
||||||
err_out:
|
err_out:
|
||||||
acpi_evaluate_hotplug_ost(adev->handle, src, ost_code, NULL);
|
acpi_evaluate_ost(adev->handle, src, ost_code, NULL);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
acpi_bus_put_acpi_device(adev);
|
acpi_bus_put_acpi_device(adev);
|
||||||
|
@ -583,8 +583,8 @@ acpi_eject_store(struct device *d, struct device_attribute *attr,
|
||||||
return count;
|
return count;
|
||||||
|
|
||||||
put_device(&acpi_device->dev);
|
put_device(&acpi_device->dev);
|
||||||
acpi_evaluate_hotplug_ost(acpi_device->handle, ACPI_OST_EC_OSPM_EJECT,
|
acpi_evaluate_ost(acpi_device->handle, ACPI_OST_EC_OSPM_EJECT,
|
||||||
ACPI_OST_SC_NON_SPECIFIC_FAILURE, NULL);
|
ACPI_OST_SC_NON_SPECIFIC_FAILURE, NULL);
|
||||||
return status == AE_NO_MEMORY ? -ENOMEM : -EAGAIN;
|
return status == AE_NO_MEMORY ? -ENOMEM : -EAGAIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1757,6 +1757,20 @@ static bool acpi_ibm_smbus_match(acpi_handle handle)
|
||||||
return false;
|
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,
|
static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,
|
||||||
int device_type)
|
int device_type)
|
||||||
{
|
{
|
||||||
|
@ -1808,8 +1822,10 @@ static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,
|
||||||
acpi_add_id(pnp, ACPI_DOCK_HID);
|
acpi_add_id(pnp, ACPI_DOCK_HID);
|
||||||
else if (acpi_ibm_smbus_match(handle))
|
else if (acpi_ibm_smbus_match(handle))
|
||||||
acpi_add_id(pnp, ACPI_SMBUS_IBM_HID);
|
acpi_add_id(pnp, ACPI_SMBUS_IBM_HID);
|
||||||
else if (list_empty(&pnp->ids) && handle == ACPI_ROOT_OBJECT) {
|
else if (list_empty(&pnp->ids) &&
|
||||||
acpi_add_id(pnp, ACPI_BUS_HID); /* \_SB, LNXSYBUS */
|
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_name, ACPI_BUS_DEVICE_NAME);
|
||||||
strcpy(pnp->device_class, ACPI_BUS_CLASS);
|
strcpy(pnp->device_class, ACPI_BUS_CLASS);
|
||||||
}
|
}
|
||||||
|
|
|
@ -422,7 +422,7 @@ out:
|
||||||
EXPORT_SYMBOL(acpi_get_physical_device_location);
|
EXPORT_SYMBOL(acpi_get_physical_device_location);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_evaluate_hotplug_ost: Evaluate _OST for hotplug operations
|
* acpi_evaluate_ost: Evaluate _OST for hotplug operations
|
||||||
* @handle: ACPI device handle
|
* @handle: ACPI device handle
|
||||||
* @source_event: source event code
|
* @source_event: source event code
|
||||||
* @status_code: status code
|
* @status_code: status code
|
||||||
|
@ -433,17 +433,15 @@ EXPORT_SYMBOL(acpi_get_physical_device_location);
|
||||||
* When the platform does not support _OST, this function has no effect.
|
* When the platform does not support _OST, this function has no effect.
|
||||||
*/
|
*/
|
||||||
acpi_status
|
acpi_status
|
||||||
acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
|
acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
|
||||||
u32 status_code, struct acpi_buffer *status_buf)
|
struct acpi_buffer *status_buf)
|
||||||
{
|
{
|
||||||
#ifdef ACPI_HOTPLUG_OST
|
|
||||||
union acpi_object params[3] = {
|
union acpi_object params[3] = {
|
||||||
{.type = ACPI_TYPE_INTEGER,},
|
{.type = ACPI_TYPE_INTEGER,},
|
||||||
{.type = ACPI_TYPE_INTEGER,},
|
{.type = ACPI_TYPE_INTEGER,},
|
||||||
{.type = ACPI_TYPE_BUFFER,}
|
{.type = ACPI_TYPE_BUFFER,}
|
||||||
};
|
};
|
||||||
struct acpi_object_list arg_list = {3, params};
|
struct acpi_object_list arg_list = {3, params};
|
||||||
acpi_status status;
|
|
||||||
|
|
||||||
params[0].integer.value = source_event;
|
params[0].integer.value = source_event;
|
||||||
params[1].integer.value = status_code;
|
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;
|
params[2].buffer.length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
|
return acpi_evaluate_object(handle, "_OST", &arg_list, NULL);
|
||||||
return status;
|
|
||||||
#else
|
|
||||||
return AE_OK;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(acpi_evaluate_hotplug_ost);
|
EXPORT_SYMBOL(acpi_evaluate_ost);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_handle_printk: Print message with ACPI prefix and object path
|
* acpi_handle_printk: Print message with ACPI prefix and object path
|
||||||
|
|
|
@ -313,7 +313,7 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) acpi_evaluate_hotplug_ost(handle, event, ost_code, NULL);
|
(void) acpi_evaluate_ost(handle, event, ost_code, NULL);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
acpi_scan_lock_release();
|
acpi_scan_lock_release();
|
||||||
|
|
|
@ -285,7 +285,7 @@ static void acpi_memory_device_notify(acpi_handle handle, u32 event, void *data)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) acpi_evaluate_hotplug_ost(handle, event, ost_code, NULL);
|
(void) acpi_evaluate_ost(handle, event, ost_code, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,27 +77,14 @@ static int acpi_pad_pur(acpi_handle handle)
|
||||||
return num;
|
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)
|
static void acpi_pad_handle_notify(acpi_handle handle)
|
||||||
{
|
{
|
||||||
int idle_nums;
|
int idle_nums;
|
||||||
|
struct acpi_buffer param = {
|
||||||
|
.length = 4,
|
||||||
|
.pointer = (void *)&idle_nums,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
mutex_lock(&xen_cpu_lock);
|
mutex_lock(&xen_cpu_lock);
|
||||||
idle_nums = acpi_pad_pur(handle);
|
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)
|
idle_nums = xen_acpi_pad_idle_cpus(idle_nums)
|
||||||
?: xen_acpi_pad_idle_cpus_num();
|
?: xen_acpi_pad_idle_cpus_num();
|
||||||
if (idle_nums >= 0)
|
if (idle_nums >= 0)
|
||||||
acpi_pad_ost(handle, 0, idle_nums);
|
acpi_evaluate_ost(handle, ACPI_PROCESSOR_AGGREGATOR_NOTIFY,
|
||||||
|
0, ¶m);
|
||||||
mutex_unlock(&xen_cpu_lock);
|
mutex_unlock(&xen_cpu_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,8 +49,8 @@ acpi_evaluate_reference(acpi_handle handle,
|
||||||
struct acpi_object_list *arguments,
|
struct acpi_object_list *arguments,
|
||||||
struct acpi_handle_list *list);
|
struct acpi_handle_list *list);
|
||||||
acpi_status
|
acpi_status
|
||||||
acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
|
acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code,
|
||||||
u32 status_code, struct acpi_buffer *status_buf);
|
struct acpi_buffer *status_buf);
|
||||||
|
|
||||||
acpi_status
|
acpi_status
|
||||||
acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld);
|
acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld);
|
||||||
|
|
Loading…
Reference in a new issue