Re: NMI broadcast causes divide error?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 23, 2008 at 1:26 PM, Vegard Nossum <vegard.nossum@xxxxxxxxx> wrote:
> On Fri, May 23, 2008 at 12:43 PM, Vegard Nossum <vegard.nossum@xxxxxxxxx> wrote:
>> Hi,
>>
>> I am trying to broadcast an NMI like this:
>>
>>        send_IPI_allbutself(NMI_VECTOR);
>>
>> But when I do this, I get a divide error:
>>
>> ...
>> CPU: L1 I cache: 8K
>> CPU: L2 cache: 128K
>> CPU1: Intel Pentium II (Klamath) stepping 03
>> checking TSC synchronization [CPU#0 -> CPU#1]: passed.
>> Brought up 2 CPUs
>> Total of 2 processors activated (4515.61 BogoMIPS).
>> divide error: 0000 [#1] SMP
>> Modules linked in:
>>
>> Pid: 0, comm: swapper Not tainted (2.6.26-rc3-00020-g72fdb21-dirty #134)
>> EIP: 0060:[<c012b813>] EFLAGS: 00000206 CPU: 1
>> EIP is at __do_softirq+0x63/0xf0
>> EAX: c06b9480 EBX: 00000002 ECX: c1132600 EDX: 00a79000
>> ESI: c065fb00 EDI: c06b9480 EBP: c7859f14 ESP: c7859efc
>>  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
>> Process swapper (pid: 0, ti=c7858000 task=c783db80 task.ti=c7858000)
>> Stack: 0000000a 00000001 c06b6260 00000046 00000000 c06b9480 c7859f20 c012b8db
>>       c112e140 c7859f28 c012bc5c c7859f40 c01153fb 00000000 2bdef2bc c0102c00
>>       00000001 c7859f80 c0104b64 c0102c00 c06b9480 00a79000 00000001 c06b9480
>> Call Trace:
>>  [<c012b8db>] ? do_softirq+0x3b/0x50
>>  [<c012bc5c>] ? irq_exit+0x5c/0x70
>>  [<c01153fb>] ? smp_apic_timer_interrupt+0x5b/0x90
>>  [<c0102c00>] ? default_idle+0x0/0x50
>>  [<c0104b64>] ? apic_timer_interrupt+0x28/0x30
>>  [<c0102c00>] ? default_idle+0x0/0x50
>>  [<c0102c38>] ? default_idle+0x38/0x50
>>  [<c0102b1b>] ? cpu_idle+0x5b/0xc0
>>  [<c04b5894>] ? start_secondary+0x134/0x190
>>  =======================
>> Code: c0 89 45 ec c7 45 e8 0a 00 00 00 89 55 f0 64 8b 15 04 20 6b c0
>> 8b 14 95 00 82 66 c0 89 f8 c7 04 02 00 00 00 00 fb be 00 fb 65 c0 <eb>
>> 07 d1 eb 74 27 83 c6 08 f6 c3 01 74 f4 89 f0 ff 16 8b 55 ec
>> EIP: [<c012b813>] __do_softirq+0x63/0xf0 SS:ESP 0068:c7859efc
>>
>> And this doesn't really make sense, because the opcode is a jmp
>> instruction and can't cause divide errors:
>>
>> c012b813:       eb 07                   jmp    c012b81c <__do_softirq+0x6c>
>>
>>
>> NMI_VECTOR is 2, and the divide error vector is 0, according to the
>> Intel manuals.
>>
>> Any ideas what's going wrong?
>
> Ok, seems to be qemu doing something wrong (again...). It worked fine
> on my real hardware.

Sorry for the spamming. I just wanted to say that it works in
qemu-0.9.1 as well, though not in qemu-0.9.0.


Vegard

-- 
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
	-- E. W. Dijkstra, EWD1036

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux