Re: [BUG] IO-APIC + timer doesn't work!

From: Jan Kiszka
Date: Sat Apr 18 2009 - 04:33:39 EST


Jeff Mahoney wrote:
> Hi all -
>
> I saw this while booting 2.6.30-rc1, -rc2, and today's git, on one of
> my development nodes. This output is with apic=debug. With noapic,
> it still hung. Both outputs follow.
>
> git bisect leads to commit 8d6f0c8214928f7c5083dd54ecb69c5d615b516e,
> but I'm not seeing anything obvious there. Backing just that change
> out doesn't fix it.
>
> -Jeff
>
> apic=debug:
>
> [ 0.000000] Initializing cgroup subsys cpuset
> [ 0.000000] Initializing cgroup subsys cpu
> [ 0.000000] Linux version 2.6.30-rc2-vanilla (jeffm@sled2) (gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) ) #22 SMP Thu Apr 16 17:25:38 EDT 2009
> [ 0.000000] Command line: root=/dev/disk/by-id/ata-ST3120813AS_3LS0FAGL-part10 eth0=dhcp console=tty0 console=ttyS0,115200 resume=/dev/disk/by-id/ata-ST3120813AS_3LS0FAGL-part6 splash=silent showopts vga=0x314 apic=debug
> [ 0.000000] KERNEL supported cpus:
> [ 0.000000] Intel GenuineIntel
> [ 0.000000] AMD AuthenticAMD
> [ 0.000000] Centaur CentaurHauls
> [ 0.000000] BIOS-provided physical RAM map:
> [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
> [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
> [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
> [ 0.000000] BIOS-e820: 0000000000100000 - 00000000f7ff0000 (usable)
> [ 0.000000] BIOS-e820: 00000000f7ff0000 - 00000000f7fff000 (ACPI data)
> [ 0.000000] BIOS-e820: 00000000f7fff000 - 00000000f8000000 (ACPI NVS)
> [ 0.000000] BIOS-e820: 00000000ff780000 - 0000000100000000 (reserved)
> [ 0.000000] BIOS-e820: 0000000100000000 - 0000000200000000 (usable)
> [ 0.000000] DMI 2.3 present.
> [ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it.
> [ 0.000000] last_pfn = 0x200000 max_arch_pfn = 0x100000000
> [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
> [ 0.000000] last_pfn = 0xf7ff0 max_arch_pfn = 0x100000000
> [ 0.000000] Scanning 0 areas for low memory corruption
> [ 0.000000] modified physical RAM map:
> [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved)
> [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable)
> [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved)
> [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved)
> [ 0.000000] modified: 0000000000100000 - 00000000f7ff0000 (usable)
> [ 0.000000] modified: 00000000f7ff0000 - 00000000f7fff000 (ACPI data)
> [ 0.000000] modified: 00000000f7fff000 - 00000000f8000000 (ACPI NVS)
> [ 0.000000] modified: 00000000ff780000 - 0000000100000000 (reserved)
> [ 0.000000] modified: 0000000100000000 - 0000000200000000 (usable)
> [ 0.000000] init_memory_mapping: 0000000000000000-00000000f7ff0000
> [ 0.000000] init_memory_mapping: 0000000100000000-0000000200000000
> [ 0.000000] RAMDISK: 37a0b000 - 37fefed3
> [ 0.000000] ACPI: RSDP 00000000000f6d40 00024 (v02 ACPIAM)
> [ 0.000000] ACPI: XSDT 00000000f7ff0100 00054 (v01 A M I OEMXSDT 06000514 MSFT 00000097)
> [ 0.000000] ACPI: FACP 00000000f7ff0281 000F4 (v01 A M I OEMFACP 06000514 MSFT 00000097)
> [ 0.000000] ACPI: DSDT 00000000f7ff0410 03591 (v01 0AAAA 0AAAA001 00000001 INTL 02002026)
> [ 0.000000] ACPI: FACS 00000000f7fff000 00040
> [ 0.000000] ACPI: APIC 00000000f7ff0380 00084 (v01 A M I OEMAPIC 06000514 MSFT 00000097)
> [ 0.000000] ACPI: OEMB 00000000f7fff040 00041 (v01 A M I OEMBIOS 06000514 MSFT 00000097)
> [ 0.000000] ACPI: SRAT 00000000f7ff39b0 00110 (v01 A M I OEMSRAT 06000514 MSFT 00000097)
> [ 0.000000] ACPI: HPET 00000000f7ff3ac0 00038 (v01 A M I OEMHPET 06000514 MSFT 00000097)
> [ 0.000000] ACPI: ASF! 00000000f7ff3b00 00086 (v01 AMIASF AMDSTRET 00000001 INTL 02002026)
> [ 0.000000] SRAT: PXM 0 -> APIC 0 -> Node 0
> [ 0.000000] SRAT: PXM 0 -> APIC 1 -> Node 0
> [ 0.000000] SRAT: PXM 1 -> APIC 2 -> Node 1
> [ 0.000000] SRAT: PXM 1 -> APIC 3 -> Node 1
> [ 0.000000] SRAT: Node 0 PXM 0 100000-f8000000
> [ 0.000000] SRAT: Node 1 PXM 1 100000000-200000000
> [ 0.000000] SRAT: Node 0 PXM 0 100000000-100000000
> [ 0.000000] SRAT: Node 0 PXM 0 0-9fc00
> [ 0.000000] Bootmem setup node 0 0000000000000000-0000000100000000
> [ 0.000000] NODE_DATA [000000000001c040 - 000000000003403f]
> [ 0.000000] bootmap [0000000000035000 - 0000000000054fff] pages 20
> [ 0.000000] (9 early reservations) ==> bootmem [0000000000 - 0100000000]
> [ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000 - 0000001000]
> [ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE ==> [0000006000 - 0000008000]
> [ 0.000000] #2 [0000200000 - 00009e0d9c] TEXT DATA BSS ==> [0000200000 - 00009e0d9c]
> [ 0.000000] #3 [0037a0b000 - 0037fefed3] RAMDISK ==> [0037a0b000 - 0037fefed3]
> [ 0.000000] #4 [000009d000 - 0000100000] BIOS reserved ==> [000009d000 - 0000100000]
> [ 0.000000] #5 [00009e1000 - 00009e11ad] BRK ==> [00009e1000 - 00009e11ad]
> [ 0.000000] #6 [0000010000 - 0000014000] PGTABLE ==> [0000010000 - 0000014000]
> [ 0.000000] #7 [0000014000 - 0000018000] PGTABLE ==> [0000014000 - 0000018000]
> [ 0.000000] #8 [0000018000 - 000001c040] MEMNODEMAP ==> [0000018000 - 000001c040]
> [ 0.000000] Bootmem setup node 1 0000000100000000-0000000200000000
> [ 0.000000] NODE_DATA [0000000100000000 - 0000000100017fff]
> [ 0.000000] bootmap [0000000100018000 - 0000000100037fff] pages 20
> [ 0.000000] (9 early reservations) ==> bootmem [0100000000 - 0200000000]
> [ 0.000000] #0 [0000000000 - 0000001000] BIOS data page
> [ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE
> [ 0.000000] #2 [0000200000 - 00009e0d9c] TEXT DATA BSS
> [ 0.000000] #3 [0037a0b000 - 0037fefed3] RAMDISK
> [ 0.000000] #4 [000009d000 - 0000100000] BIOS reserved
> [ 0.000000] #5 [00009e1000 - 00009e11ad] BRK
> [ 0.000000] #6 [0000010000 - 0000014000] PGTABLE
> [ 0.000000] #7 [0000014000 - 0000018000] PGTABLE
> [ 0.000000] #8 [0000018000 - 000001c040] MEMNODEMAP
> [ 0.000000] Scan SMP from ffff880000000000 for 1024 bytes.
> [ 0.000000] Scan SMP from ffff88000009fc00 for 1024 bytes.
> [ 0.000000] Scan SMP from ffff8800000f0000 for 65536 bytes.
> [ 0.000000] found SMP MP-table at [ffff8800000ff780] ff780
> [ 0.000000] mpc: fa3b0-fa50c
> [ 0.000000] Zone PFN ranges:
> [ 0.000000] DMA 0x00000010 -> 0x00001000
> [ 0.000000] DMA32 0x00001000 -> 0x00100000
> [ 0.000000] Normal 0x00100000 -> 0x00200000
> [ 0.000000] Movable zone start PFN for each node
> [ 0.000000] early_node_map[3] active PFN ranges
> [ 0.000000] 0: 0x00000010 -> 0x0000009f
> [ 0.000000] 0: 0x00000100 -> 0x000f7ff0
> [ 0.000000] 1: 0x00100000 -> 0x00200000
> [ 0.000000] Detected use of extended apic ids on hypertransport bus
> [ 0.000000] Detected use of extended apic ids on hypertransport bus
> [ 0.000000] ACPI: PM-Timer IO Port: 0x1008
> [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x02] enabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] enabled)
> [ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0])
> [ 0.000000] IOAPIC[0]: apic_id 4, version 0, address 0xfec00000, GSI 0-23
> [ 0.000000] ACPI: IOAPIC (id[0x05] address[0xfebff000] gsi_base[24])
> [ 0.000000] IOAPIC[1]: apic_id 5, version 0, address 0xfebff000, GSI 24-27
> [ 0.000000] ACPI: IOAPIC (id[0x06] address[0xfebfe000] gsi_base[28])
> [ 0.000000] IOAPIC[2]: apic_id 6, version 0, address 0xfebfe000, GSI 28-31
> [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
> [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
> [ 0.000000] Using ACPI (MADT) for SMP configuration information
> [ 0.000000] ACPI: HPET id: 0x102282a0 base: 0xfec01000
> [ 0.000000] SMP: Allowing 4 CPUs, 0 hotplug CPUs
> [ 0.000000] mapped APIC to ffffffffff5fc000 (fee00000)
> [ 0.000000] mapped IOAPIC to ffffffffff5fb000 (fec00000)
> [ 0.000000] mapped IOAPIC to ffffffffff5fa000 (febff000)
> [ 0.000000] mapped IOAPIC to ffffffffff5f9000 (febfe000)
> [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
> [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000
> [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000
> [ 0.000000] PM: Registered nosave memory: 00000000f7ff0000 - 00000000f7fff000
> [ 0.000000] PM: Registered nosave memory: 00000000f7fff000 - 00000000f8000000
> [ 0.000000] PM: Registered nosave memory: 00000000f8000000 - 00000000ff780000
> [ 0.000000] PM: Registered nosave memory: 00000000ff780000 - 0000000100000000
> [ 0.000000] Allocating PCI resources starting at f8800000 (gap: f8000000:7780000)
> [ 0.000000] NR_CPUS:512 nr_cpumask_bits:512 nr_cpu_ids:4 nr_node_ids:2
> [ 0.000000] PERCPU: Remapped at ffffc20000000000 with large pages, static data 71776 bytes
> [ 0.000000] Built 2 zonelists in Node order, mobility grouping on. Total pages: 2033901
> [ 0.000000] Policy zone: Normal
> [ 0.000000] Kernel command line: root=/dev/disk/by-id/ata-ST3120813AS_3LS0FAGL-part10 eth0=dhcp console=tty0 console=ttyS0,115200 resume=/dev/disk/by-id/ata-ST3120813AS_3LS0FAGL-part6 splash=silent showopts vga=0x314 apic=debug
> [ 0.000000] Initializing CPU#0
> [ 0.000000] Experimental hierarchical RCU implementation.
> [ 0.000000] Experimental hierarchical RCU init done.
> [ 0.000000] NR_IRQS:4352 nr_irqs:576
> [ 0.000000] PID hash table entries: 4096 (order: 12, 32768 bytes)
> [ 0.000000] Fast TSC calibration using PIT
> [ 0.000000] Detected 2192.534 MHz processor.
> [ 0.004000] Console: colour dummy device 80x25
> [ 0.004000] console [tty0] enabled
> [ 0.004000] console [ttyS0] enabled
> [ 0.004000] allocated 82575360 bytes of page_cgroup
> [ 0.004000] please try cgroup_disable=memory option if you don't want
> [ 0.004000] Checking aperture...
> [ 0.004000] No AGP bridge found
> [ 0.004000] Node 0: aperture @ 0 size 32 MB
> [ 0.004000] Your BIOS doesn't leave a aperture memory hole
> [ 0.004000] Please enable the IOMMU option in the BIOS setup
> [ 0.004000] This costs you 64 MB of RAM
> [ 0.004000] Mapping aperture over 65536 KB of RAM @ 20000000
> [ 0.004000] PM: Registered nosave memory: 0000000020000000 - 0000000024000000
> [ 0.004000] Memory: 7981076k/8388608k available (3350k kernel code, 131588k absent, 275944k reserved, 1936k data, 1544k init)
> [ 0.004000] HPET: 3 timers in total, 0 timers will be used for per-cpu timer
> [ 0.004010] Calibrating delay loop (skipped), value calculated using timer frequency.. 4385.06 BogoMIPS (lpj=8770136)
> [ 0.008000] Security Framework initialized
> [ 0.008000] SELinux: Disabled at boot.
> [ 0.008000] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes)
> [ 0.008000] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes)
> [ 0.008000] Mount-cache hash table entries: 256
> [ 0.008000] Initializing cgroup subsys ns
> [ 0.008000] Initializing cgroup subsys cpuacct
> [ 0.008000] Initializing cgroup subsys memory
> [ 0.008000] Initializing cgroup subsys devices
> [ 0.008000] Initializing cgroup subsys freezer
> [ 0.008000] Initializing cgroup subsys net_cls
> [ 0.008000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
> [ 0.008000] CPU: L2 Cache: 1024K (64 bytes/line)
> [ 0.008000] CPU 0/0x0 -> Node 0
> [ 0.008000] CPU: Physical Processor ID: 0
> [ 0.008000] CPU: Processor Core ID: 0
> [ 0.008000] ACPI: Core revision 20090320
> [ 0.008000] Setting APIC routing to flat
> [ 0.008000] Getting VERSION: 40010
> [ 0.008000] Getting VERSION: 40010
> [ 0.008000] Getting ID: 0
> [ 0.008000] Getting ID: ff000000
> [ 0.008000] Getting LVT0: 700
> [ 0.008000] Getting LVT1: 400
> [ 0.008000] enabled ExtINT on CPU#0
> [ 0.008000] ESR value before enabling vector: 0x00000004 after: 0x00000000
> [ 0.008000] ENABLING IO-APIC IRQs
> [ 0.008000] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0
> [ 0.008000] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
> [ 0.008000] ...trying to set up timer (IRQ0) through the 8259A ...
> [ 0.008000] ..... (found apic 0 pin 0) ...
> [ 0.008000] ....... failed.
> [ 0.008000] ...trying to set up timer as Virtual Wire IRQ...
> [ 0.008000] ..... failed.
> [ 0.008000] ...trying to set up timer as ExtINT IRQ...
> [ 0.008000] ..... failed :(.
> [ 0.008000] Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with apic=debug and send a report. Then try booting with the 'noapic' option.

Hmmmmm. That somehow reminds me of what I thought I had to fix in the
HPET emulation of QEMU just recently [1] - because of 2.6.30-rc's behavior.

Could you try if writing 'delta' a second time makes any difference on
that box?

diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 648b3a2..523d72b 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -324,6 +324,7 @@ static void hpet_set_mode(enum clock_event_mode mode,
HPET_TN_SETVAL | HPET_TN_32BIT;
hpet_writel(cfg, HPET_Tn_CFG(timer));
hpet_writel((unsigned long) delta, HPET_Tn_CMP(timer));
+ hpet_writel((unsigned long) delta, HPET_Tn_CMP(timer));
hpet_start_counter();
hpet_print_config();
break;

Thanks,
Jan

[1] http://permalink.gmane.org/gmane.comp.emulators.qemu/41570

Attachment: signature.asc
Description: OpenPGP digital signature