ACPI: Invalid Power Resource to register!

From: Borislav Petkov
Date: Wed Aug 01 2012 - 14:04:49 EST


Hi,

I'm getting the message in $Subject with latest linus:v3.5-8833-g2d534926205d

The dmesg printk is delayed for 5 seconds probably due to async scanning
(see trace below):

[ 10.746148] [drm] vram apper at 0xD0000000
[ 10.750680] [drm] size 786432
[ 10.754050] [drm] fb depth is 8
[ 10.757593] [drm] pitch is 1024
[ 10.761862] fbcon: radeondrmfb (fb0) is primary device

[ 5.163363] ACPI: Invalid Power Resource to register <----

[ 10.949414] Console: switching to colour frame buffer device 128x48
[ 10.977810] fb0: radeondrmfb frame buffer device
[ 10.982601] drm: registered panic notifier
[ 10.986892] [drm] Initialized radeon 2.17.0 20080528 for 0000:02:06.0 on minor 0

So I added some debugging code to see where exactly this happens:

diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
index 215ecd097408..d79e0f8c1f4e 100644
--- a/drivers/acpi/power.c
+++ b/drivers/acpi/power.c
@@ -432,11 +432,17 @@ int acpi_power_resource_register_device(struct device *dev, acpi_handle handle)
return -ENODEV;

ret = acpi_bus_get_device(handle, &acpi_dev);
- if (ret)
+ if (ret) {
+ pr_warn(PREFIX "error getting device %s\n", dev_name(&acpi_dev->dev));
+ dump_stack();
goto no_power_resource;
+ }

- if (!acpi_dev->power.flags.power_resources)
+ if (!acpi_dev->power.flags.power_resources) {
+ pr_warn(PREFIX "no power resources %s\n", dev_name(&acpi_dev->dev));
+ dump_stack();
goto no_power_resource;
+ }

powered_device = kzalloc(sizeof(*powered_device), GFP_KERNEL);
if (!powered_device)
---

and I got the following trace:

---
[ 5.163287] ACPI: no power resources device:1a
[ 5.163292] Pid: 1023, comm: kworker/u:4 Tainted: G W 3.5.0+ #9
[ 5.163293] Call Trace:
[ 5.163300] [<ffffffff81227866>] acpi_power_resource_register_device+0x8f/0x1bf
[ 5.163305] [<ffffffff81221a5f>] ? acpi_get_child+0x48/0x4e
[ 5.163310] [<ffffffff812e34db>] ata_acpi_bind+0x80/0x87
[ 5.163313] [<ffffffff812d891e>] ata_scsi_scan_host+0x91/0x184
[ 5.163317] [<ffffffff812d4f4f>] async_port_probe+0x4a/0x4f
[ 5.163321] [<ffffffff810568cc>] async_run_entry_fn+0x9a/0x152
[ 5.163325] [<ffffffff8104a103>] process_one_work+0x265/0x438
[ 5.163328] [<ffffffff8104a080>] ? process_one_work+0x1e2/0x438
[ 5.163331] [<ffffffff81475a01>] ? _raw_spin_lock_irq+0x17/0x46
[ 5.163335] [<ffffffff81056832>] ? async_schedule+0x17/0x17
[ 5.163339] [<ffffffff8104c47f>] worker_thread+0x260/0x329
[ 5.163342] [<ffffffff8107ac72>] ? trace_hardirqs_on+0xd/0xf
[ 5.163346] [<ffffffff8104c21f>] ? manage_workers.clone.15+0x1f6/0x1f6
[ 5.163349] [<ffffffff810502ee>] kthread+0x89/0x91
[ 5.163353] [<ffffffff8147dd64>] kernel_thread_helper+0x4/0x10
[ 5.163356] [<ffffffff814762d9>] ? retint_restore_args+0xe/0xe
[ 5.163359] [<ffffffff81050265>] ? __init_kthread_worker+0x5b/0x5b
[ 5.163362] [<ffffffff8147dd60>] ? gs_change+0xb/0xb


And as it looks like, acpi_dev->power.flags.power_resources is 0.

This thing is set in acpi_bus_get_power_flags() so I'd guess some of
those _PR* objects are probably not completely correct and they should
be fixed in the BIOS?

Any comments are appreciated.

Thanks.

--
Regards/Gruss,
Boris.

Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
GM: Alberto Bozzo
Reg: Dornach, Landkreis Muenchen
HRB Nr. 43632 WEEE Registernr: 129 19551
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/