• Andrew Morton's avatar
    [PATCH] Critical x86-64 IOMMU fixes for 2.6.0 · f2059100
    Andrew Morton authored
    From: Andi Kleen <ak@muc.de>
    
    Please consider applying this patch, I would consider it critical for x86-64.
    
    The 2.6.0 x86-64 IOMMU code unfortunately had a few problems, leading
    to non booting systems and in a few cases to data corruption.
    
    It fixes a two serious bugs in handling special kinds of scatter gather
    lists in pci_map_sg.
    
    AGP was completely broken with IOMMU because of a wrong #ifdef.
    Fix that.
    
    One TLB flush optimization I did a long time ago seems to break on
    some 3ware boards (who require IOMMU because they don't support 64bit
    addresses).  The breakage lead to data corruption. This patch diables
    the optimization for now and fixes a potential SMP race in the flush
    code too. The TLB flush is done in a slower, but more reliable way
    now too.
    
    This patch fixes them. Please consider applying, because some of these
    problems hit quite many people.
    
    This also disables the IOMMU_DEBUG in the defconfig. A lot of people 
    were using the IOMMU when they didn't need to, which multiplied the
    problems.
    
    IOMMU merge is disabled for now. This was an experimental optimization
    which helped with some block devices, but for production it seems to
    be better to disable it for now because there are some questionable
    corner cases when the IOMMU aperture fragments. The same is done
    for IOMMU SAC force, which was related to that. 
    
    i386 has quite broken semantics for pci_alloc_consistent(). It uses
    the standard device DMA mask instead of the consistent mask. Make us
    bug-to-bug compatible here. This fixes problems with some sound
    drivers that don't support full 32bit addressing.
    f2059100
pci-nommu.c 1.43 KB