If ExtINT is enabled, my board will hang when linux boots. log: ....... Checking if this processor honours the WP bit even in supervisor mode...Ok. SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 Hierarchical RCU implementation. NR_IRQS:512 Console: colour dummy device 80x25 console [ttyS0] enabled spurious APIC interrupt on CPU#0, should never happen. Fast TSC calibration using PIT Detected 2100.411 MHz processor. Calibrating delay loop (skipped), value calculated using timer frequency.. 4200.82 BogoMIPS (lpj=2100411) Mount-cache hash table entries: 512 Initializing cgroup subsys ns Initializing cgroup subsys cpuacct Initializing cgroup subsys freezer CPU: Physical Processor ID: 0 CPU: Processor Core ID: 0 mce: CPU supports 5 MCE banks using C1E aware idle routine Performance Events: AMD PMU driver. ... version: 0 ... bit width: 48 ... generic registers: 4 ... value mask: 0000ffffffffffff ... max period: 00007fffffffffff ... fixed-purpose events: 0 ... event mask: 000000000000000f Checking 'hlt' instruction... end of log.
I believe the ExtINT don't have to be enable in BIOS stage. It will be done when the kernel boots. Plus, it is the way my proprietary BIOS does.
It is tested on dbm690t.
Signed-off-by: Zheng Bao zheng.bao@amd.com
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);