From: Em Sharnoff <sharnoff@neon.tech>
To: Dave Hansen <dave.hansen@intel.com>,
linux-kernel@vger.kernel.org, x86@kernel.org, linux-mm@kvack.org
Cc: Ingo Molnar <mingo@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Borislav Petkov <bp@alien8.de>,
"Edgecombe, Rick P" <rick.p.edgecombe@intel.com>,
Oleg Vasilev <oleg@neon.tech>,
Arthur Petukhovsky <arthur@neon.tech>,
Stefan Radig <stefan@neon.tech>, Misha Sakhnov <misha@neon.tech>
Subject: Re: [PATCH v3 1/2] x86/mm: Handle alloc failure in phys_*_init()
Date: Wed, 11 Jun 2025 20:26:09 +0100 [thread overview]
Message-ID: <f6834f95-49d0-4948-937c-e6eb7704ee35@neon.tech> (raw)
In-Reply-To: <7c204a40-532d-4afe-94f9-e685fb9be454@intel.com>
On 6/11/25 15:16, Dave Hansen wrote:
> On 6/11/25 01:38, Em Sharnoff wrote:
>>> Could you please find a way to reduce the number of casts?
>> What do you think about changing the return for these functions to just 'int'
>> for errors?
> Fine with me. No reason to cram errno's into a physical address that's
> never used as a physical address.
Just realized paddr_last is actually used to set 'max_pfn_mapped'.
In init_memory_mapping():
> add_pfn_range_mapped(start >> PAGE_SHIFT, ret >> PAGE_SHIFT);
which in turn only uses it to update max_pfn_mapped:
> max_pfn_mapped = max(max_pfn_mapped, end_pfn)
This was added in cc6150321903 ("x86: account overlapped mappings in
max_pfn_mapped").
---
Some other options to reduce the number of casts:
1. Add helpers to do the '(void *)' casting for ERR_PTR, keeping everything
else the same.
2. Change the phys_*_init() functions to return int, and directly update
max_pfn_mapped from within them. They already call update_page_count(),
maybe this is similar?
3. Change the phys_*_init() functions to return int, and calculate the
expected paddr_last externally.
The third option I think is possible in theory, but probably too complicated
and fragile. (at a glance, there's complex emergent logic - but maybe someone
familiar with the code could make the case for something simple)
Thoughts?
Em
next prev parent reply other threads:[~2025-06-11 19:26 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-10 10:15 [PATCH v3 0/2] x86/mm: Improve alloc handling of phys_*_init() Em Sharnoff
2025-06-10 10:16 ` [PATCH v3 1/2] x86/mm: Handle alloc failure in phys_*_init() Em Sharnoff
2025-06-10 14:55 ` Dave Hansen
2025-06-11 8:38 ` Em Sharnoff
2025-06-11 14:16 ` Dave Hansen
2025-06-11 19:26 ` Em Sharnoff [this message]
2025-06-11 19:36 ` Dave Hansen
2025-06-13 20:17 ` Em Sharnoff
2025-06-11 22:56 ` H. Peter Anvin
2025-06-10 15:07 ` Dave Hansen
2025-06-11 8:39 ` Em Sharnoff
2025-06-10 10:17 ` [PATCH v3 2/2] x86/mm: Use GFP_KERNEL for alloc_low_pages() after boot Em Sharnoff
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=f6834f95-49d0-4948-937c-e6eb7704ee35@neon.tech \
--to=sharnoff@neon.tech \
--cc=arthur@neon.tech \
--cc=bp@alien8.de \
--cc=dave.hansen@intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=misha@neon.tech \
--cc=oleg@neon.tech \
--cc=peterz@infradead.org \
--cc=rick.p.edgecombe@intel.com \
--cc=stefan@neon.tech \
--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 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.