| From: |
| Andi Kleen <ak@suse.de> |
| To: |
| discuss@x86-64.org |
| Subject: |
| [discuss] x86_64-2.6.8rc1-1 released |
| Date: |
| Wed, 14 Jul 2004 14:51:50 +0200 |
| Cc: |
| ripperda@nvidia.com |
A new x86-64 patchkit for the Linux 2.6.8rc1 kernel has been released.
I plan to send the most important fixes of this to Linus soon; please
test this release and report any problems.
ftp://ftp.x86-64.org/pub/linux/v2.6/x86_64-2.6.8rc1-1.bz2
26ca3b4f3996bab5c619c749a6528986 x86_64-2.6.8rc1-1.bz2
It mainly has a lot of bugfixes. I changed the swiotlb code to return
errors instead of overflowing. pci_map_sg returns 0 when a overflow
happens and the output of pci_map_single can be tested using
pci_dma_mapping_error(). It also has a more intelligent overflow
handling strategy ported from the AMD IOMMU code.
The memory corruption at SMP boot that bit several people is fixed.
The x86-64 part compiles with the current gcc mainline now
(however non x86-64 parts still need some more fixes)
Stopping the system at boot with a target probe should not
lead to timer problems anymore.
Also there are a lot more miscellaneous fixes, see the full changelog
below for details.
Some known issues:
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 (should be done now - check)
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; NVidia still
shows problems on some board, but works on others]
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.
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
Some Tyan and one e325 board with AMD 811 seem to get IDE DMA errors.
noapic or ideXXX=serialize seems to work around it. Only happens
with some machines.
/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.
ChangeLog:
- Fix NMI watchdog documentation (suggested by Alexander Nyberg)
- Remove use of strsep in option parsers
- Add swiotlb=force
- Remove duplicated exports (Arjan van der Ven)
- Fix EFAULT checking in ptrace (John Blackwood)
- Update defconfig
- Remove dead URL from boot/setup.S (R.J. Wysocki)
- Support iommu=force for swiotlb too.
- Use compat_sigval_t instead of sigval_t32 (Al Viro)
- Nanooptimization in 32bit ptregs calls
- Fix gcc 3.5 compilation in mtrr.h
- Pass pt_regs as pointer to avoid illegal pass by reference (for gcc 3.5)
- Fix memory corruption during SMP bootup (Alexander Nyberg)
- Make set_bit take int not long (Harald Dunkel)
- Avoid panic on pci_map_sg and pci_alloc_consistent overflow in GART IOMMU
- Increase SWIOTLB size to 64MB by default
- Improve overflow handling in SWIOTLB code
- Handle large lost time delays in HPET code (Suresh B. Siddha)
- Work around theoretical bugs in prefetch handling (suggested by Jamie Lokier)
- Remove mtrr_strings declaration for gcc 3.5
- Set KBUILD_IMAGE for make rpm (William Lee Irwin III)
- Add iommu=noaperture to not touch the aperture
- Clean up argument parsing for iommu= option
- Export symbols for xchgadd based rwsems (still disabled)
- Define iommu_bio_merge for !CONFIG_GART_IOMMU