The GART built into the Athlon 64/Opteron CPUs is normally used for
remapping graphics memory so that an AGP graphics card can see
physically non-contiguous memory as one contiguous region. However,
Linux can also use it as an IOMMU which allows devices which normally
can't access memory above 4GB to see a mapping of that memory that
resides below 4GB. In pre-2.6.20 kernels both the SATA and PATA
controllers on the nForce 4 chipsets can only access memory below 4GB so
transfers to memory above this mark have to go through the IOMMU. In
2.6.20 this limitation is lifted on the nForce4 SATA controllers.
The PATA controller will still be using 32-bit DMA and so may also use
the IOMMU, so this problem would not be avoided.
No, it shouldn't cause any performance loss. In previous kernels the
nForce4 SATA controller was controlled using an interface quite similar
to a PATA controller. In 2.6.20 kernels they use a more efficient
interface that NVidia calls ADMA, which in addition to supporting NCQ
also supports DMA without any 4GB limitations, so it can access all
memory directly without requiring IOMMU assistance.
Note that if this corruption problem is, as has been suggested, related
to memory hole remapping and the IOMMU, then this change only prevents
the SATA controller transfers from experiencing this problem. Transfers
on the PATA controller as well as any other devices with 32-bit DMA
limitations might still have problems. As such this really just avoids
the problem, not fixes it.
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/
-