From: Gregory Price <gourry@gourry.net>
To: x86@kernel.org, linux-kernel@vger.kernel.org,
linux-acpi@vger.kernel.org, linux-mm@kvack.org
Cc: linux-cxl@vger.kernel.org, Jonathan.Cameron@huawei.com,
dan.j.williams@intel.com, rrichter@amd.com, Terry.Bowman@amd.com,
dave.jiang@intel.com, ira.weiny@intel.com,
alison.schofield@intel.com, gourry@gourry.net,
dave.hansen@linux.intel.com, luto@kernel.org,
peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com,
bp@alien8.de, hpa@zytor.com, rafael@kernel.org, lenb@kernel.org,
david@redhat.com, osalvador@suse.de, gregkh@linuxfoundation.org,
akpm@linux-foundation.org, rppt@kernel.org
Subject: [PATCH v4 2/3] x86: probe memory block size advisement value during mm init
Date: Tue, 29 Oct 2024 16:20:40 -0400 [thread overview]
Message-ID: <20241029202041.25334-3-gourry@gourry.net> (raw)
In-Reply-To: <20241029202041.25334-1-gourry@gourry.net>
Systems with hotplug may provide an advisement value on what the
memblock size should be. Probe this value when the rest of the
configuration values are considered.
The new heuristic is as follows
1) set_memory_block_size_order value if already set (cmdline param)
2) minimum block size if memory is less than large block limit
3) if no hotplug advice: Max block size if system is bare-metal,
otherwise use end of memory alignment.
4) if hotplug advice: lesser of advice and end of memory alignment.
Suggested-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Gregory Price <gourry@gourry.net>
Acked-by: David Hildenbrand <david@redhat.com>
---
arch/x86/mm/init_64.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index ff253648706f..01876629f21f 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -1452,16 +1452,20 @@ static unsigned long probe_memory_block_size(void)
}
/*
- * Use max block size to minimize overhead on bare metal, where
- * alignment for memory hotplug isn't a concern.
+ * When hotplug alignment is not a concern, maximize blocksize
+ * to minimize overhead. Otherwise, align to the lesser of advice
+ * alignment and end of memory alignment.
*/
- if (!boot_cpu_has(X86_FEATURE_HYPERVISOR)) {
+ bz = memory_block_advised_max_size();
+ if (!bz) {
bz = MAX_BLOCK_SIZE;
- goto done;
- }
+ if (!boot_cpu_has(X86_FEATURE_HYPERVISOR))
+ goto done;
+ } else
+ bz = max(min(bz, MAX_BLOCK_SIZE), MIN_MEMORY_BLOCK_SIZE);
/* Find the largest allowed block size that aligns to memory end */
- for (bz = MAX_BLOCK_SIZE; bz > MIN_MEMORY_BLOCK_SIZE; bz >>= 1) {
+ for (; bz > MIN_MEMORY_BLOCK_SIZE; bz >>= 1) {
if (IS_ALIGNED(boot_mem_end, bz))
break;
}
--
2.43.0
next prev parent reply other threads:[~2024-10-29 20:20 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-29 20:20 [PATCH v4 0/3] memory,x86,acpi: hotplug memory alignment advisement Gregory Price
2024-10-29 20:20 ` [PATCH v4 1/3] memory: implement memory_block_advise/probe_max_size Gregory Price
2024-10-30 10:25 ` David Hildenbrand
2024-10-30 14:59 ` Gregory Price
2024-10-30 16:35 ` David Hildenbrand
2024-10-31 14:31 ` Mike Rapoport
2024-10-31 16:23 ` Gregory Price
2024-10-29 20:20 ` Gregory Price [this message]
2024-10-30 10:26 ` [PATCH v4 2/3] x86: probe memory block size advisement value during mm init David Hildenbrand
2024-10-29 20:20 ` [PATCH v4 3/3] acpi,srat: give memory block size advice based on CFMWS alignment Gregory Price
2024-10-30 10:40 ` David Hildenbrand
2024-10-30 15:01 ` Gregory Price
2024-10-30 15:25 ` Gregory Price
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=20241029202041.25334-3-gourry@gourry.net \
--to=gourry@gourry.net \
--cc=Jonathan.Cameron@huawei.com \
--cc=Terry.Bowman@amd.com \
--cc=akpm@linux-foundation.org \
--cc=alison.schofield@intel.com \
--cc=bp@alien8.de \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=dave.jiang@intel.com \
--cc=david@redhat.com \
--cc=gregkh@linuxfoundation.org \
--cc=hpa@zytor.com \
--cc=ira.weiny@intel.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=osalvador@suse.de \
--cc=peterz@infradead.org \
--cc=rafael@kernel.org \
--cc=rppt@kernel.org \
--cc=rrichter@amd.com \
--cc=tglx@linutronix.de \
--cc=x86@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