Re: Double Interrupt with HT

From: Herbert Poetzl
Date: Mon Dec 15 2003 - 12:17:56 EST


On Mon, Dec 15, 2003 at 03:58:43PM +0100, Miroslaw KLABA wrote:
> Hello,
>
> I've got a problem while using Hyper-Threading on a motherboard with Via P4M266A
> chipset with 2.4.23 kernel.
> Without SMP enabled, I've got no problem with this chip, but when I enable SMP, the
> clock runs twice the speed, and interrupts are handled by both virtual CPUs, instead of
> the first one, like on other servers I run.
> I haven't got this problem with other chips but with this Via chip. There is no special thing
> in dmesg.
> Have you an idea from what the problem comes? I haven't found any patch for this type
> of problem.

hmm, you could try

# echo "1" >/proc/irq/0/smp_affinity

which should stop the second 'cpu' from
handling the timer interrupts ...

but this doesn't explain the 2x clock,
which probably is some bug ...

HTH,
Herbert

> Thanks
> Miro
>
>
> # cat /proc/interrupts
> CPU0 CPU1
> 0: 675819 675759 IO-APIC-edge timer
> 1: 60 60 IO-APIC-edge keyboard
> 2: 0 0 XT-PIC cascade
> 4: 16 16 IO-APIC-edge serial
> 8: 1 1 IO-APIC-edge rtc
> 14: 5859 5859 IO-APIC-edge ide0
> 23: 248484 134979 IO-APIC-level eth0
> NMI: 0 0
> LOC: 675742 675741
> ERR: 0
> MIS: 0
>
> #dmesg
> Linux version 2.4.23 (root@xxx) (gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)) #1 SMP lun déc 1 21:52:33 CET 2003
> BIOS-provided physical RAM map:
> BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
> BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
> BIOS-e820: 0000000000100000 - 000000001dff0000 (usable)
> BIOS-e820: 000000001dff0000 - 000000001dff3000 (ACPI NVS)
> BIOS-e820: 000000001dff3000 - 000000001e000000 (ACPI data)
> BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
> 0MB HIGHMEM available.
> 479MB LOWMEM available.
> found SMP MP-table at 000f5410
> hm, page 000f5000 reserved twice.
> hm, page 000f6000 reserved twice.
> hm, page 000f0000 reserved twice.
> hm, page 000f1000 reserved twice.
> On node 0 totalpages: 122864
> zone(0): 4096 pages.
> zone(1): 118768 pages.
> zone(2): 0 pages.
> ACPI: RSDP (v000 VIAP4X ) @ 0x000f6dc0
> ACPI: RSDT (v001 VIAP4X AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x1dff3000
> ACPI: FADT (v001 VIAP4X AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x1dff3040
> ACPI: MADT (v001 VIAP4X AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x1dff6d80
> ACPI: DSDT (v001 VIAP4X AWRDACPI 0x00001000 MSFT 0x0100000d) @ 0x00000000
> ACPI: Local APIC address 0xfee00000
> ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
> Processor #0 Pentium 4(tm) XEON(tm) APIC version 20
> ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
> Processor #1 Pentium 4(tm) XEON(tm) APIC version 20
> Using ACPI for processor (LAPIC) configuration information
> Intel MultiProcessor Specification v1.4
> Virtual Wire compatibility mode.
> OEM ID: OEM00000 Product ID: PROD00000000 APIC at: 0xFEE00000
> I/O APIC #2 Version 17 at 0xFEC00000.
> Enabling APIC mode: Flat. Using 1 I/O APICs
> Processors: 2
> Kernel command line: auto BOOT_IMAGE=linux-bi ro root=301 BOOT_FILE=/boot/bzImage-2.4.23-bipiv nousb
> Initializing CPU#0
> Detected 3064.187 MHz processor.
> Console: colour VGA+ 80x25
> Calibrating delay loop... 6107.95 BogoMIPS
> Memory: 482512k/491456k available (1536k kernel code, 8560k reserved, 386k data, 304k init, 0k highmem)
> Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
> Inode cache hash table entries: 32768 (order: 6, 262144 bytes)
> Mount cache hash table entries: 512 (order: 0, 4096 bytes)
> Buffer cache hash table entries: 32768 (order: 5, 131072 bytes)
> Page-cache hash table entries: 131072 (order: 7, 524288 bytes)
> CPU: Trace cache: 12K uops, L1 D cache: 8K
> CPU: L2 cache: 512K
> CPU: Physical Processor ID: 0
> Intel machine check architecture supported.
> Intel machine check reporting enabled on CPU#0.
> CPU: After generic, caps: bfebfbff 00000000 00000000 00000000
> CPU: Common caps: bfebfbff 00000000 00000000 00000000
> Enabling fast FPU save and restore... done.
> Enabling unmasked SIMD FPU exception support... done.
> Checking 'hlt' instruction... OK.
> POSIX conformance testing by UNIFIX
> CPU: Trace cache: 12K uops, L1 D cache: 8K
> CPU: L2 cache: 512K
> CPU: Physical Processor ID: 0
> Intel machine check reporting enabled on CPU#0.
> CPU: After generic, caps: bfebfbff 00000000 00000000 00000000
> CPU: Common caps: bfebfbff 00000000 00000000 00000000
> CPU0: Intel(R) Pentium(R) 4 CPU 3.06GHz stepping 07
> per-CPU timeslice cutoff: 1462.76 usecs.
> enabled ExtINT on CPU#0
> ESR value before enabling vector: 00000000
> ESR value after enabling vector: 00000000
> Booting processor 1/1 eip 2000
> Initializing CPU#1
> masked ExtINT on CPU#1
> ESR value before enabling vector: 00000000
> ESR value after enabling vector: 00000000
> Calibrating delay loop... 6121.06 BogoMIPS
> CPU: Trace cache: 12K uops, L1 D cache: 8K
> CPU: L2 cache: 512K
> CPU: Physical Processor ID: 0
> Intel machine check reporting enabled on CPU#1.
> CPU: After generic, caps: bfebfbff 00000000 00000000 00000000
> CPU: Common caps: bfebfbff 00000000 00000000 00000000
> CPU1: Intel(R) Pentium(R) 4 CPU 3.06GHz stepping 07
> Total of 2 processors activated (12229.01 BogoMIPS).
> cpu_sibling_map[0] = 1
> cpu_sibling_map[1] = 0
> ENABLING IO-APIC IRQs
> Setting 2 in the phys_id_present_map
> ...changing IO-APIC physical APIC ID to 2 ... ok.
> init IO_APIC IRQs
> IO-APIC (apicid-pin) 2-0, 2-5, 2-7, 2-12, 2-17, 2-18, 2-20 not connected.
> ..TIMER: vector=0x31 pin1=2 pin2=0
> number of MP IRQ sources: 21.
> number of IO-APIC #2 registers: 24.
> testing the IO APIC.......................
>
> IO APIC #2......
> .... register #00: 02000000
> ....... : physical APIC id: 02
> ....... : Delivery Type: 0
> ....... : LTS : 0
> .... register #01: 00178003
> ....... : max redirection entries: 0017
> ....... : PRQ implemented: 1
> ....... : IO APIC version: 0003
> .... IRQ redirection table:
> NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
> 00 000 00 1 0 0 0 0 0 0 00
> 01 003 03 0 0 0 0 0 1 1 39
> 02 003 03 0 0 0 0 0 1 1 31
> 03 003 03 0 0 0 0 0 1 1 41
> 04 003 03 0 0 0 0 0 1 1 49
> 05 000 00 1 0 0 0 0 0 0 00
> 06 003 03 0 0 0 0 0 1 1 51
> 07 000 00 1 0 0 0 0 0 0 00
> 08 003 03 0 0 0 0 0 1 1 59
> 09 003 03 0 0 0 0 0 1 1 61
> 0a 003 03 0 0 0 0 0 1 1 69
> 0b 003 03 1 1 0 1 0 1 1 71
> 0c 000 00 1 0 0 0 0 0 0 00
> 0d 003 03 0 0 0 0 0 1 1 79
> 0e 003 03 0 0 0 0 0 1 1 81
> 0f 003 03 0 0 0 0 0 1 1 89
> 10 003 03 1 1 0 1 0 1 1 91
> 11 000 00 1 0 0 0 0 0 0 00
> 12 000 00 1 0 0 0 0 0 0 00
> 13 003 03 1 1 0 1 0 1 1 99
> 14 000 00 1 0 0 0 0 0 0 00
> 15 003 03 1 1 0 1 0 1 1 A1
> 16 003 03 1 1 0 1 0 1 1 A9
> 17 003 03 1 1 0 1 0 1 1 B1
> IRQ to pin mappings:
> IRQ0 -> 0:2
> IRQ1 -> 0:1
> IRQ3 -> 0:3
> IRQ4 -> 0:4
> IRQ6 -> 0:6
> IRQ8 -> 0:8
> IRQ9 -> 0:9
> IRQ10 -> 0:10
> IRQ11 -> 0:11
> IRQ13 -> 0:13
> IRQ14 -> 0:14
> IRQ15 -> 0:15
> IRQ16 -> 0:16
> IRQ19 -> 0:19
> IRQ21 -> 0:21
> IRQ22 -> 0:22
> IRQ23 -> 0:23
> .................................... done.
> Using local APIC timer interrupts.
> calibrating APIC timer ...
> ..... CPU clock speed is 3064.1412 MHz.
> ..... host bus clock speed is 133.2235 MHz.
> cpu: 0, clocks: 1332235, slice: 444078
> CPU0<T0:1332224,T1:888144,D:2,S:444078,C:1332235>
> cpu: 1, clocks: 1332235, slice: 444078
> CPU1<T0:1332224,T1:444064,D:4,S:444078,C:1332235>
> checking TSC synchronization across CPUs: passed.
> Waiting on wait_init_idle (map = 0x2)
> All processors have done init_idle
> PCI: PCI BIOS revision 2.10 entry at 0xfb510, last bus=1
> PCI: Using configuration type 1
> PCI: Probing PCI hardware
> PCI: Probing PCI hardware (bus 00)
> PCI: Using IRQ router VIA [1106/3177] at 00:11.0
> PCI->APIC IRQ transform: (B0,I16,P0) -> 21
> PCI->APIC IRQ transform: (B0,I16,P1) -> 21
> PCI->APIC IRQ transform: (B0,I16,P2) -> 21
> PCI->APIC IRQ transform: (B0,I16,P3) -> 19
> PCI->APIC IRQ transform: (B0,I17,P0) -> 11
> PCI->APIC IRQ transform: (B0,I17,P2) -> 22
> PCI->APIC IRQ transform: (B0,I18,P0) -> 23
> PCI->APIC IRQ transform: (B1,I0,P0) -> 16
> PCI: Via IRQ fixup for 00:10.0, from 11 to 5
> PCI: Via IRQ fixup for 00:10.1, from 7 to 5
> PCI: Via IRQ fixup for 00:10.2, from 12 to 5
> Linux NET4.0 for Linux 2.4
> Based upon Swansea University Computer Society NET3.039
> Initializing RT netlink socket
> Starting kswapd
> VFS: Disk quotas vdquot_6.5.1
> Journalled Block Device driver loaded
> pty: 256 Unix98 ptys configured
> Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
> ttyS00 at 0x03f8 (irq = 4) is a 16550A
> Real Time Clock Driver v1.10e
> Software Watchdog Timer: 0.05, timer margin: 60 sec
> Floppy drive(s): fd0 is 1.44M
> reset set in interrupt, calling c01a4bf0
> floppy0: no floppy controllers found
> loop: loaded (max 8 devices)
> Intel(R) PRO/1000 Network Driver - version 5.2.20-k1
> Copyright (c) 1999-2003 Intel Corporation.
> via-rhine.c:v1.10-LK1.1.19 July-12-2003 Written by Donald Becker
> http://www.scyld.com/network/via-rhine.html
> eth0: VIA VT6102 Rhine-II at 0xe800, 00:0d:87:5e:d3:b9, IRQ 23.
> eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 40a1.
> Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
> VP_IDE: IDE controller at PCI slot 00:11.1
> VP_IDE: chipset revision 6
> VP_IDE: not 100% native mode: will probe irqs later
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
> VP_IDE: VIA vt8235 (rev 00) IDE UDMA133 controller on pci00:11.1
> ide0: BM-DMA at 0xdc00-0xdc07, BIOS settings: hda:DMA, hdb:pio
> ide1: BM-DMA at 0xdc08-0xdc0f, BIOS settings: hdc:pio, hdd:pio
> hda: IC35L060AVV207-0, ATA DISK drive
> blk: queue c038af60, I/O limit 4095Mb (mask 0xffffffff)
> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
> hda: attached ide-disk driver.
> hda: host protected area => 1
> hda: 80418240 sectors (41174 MB) w/1821KiB Cache, CHS=5005/255/63, UDMA(100)
> Partition check:
> hda: hda1 hda2 hda3
> SCSI subsystem driver Revision: 1.00
> md: linear personality registered as nr 1
> md: raid0 personality registered as nr 2
> md: raid1 personality registered as nr 3
> md: raid5 personality registered as nr 4
> raid5: measuring checksumming speed
> 8regs : 3566.400 MB/sec
> 32regs : 2193.200 MB/sec
> pIII_sse : 3942.400 MB/sec
> pII_mmx : 3625.600 MB/sec
> p5_mmx : 3546.000 MB/sec
> raid5: using function: pIII_sse (3942.400 MB/sec)
> md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
> md: Autodetecting RAID arrays.
> md: autorun ...
> md: ... autorun DONE.
> Initializing Cryptographic API
> NET4: Linux TCP/IP 1.0 for NET4.0
> IP Protocols: ICMP, UDP, TCP, IGMP
> IP: routing cache hash table of 4096 buckets, 32Kbytes
> TCP: Hash tables configured (established 32768 bind 32768)
> IPv4 over IPv4 tunneling driver
> ip_conntrack version 2.1 (3839 buckets, 30712 max) - 292 bytes per conntrack
> ip_tables: (C) 2000-2002 Netfilter core team
> NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
> kjournald starting. Commit interval 5 seconds
> EXT3-fs: mounted filesystem with ordered data mode.
> VFS: Mounted root (ext3 filesystem) readonly.
> Freeing unused kernel memory: 304k freed
> Adding Swap: 522104k swap-space (priority -1)
> EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,1), internal journal
> kjournald starting. Commit interval 5 seconds
> EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,2), internal journal
> EXT3-fs: mounted filesystem with ordered data mode.
>
>
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/