Actual memory limit is lower, your run-of-the-mill Pentium-PAE36 capable
system has PCI bus(es) for IO, and address space for that/those need to
stay in area below 4G for bootup to access any devices, thus very likely
your system doesn't have more than, say, 3 GB of RAM below 4G.
Pick your processors. You need XEONs to have L1/L2 cacheing on memory
above the 4 GB address (PAE36 mapped physical addresses.)
For IO on usual systems you have 32 bit address space PCI busmasters,
so those can access only the lowest 4GB of address space, and to have
a block of data in upper area, it needs to be "bounced", that is, CPU
must copy it. Linux 2.4.0 system doesn't support 64-bit PCI addresses
at 32-bit systems (not at 64-bit Alpha either, I recall.)
On the other hand, Alpha systems and SPARC systems have IOMMU hardware,
and we do support that (to some extent), but 32-bit intel world doesn't
have similar things.
For userspace, if parts of userspace are physically mapped above 4G,
it might not be very harmfull at all -- presuming you have XEONs which
cache the memory accesses there also. The libc and similar multiply
shared objects might as well reside in high memory. Userspace process
doesn't see, after all, where each page resides physically.
/Matti Aarnio
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/