Bug 8661

Summary: Oops parsing battery method - Novatach ULI EV4873
Product: ACPI Reporter: Bruce Duncan (bwduncan)
Component: Power-OtherAssignee: Zhang Rui (rui.zhang)
Status: CLOSED UNREPRODUCIBLE    
Severity: normal CC: acpi-bugzilla
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.20 Subsystem:
Regression: --- Bisected commit-id:
Attachments: DSDT table

Description Bruce Duncan 2007-06-22 06:59:11 UTC
Most recent kernel where this bug did not occur: None, it's happened for a long time but ATI have just broken their closed-source driver, now that I'm using the open one, I can report bugs again :)
Distribution: Debian unstable
Hardware Environment: Novatech Notebook (part of dmidecode is pasted later)
Software Environment:
Problem Description: ACPI exception followed by oops

Sometimes (always?) when my battery runs low, there is an ACPI exception in the logs. Once, there was a coincidental oops in the acpi subsystem. I presume this is some misfeature of my BIOS' ACPI tables?

This has happened on this machine with lots of kernels. I could upgrade to the latest kernel, but it will cause me a big headache with my rt2x00 wireless drivers, so I'll only do it if someone thinks it will be useful.

Steps to reproduce: Simply wait for the battery to run out...

ACPI: EC: acpi_ec_wait timeout, status = 0, expect_event = 1
ACPI: EC: read timeout, command = 128
ACPI Exception (evregion-0424): AE_TIME, Returned by Handler for [EmbeddedControl] [20060707]
ACPI Exception (dswexec-0458): AE_TIME, While resolving operands for [OpcodeName unavailable] [20060707]
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT0._BST] (Node ffff810037fc5810), AE_TIME
ACPI Exception (acpi_battery-0207): AE_TIME, Evaluating _BST [20060707]
Unable to handle kernel NULL pointer dereference at 000000000000000a RIP:
 [<ffffffff803b6bb1>] acpi_ex_store+0x142/0x253
PGD 35029067 PUD 3502a067 PMD 0
Oops: 0000 [1] PREEMPT
CPU 0
Modules linked in: rt2500pci ehci_hcd ohci_hcd snd_hda_intel snd_hda_codec rc80211_simple rt2x00lib snd_pcm snd_page_alloc 80211 eeprom_93cx6
Pid: 2159, comm: hald Not tainted 2.6.20 #3
RIP: 0010:[<ffffffff803b6bb1>]  [<ffffffff803b6bb1>] acpi_ex_store+0x142/0x253
RSP: 0018:ffff810035203c18  EFLAGS: 00010202
RAX: 0000000000000000 RBX: ffff810037e697e0 RCX: 0000000000000000
RDX: 0000000000000000 RSI: ffff810037e69820 RDI: 0000000000000000
RBP: 0000000000000000 R08: 0000000000000000 R09: ffff810037e697e0
R10: 0000000000000000 R11: ffffc20000008ce3 R12: 0000000000000001
R13: ffff810037e69460 R14: ffffc20000008ce3 R15: 0000000000000000
FS:  00002b4cbac38fb0(0000) GS:ffffffff8069f000(0000) knlGS:00000000f7e386c0
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 000000000000000a CR3: 0000000035027000 CR4: 00000000000006e0
Process hald (pid: 2159, threadinfo ffff810035202000, task ffff810001f45180)
Stack:  ffff810035203c28 ffff81001a81d000 ffff810037e697e0 0000000000000000
 ffff81001a81d000 ffff81001a81d260 ffffffff805e5c7e ffffffff803b64f5
 0000810000000000 0000000000000004 ffff810037e697e0 ffff81001a81d000
Call Trace:
 [<ffffffff803b64f5>] acpi_ex_opcode_2A_1T_1R+0x316/0x348
 [<ffffffff803ace43>] acpi_ds_exec_end_op+0xd9/0x407
 [<ffffffff803bc20d>] acpi_ps_parse_loop+0x611/0x96a
 [<ffffffff803bb773>] acpi_ps_parse_aml+0x7b/0x255
 [<ffffffff803bca3a>] acpi_ps_execute_pass+0x85/0x9b
 [<ffffffff803bcb67>] acpi_ps_execute_method+0xdd/0x172
 [<ffffffff803b9b33>] acpi_ns_evaluate+0xa8/0x10a
 [<ffffffff803b9731>] acpi_evaluate_object+0x12d/0x1dc
 [<ffffffff803c490d>] acpi_battery_get_info+0x76/0x166
 [<ffffffff803c512c>] acpi_battery_read_info+0x47/0x248
 [<ffffffff8021dc51>] vma_link+0x61/0x140
 [<ffffffff802428c1>] seq_read+0x121/0x2c0
 [<ffffffff8020b74a>] vfs_read+0xba/0x180
 [<ffffffff80212433>] sys_read+0x53/0x90
 [<ffffffff8026275e>] system_call+0x7e/0x83


Code: 0f b7 52 0a 39 d0 72 e6 48 8b 53 20 48 8b 44 24 10 41 bc 01
RIP  [<ffffffff803b6bb1>] acpi_ex_store+0x142/0x253
 RSP <ffff810035203c18>
CR2: 000000000000000a

Handle 0x0002, DMI type 2, 17 bytes
Base Board Information
        Manufacturer: ULI
        Product Name: EV4873
        Version: 5a
        Serial Number: 12345678
        Asset Tag: Not Specified
        Features: None
        Location In Chassis: Not Specified
        Chassis Handle: 0x0000
        Type: <OUT OF SPEC>
        Contained Object Handles: 0
Comment 1 Bruce Duncan 2007-06-22 07:17:40 UTC
Created attachment 11848 [details]
DSDT table

Not sure if this is useful to anyone, but I went to all the effort of creating it, so I thought I'd share :)

I've attached the DSDT table in some arbitrary disassembled format in case that's useful.

Bruce

bruce@moon:~$ iasl -dc dsdt.asl

Intel ACPI Component Architecture
AML Disassembler version 20061109 [May 15 2007]
Copyright (C) 2000 - 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a

Loading Acpi table from file dsdt.asl
Acpi table [DSDT] successfully installed and loaded
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
..............................................................................................................................................................................................................................................................................
Parsing completed
Disassembly completed, written to "dsdt.dsl"

Compiling "dsdt.dsl"
dsdt.dsl  1899:                 Method (STM, 0, Serialized)
Warning  1086 -                           ^ Not all control paths return a value (STM_)

dsdt.dsl  2488:                     Acquire (MUT0, 0x0FFF)
Warning  1103 -    Possible operator timeout is ignored ^

ASL Input:  dsdt.dsl - 4613 lines, 142483 bytes, 1847 keywords
AML Output: dsdt.aml - 14151 bytes 449 named objects 1398 executable opcodes

Compilation complete. 0 Errors, 2 Warnings, 0 Remarks, 5 Optimizations
Comment 2 Zhang Rui 2007-07-05 18:43:26 UTC
Does this still exist in 2.6.22-rc7?
Comment 3 Bruce Duncan 2007-07-15 18:27:03 UTC
It seems not, although I've only tested it once. I think it's reasonable to close this bug and I'll reopen it if the problem reoccurs.