On Tue, Feb 2, 2010 at 6:40 PM, Stefan Reinauer stepan@coresystems.de wrote:
On 2/2/10 4:25 AM, Bao, Zheng wrote:
Index: src/arch/i386/smp/ioapic.c
--- src/arch/i386/smp/ioapic.c (revision 5073) +++ src/arch/i386/smp/ioapic.c (working copy) @@ -110,7 +110,7 @@ #endif
/* Enable Virtual Wire Mode */
- low = ENABLED | TRIGGER_EDGE | POLARITY_HIGH | PHYSICAL_DEST |
ExtINT;
- low = DISABLED;
high = bsp_lapicid << (56 - 32);
io_apic_write(ioapic_base, 0x10, low);
Hm.. This will break quite some other boards...
Is there any particular reason why the dbm690t will not work in virtual wire mode?
I think either the sb600 code should call clear_ioapic() instead of setup_ioapic() or (maybe better) the setup_ioapic() function should get an additional parameter virtual_wire
Anyways, maybe we should try to unify clear_ioapic and setup_ioapic
(also, the function should create a device node and append it to the bridge it is called from)
Sefan,
You are right. The sb600 was really doing a clear_ioapic() previously. I don't yet understand why the virtual wire mode causes problems. It is either an additional sb600 setup issue or a mainboard problem with how EXTINT is connected. The setup_ioapic() should probably have more options as EXTINT doesn't have to be connected to the APIC.
Signed-off-by: Marc Jones marcj303@gmail.com
Marc