From: Ingo Molnar <mingo@kernel.org>
To: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Baoquan He <bhe@redhat.com>,
linux-kernel@vger.kernel.org, bp@alien8.de, x86@kernel.org
Subject: Re: [PATCH v2 1/2] x86/ioremap: introduce helper to implement xxx_is_setup_data()
Date: Mon, 25 Nov 2024 10:07:24 +0100 [thread overview]
Message-ID: <Z0Q-TAbXPSwFXWPI@gmail.com> (raw)
In-Reply-To: <b49096ad-fbfd-393f-9f35-944eeecd91db@amd.com>
* Tom Lendacky <thomas.lendacky@amd.com> wrote:
> On 11/20/24 02:25, Ingo Molnar wrote:
> >
> > * Tom Lendacky <thomas.lendacky@amd.com> wrote:
> >
> >>> /*
> >>> * Examine the physical address to determine if it is boot data by checking
> >>> * it against the boot params setup_data chain.
> >>> */
> >>> -static bool memremap_is_setup_data(resource_size_t phys_addr,
> >>> - unsigned long size)
> >>> +static bool __ref __memremap_is_setup_data(resource_size_t phys_addr,
> >>
> >> Oh, I see why the __ref is needed now, because this calls an __init
> >> function based on the early bool.
> >>
> >> While this nicely consolidates the checking, I'll let the x86
> >> maintainers decide whether they like that an __init function is calling
> >> a non __init function.
> >
> > So why would it be a problem? Only non-__init calling __init is a bug,
> > because __init functions cease to exist after early bootup. Also,
> > calling certain kernel subsystems too early, before they are
> > initialized, is a bug as well.
>
> I brought it up because that is what could happen if the wrong boolean
> value is supplied to the helper function. The helper function is marked
> non-__init but calls a __init function if the boolean value is true, hence
> the need for the __ref tagging.
Oh, so I misunderstood your point, because you typoed the direction:
> >> While this nicely consolidates the checking, I'll let the x86
> >> maintainers decide whether they like that an __init function is
> >> calling a non __init function.
The problem is the inverse: that a non-__init generic facility may be
calling an __init function if the wrong flag is supplied. As you wrote
a sentence earlier, but I only responded to this paragraph :-/
So yeah, that's a fragility indeed - which happens sometimes when
generic MM facilities share code (I think
mm/sparse.c::section_deactivate() is similar), but I tend to agree that
this pattern could perhaps be improved:
+ if (early)
+ early_memunmap(data, SD_SIZE);
+ else
+ memunmap(data);
Could we perhaps un-__init early_memunmap(), and call memunmap() if
it's in a late context? (Also early_memremap_decrypted().)
That way this code could just use early_memunmap() and
early_memremap_decrypted() and skip the boolean complication?
> But, I don't anticipate that this helper will be called by anything
> else than what is currently calling it and the proper boolean values
> are set on those calls.
>
> I just wanted to raise awareness. I'm ok with using __ref, just
> wanted to make sure everyone else is, too.
It's a fair argument I misunderstood :-)
Thanks,
Ingo
next prev parent reply other threads:[~2024-11-25 9:07 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-18 1:08 [PATCH v2 0/2] x86/ioremap: clean up the mess in xxx_is_setup_data Baoquan He
2024-11-18 1:08 ` [PATCH v2 1/2] x86/ioremap: introduce helper to implement xxx_is_setup_data() Baoquan He
2024-11-18 15:19 ` Tom Lendacky
2024-11-19 3:07 ` Baoquan He
2024-11-19 10:55 ` Ingo Molnar
2024-11-20 7:21 ` Baoquan He
2024-11-20 7:56 ` Baoquan He
2024-11-20 8:25 ` Ingo Molnar
2024-11-20 14:14 ` Tom Lendacky
2024-11-25 9:07 ` Ingo Molnar [this message]
2024-11-26 8:15 ` Baoquan He
2024-11-18 1:08 ` [PATCH v2 2/2] x86/mm: clean up unused parameters of functions Baoquan He
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=Z0Q-TAbXPSwFXWPI@gmail.com \
--to=mingo@kernel.org \
--cc=bhe@redhat.com \
--cc=bp@alien8.de \
--cc=linux-kernel@vger.kernel.org \
--cc=thomas.lendacky@amd.com \
--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.