From: "H. Peter Anvin" <hpa@zytor.com>
To: Jacob Shin <jacob.shin@amd.com>
Cc: X86-ML <x86@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
Yinghai Lu <yinghai@kernel.org>,
Andreas Herrmann <andreas.herrmann3@amd.com>,
Tejun Heo <tj@kernel.org>,
Borislav Petkov <borislav.petkov@amd.com>,
Dave Young <dyoung@redhat.com>, Chao Wang <chaowang@redhat.com>,
Vivek Goyal <vgoyal@redhat.com>
Subject: Re: [PATCH 3/4] x86: Only direct map addresses that are marked as E820_RAM
Date: Wed, 22 Aug 2012 16:30:49 -0700 [thread overview]
Message-ID: <50356BA9.5030906@zytor.com> (raw)
In-Reply-To: <1344983957-4996-4-git-send-email-jacob.shin@amd.com>
On 08/14/2012 03:39 PM, Jacob Shin wrote:
> Currently direct mappings are created for [ 0 to max_low_pfn<<PAGE_SHIFT )
> and [ 4GB to max_pfn<<PAGE_SHIFT ), which may include regions that are not
> backed by actual DRAM. This is fine for holes under 4GB which are covered
> by fixed and variable range MTRRs to be UC. However, we run into trouble
> on higher memory addresses which cannot be covered by MTRRs.
>
> Our system with 1TB of RAM has an e820 that looks like this:
>
> BIOS-e820: [mem 0x0000000000000000-0x00000000000983ff] usable
> BIOS-e820: [mem 0x0000000000098400-0x000000000009ffff] reserved
> BIOS-e820: [mem 0x00000000000d0000-0x00000000000fffff] reserved
> BIOS-e820: [mem 0x0000000000100000-0x00000000c7ebffff] usable
> BIOS-e820: [mem 0x00000000c7ec0000-0x00000000c7ed7fff] ACPI data
> BIOS-e820: [mem 0x00000000c7ed8000-0x00000000c7ed9fff] ACPI NVS
> BIOS-e820: [mem 0x00000000c7eda000-0x00000000c7ffffff] reserved
> BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
> BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
> BIOS-e820: [mem 0x00000000fff00000-0x00000000ffffffff] reserved
> BIOS-e820: [mem 0x0000000100000000-0x000000e037ffffff] usable
> BIOS-e820: [mem 0x000000e038000000-0x000000fcffffffff] reserved
> BIOS-e820: [mem 0x0000010000000000-0x0000011ffeffffff] usable
>
> and so direct mappings are created for huge memory hole between
> 0x000000e038000000 to 0x0000010000000000. Even though the kernel never
> generates memory accesses in that region, since the page tables mark
> them incorrectly as being WB, our (AMD) processor ends up causing a MCE
> while doing some memory bookkeeping/optimizations around that area.
>
> This patch iterates through e820 and only direct maps ranges that are
> marked as E820_RAM, and keeps track of those pfn ranges. Depending on
> the alignment of E820 ranges, this may possibly result in using smaller
> size (i.e. 4K instead of 2M or 1G) page tables.
>
> Signed-off-by: Jacob Shin <jacob.shin@amd.com>
I have one concern with this, which is that it leaves in place mapping
below the initial max_pfn_mapped. Although that neatly resolves the
legacy area (0-1 MiB) issues, it really isn't right above the 1 MiB
point. Any way I could get you to seek out and unmap any such ranges?
We have already seen some Dell machines which put memory holes in low
RAM, and perhaps there are still some machines out there with an I/O
hole at 15 MiB.
-hpa
next prev parent reply other threads:[~2012-08-22 23:31 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-14 22:39 [PATCH V3 0/4] x86: Create direct mappings for E820_RAM only Jacob Shin
2012-08-14 22:39 ` [PATCH 1/4] x86: Move enabling of PSE and PGE out of init_memory_mapping Jacob Shin
2012-08-14 22:39 ` [PATCH 2/4] x86: find_early_table_space based on memory ranges that are being mapped Jacob Shin
2012-08-14 22:39 ` [PATCH 3/4] x86: Only direct map addresses that are marked as E820_RAM Jacob Shin
2012-08-22 23:30 ` H. Peter Anvin [this message]
2012-08-23 14:50 ` Jacob Shin
2012-08-23 15:39 ` H. Peter Anvin
2012-08-23 20:12 ` Konrad Rzeszutek Wilk
2012-08-23 21:23 ` H. Peter Anvin
2012-08-23 22:35 ` Jacob Shin
2012-08-23 23:46 ` Yinghai Lu
2012-08-23 23:53 ` H. Peter Anvin
2012-08-14 22:39 ` [PATCH 4/4] x86: Fixup code testing if a pfn is direct mapped Jacob Shin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50356BA9.5030906@zytor.com \
--to=hpa@zytor.com \
--cc=andreas.herrmann3@amd.com \
--cc=borislav.petkov@amd.com \
--cc=chaowang@redhat.com \
--cc=dyoung@redhat.com \
--cc=jacob.shin@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tj@kernel.org \
--cc=vgoyal@redhat.com \
--cc=x86@kernel.org \
--cc=yinghai@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox