mirror of https://gitee.com/openkylin/linux.git
ACPI / scan: Drop acpi_bus_add() and use acpi_bus_scan() instead
The only difference between acpi_bus_scan() and acpi_bus_add() is the invocation of acpi_update_all_gpes() in the latter which in fact is unnecessary, because acpi_update_all_gpes() has already been called by acpi_scan_init() and the way it is implemented guarantees the next invocations of it to do nothing. For this reason, drop acpi_bus_add() and make all its callers use acpi_bus_scan() directly instead of it. Additionally, rearrange the code in acpi_scan_init() slightly to improve the visibility of the acpi_update_all_gpes() call in there. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Yinghai Lu <yinghai@kernel.org>
This commit is contained in:
parent
5993c4670e
commit
b8bd759acd
|
@ -167,7 +167,7 @@ acpi_memory_get_device(acpi_handle handle,
|
|||
* Now add the notified device. This creates the acpi_device
|
||||
* and invokes .add function
|
||||
*/
|
||||
result = acpi_bus_add(handle);
|
||||
result = acpi_bus_scan(handle);
|
||||
if (result) {
|
||||
acpi_handle_warn(handle, "Cannot add acpi bus\n");
|
||||
return -EINVAL;
|
||||
|
|
|
@ -166,7 +166,7 @@ static void container_notify_cb(acpi_handle handle, u32 type, void *context)
|
|||
if (!ACPI_FAILURE(status) || device)
|
||||
break;
|
||||
|
||||
result = acpi_bus_add(handle);
|
||||
result = acpi_bus_scan(handle);
|
||||
if (result) {
|
||||
acpi_handle_warn(handle, "Failed to add container\n");
|
||||
break;
|
||||
|
|
|
@ -317,7 +317,7 @@ static struct acpi_device * dock_create_acpi_device(acpi_handle handle)
|
|||
* no device created for this object,
|
||||
* so we should create one.
|
||||
*/
|
||||
ret = acpi_bus_add(handle);
|
||||
ret = acpi_bus_scan(handle);
|
||||
if (ret)
|
||||
pr_debug("error adding bus, %x\n", -ret);
|
||||
|
||||
|
|
|
@ -699,7 +699,7 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,
|
|||
if (!acpi_bus_get_device(handle, &device))
|
||||
break;
|
||||
|
||||
result = acpi_bus_add(handle);
|
||||
result = acpi_bus_scan(handle);
|
||||
if (result) {
|
||||
acpi_handle_err(handle, "Unable to add the device\n");
|
||||
break;
|
||||
|
|
|
@ -1577,7 +1577,19 @@ static acpi_status acpi_bus_device_attach(acpi_handle handle, u32 lvl_not_used,
|
|||
return status;
|
||||
}
|
||||
|
||||
static int acpi_bus_scan(acpi_handle handle)
|
||||
/**
|
||||
* acpi_bus_scan - Add ACPI device node objects in a given namespace scope.
|
||||
* @handle: Root of the namespace scope to scan.
|
||||
*
|
||||
* Scan a given ACPI tree (probably recently hot-plugged) and create and add
|
||||
* found devices.
|
||||
*
|
||||
* If no devices were found, -ENODEV is returned, but it does not mean that
|
||||
* there has been a real error. There just have been no suitable ACPI objects
|
||||
* in the table trunk from which the kernel could create a device and add an
|
||||
* appropriate driver.
|
||||
*/
|
||||
int acpi_bus_scan(acpi_handle handle)
|
||||
{
|
||||
void *device = NULL;
|
||||
|
||||
|
@ -1594,31 +1606,7 @@ static int acpi_bus_scan(acpi_handle handle)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* acpi_bus_add - Add ACPI device node objects in a given namespace scope.
|
||||
* @handle: Root of the namespace scope to scan.
|
||||
*
|
||||
* Scan a given ACPI tree (probably recently hot-plugged) and create and add
|
||||
* found devices.
|
||||
*
|
||||
* If no devices were found, -ENODEV is returned, but it does not mean that
|
||||
* there has been a real error. There just have been no suitable ACPI objects
|
||||
* in the table trunk from which the kernel could create a device and add an
|
||||
* appropriate driver.
|
||||
*/
|
||||
int acpi_bus_add(acpi_handle handle)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = acpi_bus_scan(handle);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
acpi_update_all_gpes();
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_bus_add);
|
||||
EXPORT_SYMBOL(acpi_bus_scan);
|
||||
|
||||
static acpi_status acpi_bus_device_detach(acpi_handle handle, u32 lvl_not_used,
|
||||
void *not_used, void **ret_not_used)
|
||||
|
@ -1708,13 +1696,15 @@ int __init acpi_scan_init(void)
|
|||
return result;
|
||||
|
||||
result = acpi_bus_get_device(ACPI_ROOT_OBJECT, &acpi_root);
|
||||
if (!result)
|
||||
result = acpi_bus_scan_fixed();
|
||||
|
||||
if (result)
|
||||
acpi_device_unregister(acpi_root);
|
||||
else
|
||||
acpi_update_all_gpes();
|
||||
return result;
|
||||
|
||||
return result;
|
||||
result = acpi_bus_scan_fixed();
|
||||
if (result) {
|
||||
acpi_device_unregister(acpi_root);
|
||||
return result;
|
||||
}
|
||||
|
||||
acpi_update_all_gpes();
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -746,7 +746,7 @@ static int acpiphp_bus_add(struct acpiphp_func *func)
|
|||
dbg("acpi_bus_trim return %x\n", ret_val);
|
||||
}
|
||||
|
||||
ret_val = acpi_bus_add(func->handle);
|
||||
ret_val = acpi_bus_scan(func->handle);
|
||||
if (!ret_val)
|
||||
ret_val = acpi_bus_get_device(func->handle, &device);
|
||||
|
||||
|
@ -1129,7 +1129,7 @@ static void handle_bridge_insertion(acpi_handle handle, u32 type)
|
|||
return;
|
||||
}
|
||||
|
||||
if (acpi_bus_add(handle)) {
|
||||
if (acpi_bus_scan(handle)) {
|
||||
err("cannot add bridge to acpi list\n");
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -447,9 +447,9 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
|
|||
if (ACPI_SUCCESS(ret) &&
|
||||
(adr>>16) == (slot->device_num + 1)) {
|
||||
|
||||
ret = acpi_bus_add(chandle);
|
||||
ret = acpi_bus_scan(chandle);
|
||||
if (ACPI_FAILURE(ret)) {
|
||||
printk(KERN_ERR "%s: acpi_bus_add "
|
||||
printk(KERN_ERR "%s: acpi_bus_scan "
|
||||
"failed (0x%x) for slot %d "
|
||||
"func %d\n", __func__,
|
||||
ret, (int)(adr>>16),
|
||||
|
|
|
@ -346,7 +346,7 @@ static inline int acpi_bus_generate_proc_event(struct acpi_device *device, u8 ty
|
|||
#endif
|
||||
int acpi_bus_register_driver(struct acpi_driver *driver);
|
||||
void acpi_bus_unregister_driver(struct acpi_driver *driver);
|
||||
int acpi_bus_add(acpi_handle handle);
|
||||
int acpi_bus_scan(acpi_handle handle);
|
||||
void acpi_bus_hot_remove_device(void *context);
|
||||
int acpi_bus_trim(struct acpi_device *start);
|
||||
acpi_status acpi_bus_get_ejd(acpi_handle handle, acpi_handle * ejd);
|
||||
|
|
Loading…
Reference in New Issue