kern/117591: [acpi][panic] Divide by zero bug in ACPI

Jessica Mahoney root at varusonline.com
Mon Nov 19 19:09:25 PST 2007


Jung-uk Kim wrote:
> On Monday 19 November 2007 07:07 pm, Jessica Mahoney wrote:
>   
>> Nate Lawson wrote:
>>     
>>> John Baldwin wrote:
>>>       
>>>> On Monday 19 November 2007 05:40:03 pm Jessica Mahoney wrote:
>>>>         
>>>>>  John Baldwin wrote:
>>>>>  > Can you get a stack trace?
>>>>>
>>>>>  Tracing pid 878 tid 100080 td 0xc3f26440
>>>>>
>>>>> acpi_battery_get_battinfo(c3a27980,c3ee4d00,e51e1c60,c3ee4d00,0
>>>>> ,...) at acpi_battery_get_battinfo+0x26f
>>>>>  acpi_battery_ioctl(c0a44203,c3ee4d00,0,c40ec880,e51e1c08,...)
>>>>> at acpi_battery_ioctl+0x14b
>>>>>  acpiioctl(c3a9e900,c0a44203,c3ee4d00,3,c3f26440,...) at
>>>>> acpiioctl_0xdd
>>>>> devfs_ioctl_f(c3e35d80,c0a44203,c3ee4d00,c3ee5800,c3f26440,...)
>>>>> at devfs_ioctl_f+0xcb
>>>>>  kern_ioctl(c3f26440,3,c0a44203,c3ee4d00,1000a24,..._ at
>>>>> kern_ioctl+0x355
>>>>> ioctl(c3f26440,e51e1cfc,c,c3f26440,e51e1d2c,...) at ioctl+0x134
>>>>> syscall(e51e1d38) at syscall+0x345
>>>>>  Xint0x80_syscall() at Xint0x80_syscall+0x20
>>>>>  --- syscall (54, FreeBSD ELF32, ioctl), eip = 0x2815289b, esp
>>>>> = 0xbfbfec3c, ebp = 0xbfbfed28 ---
>>>>>
>>>>>  If there's anything else needed, please let me know and I
>>>>> shall provide.
>>>>>           
>>>> You can try this:
>>>>
>>>> Index: acpi_battery.c
>>>> ================================================================
>>>> === RCS file: /usr/cvs/src/sys/dev/acpica/acpi_battery.c,v
>>>> retrieving revision 1.25
>>>> diff -u -r1.25 acpi_battery.c
>>>> --- acpi_battery.c      9 Oct 2007 07:51:46 -0000       1.25
>>>> +++ acpi_battery.c      19 Nov 2007 23:17:48 -0000
>>>> @@ -198,8 +198,10 @@
>>>>          */
>>>>         if (bif->units == ACPI_BIF_UNITS_MA && bif->dvol != 0) {
>>>>             bst[i].rate = (bst[i].rate * bif->dvol) / 1000;
>>>> +#if 0
>>>>             bst[i].cap = (bst[i].cap * bif->dvol) / 1000;
>>>>             bif->lfcap = (bif->lfcap * bif->dvol) / 1000;
>>>> +#endif
>>>>         }
>>>>
>>>>         /* Calculate percent capacity remaining. */
>>>>
>>>> I think the mA => mW scaling is resulting in lfcap becoming 0,
>>>> but since all we want is a ratio for 'cap' so we can generate a
>>>> percentage, we don't actually need to scale this.
>>>>         
>>> I think this was already fixed in RELENG_6, 7, and 8-current. 
>>> Can the submitter cvsup and try again?
>>>       
>> I just did a cvsup last night, and the issue still persists (hence
>> why I was able to provide a trace).
>>     
>
> Can you try the attached patch?
>
> Jung-uk Kim
>   
Mr Kim,
Your patch works.  I just hotplugged the battery 5 times while obtaining 
battery information essentially non-stop (scripted it), and little 
Panther didn't suffer from a kernel panic.  Instead, the kernel just 
keeps skipping along the road as happily as before.  Thank you.


~Jessica
=^.^=


More information about the freebsd-acpi mailing list