| From: |
| Andi Kleen <ak@suse.de> |
| To: |
| discuss@x86-64.org |
| Subject: |
| [discuss] x86_64-2.6.7-2 released |
| Date: |
| Mon, 21 Jun 2004 06:07:05 +0200 |
A new x86-64 patchkit for the Linux v2.6 has been released.
ftp://ftp.x86-64.org/pub/linux/v2.6/x86_64-2.6.7-2.bz2
03db8fef878268d0e905c158f132db56 x86_64-2.6.7-2.bz2
This version has some more machine check handler fixes (thanks to
Eric Morton and Paul Devriendt for suggestions). The machine check
handler should work well now. Please don't forget to run mcelog
from your crontab to log its output.
It doesn't use backwards rep ; movsb for memmove anymore to work around
a new (extremly unlikely) Opteron erratum.
A new lazy merging scheme suggested by Ben Herrenschmidt has been implemented
in the IOMMU. IOMMU level merging can give improved performance with some
IO devices (in particular SCSI adapters). Previously the merging implementation
would tell the block layer to assume merging for everything. Problem
was that when the IOMMU was unable to merge later for some reason there was
no way to undo this without erroring out the request. This made it not
really suitable for general usage. The new lazy merging scheme doesn't involve
the block layer anymore, but just merges at driver level. This is less
efficient, but more reliable. This is enabled by default now when the IOMMU
is in use.
If you have a block IO limited load it may be interesting to try iommu=force
with the new kernel. For networking it seems to make things slower.
If you do this it's suggest to enlarge the AGP aperture or IOMMU option
in the BIOS (if you don't have AGP) to 256-512MB or more.
If you see any improvements from this please report back.
I changed the bitmap search functions to use 64 bit accesses. This
may improve performance on file systems using bitmaps (like ext3/3, reiserfs)
Also this release has various other fixes, see the ChangeLog for details.
-Andi
Some known issues:
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]
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
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:
- Don't use backwards rep ; movsb for memmove
- Out line bitmap search functions (saves 8k .text, from i386)
- Convert bitmap search functions to 64bit accesses and optimize them
a bit.
- Handle corrupted page tables in page fault handler
- Set iommu_merge (without force) to on by default again.
- Don't do bio merging by default for iommu=merge. This should make it
safe to use again
- Add iommu=biomerge option to enable BIO merging (like old iommu=merge)
- Fix iommu=memaper=... parsing
- More MCE fixes (based on a patch by Eric Morton, heavily changed by me)
- Fix check for banks causing exceptions
- Allow to reinit MCEs later even after mce=off, fix wrong
use of __initdata
to disable at boot, but reenable later.
- Log left over machine checks after boot and resume
- Fix missing prototype warning with CPU_FREQ on