(Message week:9450) X-url: http://www.isi.edu/~johnh/ To: faith@cs.unc.edu, linux-laptop@vger.rutgers.edu Subject: APM on Gateway Solo 9100? Date: Wed, 30 Jul 1997 18:12:32 -0700 From: John Heidemann I recently got a Gateway Solo 9100. Although the box claims to support APM 1.1, it seems to crash Linux kernels which include APM support. (I've attached details below.) Has anyone had any experience with Linux/APM on a Gateway Solo 9100? They worked wonderfully on a Gateway Solo 2100 we had recently. Alternatively, are there any hints about debugging this sort of thing? I've tried visually tracing the execution into the BIOS code but my x86 isn't that great. Strangely enough, APM seems to run correctly under FreeBSD on an identical box. Thanks for any help, -John Heidemann The crash: boot works until APM initialization starts, then I get: APM BIOS version 1.2 flags 0x03 (Driver version 1.2) Entry f000:c6af cseg16 f000 dseg 40 cseg len ffff, dseg len ffff Connection version 1.1 general protection: e1c8 CPU: 0 EIP: 2048:[<00007586>] EFLAGS: 00010883 eax: 00000001 ebx: 00000001 ecx: 001e54e0 edx: 00000000 esi: 002d9fdc edi: 00000014 ebp: 002d9f08 esp: 002d9efe ds: 2050 es: 0000 fs: 0000 gs: 0000 ss: 0018 Process swapper (pid: 1, process nr: 1, stackapage=002d9000) Stack: c5179b91 9f08c682 20500000 00010000 20489fdc 00019f1c 54e00000 00065e0a c6d20000 00002040 90000000 52bc0000 00100019 02460000 00180000 002b0000 00180000 00180000 00000000 8e140000 a414001d 9fdc002d 0001002d 90000000 Call trace: (goes into infinite loop) [<00180000>] [<00180000>] [<00180000>] [<0018ffff>] [<00180000>] [<00180000>] [<00180000>] [<03e4ffaa>] [<00140000>] [<0018002d>] Code: 9a ff 1e cb e1 c3 9a 8c 1f cb e1 c3 03 57 10 01 04 09 d3 a2 Code which disassembles to: 0x804943c : lcall 0x9ac3,0xe1cb1eff 0x8049443 : movw %ds,(%edi) 0x8049445 : lret 0x8049446 : loope 0x804940b <_fini+4059> 0x8049448 : addl 0x10(%edi),%edx 0x804944b : addl %eax,(%ecx,%ecx,1) 0x804944e : shll %cl,0x0(%edx) (I actually had to limit the call trace code in die_if_kernel, it seems to go into an infinite loop.) Kernel build options: CONFIG_APM=y # CONFIG_APM_IGNORE_USER_SUSPEND is not set CONFIG_APM_DO_ENABLE=y CONFIG_APM_CPU_IDLE=y # CONFIG_APM_DISPLAY_BLANK is not set CONFIG_APM_POWER_OFF=y (built under RedHat 4.2, linux-2.0.30)