[PATCH V4 0/5] x86: Create direct mappings for E820_RAM only

From: Jacob Shin
Date: Fri Aug 24 2012 - 19:56:55 EST


Currently kernel direct mappings are created for all pfns between
[ 0 to max_low_pfn ) and [ 4GB to max_pfn ). When we introduce memory
holes, we end up mapping memory ranges that are not backed by physical
DRAM. This is fine for lower memory addresses which can be marked as UC
by fixed/variable range MTRRs, however we run in to trouble with high
addresses.

The following patchset creates direct mappings only for E820_RAM regions
between 0 ~ max_low_pfn and 4GB ~ max_pfn. And leaves non-E820_RAM and
memory holes unmapped.

This fourth revision of the patchset attempts to resolve comments and
concerns from the following threads:

* https://lkml.org/lkml/2012/8/22/680
* https://lkml.org/lkml/2012/8/13/512
* https://lkml.org/lkml/2012/8/9/536
* https://lkml.org/lkml/2011/10/20/323

Jacob Shin (5):
x86: Move enabling of PSE and PGE out of init_memory_mapping
x86: find_early_table_space based on memory ranges that are being
mapped
x86: Only direct map addresses that are marked as E820_RAM
x86: Fixup code testing if a pfn is direct mapped
x86: if kernel .text .data .bss are not marked as E820_RAM, complain
and fix

arch/x86/include/asm/page_types.h | 9 +++
arch/x86/kernel/cpu/amd.c | 6 +-
arch/x86/kernel/setup.c | 130 ++++++++++++++++++++++++++++++++-----
arch/x86/mm/init.c | 74 ++++++++++-----------
arch/x86/mm/init_64.c | 6 +-
arch/x86/platform/efi/efi.c | 8 +--
6 files changed, 167 insertions(+), 66 deletions(-)

--
1.7.9.5


--
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/