LWN.net Logo

x86_64-2.6.6-1 released

From:  Andi Kleen <ak@suse.de>
To:  discuss@x86-64.org
Subject:  [discuss] x86_64-2.6.6-1 released
Date:  Fri, 14 May 2004 23:11:25 +0200


A new x86-64 kernel patch kit for the linux 2.6.6 kernel has been released.

This has various accumulated bug fixes, including a fix for a nasty bug in NX
handling that broke in some cases with heavy AGP memory allocation (thanks goes to 
some wizards in AMD debug labs for getting a usable trace out of that) 

I finally gave in and made the /dev/mem cache handling fully bug-to-bug
compatible to i386. This makes WC MTRRs work in some cases where they didn't 
before and can speed up e.g. DVD video playing with hardware support dramatically.

Also various other fixes. A few of these changes are already in 2.6.6-bk*, but
most are not merged yet.

The kernel still does not boot on one Newisys 2100 machine. I haven't tracked
that down yet, but it's most likely an ACPI or APIC problem. It works on all
other systems I tried.

ftp://ftp.x86-64.org/pub/linux/v2.6/x86_64-2.6.6-1.bz2
283b082b0e2ae5bd48ba0966c5018f47  x86_64-2.6.6-1.bz2

Please test.

Some known issues:
Doesn't boot on a newisys khefri box right now.
CONFIG_IDE_TASKFILE_IO can cause disk and memory corruption. 
Suspend often doesn't initialize video after wakeup
	Generic problem, needs a lot of effort to fix properly. The graphic
	card has to be POSTed properly, which is quite complicated.
Need to properly restore APICs after suspend.
VIA and NVIDIA boards are forced to IO-APIC off to work around ACPI bugs.
	This will be a major problem once SMP boards with these chipsets 
	are out.
	[VIA issue should be fixed now in post 2.6.6]
G400 DRM crashes machine
IOMMU corruptions with iommu=nofullflush (disabled by default) and 
	3ware/Qlogic devices.
	Underlying bug still undebugged.
	Update: BenH had an idea about using dummy scratch pages instead of
	invalid entries for unmapped entries. This would prevent bus aborts
	for prefetches from the PCI bridge. I tried that, but it also didn't
	help for 3ware.
Scheduler does not work well with NUMA (testcase multithreaded STREAM) 
	It does not distribute threads quickly enough to all CPUs,
	which leads to memory getting allocated on the wrong nodes.
	The latest scheduler seems to do reasonable now, unfortunately the 
	new NUMA scheduler in -mm* does much worse.
Some motherboard/cpu combinations do not reboot automatically: 
IPSec netlink setup code is not 32bit emulation clean
iptables is not 32bit emulation clean
DeviceMapper is not 32bit emulation clean
gettimeofday gets non monontonous when ntpd corrects drift
	i386 has some code that attempts to fix that, but it didn't correctly
	work here so I reverted it completely for now.
Newer valgrind in emulation is still mostly broken
When the BIOS doesn't assign PCI regions correctly we seem to assign
	addresses >32bit. Need a reliable way to find memory holes.
/dev/mem checks incorrectly for holes.
NMI watchdog IO-APIC mode doesn't seem to work on AMD8111
    (local APIC works though and is on by default)
NMI local APIC mode uses a performance counter that stops ticking when CPU
    executes HLT. This gives varying NMI watchdog frequencies depending on CPU
    load. Should be probably fixed by fixing IO-APIC mode and making that
    the default.
	[Update: IO-APIC mode works just fine on Intel chipsets, must be some
	AMD specific quirk]
X server messes directly with the PCI config registers and can race with
    the kernel and can cause data corruption. This needs to be fixed in the X 
    server by using proper PCI access methods.
Time runs too fast on at least one AMD machine (broken hardware?) 
When setting time backwards xtime and vxtime seem to get out of sync,
	with large negative timestamps in xtime (as seen in files)
NMI watchdog and other NMI handling doesn't work when oprofile is active.
	Need a way to distingush various NMI sources.
NMI watchdog doesn't check if it really expired
NMI handler reads useless legacy registers.
NMI handler can deadlock in printk
Reports that dual Tyan S2885 and S2880 can lock up when multiple IDE channels
	are stressed in parallel. "noapic" or "ideFOO=serialize" seems to work
	around it. Andre Hedrick thinks it's a generic bug/race in the IDE code.
MSI is not supported because the generic code for that is currently too i386 
	centric.
/proc/kcore is missing fixes from 2.4 to support negative addresses.	
VIA builtin PATA doesn't work with IOMMU. Machines locks up on IDE probing.
	[workaround for this enabled now - they use swiotlb]
Windows does a better job at keeping the CPU fans quiet on some machines.
	Find out how it does that.
Should add dwarf2 annotation to vsyscall signal trampolines like i386
       and pass it using the ELF auxiliary vector.

ChangeLog:
- Move HT and MWAIT checks up to generic code 
- Export memcmp
- Check for disabled node in sysfs node setup.
- Default access in /dev/mem to cached. This makes WC MTRRs actually work
and fixes some problems with slow DVD playing 
- Fix asm constraints for ffs (Yuri Per) 
- Handle NX bit for code pages correctly in change_page_attr()
- Convert sibling map to cpu masks (Suresh B. Siddha) 
- Use generic nops for non amd specific kernel
- Set up GSI entry for ACPI SCI correctly.
- Set task alignment to 16 bytes
- Always print MCEs on the console.
- MCEs for init or the idle thread are always fatal.
- Remove duplicated includes (Arthur Othieno)
- Always export iommu_merge
- Fix compilation without CONFIG_IOMMU_GART
- gcc 3.4 fixes (Mikael Pettersson)
- Enable USB support in defconfig
- Add __KERNEL__ checks in unistd.h (David Lee)
- Fix stack page printing in show_registers
- Update defconfig

Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds