Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 350834
b: refs/heads/master
c: 0cd6ac5
h: refs/heads/master
v: v3
  • Loading branch information
Rafael J. Wysocki committed Jan 3, 2013
1 parent 8a7027f commit a00141f
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 44 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 209d3b1743c8187c67cc75dbe9fefbcd3121fba0
refs/heads/master: 0cd6ac52b333f66ee64e50ed216ec99231092dcd
7 changes: 6 additions & 1 deletion trunk/drivers/acpi/acpi_memhotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,11 +167,16 @@ 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, &device);
result = acpi_bus_add(handle);
if (result) {
acpi_handle_warn(handle, "Cannot add acpi bus\n");
return -EINVAL;
}
result = acpi_bus_get_device(handle, &device);
if (result) {
acpi_handle_warn(handle, "Missing device object\n");
return -EINVAL;
}

end:
*mem_device = acpi_driver_data(device);
Expand Down
7 changes: 6 additions & 1 deletion trunk/drivers/acpi/container.c
Original file line number Diff line number Diff line change
Expand Up @@ -166,11 +166,16 @@ static void container_notify_cb(acpi_handle handle, u32 type, void *context)
if (!ACPI_FAILURE(status) || device)
break;

result = acpi_bus_add(handle, &device);
result = acpi_bus_add(handle);
if (result) {
acpi_handle_warn(handle, "Failed to add container\n");
break;
}
result = acpi_bus_get_device(handle, &device);
if (result) {
acpi_handle_warn(handle, "Missing device object\n");
break;
}

kobject_uevent(&device->dev.kobj, KOBJ_ONLINE);
ost_code = ACPI_OST_SC_SUCCESS;
Expand Down
4 changes: 3 additions & 1 deletion trunk/drivers/acpi/dock.c
Original file line number Diff line number Diff line change
Expand Up @@ -317,9 +317,11 @@ 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, &device);
ret = acpi_bus_add(handle);
if (ret)
pr_debug("error adding bus, %x\n", -ret);

acpi_bus_get_device(handle, &device);
}
return device;
}
Expand Down
8 changes: 6 additions & 2 deletions trunk/drivers/acpi/processor_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -699,12 +699,16 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,
if (!acpi_bus_get_device(handle, &device))
break;

result = acpi_bus_add(handle, &device);
result = acpi_bus_add(handle);
if (result) {
acpi_handle_err(handle, "Unable to add the device\n");
break;
}

result = acpi_bus_get_device(handle, &device);
if (result) {
acpi_handle_err(handle, "Missing device object\n");
break;
}
ost_code = ACPI_OST_SC_SUCCESS;
break;

Expand Down
38 changes: 11 additions & 27 deletions trunk/drivers/acpi/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -1620,37 +1620,27 @@ static acpi_status acpi_bus_device_attach(acpi_handle handle, u32 lvl_not_used,
return status;
}

static int acpi_bus_scan(acpi_handle handle, struct acpi_device **child)
static int acpi_bus_scan(acpi_handle handle)
{
void *device = NULL;
acpi_status status;
int ret = -ENODEV;

status = acpi_bus_check_add(handle, 0, NULL, &device);
if (ACPI_SUCCESS(status))
if (ACPI_SUCCESS(acpi_bus_check_add(handle, 0, NULL, &device)))
acpi_walk_namespace(ACPI_TYPE_ANY, handle, ACPI_UINT32_MAX,
acpi_bus_check_add, NULL, NULL, &device);

if (!device)
goto out;
return -ENODEV;

ret = 0;
status = acpi_bus_device_attach(handle, 0, NULL, NULL);
if (ACPI_SUCCESS(status))
if (ACPI_SUCCESS(acpi_bus_device_attach(handle, 0, NULL, NULL)))
acpi_walk_namespace(ACPI_TYPE_ANY, handle, ACPI_UINT32_MAX,
acpi_bus_device_attach, NULL, NULL, NULL);

out:
if (child)
*child = device;

return ret;
return 0;
}

/**
* acpi_bus_add - Add ACPI device node objects in a given namespace scope.
* @handle: Root of the namespace scope to scan.
* @ret: Location to store a return struct acpi_device pointer.
*
* Scan a given ACPI tree (probably recently hot-plugged) and create and add
* found devices.
Expand All @@ -1659,21 +1649,12 @@ static int acpi_bus_scan(acpi_handle handle, struct acpi_device **child)
* 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.
*
* If 0 is returned, the memory location pointed to by @ret will be populated
* with a pointer to a struct acpi_device created while scanning the namespace.
* If @handle corresponds to a device node, that will be a pointer to the struct
* acpi_device object corresponding to @handle. Otherwise, it will be a pointer
* to a struct acpi_device corresponding to one of its descendants.
*
* If an error code is returned, NULL will be stored in the memory location
* pointed to by @ret.
*/
int acpi_bus_add(acpi_handle handle, struct acpi_device **ret)
int acpi_bus_add(acpi_handle handle)
{
int err;

err = acpi_bus_scan(handle, ret);
err = acpi_bus_scan(handle);
if (err)
return err;

Expand Down Expand Up @@ -1777,8 +1758,11 @@ int __init acpi_scan_init(void)
/*
* Enumerate devices in the ACPI namespace.
*/
result = acpi_bus_scan(ACPI_ROOT_OBJECT, &acpi_root);
result = acpi_bus_scan(ACPI_ROOT_OBJECT);
if (result)
return result;

result = acpi_bus_get_device(ACPI_ROOT_OBJECT, &acpi_root);
if (!result)
result = acpi_bus_scan_fixed();

Expand Down
19 changes: 11 additions & 8 deletions trunk/drivers/pci/hotplug/acpiphp_glue.c
Original file line number Diff line number Diff line change
Expand Up @@ -746,14 +746,13 @@ 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, &device);
if (ret_val) {
dbg("error adding bus, %x\n",
-ret_val);
goto acpiphp_bus_add_out;
}
ret_val = acpi_bus_add(func->handle);
if (!ret_val)
ret_val = acpi_bus_get_device(func->handle, &device);

if (ret_val)
dbg("error adding bus, %x\n", -ret_val);

acpiphp_bus_add_out:
return ret_val;
}

Expand Down Expand Up @@ -1130,10 +1129,14 @@ static void handle_bridge_insertion(acpi_handle handle, u32 type)
return;
}

if (acpi_bus_add(handle, &device)) {
if (acpi_bus_add(handle)) {
err("cannot add bridge to acpi list\n");
return;
}
if (acpi_bus_get_device(handle, &device)) {
err("ACPI device object missing\n");
return;
}
if (!acpiphp_configure_bridge(handle))
add_bridge(handle);
else
Expand Down
3 changes: 1 addition & 2 deletions trunk/drivers/pci/hotplug/sgi_hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,6 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
if (SN_ACPI_BASE_SUPPORT() && ssdt) {
unsigned long long adr;
struct acpi_device *pdevice;
struct acpi_device *device;
acpi_handle phandle;
acpi_handle chandle = NULL;
acpi_handle rethandle;
Expand Down Expand Up @@ -448,7 +447,7 @@ 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, &device);
ret = acpi_bus_add(chandle);
if (ACPI_FAILURE(ret)) {
printk(KERN_ERR "%s: acpi_bus_add "
"failed (0x%x) for slot %d "
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/acpi/acpi_bus.h
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,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, struct acpi_device **ret);
int acpi_bus_add(acpi_handle handle);
void acpi_bus_hot_remove_device(void *context);
int acpi_bus_trim(struct acpi_device *start, int rmdevice);
acpi_status acpi_bus_get_ejd(acpi_handle handle, acpi_handle * ejd);
Expand Down

0 comments on commit a00141f

Please sign in to comment.