linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* REGRESSION: the new i386 timer code fails to sync CPUs
@ 2006-07-22 23:36 Matthias Urlichs
  2006-07-23  0:36 ` Andrew Morton
  0 siblings, 1 reply; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-22 23:36 UTC (permalink / raw)
  To: linux-kernel; +Cc: ohnstul, akpm, torvalds, bunk, lethal, hirofumi

Hi,

the change 5d0cf410e94b1f1ff852c3f210d22cc6c5a27ffa
    [PATCH] Time: i386 Clocksource Drivers

    Implement the time sources for i386 (acpi_pm, cyclone, hpet, pit, and tsc).
    With this patch, the conversion of the i386 arch to the generic timekeeping
    code should be complete.

    The patch should be fairly straight forward, only adding the new clocksources.

causes the clocks of the two CPUs in my dual-Xeon server to lose
(or, maybe, never gain) sync.

Before this change, they're in sync; afterwards, they're not.

This is a problem because, as soon as the system decides to switch CPUs
while a program is sleeping (which happens quite early during boot-up),
that sleep takes a *long* time. :-/

Checked by simply running "date" repeatedly. Thanks to Linux' superb
scheduler, this command reliably runs on alternate CPUs, thereby
demonstrating the problem, and I didn't have to resort to "taskset".


Boot log:

Linux version 2.6.17-test-1.29 (root@kiste) (gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)) #1 SMP PREEMPT Sun Jul 23 01:05:35 CEST 2006
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009b000 (usable)
 BIOS-e820: 000000000009b000 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved)
 BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 00000000d7f70000 (usable)
 BIOS-e820: 00000000d7f70000 - 00000000d7f7b000 (ACPI data)
 BIOS-e820: 00000000d7f7b000 - 00000000d7f80000 (ACPI NVS)
 BIOS-e820: 00000000d7f80000 - 00000000d8000000 (reserved)
 BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000ff800000 - 00000000ffc00000 (reserved)
 BIOS-e820: 00000000fffffc00 - 0000000100000000 (reserved)
 BIOS-e820: 0000000100000000 - 0000000128000000 (usable)
Warning only 4GB will be used.
Use a PAE enabled kernel.
3200MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000f6700
On node 0 totalpages: 1048576
  DMA zone: 4096 pages, LIFO batch:0
  Normal zone: 225280 pages, LIFO batch:31
  HighMem zone: 819200 pages, LIFO batch:31
DMI present.
ACPI: RSDP (v000 PTLTD                                 ) @ 0x000f6750
ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0xd7f75ea1
ACPI: FADT (v001 INTEL  TUMWATER 0x06040000 PTL  0x00000003) @ 0xd7f7ae35
ACPI: MADT (v001 PTLTD  	 APIC   0x06040000  LTP 0x00000000) @ 0xd7f7aea9
ACPI: BOOT (v001 PTLTD  $SBFTBL$ 0x06040000  LTP 0x00000001) @ 0xd7f7af39
ACPI: MCFG (v001 PTLTD  	 Mcfg   0x06040000  LTP 0x00000000) @ 0xd7f7af61
ACPI: ASF! (v016   CETP     CETP 0x06040000 PTL  0x00000001) @ 0xd7f7af9d
ACPI: SSDT (v001  PmRef    CpuPm 0x00003000 INTL 0x20030224) @ 0xd7f75edd
ACPI: DSDT (v001  Intel Lindhrst 0x06040000 MSFT 0x0100000e) @ 0x00000000
ACPI: PM-Timer IO Port: 0x1008
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x06] enabled)
Processor #6 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
Processor #1 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x07] enabled)
Processor #7 15:4 APIC version 20
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
ACPI: IOAPIC (id[0x03] address[0xfec10000] gsi_base[24])
IOAPIC[1]: apic_id 3, version 32, address 0xfec10000, GSI 24-47
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 high edge)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
Enabling APIC mode:  Flat.  Using 2 I/O APICs
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at f1000000 (gap: f0000000:0ec00000)
Detected 3000.352 MHz processor.
Built 1 zonelists.  Total pages: 1048576
Kernel command line: root=/dev/md1 ro break
mapped APIC to ffffd000 (fee00000)
mapped IOAPIC to ffffc000 (fec00000)
mapped IOAPIC to ffffb000 (fec10000)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 16384 bytes)
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 3483476k/4194304k available (1724k kernel code, 53692k reserved, 982k data, 204k init, 2620864k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 6004.95 BogoMIPS (lpj=12009905)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
using mwait in idle threads.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000180 0000641d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU0: Intel P4/Xeon Extended MCE MSRs (24) available
Checking 'hlt' instruction... OK.
Freeing SMP alternatives: 12k freed
ACPI: Core revision 20060608
CPU0: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03
Booting processor 1/1 eip 2000
Initializing CPU#1
Calibrating delay using timer specific routine.. 6000.73 BogoMIPS (lpj=12001474)
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000180 0000641d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: Intel P4/Xeon Extended MCE MSRs (24) available
CPU1: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03
Booting processor 2/6 eip 2000
Initializing CPU#2
Calibrating delay using timer specific routine.. 5600.72 BogoMIPS (lpj=11201446)
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
CPU: Physical Processor ID: 3
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000180 0000641d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#2.
CPU2: Intel P4/Xeon Extended MCE MSRs (24) available
CPU2: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03
Booting processor 3/7 eip 2000
Initializing CPU#3
Calibrating delay using timer specific routine.. 5600.70 BogoMIPS (lpj=11201416)
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
CPU: Physical Processor ID: 3
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000180 0000641d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#3.
CPU3: Intel P4/Xeon Extended MCE MSRs (24) available
CPU3: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03
Total of 4 processors activated (23207.12 BogoMIPS).
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
checking TSC synchronization across 4 CPUs: 
Brought up 4 CPUs
migration_cost=93,1739
checking if image is initramfs... it is
Freeing initrd memory: 4192k freed
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: Using MMCONFIG
Setting up standard PCI resources
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
PCI quirk: region 1000-107f claimed by ICH4 ACPI/GPIO/TCO
PCI quirk: region 1180-11bf claimed by ICH4 GPIO
PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1
Boot video device is 0000:04:03.0
PCI: Transparent bridge - 0000:00:1e.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIX._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 *5 6 7 10 11 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 *10 11 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 10 *11 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 10 *11 14 15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKF] (IRQs 4 5 6 7 10 11 14 15) *3
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 *10 11 14 15)
ACPI: PCI Interrupt Link [LNKH] (IRQs 4 5 6 7 *10 11 14 15)
Linux Plug and Play Support v0.97 (c) Adam Belay
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
PCI: Bridge: 0000:00:02.0
  IO window: disabled.
  MEM window: da100000-da1fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:03.0
  IO window: disabled.
  MEM window: da200000-da2fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:1c.0
  IO window: 2000-2fff
  MEM window: da300000-da3fffff
  PREFETCH window: de000000-dfffffff
PCI: Bridge: 0000:05:04.0
  IO window: 4000-4fff
  MEM window: dc000000-dc0fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:04:02.0
  IO window: 4000-4fff
  MEM window: dc000000-dc0fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:1e.0
  IO window: 3000-4fff
  MEM window: da400000-dc0fffff
  PREFETCH window: f1000000-f10fffff
ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> IRQ 169
PCI: Setting latency timer of device 0000:00:02.0 to 64
ACPI: PCI Interrupt 0000:00:03.0[A] -> GSI 16 (level, low) -> IRQ 169
PCI: Setting latency timer of device 0000:00:03.0 to 64
PCI: Setting latency timer of device 0000:00:1e.0 to 64
NET: Registered protocol family 2
IP route cache hash table entries: 131072 (order: 7, 524288 bytes)
TCP established hash table entries: 131072 (order: 9, 3145728 bytes)
TCP bind hash table entries: 65536 (order: 8, 1572864 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
TCP reno registered
Simple Boot Flag at 0x36 set to 0x1
Machine check exception polling timer started.
highmem bounce pool size: 64 pages
Initializing Cryptographic API
io scheduler noop registered
io scheduler cfq registered (default)
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
PNP: No PS/2 controller found. Probing ports directly.
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
TCP bic registered
NET: Registered protocol family 1
Starting balanced_irq
Using IPI Shortcut mode
Freeing unused kernel memory: 204k freed
Time: tsc clocksource has been installed.


.config file (trimmed: anything not mentioned is turned off):

CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_SYSVIPC=y
CONFIG_SYSCTL=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_UID16=y
CONFIG_VM86=y
CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SLAB=y
CONFIG_TINY_SHMEM=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODVERSIONS=y
CONFIG_KMOD=y
CONFIG_IOSCHED_NOOP=y
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
CONFIG_SMP=y
CONFIG_X86_PC=y
CONFIG_MPENTIUMIII=y
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_HPET_TIMER=y
CONFIG_NR_CPUS=4
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=y
CONFIG_X86_REBOOTFIXUPS=y
CONFIG_EDD=m
CONFIG_HIGHMEM4G=y
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_MTRR=y
CONFIG_IRQBALANCE=y
CONFIG_REGPARM=y
CONFIG_SECCOMP=y
CONFIG_HZ_250=y
CONFIG_HZ=250
CONFIG_PHYSICAL_START=0x100000
CONFIG_PM=y
CONFIG_ACPI=y
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_FAN=m
CONFIG_ACPI_PROCESSOR=m
CONFIG_ACPI_THERMAL=m
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CONFIG_PCI=y
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_MSI=y
CONFIG_ISA_DMA_API=y
CONFIG_BINFMT_ELF=y
CONFIG_NET=y
CONFIG_UNIX=y
CONFIG_NETWORK_SECMARK=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=m
CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
CONFIG_INPUT=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_EVDEV=m
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_PCI=m
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_RSA=y
CONFIG_SERIAL_CORE=y
CONFIG_UNIX98_PTYS=y
CONFIG_NVRAM=m
CONFIG_RTC=m
CONFIG_GEN_RTC=m
CONFIG_GEN_RTC_X=y
CONFIG_HPET=y
CONFIG_HPET_MMAP=y
CONFIG_VIDEO_V4L2=y
CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_FIRMWARE_EDID=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
CONFIG_FB_VESA=y
CONFIG_VIDEO_SELECT=y
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_DMA_ENGINE=y
CONFIG_NET_DMA=y
CONFIG_INTEL_IOATDMA=m
CONFIG_ROMFS_FS=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_DNOTIFY=y
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_RAMFS=y
CONFIG_CRAMFS=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_DEBUG_SLAB=y
CONFIG_DEBUG_SLAB_LEAK=y
CONFIG_DEBUG_PREEMPT=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_VM=y
CONFIG_FRAME_POINTER=y
CONFIG_UNWIND_INFO=y
CONFIG_FORCED_INLINING=y
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_DEBUG_STACK_USAGE=y
CONFIG_STACK_BACKTRACE_COLS=2
CONFIG_DEBUG_PAGEALLOC=y
CONFIG_DEBUG_RODATA=y
CONFIG_4KSTACKS=y
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
CONFIG_DOUBLEFAULT=y
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_ARC4=m
CONFIG_CRC_CCITT=m
CONFIG_CRC32=y
CONFIG_ZLIB_INFLATE=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_X86_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_KTIME_SCALAR=y

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
You are tricky, but never to the point of dishonesty.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-22 23:36 REGRESSION: the new i386 timer code fails to sync CPUs Matthias Urlichs
@ 2006-07-23  0:36 ` Andrew Morton
  2006-07-23  8:16   ` Matthias Urlichs
  0 siblings, 1 reply; 25+ messages in thread
From: Andrew Morton @ 2006-07-23  0:36 UTC (permalink / raw)
  To: Matthias Urlichs; +Cc: linux-kernel, johnstul, torvalds, bunk, lethal, hirofumi

On Sun, 23 Jul 2006 01:36:38 +0200
Matthias Urlichs <smurf@smurf.noris.de> wrote:

> Hi,
> 
> the change 5d0cf410e94b1f1ff852c3f210d22cc6c5a27ffa
>     [PATCH] Time: i386 Clocksource Drivers
> 
>     Implement the time sources for i386 (acpi_pm, cyclone, hpet, pit, and tsc).
>     With this patch, the conversion of the i386 arch to the generic timekeeping
>     code should be complete.
> 
>     The patch should be fairly straight forward, only adding the new clocksources.
> 
> causes the clocks of the two CPUs in my dual-Xeon server to lose
> (or, maybe, never gain) sync.
> 
> Before this change, they're in sync; afterwards, they're not.
> 
> This is a problem because, as soon as the system decides to switch CPUs
> while a program is sleeping (which happens quite early during boot-up),
> that sleep takes a *long* time. :-/
> 
> Checked by simply running "date" repeatedly. Thanks to Linux' superb
> scheduler, this command reliably runs on alternate CPUs, thereby
> demonstrating the problem, and I didn't have to resort to "taskset".
> 
> 
> Boot log:
> 
> Linux version 2.6.17-test-1.29 (root@kiste) (gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)) #1 SMP PREEMPT Sun Jul 23 01:05:35 CEST 2006

What is 2.6.17-test-1.29?

How do you know that 5d0cf410e94b1f1ff852c3f210d22cc6c5a27ffa caused this?

> checking TSC synchronization across 4 CPUs: 

That code's a bit sick.  But nothing much has changed in there.

> Time: tsc clocksource has been installed.

OK.

Are you able to test the below?  It should fix up the reporting.

Are you able to compare the present bootlog with the 2.6.17 bootlog?

AFAICT the "fixed it up" claim is simply untrue.  Odd.


--- a/arch/i386/kernel/smpboot.c~synchronize_tsc-fixes
+++ a/arch/i386/kernel/smpboot.c
@@ -215,7 +215,7 @@ valid_k7:
 static atomic_t tsc_start_flag = ATOMIC_INIT(0);
 static atomic_t tsc_count_start = ATOMIC_INIT(0);
 static atomic_t tsc_count_stop = ATOMIC_INIT(0);
-static unsigned long long tsc_values[NR_CPUS];
+static unsigned long long __initdata tsc_values[NR_CPUS];
 
 #define NR_LOOPS 5
 
@@ -286,7 +286,6 @@ static void __init synchronize_tsc_bp (v
 	avg = sum;
 	do_div(avg, num_booting_cpus());
 
-	sum = 0;
 	for (i = 0; i < NR_CPUS; i++) {
 		if (!cpu_isset(i, cpu_callout_map))
 			continue;
@@ -297,7 +296,8 @@ static void __init synchronize_tsc_bp (v
 		 * We report bigger than 2 microseconds clock differences.
 		 */
 		if (delta > 2*one_usec) {
-			long realdelta;
+			long long realdelta;
+
 			if (!buggy) {
 				buggy = 1;
 				printk("\n");
@@ -307,12 +307,10 @@ static void __init synchronize_tsc_bp (v
 			if (tsc_values[i] < avg)
 				realdelta = -realdelta;
 
-			if (realdelta > 0)
-				printk(KERN_INFO "CPU#%d had %ld usecs TSC "
+			if (realdelta)
+				printk(KERN_INFO "CPU#%d had %Ld usecs TSC "
 					"skew, fixed it up.\n", i, realdelta);
 		}
-
-		sum += delta;
 	}
 	if (!buggy)
 		printk("passed.\n");
_


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-23  0:36 ` Andrew Morton
@ 2006-07-23  8:16   ` Matthias Urlichs
  2006-07-23 11:46     ` Andrew Morton
  0 siblings, 1 reply; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-23  8:16 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, johnstul, torvalds, bunk, lethal, hirofumi

Hi,

Azndrew Morton:
> What is 2.6.17-test-1.29?

My test build; standard kernel during bisection.

> How do you know that 5d0cf410e94b1f1ff852c3f210d22cc6c5a27ffa caused this?
> 
git bisect.

> Are you able to test the below?  It should fix up the reporting.
> 
Applied.

> Are you able to compare the present bootlog with the 2.6.17 bootlog?
> 
Sure. The diff says:

 checking TSC synchronization across 4 CPUs:
+CPU#0 had 748437 usecs TSC skew, fixed it up.
+CPU#1 had 748437 usecs TSC skew, fixed it up.
+CPU#2 had -748437 usecs TSC skew, fixed it up.
+CPU#3 had -748437 usecs TSC skew, fixed it up.
 Brought up 4 CPUs
-migration_cost=4000,8000
+migration_cost=85,1724

... but apparently, that skew is not corrected.

These numbers do match the difference in observed "date" outputs.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
The first place you look for something
is the last place you'd expect to find it.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-23  8:16   ` Matthias Urlichs
@ 2006-07-23 11:46     ` Andrew Morton
  2006-07-23 12:08       ` Matthias Urlichs
  0 siblings, 1 reply; 25+ messages in thread
From: Andrew Morton @ 2006-07-23 11:46 UTC (permalink / raw)
  To: Matthias Urlichs; +Cc: linux-kernel, johnstul, torvalds, bunk, lethal, hirofumi

On Sun, 23 Jul 2006 10:16:04 +0200
Matthias Urlichs <smurf@smurf.noris.de> wrote:

> > Are you able to compare the present bootlog with the 2.6.17 bootlog?
> > 
> Sure. The diff says:
> 
>  checking TSC synchronization across 4 CPUs:
> +CPU#0 had 748437 usecs TSC skew, fixed it up.
> +CPU#1 had 748437 usecs TSC skew, fixed it up.
> +CPU#2 had -748437 usecs TSC skew, fixed it up.
> +CPU#3 had -748437 usecs TSC skew, fixed it up.
>  Brought up 4 CPUs
> -migration_cost=4000,8000
> +migration_cost=85,1724
> 
> ... but apparently, that skew is not corrected.
> 
> These numbers do match the difference in observed "date" outputs.

>From this I'll assume that

- CPU0 and CPU1 share a TSC and CPU2 and CPU3 share another TSC.

- write_tsc() simply doesn't work on this machine.

- Earlier kernels weren't able to modify the TSC either.

- Earlier kernels didn't use the TSC as a time source whereas this one
  does, hence the problems which you're observing.


Some or all of the below might be wrong, but I don't think so:


I assume that booting with clock=pit or clock=pmtmr fixes it?

It would be useful to check your 2.6.17 boot logs, see if we can work out
what 2.6.17 was using for a clock source.

We need to fix that "fixed it up" message because it just ain't so.

The new clocksouce code needs to detect this and to mark the TSC source as
unstable, or otherwise unusable.

We _could_ fix the TSC skew up, by adjusting the rdtsc output by the
tsc_values[] entry wherever we read the TSC.

It would of course be better to make write_tsc() work.  I wonder why it
doesn't?


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-23 11:46     ` Andrew Morton
@ 2006-07-23 12:08       ` Matthias Urlichs
  2006-07-23 12:37         ` Andrew Morton
  0 siblings, 1 reply; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-23 12:08 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, johnstul, torvalds, bunk, lethal, hirofumi

Hi,

Andrew Morton:
> - CPU0 and CPU1 share a TSC and CPU2 and CPU3 share another TSC.
> 
That mmakes sense, since they're one dual-core Xeon each.

> - Earlier kernels didn't use the TSC as a time source whereas this one
>   does, hence the problems which you're observing.
> 
Correct; see below.

> I assume that booting with clock=pit or clock=pmtmr fixes it?
> 
Testing... yes, both.

> It would be useful to check your 2.6.17 boot logs, see if we can work out
> what 2.6.17 was using for a clock source.
> 
That's easy:

2.6.17    -Using pmtmr for high-res timesource
2.6.18git +Time: tsc clocksource has been installed.

I missed those two lines, as in the boot logs they're not really
adjacent, so they got lost in the jumble of other differences.

Interestingly, CPU0/1 gets 6000 bogomips while CPU2/3 only reaches 5600 ..?
(That happens with both kernels.) I do wonder why, and whether this has any
bearing on the current problem.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
BEANS ARE NEITHER FRUIT NOR MUSICAL
		-- Bart Simpson on chalkboard in episode 1F22

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-23 12:08       ` Matthias Urlichs
@ 2006-07-23 12:37         ` Andrew Morton
  2006-07-23 12:58           ` Matthias Urlichs
                             ` (2 more replies)
  0 siblings, 3 replies; 25+ messages in thread
From: Andrew Morton @ 2006-07-23 12:37 UTC (permalink / raw)
  To: Matthias Urlichs; +Cc: linux-kernel, johnstul, torvalds, bunk, lethal, hirofumi

On Sun, 23 Jul 2006 14:08:29 +0200
Matthias Urlichs <smurf@smurf.noris.de> wrote:

> Hi,
> 
> Andrew Morton:
> > - CPU0 and CPU1 share a TSC and CPU2 and CPU3 share another TSC.
> > 
> That mmakes sense, since they're one dual-core Xeon each.

OK.

> > - Earlier kernels didn't use the TSC as a time source whereas this one
> >   does, hence the problems which you're observing.
> > 
> Correct; see below.
> 
> > I assume that booting with clock=pit or clock=pmtmr fixes it?
> > 
> Testing... yes, both.
> 
> > It would be useful to check your 2.6.17 boot logs, see if we can work out
> > what 2.6.17 was using for a clock source.
> > 
> That's easy:
> 
> 2.6.17    -Using pmtmr for high-res timesource
> 2.6.18git +Time: tsc clocksource has been installed.
> 
> I missed those two lines, as in the boot logs they're not really
> adjacent, so they got lost in the jumble of other differences.

OK, thanks.  Marking the TSC as bad in this case is simple to do - let us
let John work out the best way.

We must have lost a TSC sanity check somewhere along the way.  I wonder
what it was?

> Interestingly, CPU0/1 gets 6000 bogomips while CPU2/3 only reaches 5600 ..?
> (That happens with both kernels.) I do wonder why, and whether this has any
> bearing on the current problem.

I wouldn't expect it to matter, unless the TSCs are running at different
speeds or something.

Also the sched-domain migration costs are grossly different between the two
kernels.  Maybe we changed the migration-cost-estimation code; I forget.

I'll see if we can get an expert opinion on the write_tsc() failure.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-23 12:37         ` Andrew Morton
@ 2006-07-23 12:58           ` Matthias Urlichs
  2006-07-24 15:52           ` Siddha, Suresh B
  2006-07-24 15:58           ` john stultz
  2 siblings, 0 replies; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-23 12:58 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, johnstul, torvalds, bunk, lethal, hirofumi

Hi,

Andrew Morton:
> Also the sched-domain migration costs are grossly different between the two
> kernels.  Maybe we changed the migration-cost-estimation code; I forget.
> 
The old values look suspicious. 4000 and 8000 ??

Maybe there was some excess delay or wait time in the estimator.

The only code in the kernel I'd accept to take exactly 4000 of *anything*
without further investigation is a call to "mdelay(4)".  ;-)

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
Silence is the element in which great things fashion themselves.
		-- Thomas Carlyle

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-23 12:37         ` Andrew Morton
  2006-07-23 12:58           ` Matthias Urlichs
@ 2006-07-24 15:52           ` Siddha, Suresh B
  2006-07-24 15:58           ` john stultz
  2 siblings, 0 replies; 25+ messages in thread
From: Siddha, Suresh B @ 2006-07-24 15:52 UTC (permalink / raw)
  To: smurf
  Cc: Matthias Urlichs, linux-kernel, johnstul, torvalds, bunk, lethal,
	hirofumi, akpm

On Sun, Jul 23, 2006 at 05:37:55AM -0700, Andrew Morton wrote:
> On Sun, 23 Jul 2006 14:08:29 +0200
> Matthias Urlichs <smurf@smurf.noris.de> wrote:
> > Interestingly, CPU0/1 gets 6000 bogomips while CPU2/3 only reaches 5600 ..?
> > (That happens with both kernels.) I do wonder why, and whether this has any
> > bearing on the current problem.
> 
> I wouldn't expect it to matter, unless the TSCs are running at different
> speeds or something.

Matthias, Can you send us the /proc/cpuinfo output of your system?

>From your config it looks like CPU_FREQ is disabled. Perhaps, can you try with
CPU_FREQ enabled in your config  and see if you see the same issue?

thanks,
suresh

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-23 12:37         ` Andrew Morton
  2006-07-23 12:58           ` Matthias Urlichs
  2006-07-24 15:52           ` Siddha, Suresh B
@ 2006-07-24 15:58           ` john stultz
  2006-07-24 17:17             ` Matthias Urlichs
  2006-07-24 17:39             ` Andi Kleen
  2 siblings, 2 replies; 25+ messages in thread
From: john stultz @ 2006-07-24 15:58 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Matthias Urlichs, linux-kernel, torvalds, bunk, lethal, hirofumi,
	Andi Kleen

On Sun, 2006-07-23 at 05:37 -0700, Andrew Morton wrote:
> On Sun, 23 Jul 2006 14:08:29 +0200
> Matthias Urlichs <smurf@smurf.noris.de> wrote:
> 
> > Hi,
> > 
> > Andrew Morton:
> > > - CPU0 and CPU1 share a TSC and CPU2 and CPU3 share another TSC.
> > > 
> > That mmakes sense, since they're one dual-core Xeon each.
> 
> OK.
> 
> > > - Earlier kernels didn't use the TSC as a time source whereas this one
> > >   does, hence the problems which you're observing.
> > > 
> > Correct; see below.
> > 
> > > I assume that booting with clock=pit or clock=pmtmr fixes it?
> > > 
> > Testing... yes, both.
> > 
> > > It would be useful to check your 2.6.17 boot logs, see if we can work out
> > > what 2.6.17 was using for a clock source.
> > > 
> > That's easy:
> > 
> > 2.6.17    -Using pmtmr for high-res timesource
> > 2.6.18git +Time: tsc clocksource has been installed.
> > 
> > I missed those two lines, as in the boot logs they're not really
> > adjacent, so they got lost in the jumble of other differences.
> 
> OK, thanks.  Marking the TSC as bad in this case is simple to do - let us
> let John work out the best way.
> 
> We must have lost a TSC sanity check somewhere along the way.  I wonder
> what it was?

Well, I changed the TSC vs ACPI PM timer priority ordering to be more
like x86-64 (Andi had a similar patch he was proposing as well). For
awhile suse/redhat kernels have been swapping them, as the TSC gives
such a performance boost, however the ACPI PM timer is usually the safer
option (distro customers are often told to use clock=pmtmr on some
boxes).

I'll see what we can do to narrow it down, but its been assumed by both
x86-64 and the new i386 code that the TSCs on Intel SMP boxes are
synched, unless we're explicitly told they aren't (Summit, etc).

With the current code it is trivial to mark the TSC as unstable and the
system will automatically fall back to the next best clocksource. The
difficulty is just making sure we've got all the cases covered without
needlessly disqualifying synced systems.

Andi: If this is a generic issue, and not specific to Matthias' box, we
may need to re-think the assumption that Intel SMP is synced. You're
thoughts?

> > Interestingly, CPU0/1 gets 6000 bogomips while CPU2/3 only reaches 5600 ..?
> > (That happens with both kernels.) I do wonder why, and whether this has any
> > bearing on the current problem.
> 
> I wouldn't expect it to matter, unless the TSCs are running at different
> speeds or something.

Matthias: "clock=pmtmr" is probably the best workaround in the short
term. Could you send me your dmesg and dmidecode output? We'll try to
find something to key off of so it will mark the tsc as unstable by
default on your system.

thanks
-john



^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-24 15:58           ` john stultz
@ 2006-07-24 17:17             ` Matthias Urlichs
  2006-07-24 17:51               ` Andi Kleen
  2006-07-24 17:39             ` Andi Kleen
  1 sibling, 1 reply; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-24 17:17 UTC (permalink / raw)
  To: john stultz
  Cc: Andrew Morton, linux-kernel, torvalds, bunk, lethal, hirofumi,
	Andi Kleen

Hi,

john stultz:
> I'll see what we can do to narrow it down, but its been assumed by both
> x86-64 and the new i386 code that the TSCs on Intel SMP boxes are
> synched, unless we're explicitly told they aren't (Summit, etc).
> 
Apparently not. :-/

> Andi: If this is a generic issue, and not specific to Matthias' box, we
> may need to re-think the assumption that Intel SMP is synced. You're
> thoughts?
> 
"Your". ;-)

You can probably assume that they're synced on systems with no more
than one dual-core / hyperthreaded CPU.

My system obviously has two of those.

> Matthias: "clock=pmtmr" is probably the best workaround in the short
> term. Could you send me your dmesg and dmidecode output? We'll try to
> find something to key off of so it will mark the tsc as unstable by
> default on your system.
> 
I'd assume that finding (and, possibly, being unable to correct) TSC skew 
is sufficient. Whether it's also necessary (in the mathematical sense ;-)
for the problem to exist is a question somebody else might want to answer
(or not).

Linux version 2.6.17-test-1.29 (root@kiste) (gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)) #2 SMP PREEMPT Sun Jul 23 09:00:44 CEST 2006
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009b000 (usable)
 BIOS-e820: 000000000009b000 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved)
 BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 00000000d7f70000 (usable)
 BIOS-e820: 00000000d7f70000 - 00000000d7f7b000 (ACPI data)
 BIOS-e820: 00000000d7f7b000 - 00000000d7f80000 (ACPI NVS)
 BIOS-e820: 00000000d7f80000 - 00000000d8000000 (reserved)
 BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000ff800000 - 00000000ffc00000 (reserved)
 BIOS-e820: 00000000fffffc00 - 0000000100000000 (reserved)
 BIOS-e820: 0000000100000000 - 0000000128000000 (usable)
Warning only 4GB will be used.
Use a PAE enabled kernel.
3200MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000f6700
On node 0 totalpages: 1048576
  DMA zone: 4096 pages, LIFO batch:0
  Normal zone: 225280 pages, LIFO batch:31
  HighMem zone: 819200 pages, LIFO batch:31
DMI present.
ACPI: RSDP (v000 PTLTD                                 ) @ 0x000f6750
ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0xd7f75ea1
ACPI: FADT (v001 INTEL  TUMWATER 0x06040000 PTL  0x00000003) @ 0xd7f7ae35
ACPI: MADT (v001 PTLTD           APIC   0x06040000  LTP 0x00000000) @ 0xd7f7aea9ACPI: BOOT (v001 PTLTD  $SBFTBL$ 0x06040000  LTP 0x00000001) @ 0xd7f7af39
ACPI: MCFG (v001 PTLTD           Mcfg   0x06040000  LTP 0x00000000) @ 0xd7f7af61ACPI: ASF! (v016   CETP     CETP 0x06040000 PTL  0x00000001) @ 0xd7f7af9d
ACPI: SSDT (v001  PmRef    CpuPm 0x00003000 INTL 0x20030224) @ 0xd7f75edd
ACPI: DSDT (v001  Intel Lindhrst 0x06040000 MSFT 0x0100000e) @ 0x00000000
ACPI: PM-Timer IO Port: 0x1008
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x06] enabled)
Processor #6 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
Processor #1 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x07] enabled)
Processor #7 15:4 APIC version 20
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
ACPI: IOAPIC (id[0x03] address[0xfec10000] gsi_base[24])
IOAPIC[1]: apic_id 3, version 32, address 0xfec10000, GSI 24-47
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 high edge)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
Enabling APIC mode:  Flat.  Using 2 I/O APICs
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at f1000000 (gap: f0000000:0ec00000)
Detected 3000.267 MHz processor.
Built 1 zonelists.  Total pages: 1048576
Kernel command line: root=/dev/md1 ro break
mapped APIC to ffffd000 (fee00000)
mapped IOAPIC to ffffc000 (fec00000)
mapped IOAPIC to ffffb000 (fec10000)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 16384 bytes)
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 3483476k/4194304k available (1724k kernel code, 53692k reserved, 982k data, 204k init, 2620864k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 6004.95 BogoMIPS (lpj=12009910)Mount-cache hash table entries: 512
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
using mwait in idle threads.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000180 0000641d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU0: Intel P4/Xeon Extended MCE MSRs (24) available
Checking 'hlt' instruction... OK.
Freeing SMP alternatives: 12k freed
ACPI: Core revision 20060608
CPU0: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03
Booting processor 1/1 eip 2000
Initializing CPU#1
Calibrating delay using timer specific routine.. 6000.69 BogoMIPS (lpj=12001383)CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000180 0000641d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: Intel P4/Xeon Extended MCE MSRs (24) available
CPU1: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03
Booting processor 2/6 eip 2000
Initializing CPU#2
Calibrating delay using timer specific routine.. 5600.72 BogoMIPS (lpj=11201451)CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
CPU: Physical Processor ID: 3
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000180 0000641d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#2.
CPU2: Intel P4/Xeon Extended MCE MSRs (24) available
CPU2: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03
Booting processor 3/7 eip 2000
Initializing CPU#3
Calibrating delay using timer specific routine.. 5600.72 BogoMIPS (lpj=11201442)CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 0000641d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
CPU: Physical Processor ID: 3
CPU: After all inits, caps: bfebfbff 20100000 00000000 00000180 0000641d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#3.
CPU3: Intel P4/Xeon Extended MCE MSRs (24) available
CPU3: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03
Total of 4 processors activated (23207.09 BogoMIPS).
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
checking TSC synchronization across 4 CPUs:
CPU#0 had 748437 usecs TSC skew, fixed it up.
CPU#1 had 748437 usecs TSC skew, fixed it up.
CPU#2 had -748437 usecs TSC skew, fixed it up.
CPU#3 had -748437 usecs TSC skew, fixed it up.
Brought up 4 CPUs
migration_cost=85,1724
checking if image is initramfs... it is
Freeing initrd memory: 4192k freed
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: Using MMCONFIG
Setting up standard PCI resources
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
PCI quirk: region 1000-107f claimed by ICH4 ACPI/GPIO/TCO
PCI quirk: region 1180-11bf claimed by ICH4 GPIO
PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1
Boot video device is 0000:04:03.0
PCI: Transparent bridge - 0000:00:1e.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIX._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 *5 6 7 10 11 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 *10 11 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 10 *11 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 10 *11 14 15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKF] (IRQs 4 5 6 7 10 11 14 15) *3
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 *10 11 14 15)
ACPI: PCI Interrupt Link [LNKH] (IRQs 4 5 6 7 *10 11 14 15)
Linux Plug and Play Support v0.97 (c) Adam Belay
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
PCI: Bridge: 0000:00:02.0
  IO window: disabled.
  MEM window: da100000-da1fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:03.0
  IO window: disabled.
  MEM window: da200000-da2fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:1c.0
  IO window: 2000-2fff
  MEM window: da300000-da3fffff
  PREFETCH window: de000000-dfffffff
PCI: Bridge: 0000:05:04.0
  IO window: 4000-4fff
  MEM window: dc000000-dc0fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:04:02.0
  IO window: 4000-4fff
  MEM window: dc000000-dc0fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:1e.0
  IO window: 3000-4fff
  MEM window: da400000-dc0fffff
  PREFETCH window: f1000000-f10fffff
ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> IRQ 169
PCI: Setting latency timer of device 0000:00:02.0 to 64
ACPI: PCI Interrupt 0000:00:03.0[A] -> GSI 16 (level, low) -> IRQ 169
PCI: Setting latency timer of device 0000:00:03.0 to 64
PCI: Setting latency timer of device 0000:00:1e.0 to 64
NET: Registered protocol family 2
IP route cache hash table entries: 131072 (order: 7, 524288 bytes)
TCP established hash table entries: 131072 (order: 9, 3145728 bytes)
TCP bind hash table entries: 65536 (order: 8, 1572864 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
TCP reno registered
Simple Boot Flag at 0x36 set to 0x1
Machine check exception polling timer started.
highmem bounce pool size: 64 pages
Initializing Cryptographic API
io scheduler noop registered
io scheduler cfq registered (default)
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
PNP: No PS/2 controller found. Probing ports directly.
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
TCP bic registered
NET: Registered protocol family 1
Starting balanced_irq
Using IPI Shortcut mode
Freeing unused kernel memory: 204k freed
Time: tsc clocksource has been installed.
[ snip -- /sbin/init gets called here ]



# dmidecode 2.7
SMBIOS 2.33 present.
42 structures occupying 1394 bytes.
Table at 0x000EFC60.

Handle 0x0000, DMI type 0, 20 bytes.
BIOS Information
        Vendor: Phoenix Technologies LTD
        Version: 6.00
        Release Date: 09/29/2005
        Address: 0xE1C80
        Runtime Size: 123776 bytes
        ROM Size: 1024 kB
        Characteristics:
                ISA is supported
                PCI is supported
                PC Card (PCMCIA) is supported
                PNP is supported
                APM is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                ESCD support is available
                USB legacy is supported
                Smart battery is supported
                BIOS boot specification is supported

Handle 0x0001, DMI type 1, 25 bytes.
System Information
        Manufacturer: Intel Corporation
        Product Name: Nocona/Tumwater Customer Reference Board
        Version: Revision A0
        Serial Number: 0123456789
        UUID: 0A0A0A0A-0A0A-0A0A-0A0A-0A0A0A0A0A0A
        Wake-up Type: Power Switch

Handle 0x0002, DMI type 2, 8 bytes.
Base Board Information
        Manufacturer: Intel Corporation
        Product Name: TYAN Tiger-i7320-S5350
        Version: Revision A0
        Serial Number: 9876543210

Handle 0x0003, DMI type 3, 17 bytes.
Chassis Information
        Manufacturer: No Enclosure
        Type: Other
        Lock: Not Present
        Version: N/A
        Serial Number: None
        Asset Tag: No Asset Tag
        Boot-up State: Safe
        Power Supply State: Safe
        Thermal State: Safe
        Security Status: None
        OEM Information: 0x00001234

Handle 0x0004, DMI type 4, 35 bytes.
Processor Information
        Socket Designation: SOCKET603/604
        Type: Central Processor
        Family: Pentium 4
        Manufacturer: Intel
        ID: 43 0F 00 00 FF FB EB BF
        Signature: Type 0, Family 15, Model 4, Stepping 3
        Flags:
                FPU (Floating-point unit on-chip)
                VME (Virtual mode extension)
                DE (Debugging extension)
                PSE (Page size extension)
                TSC (Time stamp counter)
                MSR (Model specific registers)
                PAE (Physical address extension)
                MCE (Machine check exception)
                CX8 (CMPXCHG8 instruction supported)
                APIC (On-chip APIC hardware supported)
                SEP (Fast system call)
                MTRR (Memory type range registers)
                PGE (Page global enable)
                MCA (Machine check architecture)
                CMOV (Conditional move instruction supported)
                PAT (Page attribute table)
                PSE-36 (36-bit page size extension)
                CLFSH (CLFLUSH instruction supported)
                DS (Debug store)
                ACPI (ACPI supported)
                MMX (MMX technology supported)
                FXSR (Fast floating-point save and restore)
                SSE (Streaming SIMD extensions)
                SSE2 (Streaming SIMD extensions 2)
                SS (Self-snoop)
                HTT (Hyper-threading technology)
                TM (Thermal monitor supported)
                PBE (Pending break enabled)
        Version: A0
        Voltage: 1.4 V
        External Clock: Unknown
        Max Speed: 3600 MHz
        Current Speed: 3000 MHz
        Status: Populated, Enabled
        Upgrade: Slot 1
        L1 Cache Handle: 0x0005
        L2 Cache Handle: 0x0006
        L3 Cache Handle: Not Provided
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Handle 0x0005, DMI type 7, 19 bytes.
Cache Information
        Socket Designation: L1 Cache
        Configuration: Enabled, Socketed, Level 1
        Operational Mode: Write Back
        Location: Internal
        Installed Size: 16 KB
        Maximum Size: 16 KB
        Supported SRAM Types:
                Burst
                Pipeline Burst
                Asynchronous
        Installed SRAM Type: Asynchronous
        Speed: Unknown
        Error Correction Type: Unknown
        System Type: Unknown
        Associativity: Unknown

Handle 0x0006, DMI type 7, 19 bytes.
Cache Information
        Socket Designation: L2 Cache
        Configuration: Enabled, Socketed, Level 2
        Operational Mode: Write Back
        Location: Internal
        Installed Size: 2048 KB
        Maximum Size: 512 KB
        Supported SRAM Types:
                Burst
                Pipeline Burst
                Asynchronous
        Installed SRAM Type: Burst
        Speed: Unknown
        Error Correction Type: Unknown
        System Type: Unknown
        Associativity: Unknown

Handle 0x0007, DMI type 7, 19 bytes.
Cache Information
        Socket Designation: L3 Cache
        Configuration: Enabled, Socketed, Level 3
        Operational Mode: Write Back
        Location: Internal
        Installed Size: 2048 KB
        Maximum Size: 512 KB
        Supported SRAM Types:
                Burst
                Pipeline Burst
                Asynchronous
        Installed SRAM Type: Burst
        Speed: Unknown
        Error Correction Type: Unknown
        System Type: Unknown
        Associativity: Unknown

Handle 0x0008, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: J2A1
        Internal Connector Type: 9 Pin Dual Inline (pin 10 cut)
        External Reference Designator: COM 1
        External Connector Type: DB-9 male
        Port Type: Serial Port 16550A Compatible

Handle 0x0009, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: J3A1
        Internal Connector Type: 25 Pin Dual Inline (pin 26 cut)
        External Reference Designator: Parallel
        External Connector Type: DB-25 female
        Port Type: Parallel Port ECP/EPP

Handle 0x000A, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: J1A1
        Internal Connector Type: None
        External Reference Designator: Keyboard
        External Connector Type: Circular DIN-8 male
        Port Type: Keyboard Port

Handle 0x000B, DMI type 8, 9 bytes.
Port Connector Information
        Internal Reference Designator: J1A1
        Internal Connector Type: None
        External Reference Designator: PS/2 Mouse
        External Connector Type: Circular DIN-8 male
        Port Type: Keyboard Port

Handle 0x000C, DMI type 9, 13 bytes.
System Slot Information
        Designation: PCI/33 Slot #3 - J8B2
        Type: 32-bit PCI
        Current Usage: Unknown
        Length: Long
        ID: 0
        Characteristics:
                5.0 V is provided
                3.3 V is provided

Handle 0x000D, DMI type 10, 6 bytes.
On Board Device Information
        Type: Sound
        Status: Disabled
        Description: ADI1886

Handle 0x000E, DMI type 11, 5 bytes.
OEM Strings
        String 1: Intel Nocona/Lindenhurst
        String 2: CRB - ROADRUNNER

Handle 0x000F, DMI type 12, 5 bytes.
System Configuration Options
        Option 1: Jumper settings can be described here.

Handle 0x0010, DMI type 15, 29 bytes.
System Event Log
        Area Length: 32 bytes
        Header Start Offset: 0x0000
        Header Length: 16 bytes
        Data Start Offset: 0x0010
        Access Method: General-purpose non-volatile data functions
        Access Address: 0x0000
        Status: Invalid, Not Full
        Change Token: 0x00000001
        Header Format: Type 1
        Supported Log Type Descriptors: 3
        Descriptor 1: POST error
        Data Format 1: POST results bitmap
        Descriptor 2: Single-bit ECC memory error
        Data Format 2: Multiple-event
        Descriptor 3: Multi-bit ECC memory error
        Data Format 3: Multiple-event

Handle 0x0011, DMI type 16, 15 bytes.
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: None
        Maximum Capacity: 4 GB
        Error Information Handle: Not Provided
        Number Of Devices: 2

Handle 0x0012, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x0011
        Error Information Handle: No Error
        Total Width: Unknown
        Data Width: Unknown
        Size: No Module Installed
        Form Factor: DIMM
        Set: 1
        Locator: J3B1
        Bank Locator: DIMM A1
        Type: DDR
        Type Detail: Synchronous
        Speed: 166 MHz (6.0 ns)
        Manufacturer: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Handle 0x0013, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x0011
        Error Information Handle: No Error
        Total Width: Unknown
        Data Width: Unknown
        Size: No Module Installed
        Form Factor: DIMM
        Set: 1
        Locator: J3B3
        Bank Locator: DIMM A2
        Type: DDR
        Type Detail: Synchronous
        Speed: 166 MHz (6.0 ns)
        Manufacturer: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Handle 0x0014, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x0011
        Error Information Handle: No Error
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 1024 MB
        Form Factor: DIMM
        Set: 1
        Locator: J2B2
        Bank Locator: DIMM A3
        Type: DDR
        Type Detail: Synchronous
        Speed: 166 MHz (6.0 ns)
        Manufacturer: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Handle 0x0015, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x0011
        Error Information Handle: No Error
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 1024 MB
        Form Factor: DIMM
        Set: 1
        Locator: J2B4
        Bank Locator: DIMM A4
        Type: DDR
        Type Detail: Synchronous
        Speed: 166 MHz (6.0 ns)
        Manufacturer: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Handle 0x0016, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x0011
        Error Information Handle: No Error
        Total Width: Unknown
        Data Width: Unknown
        Size: No Module Installed
        Form Factor: DIMM
        Set: 1
        Locator: J3B2
        Bank Locator: DIMM B1
        Type: DDR
        Type Detail: Synchronous
        Speed: 166 MHz (6.0 ns)
        Manufacturer: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Handle 0x0017, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x0011
        Error Information Handle: No Error
        Total Width: Unknown
        Data Width: Unknown
        Size: No Module Installed
        Form Factor: DIMM
        Set: 1
        Locator: J2B1
        Bank Locator: DIMM B2
        Type: DDR
        Type Detail: Synchronous
        Speed: 166 MHz (6.0 ns)
        Manufacturer: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Handle 0x0018, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x0011
        Error Information Handle: No Error
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 1024 MB
        Form Factor: DIMM
        Set: 1
        Locator: J2B3
        Bank Locator: DIMM B3
        Type: DDR
        Type Detail: Synchronous
        Speed: 166 MHz (6.0 ns)
        Manufacturer: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Handle 0x0019, DMI type 17, 27 bytes.
Memory Device
        Array Handle: 0x0011
        Error Information Handle: No Error
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 1024 MB
        Form Factor: DIMM
        Set: 1
        Locator: J1B1
        Bank Locator: DIMM B4
        Type: DDR
        Type Detail: Synchronous
        Speed: 166 MHz (6.0 ns)
        Manufacturer: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Handle 0x001A, DMI type 19, 15 bytes.
Memory Array Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000FFFFFFFF
        Range Size: 4 GB
        Physical Array Handle: 0x0011
        Partition Width: 0

Handle 0x001B, DMI type 20, 19 bytes.
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000000003FF
        Range Size: 1 kB
        Physical Device Handle: 0x0012
        Memory Array Mapped Address Handle: 0x001A
        Partition Row Position: Unknown
        Interleave Position: Unknown
        Interleaved Data Depth: Unknown

Handle 0x001C, DMI type 20, 19 bytes.
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000000003FF
        Range Size: 1 kB
        Physical Device Handle: 0x0013
        Memory Array Mapped Address Handle: 0x001A
        Partition Row Position: Unknown
        Interleave Position: Unknown
        Interleaved Data Depth: Unknown

Handle 0x001D, DMI type 23, 13 bytes.
System Reset
        Status: Enabled
        Watchdog Timer: Present
        Boot Option: Do Not Reboot
        Boot Option On Limit: Do Not Reboot
        Reset Count: Unknown
        Reset Limit: Unknown
        Timer Interval: Unknown
        Timeout: Unknown

Handle 0x001E, DMI type 24, 5 bytes.
Hardware Security
        Power-On Password Status: Disabled
        Keyboard Password Status: Unknown
        Administrator Password Status: Enabled
        Front Panel Reset Status: Unknown

Handle 0x001F, DMI type 25, 9 bytes.
        System Power Controls
        Next Scheduled Power-on: 12-31 23:59:59

Handle 0x0020, DMI type 26, 20 bytes.
Voltage Probe
        Description: Voltage Probe
        Location: Processor
        Status: OK
        Maximum Value: Unknown
        Minimum Value: Unknown
        Resolution: Unknown
        Tolerance: Unknown
        Accuracy: Unknown
        OEM-specific Information: 0x00000000

Handle 0x0021, DMI type 27, 12 bytes.
Cooling Device
        Temperature Probe Handle: 0x0022
        Type: Fan
        Status: OK
        OEM-specific Information: 0x00000000

Handle 0x0022, DMI type 28, 20 bytes.
Temperature Probe
        Description: Temperature Probe
        Location: Processor
        Status: OK
        Maximum Value: Unknown
        Minimum Value Unknown
        Resolution: Unknown
        Tolerance: Unknown
        Accuracy: Unknown
        OEM-specific Information: 0x00000000

Handle 0x0023, DMI type 29, 20 bytes.
Electrical Current Probe
        Description: Electrical Current Probe
        Location: Processor
        Status: OK
        Maximum Value: Unknown
        Minimum Value: Unknown
        Resolution: Unknown
        Tolerance: Unknown
        Accuracy: Unknown
        OEM-specific Information: 0x00000000

Handle 0x0024, DMI type 30, 6 bytes.
Out-of-band Remote Access
        Manufacturer Name: Intel
        Inbound Connection: Enabled
        Outbound Connection: Disabled

Handle 0x0025, DMI type 32, 20 bytes.
System Boot Information
        Status: <OUT OF SPEC>

Handle 0x0026, DMI type 126, 4 bytes.
Inactive

Handle 0x0027, DMI type 127, 4 bytes.
End Of Table

Handle 0x0028, DMI type 129, 28 bytes.
OEM-specific Type
        Header and Data:
                81 1C 28 00 01 01 02 01 00 00 00 01 00 00 10 01
                00 01 00 01 00 00 18 01 00 02 00 01
        Strings:
                Intel_ASF_001
                Intel_ASF_001

Handle 0x0029, DMI type 127, 4 bytes.
End Of Table


> thanks
> -john
> 
> 
-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
:recursion: n. See {recursion}. See also {tail recursion}.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-24 15:58           ` john stultz
  2006-07-24 17:17             ` Matthias Urlichs
@ 2006-07-24 17:39             ` Andi Kleen
  1 sibling, 0 replies; 25+ messages in thread
From: Andi Kleen @ 2006-07-24 17:39 UTC (permalink / raw)
  To: john stultz
  Cc: Andrew Morton, Matthias Urlichs, linux-kernel, torvalds, bunk,
	lethal, hirofumi

On Mon, Jul 24, 2006 at 08:58:58AM -0700, john stultz wrote:
> On Sun, 2006-07-23 at 05:37 -0700, Andrew Morton wrote:
> > On Sun, 23 Jul 2006 14:08:29 +0200
> > Matthias Urlichs <smurf@smurf.noris.de> wrote:
> > 
> > > Hi,
> > > 
> > > Andrew Morton:
> > > > - CPU0 and CPU1 share a TSC and CPU2 and CPU3 share another TSC.
> > > > 
> > > That mmakes sense, since they're one dual-core Xeon each.
> > 
> > OK.
> > 
> > > > - Earlier kernels didn't use the TSC as a time source whereas this one
> > > >   does, hence the problems which you're observing.
> > > > 
> > > Correct; see below.
> > > 
> > > > I assume that booting with clock=pit or clock=pmtmr fixes it?
> > > > 
> > > Testing... yes, both.
> > > 
> > > > It would be useful to check your 2.6.17 boot logs, see if we can work out
> > > > what 2.6.17 was using for a clock source.
> > > > 
> > > That's easy:
> > > 
> > > 2.6.17    -Using pmtmr for high-res timesource
> > > 2.6.18git +Time: tsc clocksource has been installed.
> > > 
> > > I missed those two lines, as in the boot logs they're not really
> > > adjacent, so they got lost in the jumble of other differences.
> > 
> > OK, thanks.  Marking the TSC as bad in this case is simple to do - let us
> > let John work out the best way.
> > 
> > We must have lost a TSC sanity check somewhere along the way.  I wonder
> > what it was?
> 
> Well, I changed the TSC vs ACPI PM timer priority ordering to be more
> like x86-64 (Andi had a similar patch he was proposing as well). For
> awhile suse/redhat kernels have been swapping them, as the TSC gives
> such a performance boost, however the ACPI PM timer is usually the safer
> option (distro customers are often told to use clock=pmtmr on some
> boxes).
> 
> I'll see what we can do to narrow it down, but its been assumed by both
> x86-64 and the new i386 code that the TSCs on Intel SMP boxes are
> synched, unless we're explicitly told they aren't (Summit, etc).

Or it supports C3. I just had to add that check on 64bit too
for Merom.


> With the current code it is trivial to mark the TSC as unstable and the
> system will automatically fall back to the next best clocksource. The
> difficulty is just making sure we've got all the cases covered without
> needlessly disqualifying synced systems.
> 
> Andi: If this is a generic issue, and not specific to Matthias' box, we
> may need to re-think the assumption that Intel SMP is synced. You're
> thoughts?

I'm missing context. Full log files/full system description?

At least on x86-64 I'm doing it like this for a long time and didn't
have any complaints so I would assume that the 64bit capable boxes are
near completely ok.

-Andi


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-24 17:17             ` Matthias Urlichs
@ 2006-07-24 17:51               ` Andi Kleen
  2006-07-24 20:54                 ` john stultz
  0 siblings, 1 reply; 25+ messages in thread
From: Andi Kleen @ 2006-07-24 17:51 UTC (permalink / raw)
  To: Matthias Urlichs
  Cc: john stultz, Andrew Morton, linux-kernel, torvalds, bunk, lethal,
	hirofumi, asit.k.mallick

On Mon, Jul 24, 2006 at 07:17:11PM +0200, Matthias Urlichs wrote:
> > Andi: If this is a generic issue, and not specific to Matthias' box, we
> > may need to re-think the assumption that Intel SMP is synced. You're
> > thoughts?
> > 
> "Your". ;-)
> 
> You can probably assume that they're synced on systems with no more
> than one dual-core / hyperthreaded CPU.
> 
> My system obviously has two of those.

According to Intel on all of their chipsets/motherboard reference
designs all the sockets run from a single clock crystal.

I've confirmed this for a long time on 64bit and even to some
extent on 32bit on distro kernels.

Maybe you got a broken BIOS or similar though.

> > Matthias: "clock=pmtmr" is probably the best workaround in the short
> > term. Could you send me your dmesg and dmidecode output? We'll try to
> > find something to key off of so it will mark the tsc as unstable by
> > default on your system.
> > 
> I'd assume that finding (and, possibly, being unable to correct) TSC skew 

The BIOS normally guarantee it at boot. However maybe you got a broken one.

We used to do TSC sync correction at boot on Intel, but stopped doing 
that when we found out that the TSC sync code adds an error
To an already perfectly synchronized system.

Actually I think i386 still does it, just x86-64 stopped 

My first assumption would be that you hit a bug somewhere in the new
clock code. What happens when you boot an older kernel (like 2.6.17)
with clock=tsc ? 


>  BIOS-e820: 00000000ff800000 - 00000000ffc00000 (reserved)
>  BIOS-e820: 00000000fffffc00 - 0000000100000000 (reserved)
>  BIOS-e820: 0000000100000000 - 0000000128000000 (usable)
> Warning only 4GB will be used.

You should at least set CONFIG_HIGHMEM_64G or use a 64bit 
kernel if the system does long mode.

> ENABLING IO-APIC IRQs
> ..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
> checking TSC synchronization across 4 CPUs:
> CPU#0 had 748437 usecs TSC skew, fixed it up.
> CPU#1 had 748437 usecs TSC skew, fixed it up.
> CPU#2 had -748437 usecs TSC skew, fixed it up.
> CPU#3 had -748437 usecs TSC skew, fixed it up.

Hmm, that looks unusual. Maybe the BIOS is really broken.
On most Intel systems I saw 

Normally Linux should fix it up here and then the TSC should
tick synchronous though (but with an small offset that the sync
code cannot entirely avoid)

> 
> Handle 0x0000, DMI type 0, 20 bytes.
> BIOS Information
>         Vendor: Phoenix Technologies LTD
>         Version: 6.00
>         Release Date: 09/29/2005
> 
> Handle 0x0001, DMI type 1, 25 bytes.
> System Information
>         Manufacturer: Intel Corporation
>         Product Name: Nocona/Tumwater Customer Reference Board
>         Version: Revision A0


Hmm, those should definitely have a synced TSC. 

However A0 suspiciously sounds like a engineering sample, normally
production systems have higher revision numbers. If it's just
a beta hardware bug we probably won't care.

Asit, do you know of any TSC sync between CPUs issues in that 
board/BIOS version?

-Andi


>         Serial Number: 0123456789
>         UUID: 0A0A0A0A-0A0A-0A0A-0A0A-0A0A0A0A0A0A
>         Wake-up Type: Power Switch
> 
> Handle 0x0002, DMI type 2, 8 bytes.
> Base Board Information
>         Manufacturer: Intel Corporation
>         Product Name: TYAN Tiger-i7320-S5350
>         Version: Revision A0
>         Serial Number: 9876543210
> 

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-24 17:51               ` Andi Kleen
@ 2006-07-24 20:54                 ` john stultz
  2006-07-30  9:03                   ` Andrew Morton
  0 siblings, 1 reply; 25+ messages in thread
From: john stultz @ 2006-07-24 20:54 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Matthias Urlichs, Andrew Morton, linux-kernel, torvalds, bunk,
	lethal, hirofumi, asit.k.mallick

On Mon, 2006-07-24 at 19:51 +0200, Andi Kleen wrote:
> On Mon, Jul 24, 2006 at 07:17:11PM +0200, Matthias Urlichs wrote:
> > You can probably assume that they're synced on systems with no more
> > than one dual-core / hyperthreaded CPU.
> > 
> > My system obviously has two of those.
> 
> According to Intel on all of their chipsets/motherboard reference
> designs all the sockets run from a single clock crystal.
> 
> I've confirmed this for a long time on 64bit and even to some
> extent on 32bit on distro kernels.

Andi: Which 32bit distro patch are you referring to here?

> Maybe you got a broken BIOS or similar though.
> 
> > > Matthias: "clock=pmtmr" is probably the best workaround in the short
> > > term. Could you send me your dmesg and dmidecode output? We'll try to
> > > find something to key off of so it will mark the tsc as unstable by
> > > default on your system.
> > > 
> > I'd assume that finding (and, possibly, being unable to correct) TSC skew 
> 
> The BIOS normally guarantee it at boot. However maybe you got a broken one.
> 
> We used to do TSC sync correction at boot on Intel, but stopped doing 
> that when we found out that the TSC sync code adds an error
> To an already perfectly synchronized system.
> 
> Actually I think i386 still does it, just x86-64 stopped 

Indeed i386 still does it. I knew x86-64 had a new ia64 inspired
algorithm, but I didn't realize that they didn't even try to call it in
most cases.

The (untested) patch below will disable it on i386. Matthias, mind
trying it out to see if the TSC sync code is causing the problem?


> My first assumption would be that you hit a bug somewhere in the new
> clock code. What happens when you boot an older kernel (like 2.6.17)
> with clock=tsc ? 

Yes, that would be good to confirm the issue. :)

thanks
-john


Hack out the i386 TSC sync code.


diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index 6f5fea0..cd28914 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -435,7 +435,7 @@ static void __devinit smp_callin(void)
 	/*
 	 *      Synchronize the TSC with the BP
 	 */
-	if (cpu_has_tsc && cpu_khz && !tsc_sync_disabled)
+	if (0 && cpu_has_tsc && cpu_khz && !tsc_sync_disabled)
 		synchronize_tsc_ap();
 }
 
@@ -1305,7 +1305,7 @@ static void __init smp_boot_cpus(unsigne
 	/*
 	 * Synchronize the TSC with the AP
 	 */
-	if (cpu_has_tsc && cpucount && cpu_khz)
+	if (0 && cpu_has_tsc && cpucount && cpu_khz)
 		synchronize_tsc_bp();
 }
 



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-24 20:54                 ` john stultz
@ 2006-07-30  9:03                   ` Andrew Morton
  2006-07-30  9:49                     ` Matthias Urlichs
                                       ` (2 more replies)
  0 siblings, 3 replies; 25+ messages in thread
From: Andrew Morton @ 2006-07-30  9:03 UTC (permalink / raw)
  To: john stultz
  Cc: ak, smurf, linux-kernel, torvalds, bunk, lethal, hirofumi,
	asit.k.mallick

On Mon, 24 Jul 2006 13:54:03 -0700
john stultz <johnstul@us.ibm.com> wrote:

> On Mon, 2006-07-24 at 19:51 +0200, Andi Kleen wrote:
> > On Mon, Jul 24, 2006 at 07:17:11PM +0200, Matthias Urlichs wrote:
> > > You can probably assume that they're synced on systems with no more
> > > than one dual-core / hyperthreaded CPU.
> > > 
> > > My system obviously has two of those.
> > 
> > According to Intel on all of their chipsets/motherboard reference
> > designs all the sockets run from a single clock crystal.
> > 
> > I've confirmed this for a long time on 64bit and even to some
> > extent on 32bit on distro kernels.
> 
> Andi: Which 32bit distro patch are you referring to here?
> 
> > Maybe you got a broken BIOS or similar though.
> > 
> > > > Matthias: "clock=pmtmr" is probably the best workaround in the short
> > > > term. Could you send me your dmesg and dmidecode output? We'll try to
> > > > find something to key off of so it will mark the tsc as unstable by
> > > > default on your system.
> > > > 
> > > I'd assume that finding (and, possibly, being unable to correct) TSC skew 
> > 
> > The BIOS normally guarantee it at boot. However maybe you got a broken one.
> > 
> > We used to do TSC sync correction at boot on Intel, but stopped doing 
> > that when we found out that the TSC sync code adds an error
> > To an already perfectly synchronized system.
> > 
> > Actually I think i386 still does it, just x86-64 stopped 
> 
> Indeed i386 still does it. I knew x86-64 had a new ia64 inspired
> algorithm, but I didn't realize that they didn't even try to call it in
> most cases.
> 
> The (untested) patch below will disable it on i386. Matthias, mind
> trying it out to see if the TSC sync code is causing the problem?
> 
> 
> > My first assumption would be that you hit a bug somewhere in the new
> > clock code. What happens when you boot an older kernel (like 2.6.17)
> > with clock=tsc ? 
> 
> Yes, that would be good to confirm the issue. :)
> 
> thanks
> -john
> 
> 
> Hack out the i386 TSC sync code.
> 
> 
> diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
> index 6f5fea0..cd28914 100644
> --- a/arch/i386/kernel/smpboot.c
> +++ b/arch/i386/kernel/smpboot.c
> @@ -435,7 +435,7 @@ static void __devinit smp_callin(void)
>  	/*
>  	 *      Synchronize the TSC with the BP
>  	 */
> -	if (cpu_has_tsc && cpu_khz && !tsc_sync_disabled)
> +	if (0 && cpu_has_tsc && cpu_khz && !tsc_sync_disabled)
>  		synchronize_tsc_ap();
>  }
>  
> @@ -1305,7 +1305,7 @@ static void __init smp_boot_cpus(unsigne
>  	/*
>  	 * Synchronize the TSC with the AP
>  	 */
> -	if (cpu_has_tsc && cpucount && cpu_khz)
> +	if (0 && cpu_has_tsc && cpucount && cpu_khz)
>  		synchronize_tsc_bp();
>  }

I guess Matthias didn't test this patch.  Can we get some obviously-correct
fix in place for 2.6.18?

Also, I was rather hoping we'd be able to work out why write_tsc() isn't
working on this CPU.  If that's fixable, that would be the best fix for
this bug, no?

It is a "CPU0: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03".


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30  9:03                   ` Andrew Morton
@ 2006-07-30  9:49                     ` Matthias Urlichs
  2006-07-30 20:10                     ` Andi Kleen
  2006-07-31 14:24                     ` Matthias Urlichs
  2 siblings, 0 replies; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-30  9:49 UTC (permalink / raw)
  To: Andrew Morton
  Cc: john stultz, ak, linux-kernel, torvalds, bunk, lethal, hirofumi,
	asit.k.mallick

Hi,

Andrew Morton:
> I guess Matthias didn't test this patch.

Not yet, sorry -- the thing is my main server, and customers tend to
dislike downtime.

I've already got it scheduled for tonight.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
No matter where you go, there you are.
		-- Buckaroo Banzai

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30  9:03                   ` Andrew Morton
  2006-07-30  9:49                     ` Matthias Urlichs
@ 2006-07-30 20:10                     ` Andi Kleen
  2006-07-30 20:55                       ` Andrew Morton
  2006-07-30 21:13                       ` Matthias Urlichs
  2006-07-31 14:24                     ` Matthias Urlichs
  2 siblings, 2 replies; 25+ messages in thread
From: Andi Kleen @ 2006-07-30 20:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: john stultz, smurf, linux-kernel, torvalds, bunk, lethal,
	hirofumi, asit.k.mallick

> I guess Matthias didn't test this patch.  Can we get some obviously-correct
> fix in place for 2.6.18?

So far we don't have any idea what the problem is on that system.

> It is a "CPU0: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03".

Was that on that system? I guess it could be checked for and TSC 
be forced off. It sounds like a real CPU bug however.

-Andi

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30 20:10                     ` Andi Kleen
@ 2006-07-30 20:55                       ` Andrew Morton
  2006-07-30 21:13                       ` Matthias Urlichs
  1 sibling, 0 replies; 25+ messages in thread
From: Andrew Morton @ 2006-07-30 20:55 UTC (permalink / raw)
  To: Andi Kleen
  Cc: johnstul, smurf, linux-kernel, torvalds, bunk, lethal, hirofumi,
	asit.k.mallick

On 30 Jul 2006 22:10:05 +0200
Andi Kleen <ak@muc.de> wrote:

> > I guess Matthias didn't test this patch.  Can we get some obviously-correct
> > fix in place for 2.6.18?
> 
> So far we don't have any idea what the problem is on that system.

I believe we do know what the problem is: a) write_tsc() doesn't work, b)
the TSC's are unsynced (or have an offset), c) we removed a check which
would have caused pmtmr/rtc fallback.

> > It is a "CPU0: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03".
> 
> Was that on that system?

yes.

> I guess it could be checked for and TSC 
> be forced off.

There's no need for that, I think.  synchronize_tsc_bp() knows for-sure
that the synchronization failed, in a way which works on all CPUs.

So all we need to do is to set some flag in synchronize_tsc_bp() if `buggy'
is set, telling the clocksource code to give up on the TSC.

> It sounds like a real CPU bug however.

I was hoping the Intel guys could help out with that.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30 20:10                     ` Andi Kleen
  2006-07-30 20:55                       ` Andrew Morton
@ 2006-07-30 21:13                       ` Matthias Urlichs
  2006-07-30 21:20                         ` Arjan van de Ven
  2006-07-30 21:57                         ` Andi Kleen
  1 sibling, 2 replies; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-30 21:13 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Andrew Morton, john stultz, linux-kernel, torvalds, bunk, lethal,
	hirofumi, asit.k.mallick

Hi,

Andi Kleen:
> > It is a "CPU0: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03".
> 
> Was that on that system? I guess it could be checked for and TSC 
> be forced off. It sounds like a real CPU bug however.
> 
Board problem? After all, it has some very noxious DMI entries:

System Information
        Manufacturer: Intel Corporation
        Product Name: Nocona/Tumwater Customer Reference Board
        Version: Revision A0
        Serial Number: 0123456789
        UUID: 0A0A0A0A-0A0A-0A0A-0A0A-0A0A0A0A0A0A

... all of which are patently *wrong*.

You'd have to ask the people from Tyan what the hell they were smoking
when they blindly copied the Intel data.

At least the different CPU speed issue is a known bug, fixed by a
BIOS update. I'll postpone that until we have a working kernel fix,
for obvious reasons.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
You might be a Redneck if ...
You consider a six-pack and a bug-zapper high-quality entertainment.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30 21:13                       ` Matthias Urlichs
@ 2006-07-30 21:20                         ` Arjan van de Ven
  2006-07-30 21:55                           ` Matthias Urlichs
  2006-07-30 21:57                         ` Andi Kleen
  1 sibling, 1 reply; 25+ messages in thread
From: Arjan van de Ven @ 2006-07-30 21:20 UTC (permalink / raw)
  To: Matthias Urlichs
  Cc: Andi Kleen, Andrew Morton, john stultz, linux-kernel, torvalds,
	bunk, lethal, hirofumi, asit.k.mallick

On Sun, 2006-07-30 at 23:13 +0200, Matthias Urlichs wrote:
> Hi,
> 
> Andi Kleen:
> > > It is a "CPU0: Intel(R) Xeon(TM) CPU 3.00GHz stepping 03".
> > 
> > Was that on that system? I guess it could be checked for and TSC 
> > be forced off. It sounds like a real CPU bug however.
> > 
> Board problem? After all, it has some very noxious DMI entries:
> 
> System Information
>         Manufacturer: Intel Corporation
>         Product Name: Nocona/Tumwater Customer Reference Board
>         Version: Revision A0
>         Serial Number: 0123456789
>         UUID: 0A0A0A0A-0A0A-0A0A-0A0A-0A0A0A0A0A0A
> 
> ... all of which are patently *wrong*.
> 
> You'd have to ask the people from Tyan what the hell they were smoking
> when they blindly copied the Intel data.
> 
> At least the different CPU speed issue is a known bug, fixed by a
> BIOS update. I'll postpone that until we have a working kernel fix,
> for obvious reasons.

if the hardware side is different *speed*.. then a tsc sync ain't going
to work... sure we write to it but it's immediately out of sync again


> 
-- 
if you want to mail me at work (you don't), use arjan (at) linux.intel.com


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30 21:20                         ` Arjan van de Ven
@ 2006-07-30 21:55                           ` Matthias Urlichs
  2006-08-01  1:47                             ` Siddha, Suresh B
  0 siblings, 1 reply; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-30 21:55 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: Andi Kleen, Andrew Morton, john stultz, linux-kernel, torvalds,
	bunk, lethal, hirofumi, asit.k.mallick

Hi,

Arjan van de Ven:
> if the hardware side is different *speed*.. then a tsc sync ain't going
> to work... sure we write to it but it's immediately out of sync again
> 
No, it's in fact the same speed -- the BIOS just reads it wrongly.

I checked: the two date values do advance at the same rate.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
"We need not invite the Devil to our table; he is too ready to come
 without being asked. The air all about us is filled with demons...."
                    [Martin Luther]

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30 21:13                       ` Matthias Urlichs
  2006-07-30 21:20                         ` Arjan van de Ven
@ 2006-07-30 21:57                         ` Andi Kleen
  2006-07-30 22:28                           ` Matthias Urlichs
  1 sibling, 1 reply; 25+ messages in thread
From: Andi Kleen @ 2006-07-30 21:57 UTC (permalink / raw)
  To: Matthias Urlichs
  Cc: Andrew Morton, john stultz, linux-kernel, torvalds, bunk, lethal,
	hirofumi, asit.k.mallick

> At least the different CPU speed issue is a known bug, fixed by a
> BIOS update.

That will likely fix your problem without changing the kernel.
Please try it.

> I'll postpone that until we have a working kernel fix,
> for obvious reasons.

What are the obvious reasons?

-Andi


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30 21:57                         ` Andi Kleen
@ 2006-07-30 22:28                           ` Matthias Urlichs
  0 siblings, 0 replies; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-30 22:28 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Andrew Morton, john stultz, linux-kernel, torvalds, bunk, lethal,
	hirofumi, asit.k.mallick

Hi,

Andi Kleen:
> > I'll postpone that until we have a working kernel fix,
> > for obvious reasons.
> 
> What are the obvious reasons?
> 
- No endangering of customers' production machines without a compelling
  reason.

- No stepping back, as I don't know which BIOS version is on the
  board (DMI says "6.0", but Tyan has 1.0x on their website; the
  release date doesn't match either).

- I'd rather test a working workaround in the kernel before updating;
  if I have the problem, others have it too, and gettng Linux to boot in
  that situation isn't exactly trivial -- the fact that you need a
  clock= parameter when udevsend hangs is kindof non-obvious.

- ... and the not-quite-obvious reason: Tyan specifies that I *need* a
  Win95 or Win98 boot floppy to do that. While I don't really believe
  them, I still don't have one of those handy ... which brings me back
  to the first item in this list.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
"Seems I can't get me 'ead down these days without rescuin' people or
foilin' robbers or sunnink."
        -- It's a wonder dog's life
           (Terry Pratchett, Moving Pictures)

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30  9:03                   ` Andrew Morton
  2006-07-30  9:49                     ` Matthias Urlichs
  2006-07-30 20:10                     ` Andi Kleen
@ 2006-07-31 14:24                     ` Matthias Urlichs
  2 siblings, 0 replies; 25+ messages in thread
From: Matthias Urlichs @ 2006-07-31 14:24 UTC (permalink / raw)
  To: Andrew Morton
  Cc: john stultz, ak, linux-kernel, torvalds, bunk, lethal, hirofumi,
	asit.k.mallick

[-- Attachment #1: Type: text/plain, Size: 1219 bytes --]

Hi,

Andrew Morton:
> > Hack out the i386 TSC sync code.
> > 
> > diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
> > index 6f5fea0..cd28914 100644
> > --- a/arch/i386/kernel/smpboot.c
> > +++ b/arch/i386/kernel/smpboot.c
> > @@ -435,7 +435,7 @@ static void __devinit smp_callin(void)
> >  	/*
> >  	 *      Synchronize the TSC with the BP
> >  	 */
> > -	if (cpu_has_tsc && cpu_khz && !tsc_sync_disabled)
> > +	if (0 && cpu_has_tsc && cpu_khz && !tsc_sync_disabled)
> >  		synchronize_tsc_ap();
> >  }
> >  
> > @@ -1305,7 +1305,7 @@ static void __init smp_boot_cpus(unsigne
> >  	/*
> >  	 * Synchronize the TSC with the AP
> >  	 */
> > -	if (cpu_has_tsc && cpucount && cpu_khz)
> > +	if (0 && cpu_has_tsc && cpucount && cpu_khz)
> >  		synchronize_tsc_bp();
> >  }
> 
> I guess Matthias didn't test this patch.  Can we get some obviously-correct
> fix in place for 2.6.18?
> 
This patch doesn't change the problem.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
Success is always being able to wear clothing that you actually like.
-- SJM

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 191 bytes --]

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-07-30 21:55                           ` Matthias Urlichs
@ 2006-08-01  1:47                             ` Siddha, Suresh B
  2006-08-01  3:14                               ` Matthias Urlichs
  0 siblings, 1 reply; 25+ messages in thread
From: Siddha, Suresh B @ 2006-08-01  1:47 UTC (permalink / raw)
  To: Matthias Urlichs
  Cc: Arjan van de Ven, Andi Kleen, Andrew Morton, john stultz,
	linux-kernel, torvalds, bunk, lethal, hirofumi, asit.k.mallick

On Sun, Jul 30, 2006 at 11:55:09PM +0200, Matthias Urlichs wrote:
> Hi,
> 
> Arjan van de Ven:
> > if the hardware side is different *speed*.. then a tsc sync ain't going
> > to work... sure we write to it but it's immediately out of sync again
> > 
> No, it's in fact the same speed -- the BIOS just reads it wrongly.

It sounds to me as a BIOS issue. From the boot log, it is quite clear that
TSCs are running at different speeds(different bogomips show this).
This CPU stepping has constant TSC behavior. So this is most probably happening
because of bios setting different core to bus clock ratios for each package.
Different CPU speed BIOS issue that you mention also points to this.

Can you check if your BIOS settings are set to max ratio(15?) available?
or try an updated BIOS?

> 
> I checked: the two date values do advance at the same rate.

Perhaps data overflow(because of unsync TSC's) in timer code calculations
may be causing this?

thanks,
suresh

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: REGRESSION: the new i386 timer code fails to sync CPUs
  2006-08-01  1:47                             ` Siddha, Suresh B
@ 2006-08-01  3:14                               ` Matthias Urlichs
  0 siblings, 0 replies; 25+ messages in thread
From: Matthias Urlichs @ 2006-08-01  3:14 UTC (permalink / raw)
  To: Siddha, Suresh B
  Cc: Arjan van de Ven, Andi Kleen, Andrew Morton, john stultz,
	linux-kernel, torvalds, bunk, lethal, hirofumi, asit.k.mallick

[-- Attachment #1: Type: text/plain, Size: 638 bytes --]

Hi,

Siddha, Suresh B:
> > No, it's in fact the same speed -- the BIOS just reads it wrongly.
> 
> It sounds to me as a BIOS issue. From the boot log, it is quite clear that
> TSCs are running at different speeds(different bogomips show this).

Ah. OK, that convinces me -- I'll do a BIOS update as soon as possible.

-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
Anyone nit-picking enough to write a letter of correction to an editor
doubtless deserves the error that provoked it.
					-- Alvin Toffler

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 191 bytes --]

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2006-08-01  3:15 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-07-22 23:36 REGRESSION: the new i386 timer code fails to sync CPUs Matthias Urlichs
2006-07-23  0:36 ` Andrew Morton
2006-07-23  8:16   ` Matthias Urlichs
2006-07-23 11:46     ` Andrew Morton
2006-07-23 12:08       ` Matthias Urlichs
2006-07-23 12:37         ` Andrew Morton
2006-07-23 12:58           ` Matthias Urlichs
2006-07-24 15:52           ` Siddha, Suresh B
2006-07-24 15:58           ` john stultz
2006-07-24 17:17             ` Matthias Urlichs
2006-07-24 17:51               ` Andi Kleen
2006-07-24 20:54                 ` john stultz
2006-07-30  9:03                   ` Andrew Morton
2006-07-30  9:49                     ` Matthias Urlichs
2006-07-30 20:10                     ` Andi Kleen
2006-07-30 20:55                       ` Andrew Morton
2006-07-30 21:13                       ` Matthias Urlichs
2006-07-30 21:20                         ` Arjan van de Ven
2006-07-30 21:55                           ` Matthias Urlichs
2006-08-01  1:47                             ` Siddha, Suresh B
2006-08-01  3:14                               ` Matthias Urlichs
2006-07-30 21:57                         ` Andi Kleen
2006-07-30 22:28                           ` Matthias Urlichs
2006-07-31 14:24                     ` Matthias Urlichs
2006-07-24 17:39             ` Andi Kleen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).