RE: [PATCH][RFC] mm: Introduce kernelcore=reliable option

From: Luck, Tony
Date: Fri Oct 09 2015 - 14:51:40 EST


> 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 from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/