> I understand if the mirrored regions are always at the start of the zone > today, but is that somehow guaranteed going forward on all future hardware? > > I think it's important to at least consider what we would do if DMA32 > turned out to be non-reliable. Current hardware can map one mirrored region from each memory controller. We have two memory controllers per socket. So on a 4-socket machine we will usually have 8 separate mirrored ranges. Two per NUMA node (assuming cluster on die is not enabled). Practically I think it is safe to assume that any sane configuration will always choose to mirror the <4GB range: 1) It's a trivial percentage of total memory on a system that supports mirror (2GB[1] out of my, essentially minimal, 512GB[2] machine). So 0.4% ... why would you not mirror it? 2) It contains a bunch of things that you are likely to want mirrored. Currently our boot loaders put the kernel there (don't they??). All sorts of BIOS space that might be accessed at any time by SMI is there. BUT ... we might want the kernel to ignore its mirrored status precisely because we want to make sure that anyone who really needs DMA or DMA32 allocations is not prevented from using it. -Tony [*] 2GB-4GB is MMIO space, so only 2GB of actual memory below the 4GB line. [2] Big servers should always have at least one DIMM populated in every channel to provide enough memory bandwidth to feed all the cores. This machine has 4 sockets * 2 memory controllers * 4 channels = 32 total. Fill them with a single 16GB DIMM each gives 512G. Big systems can use larger DIMMs, and fill up to 3 DIMMS on each channel. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href