All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Young <dyoung@redhat.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>, "H. Peter Anvin" <hpa@zytor.com>,
	Andreas Herrmann <andreas.herrmann3@amd.com>,
	Tejun Heo <tj@kernel.org>,
	Borislav Petkov <borislav.petkov@amd.com>,
	Chao Wang <chaowang@redhat.com>, Vivek Goyal <vgoyal@redhat.com>
Subject: Re: [PATCH V2 0/5] x86: Create direct mappings for E820_RAM only
Date: Tue, 14 Aug 2012 17:06:08 +0800	[thread overview]
Message-ID: <502A1500.5030306@redhat.com> (raw)
In-Reply-To: <502A0D9F.4010509@redhat.com>

On 08/14/2012 04:34 PM, Dave Young wrote:

> On 08/14/2012 05:46 AM, Jacob Shin wrote:
> 
>> 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.
> 
> 
> Hi,
> 
> Chaowang did some kdump test in a kvm guest with this patchset, 2nd
> kenrel just reboot after some ACPI printk, see below dmesg of 2nd kernel:

>

> After a crash:
> [snip]
> I'm in purgatory
> [    0.000000] Initializing cgroup subsys cpuset
> [    0.000000] Initializing cgroup subsys cpu
> [    0.000000] Linux version 3.5.0-0.23.el7.bz846531.x86_64 (mockbuild@)
> (gcc version 4.7.1 20120720 (Red Hat 4.7.1-5) (GCC) ) #1 SMP Mon Aug 13
> 22:17:46 EDT 2012
> [    0.000000] Command line:
> BOOT_IMAGE=/vmlinuz-3.5.0-0.23.el7.bz846531.x86_64
> root=/dev/mapper/vg_none-lv_root ro rd.md=0 rd.lvm.lv=vg_none/lv_swap
> rd.dm=0 rd.lvm.lv=vg_none/lv_root rd.luks=0 LANG=en_US.UTF-8
> console=ttyS0,115200  SYSFONT=True KEYTABLE=us earlyprintk=serial
> irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off
> earlyprintk=serial memmap=exactmap memmap=567K@64K
> memmap=261552K@589824K elfcorehdr=851376K
> [    0.000000] e820: BIOS-provided physical RAM map:
> [    0.000000] BIOS-e820: [mem 0x0000000000000100-0x000000000009dbff] usable
> [    0.000000] BIOS-e820: [mem 0x000000000009dc00-0x000000000009ffff]
> reserved
> [    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff]
> reserved
> [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000003fffdfff] usable
> [    0.000000] BIOS-e820: [mem 0x000000003fffe000-0x000000003fffffff]
> reserved
> [    0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff]
> reserved
> [    0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff]
> reserved
> [    0.000000] bootconsole [earlyser0] enabled
> [    0.000000] ERROR: earlyprintk= earlyser already used
> [    0.000000] e820: last_pfn = 0x3fffe max_arch_pfn = 0x400000000
> [    0.000000] NX (Execute Disable) protection: active
> [    0.000000] e820: user-defined physical RAM map:
> [    0.000000] user: [mem 0x0000000000010000-0x000000000009dbff] usable
> [    0.000000] user: [mem 0x0000000024000000-0x0000000033f6bfff] usable
> [    0.000000] DMI 2.4 present.
> [    0.000000] No AGP bridge found
> [    0.000000] e820: last_pfn = 0x33f6c max_arch_pfn = 0x400000000
> [    0.000000] PAT not supported by CPU.
> [    0.000000] found SMP MP-table at [mem 0x000fdae0-0x000fdaef] mapped
> at [ffff8800000fdae0]
> [    0.000000] init_memory_mapping: [mem 0x24000000-0x33f6bfff]
> [    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
> [    0.000000] RAMDISK: [mem 0x3378a000-0x33f58fff]
> [    0.000000] ACPI: RSDP 00000000000fd980 00014 (v00 BOCHS )
> [    0.000000] ACPI: RSDT 000000003fffe5b0 00038 (v01 BOCHS  BXPCRSDT
> 00000001 BXPC 00000001)
> [    0.000000] ACPI: FACP 000000003fffff80 00074 (v01 BOCHS  BXPCFACP
> 00000001 BXPC 00000001)
> [    0.000000] ACPI: DSDT 000000003fffe5f0 01121 (v01   BXPC   BXDSDT
> 00000001 INTL 20100528)
> [    0.000000] ACPI: FACS 000000003fffff40 00040
> [    0.000000] ACPI: SSDT 000000003ffffea0 0009E (v01 BOCHS  BXPCSSDT
> 00000001 BXPC 00000001)
> [    0.000000] ACPI: APIC 000000003ffffdb0 00078 (v01 BOCHS  BXPCAPIC
> 00000001 BXPC 00000001)
> [    0.000000] ACPI: HPET 000000003ffffd70 00038 (v01 BOCHS  BXPCHPET
> 00000001 BXPC 00000001)
> [    0.000000] ACPI: SSDT 000000003ffff720 00644 (v01   BXPC BXSSDTPC
> 00000001 INTL 20100528)
> 
> ====2nd kernel reboot here=====


The above is copied from rhel7 3.5.0 test kernel, with linus tree + this
patch set there's nearly same output.

> 
> 
>>
>> This revision of the patchset attempts to resolve comments and concerns
>> from the following threads:
>>
>> https://lkml.org/lkml/2012/8/11/95
>>
>> and
>>
>> https://lkml.org/lkml/2011/12/16/486
>>
>> Jacob Shin (5):
>>   x86: Only direct map addresses that are marked as E820_RAM
>>   x86: find_early_table_space based on memory ranges that are being
>>     mapped
>>   x86: Keep track of direct mapped pfn ranges
>>   x86: Fixup code testing if a pfn is direct mapped
>>   x86: Move enabling of PSE and PGE out of init_memory_mapping
>>
>>  arch/x86/include/asm/page_types.h |    9 +++
>>  arch/x86/kernel/amd_gart_64.c     |    4 +-
>>  arch/x86/kernel/cpu/amd.c         |    6 +-
>>  arch/x86/kernel/setup.c           |  118 ++++++++++++++++++++++++++++++++-----
>>  arch/x86/mm/init.c                |   72 +++++++++++-----------
>>  arch/x86/mm/init_64.c             |    3 +-
>>  arch/x86/platform/efi/efi.c       |    8 +--
>>  arch/x86/platform/efi/efi_64.c    |    2 +
>>  8 files changed, 157 insertions(+), 65 deletions(-)
>>
> 
> 
> 



-- 
Thanks
Dave

  reply	other threads:[~2012-08-14  9:10 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-13 21:46 [PATCH V2 0/5] x86: Create direct mappings for E820_RAM only Jacob Shin
2012-08-13 21:47 ` [PATCH 1/5] x86: Only direct map addresses that are marked as E820_RAM Jacob Shin
2012-08-13 21:58   ` Tejun Heo
2012-08-13 22:00     ` H. Peter Anvin
2012-08-13 21:47 ` [PATCH 2/5] x86: find_early_table_space based on memory ranges that are being mapped Jacob Shin
2012-08-13 21:47 ` [PATCH 3/5] x86: Keep track of direct mapped pfn ranges Jacob Shin
2012-08-13 22:09   ` Tejun Heo
2012-08-13 21:47 ` [PATCH 4/5] x86: Fixup code testing if a pfn is direct mapped Jacob Shin
2012-08-13 21:47 ` [PATCH 5/5] x86: Move enabling of PSE and PGE out of init_memory_mapping Jacob Shin
2012-08-13 23:02   ` Tejun Heo
2012-08-14  8:34 ` [PATCH V2 0/5] x86: Create direct mappings for E820_RAM only Dave Young
2012-08-14  9:06   ` Dave Young [this message]
2012-08-14 22:54   ` Jacob Shin
2012-08-15  5:51     ` WANG Chao

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=502A1500.5030306@redhat.com \
    --to=dyoung@redhat.com \
    --cc=andreas.herrmann3@amd.com \
    --cc=borislav.petkov@amd.com \
    --cc=chaowang@redhat.com \
    --cc=hpa@zytor.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.