Messages in this thread |  | | From | Ondrej Zary <> | | Subject | Re: Debugging APM - cat /proc/apm produces oops | | Date | Mon, 24 Jul 2006 23:51:37 +0200 |
| |
On Sunday 23 July 2006 17:06, Stephen Rothwell wrote: > On Sun, 23 Jul 2006 16:30:53 +0200 Ondrej Zary <linux@rainbow-software.org> wrote:
> > printing eip: > > 00002f9d > > *pre = 00000000 > > Oops: 0002 [#4] > > Modules linked in: > > CPU: 0 > > EIP: 00c0:[<00002f9d>] Not tainted VLI > > ^^^^ > This is the APM BIOS 16 bit code segment.
Looking at BIOS disassembly: 2F97: push bp 2F98: mov bp,sp 2F9A: add sp,-2 2F9D: mov [bp][-2],bx <-- it oopses here
I realized that I can modify the BIOS easily as it's stored in shadow RAM. So I replaced the offending MOV with three NOPs and tested again. This time it oopsed at 0x2FAD: 2FAD: cmp w,[bp][-2],1 2FB1: je 2FCB
that jump was taken during my single stepping, so I NOPped out the CMP and replaced JE with JMPS. Then booted Linux and APM seems to work fine - battery percentage and remaining time is there as well as AC power status. There seems to be 4 these operations: mov [bp][-2],bx cmp w,[bp][-2],1 cmp w,[bp][-2],8002 cmp w,[bp][-2],8001 but I've hit only the first two of them. I wonder what's that for (especially when it works without that).
-- Ondrej Zary - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |