From: Baoquan He <bhe@redhat.com>
To: Borislav Petkov <bp@alien8.de>
Cc: mingo@kernel.org, thomas.lendacky@amd.com,
linux-kernel@vger.kernel.org, x86@kernel.org
Subject: Re: [PATCH v3 1/3] x86/ioremap: introduce helper to implement xxx_is_setup_data()
Date: Mon, 9 Dec 2024 08:52:39 +0800 [thread overview]
Message-ID: <Z1Y/V2lDsB3R4kfg@MiWiFi-R3L-srv> (raw)
In-Reply-To: <20241207160411.GAZ1Rx-9eQHH1IXOwP@fat_crate.local>
On 12/07/24 at 05:04pm, Borislav Petkov wrote:
> On Sat, Nov 23, 2024 at 07:42:19PM +0800, Baoquan He wrote:
> > Functions memremap_is_setup_data() and early_memremap_is_setup_data()
> > share completely the same process and handling, except of the
> > different memremap/unmap invocations.
> >
> > So add helper __memremap_is_setup_data() to extract the common part,
> > parameter 'early' is used to decide what kind of memremap/unmap
> > APIs are called. This simplifies codes a lot by removing the duplicated
> > codes, and also removes the similar code comment above them.
> >
> > And '__ref' is added to __memremap_is_setup_data() to suppress below
> > section mismatch warning:
> >
> > ARNING: modpost: vmlinux: section mismatch in reference: __memremap_is_setup_data+0x5f (section: .text) ->
> > early_memunmap (section: .init.text)
> >
> > Signed-off-by: Baoquan He <bhe@redhat.com>
> > ---
> > arch/x86/mm/ioremap.c | 104 ++++++++++++++----------------------------
> > 1 file changed, 35 insertions(+), 69 deletions(-)
>
> Some touchups ontop:
>
> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
> index aaf40a712b04..fe44e8180bdd 100644
> --- a/arch/x86/mm/ioremap.c
> +++ b/arch/x86/mm/ioremap.c
Thanks for optimizing these.
> @@ -632,9 +632,9 @@ static bool memremap_is_efi_data(resource_size_t phys_addr,
> * Examine the physical address to determine if it is boot data by checking
> * it against the boot params setup_data chain.
> */
> -static bool __ref __memremap_is_setup_data(resource_size_t phys_addr,
> - bool early)
> +static bool __ref __memremap_is_setup_data(resource_size_t phys_addr, bool early)
> {
> + unsigned int setup_data_sz = sizeof(struct setup_data);
> struct setup_indirect *indirect;
> struct setup_data *data;
> u64 paddr, paddr_next;
> @@ -647,24 +647,23 @@ static bool __ref __memremap_is_setup_data(resource_size_t phys_addr,
> return true;
>
> if (early)
> - data = early_memremap_decrypted(paddr, sizeof(*data));
> + data = early_memremap_decrypted(paddr, setup_data_sz);
> else
> - data = memremap(paddr, sizeof(*data),
> - MEMREMAP_WB | MEMREMAP_DEC);
> + data = memremap(paddr, setup_data_sz, MEMREMAP_WB | MEMREMAP_DEC);
> if (!data) {
> - pr_warn("failed to memremap setup_data entry\n");
> + pr_warn("failed to remap setup_data entry\n");
> return false;
> }
>
> - size = sizeof(*data);
> + size = setup_data_sz;
>
> paddr_next = data->next;
> len = data->len;
>
> if ((phys_addr > paddr) &&
> - (phys_addr < (paddr + sizeof(*data) + len))) {
> + (phys_addr < (paddr + setup_data_sz + len))) {
> if (early)
> - early_memunmap(data, sizeof(*data));
> + early_memunmap(data, setup_data_sz);
> else
> memunmap(data);
> return true;
> @@ -673,15 +672,14 @@ static bool __ref __memremap_is_setup_data(resource_size_t phys_addr,
> if (data->type == SETUP_INDIRECT) {
> size += len;
> if (early) {
> - early_memunmap(data, sizeof(*data));
> + early_memunmap(data, setup_data_sz);
> data = early_memremap_decrypted(paddr, size);
> } else {
> memunmap(data);
> - data = memremap(paddr, size,
> - MEMREMAP_WB | MEMREMAP_DEC);
> + data = memremap(paddr, size, MEMREMAP_WB | MEMREMAP_DEC);
> }
> if (!data) {
> - pr_warn("failed to memremap indirect setup_data\n");
> + pr_warn("failed to remap indirect setup_data\n");
> return false;
> }
>
>
> --
> Regards/Gruss,
> Boris.
>
> https://people.kernel.org/tglx/notes-about-netiquette
>
next prev parent reply other threads:[~2024-12-09 0:52 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-23 11:42 [PATCH v3 0/3] x86/ioremap: clean up the mess in xxx_is_setup_data Baoquan He
2024-11-23 11:42 ` [PATCH v3 1/3] x86/ioremap: introduce helper to implement xxx_is_setup_data() Baoquan He
2024-12-07 16:04 ` Borislav Petkov
2024-12-09 0:52 ` Baoquan He [this message]
2024-12-08 10:39 ` [tip: x86/cleanups] x86/ioremap: Simplify setup_data mapping variants tip-bot2 for Baoquan He
2024-11-23 11:42 ` [PATCH v3 2/3] x86/ioremap: Clean up size calculations in xxx_is_setup_data() Baoquan He
2024-11-23 11:42 ` [PATCH v3 3/3] x86/mm: clean up unused parameters of functions Baoquan He
2024-12-08 10:39 ` [tip: x86/cleanups] x86/ioremap: Remove unused size parameter in remapping functions tip-bot2 for 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=Z1Y/V2lDsB3R4kfg@MiWiFi-R3L-srv \
--to=bhe@redhat.com \
--cc=bp@alien8.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@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.