All of lore.kernel.org
 help / color / mirror / Atom feed
From: Catalin Marinas <catalin.marinas@arm.com>
To: kexec@lists.infradead.org
Subject: [PATCH v22 4/9] arm64: kdump: Don't force page-level mappings for memory above 4G
Date: Tue, 26 Apr 2022 15:26:28 +0100	[thread overview]
Message-ID: <YmgBFPMbyyOH/52y@arm.com> (raw)
In-Reply-To: <20220414115720.1887-5-thunder.leizhen@huawei.com>

On Thu, Apr 14, 2022 at 07:57:15PM +0800, Zhen Lei wrote:
> @@ -540,13 +540,31 @@ static void __init map_mem(pgd_t *pgdp)
>  	for_each_mem_range(i, &start, &end) {
>  		if (start >= end)
>  			break;
> +
> +#ifdef CONFIG_KEXEC_CORE
> +		if (eflags && (end >= SZ_4G)) {
> +			/*
> +			 * The memory block cross the 4G boundary.
> +			 * Forcibly use page-level mappings for memory under 4G.
> +			 */
> +			if (start < SZ_4G) {
> +				__map_memblock(pgdp, start, SZ_4G - 1,
> +					       pgprot_tagged(PAGE_KERNEL), flags | eflags);
> +				start  = SZ_4G;
> +			}
> +
> +			/* Page-level mappings is not mandatory for memory above 4G */
> +			eflags = 0;
> +		}
> +#endif

That's a bit tricky if a SoC has all RAM above 4G. IIRC AMD Seattle had
this layout. See max_zone_phys() for how we deal with this, basically
extending ZONE_DMA to the whole range if RAM starts above 4GB. In that
case, crashkernel reservation would fall in the range above 4GB.

BTW, we changed the max_zone_phys() logic with commit 791ab8b2e3db
("arm64: Ignore any DMA offsets in the max_zone_phys() calculation").

-- 
Catalin


WARNING: multiple messages have this Message-ID (diff)
From: Catalin Marinas <catalin.marinas@arm.com>
To: Zhen Lei <thunder.leizhen@huawei.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	x86@kernel.org, "H . Peter Anvin" <hpa@zytor.com>,
	linux-kernel@vger.kernel.org, Dave Young <dyoung@redhat.com>,
	Baoquan He <bhe@redhat.com>, Vivek Goyal <vgoyal@redhat.com>,
	Eric Biederman <ebiederm@xmission.com>,
	kexec@lists.infradead.org, Will Deacon <will@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	Rob Herring <robh+dt@kernel.org>,
	Frank Rowand <frowand.list@gmail.com>,
	devicetree@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
	linux-doc@vger.kernel.org, Randy Dunlap <rdunlap@infradead.org>,
	Feng Zhou <zhoufeng.zf@bytedance.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	Chen Zhou <dingguo.cz@antgroup.com>,
	John Donnelly <John.p.donnelly@oracle.com>,
	Dave Kleikamp <dave.kleikamp@oracle.com>
Subject: Re: [PATCH v22 4/9] arm64: kdump: Don't force page-level mappings for memory above 4G
Date: Tue, 26 Apr 2022 15:26:28 +0100	[thread overview]
Message-ID: <YmgBFPMbyyOH/52y@arm.com> (raw)
In-Reply-To: <20220414115720.1887-5-thunder.leizhen@huawei.com>

On Thu, Apr 14, 2022 at 07:57:15PM +0800, Zhen Lei wrote:
> @@ -540,13 +540,31 @@ static void __init map_mem(pgd_t *pgdp)
>  	for_each_mem_range(i, &start, &end) {
>  		if (start >= end)
>  			break;
> +
> +#ifdef CONFIG_KEXEC_CORE
> +		if (eflags && (end >= SZ_4G)) {
> +			/*
> +			 * The memory block cross the 4G boundary.
> +			 * Forcibly use page-level mappings for memory under 4G.
> +			 */
> +			if (start < SZ_4G) {
> +				__map_memblock(pgdp, start, SZ_4G - 1,
> +					       pgprot_tagged(PAGE_KERNEL), flags | eflags);
> +				start  = SZ_4G;
> +			}
> +
> +			/* Page-level mappings is not mandatory for memory above 4G */
> +			eflags = 0;
> +		}
> +#endif

That's a bit tricky if a SoC has all RAM above 4G. IIRC AMD Seattle had
this layout. See max_zone_phys() for how we deal with this, basically
extending ZONE_DMA to the whole range if RAM starts above 4GB. In that
case, crashkernel reservation would fall in the range above 4GB.

BTW, we changed the max_zone_phys() logic with commit 791ab8b2e3db
("arm64: Ignore any DMA offsets in the max_zone_phys() calculation").

-- 
Catalin

WARNING: multiple messages have this Message-ID (diff)
From: Catalin Marinas <catalin.marinas@arm.com>
To: Zhen Lei <thunder.leizhen@huawei.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	x86@kernel.org, "H . Peter Anvin" <hpa@zytor.com>,
	linux-kernel@vger.kernel.org, Dave Young <dyoung@redhat.com>,
	Baoquan He <bhe@redhat.com>, Vivek Goyal <vgoyal@redhat.com>,
	Eric Biederman <ebiederm@xmission.com>,
	kexec@lists.infradead.org, Will Deacon <will@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	Rob Herring <robh+dt@kernel.org>,
	Frank Rowand <frowand.list@gmail.com>,
	devicetree@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
	linux-doc@vger.kernel.org, Randy Dunlap <rdunlap@infradead.org>,
	Feng Zhou <zhoufeng.zf@bytedance.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	Chen Zhou <dingguo.cz@antgroup.com>,
	John Donnelly <John.p.donnelly@oracle.com>,
	Dave Kleikamp <dave.kleikamp@oracle.com>
Subject: Re: [PATCH v22 4/9] arm64: kdump: Don't force page-level mappings for memory above 4G
Date: Tue, 26 Apr 2022 15:26:28 +0100	[thread overview]
Message-ID: <YmgBFPMbyyOH/52y@arm.com> (raw)
In-Reply-To: <20220414115720.1887-5-thunder.leizhen@huawei.com>

On Thu, Apr 14, 2022 at 07:57:15PM +0800, Zhen Lei wrote:
> @@ -540,13 +540,31 @@ static void __init map_mem(pgd_t *pgdp)
>  	for_each_mem_range(i, &start, &end) {
>  		if (start >= end)
>  			break;
> +
> +#ifdef CONFIG_KEXEC_CORE
> +		if (eflags && (end >= SZ_4G)) {
> +			/*
> +			 * The memory block cross the 4G boundary.
> +			 * Forcibly use page-level mappings for memory under 4G.
> +			 */
> +			if (start < SZ_4G) {
> +				__map_memblock(pgdp, start, SZ_4G - 1,
> +					       pgprot_tagged(PAGE_KERNEL), flags | eflags);
> +				start  = SZ_4G;
> +			}
> +
> +			/* Page-level mappings is not mandatory for memory above 4G */
> +			eflags = 0;
> +		}
> +#endif

That's a bit tricky if a SoC has all RAM above 4G. IIRC AMD Seattle had
this layout. See max_zone_phys() for how we deal with this, basically
extending ZONE_DMA to the whole range if RAM starts above 4GB. In that
case, crashkernel reservation would fall in the range above 4GB.

BTW, we changed the max_zone_phys() logic with commit 791ab8b2e3db
("arm64: Ignore any DMA offsets in the max_zone_phys() calculation").

-- 
Catalin

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-04-26 14:26 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-14 11:57 [PATCH v22 0/9] support reserving crashkernel above 4G on arm64 kdump Zhen Lei
2022-04-14 11:57 ` Zhen Lei
2022-04-14 11:57 ` Zhen Lei
2022-04-14 11:57 ` [PATCH v22 1/9] kdump: return -ENOENT if required cmdline option does not exist Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-25  3:49   ` Baoquan He
2022-04-25  3:49     ` Baoquan He
2022-04-25  3:49     ` Baoquan He
2022-04-14 11:57 ` [PATCH v22 2/9] arm64: Use insert_resource() to simplify code Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57 ` [PATCH v22 3/9] arm64: kdump: Remove some redundant checks in map_mem() Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57 ` [PATCH v22 4/9] arm64: kdump: Don't force page-level mappings for memory above 4G Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-26 14:26   ` Catalin Marinas [this message]
2022-04-26 14:26     ` Catalin Marinas
2022-04-26 14:26     ` Catalin Marinas
2022-04-27  7:12     ` Leizhen
2022-04-27  7:12       ` Leizhen (ThunderTown)
2022-04-27  7:12       ` Leizhen (ThunderTown)
2022-04-14 11:57 ` [PATCH v22 5/9] arm64: kdump: Reimplement crashkernel=X Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-26 18:02   ` Catalin Marinas
2022-04-26 18:02     ` Catalin Marinas
2022-04-26 18:02     ` Catalin Marinas
2022-04-27  6:54     ` Leizhen
2022-04-27  6:54       ` Leizhen (ThunderTown)
2022-04-27  6:54       ` Leizhen (ThunderTown)
2022-04-27 12:32       ` Catalin Marinas
2022-04-27 12:32         ` Catalin Marinas
2022-04-27 12:32         ` Catalin Marinas
2022-04-27 13:49         ` Leizhen
2022-04-27 13:49           ` Leizhen (ThunderTown)
2022-04-27 13:49           ` Leizhen (ThunderTown)
2022-04-27 16:04           ` Catalin Marinas
2022-04-27 16:04             ` Catalin Marinas
2022-04-27 16:04             ` Catalin Marinas
2022-04-28  2:22             ` Leizhen
2022-04-28  2:22               ` Leizhen (ThunderTown)
2022-04-28  2:22               ` Leizhen (ThunderTown)
2022-04-28  3:40             ` Baoquan He
2022-04-28  3:40               ` Baoquan He
2022-04-28  3:40               ` Baoquan He
2022-04-28  3:52               ` Baoquan He
2022-04-28  3:52                 ` Baoquan He
2022-04-28  3:52                 ` Baoquan He
2022-04-28  9:33                 ` Leizhen
2022-04-28  9:33                   ` Leizhen (ThunderTown)
2022-04-28  9:33                   ` Leizhen (ThunderTown)
2022-04-29  3:24                   ` Baoquan He
2022-04-29  3:24                     ` Baoquan He
2022-04-29  3:24                     ` Baoquan He
2022-04-29  8:02                     ` Leizhen
2022-04-29  8:02                       ` Leizhen (ThunderTown)
2022-04-29  8:02                       ` Leizhen (ThunderTown)
2022-04-29  8:25                       ` Leizhen
2022-04-29  8:25                         ` Leizhen (ThunderTown)
2022-04-29  8:25                         ` Leizhen (ThunderTown)
2022-05-03 22:00                         ` Catalin Marinas
2022-05-03 22:00                           ` Catalin Marinas
2022-05-03 22:00                           ` Catalin Marinas
2022-05-05  2:13                           ` Leizhen
2022-05-05  2:13                             ` Leizhen (ThunderTown)
2022-05-05  2:13                             ` Leizhen (ThunderTown)
2022-05-05  3:00                           ` Baoquan He
2022-05-05  3:00                             ` Baoquan He
2022-05-05  3:00                             ` Baoquan He
2022-05-05 14:20                             ` Catalin Marinas
2022-05-05 14:20                               ` Catalin Marinas
2022-05-05 14:20                               ` Catalin Marinas
2022-05-06 11:39                               ` Baoquan He
2022-05-06 11:39                                 ` Baoquan He
2022-05-06 11:39                                 ` Baoquan He
2022-04-14 11:57 ` [PATCH v22 6/9] arm64: kdump: Use page-level mapping for the high memory of crashkernel Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57 ` [PATCH v22 7/9] arm64: kdump: Try not to use NO_BLOCK_MAPPINGS for memory under 4G Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57 ` [PATCH v22 8/9] of: fdt: Add memory for devices by DT property "linux, usable-memory-range" Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57   ` [PATCH v22 8/9] of: fdt: Add memory for devices by DT property "linux,usable-memory-range" Zhen Lei
2022-04-14 11:57 ` [PATCH v22 9/9] docs: kdump: Update the crashkernel description for arm64 Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-14 11:57   ` Zhen Lei
2022-04-19 17:02 ` [PATCH v22 0/9] support reserving crashkernel above 4G on arm64 kdump Dave Kleikamp
2022-04-19 17:02   ` Dave Kleikamp
2022-04-19 17:02   ` Dave Kleikamp
2022-04-25  2:19 ` Leizhen
2022-04-25  2:19   ` Leizhen (ThunderTown)
2022-04-25  2:19   ` Leizhen (ThunderTown)
2022-04-25  2:45   ` Baoquan He
2022-04-25  2:45     ` Baoquan He
2022-04-25  2:45     ` Baoquan He
2022-04-25  6:29     ` Leizhen
2022-04-25  6:29       ` Leizhen (ThunderTown)
2022-04-25  6:29       ` Leizhen (ThunderTown)

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=YmgBFPMbyyOH/52y@arm.com \
    --to=catalin.marinas@arm.com \
    --cc=kexec@lists.infradead.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.