From: Dave Hansen <dave.hansen@intel.com>
To: Lianbo Jiang <lijiang@redhat.com>, linux-kernel@vger.kernel.org
Cc: fenghua.yu@intel.com, linux-efi@vger.kernel.org,
linux-ia64@vger.kernel.org, bhe@redhat.com,
ard.biesheuvel@linaro.org, peterz@infradead.org, x86@kernel.org,
kexec@lists.infradead.org, tony.luck@intel.com,
dave.hansen@linux.intel.com, mingo@redhat.com, bp@alien8.de,
luto@kernel.org, tglx@linutronix.de, dyoung@redhat.com,
akpm@linux-foundation.org
Subject: Re: [PATCH 1/2 RESEND v7] resource: add the new I/O resource descriptor 'IORES_DESC_RESERVED'
Date: Mon, 26 Nov 2018 12:52:33 -0800 [thread overview]
Message-ID: <ae405fe9-94fd-3fb7-decd-c7821cf95b7d@intel.com> (raw)
In-Reply-To: <20181124051223.19994-2-lijiang@redhat.com>
On 11/23/18 9:12 PM, Lianbo Jiang wrote:
> The upstream kernel can not accurately add the e820 reserved type to> kdump krenel e820 table.
^ kernel
> Kdump uses walk_iomem_res_desc() to iterate io resources, then adds
> the matched resource ranges to the e820 table for kdump kernel. But,
> when convert the e820 type to the iores descriptor, several e820
> types are converted to 'IORES_DESC_NONE' in this function e820_type
> _to_iores_desc(). So the walk_iomem_res_desc() will get the redundant
> types(such as E820_TYPE_RAM/E820_TYPE_UNUSABLE/E820_TYPE_KERN) when
> walk through io resources with the descriptor 'IORES_DESC_NONE'.
Let me see if I understand.
When doing kexec, the old kernel makes a new e820 table for the new
kernel. The old kernel constructs the new e820 table from
'iomem_resource'. But, when creating the 'iomem_resource' tree,
reserved areas like E820_TYPE_RESERVED are not properly passed through.
This causes problems like described in the next patch.
> This patch adds the new I/O resource descriptor 'IORES_DESC_RESERVED'
> for the iomem resources search interfaces. It is helpful to exactly
> match the reserved resource ranges when walking through iomem resources.
It's more than that, though. You're specifically storing the reserved
area(s) when we see them come through the firmware.
> Furthermore, in order to make it still work after the new descriptor
> is added, these codes originally related to 'IORES_DESC_NONE' have
> been updated.
It would be nice to explain why they needed to be updated and what
breaks if they are not.
> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
> index 5378d10f1d31..91b6112e7489 100644
> --- a/arch/x86/mm/ioremap.c
> +++ b/arch/x86/mm/ioremap.c
> @@ -83,7 +83,14 @@ static bool __ioremap_check_ram(struct resource *res)
>
> static int __ioremap_check_desc_other(struct resource *res)
> {
> - return (res->desc != IORES_DESC_NONE);
> + /*
> + * The E820_TYPE_RESERVED was converted to the IORES_DESC_NONE
> + * before the new IORES_DESC_RESERVED is added, so it contained
> + * the e820 reserved type. In order to make it still work for
> + * SEV, here keep it the same as before.
> + */
> + return ((res->desc != IORES_DESC_NONE) ||
> + (res->desc != IORES_DESC_RESERVED));
> }
After reading the changelog and the comment, I still have no idea why
this hunk is here. Could you try to explain a bit more?
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Dave Hansen <dave.hansen@intel.com>
To: Lianbo Jiang <lijiang@redhat.com>, linux-kernel@vger.kernel.org
Cc: kexec@lists.infradead.org, x86@kernel.org,
linux-ia64@vger.kernel.org, linux-efi@vger.kernel.org,
tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
akpm@linux-foundation.org, dave.hansen@linux.intel.com,
luto@kernel.org, peterz@infradead.org, ard.biesheuvel@linaro.org,
tony.luck@intel.com, fenghua.yu@intel.com, dyoung@redhat.com,
bhe@redhat.com
Subject: Re: [PATCH 1/2 RESEND v7] resource: add the new I/O resource descriptor 'IORES_DESC_RESERVED'
Date: Mon, 26 Nov 2018 12:52:33 -0800 [thread overview]
Message-ID: <ae405fe9-94fd-3fb7-decd-c7821cf95b7d@intel.com> (raw)
In-Reply-To: <20181124051223.19994-2-lijiang@redhat.com>
On 11/23/18 9:12 PM, Lianbo Jiang wrote:
> The upstream kernel can not accurately add the e820 reserved type to> kdump krenel e820 table.
^ kernel
> Kdump uses walk_iomem_res_desc() to iterate io resources, then adds
> the matched resource ranges to the e820 table for kdump kernel. But,
> when convert the e820 type to the iores descriptor, several e820
> types are converted to 'IORES_DESC_NONE' in this function e820_type
> _to_iores_desc(). So the walk_iomem_res_desc() will get the redundant
> types(such as E820_TYPE_RAM/E820_TYPE_UNUSABLE/E820_TYPE_KERN) when
> walk through io resources with the descriptor 'IORES_DESC_NONE'.
Let me see if I understand.
When doing kexec, the old kernel makes a new e820 table for the new
kernel. The old kernel constructs the new e820 table from
'iomem_resource'. But, when creating the 'iomem_resource' tree,
reserved areas like E820_TYPE_RESERVED are not properly passed through.
This causes problems like described in the next patch.
> This patch adds the new I/O resource descriptor 'IORES_DESC_RESERVED'
> for the iomem resources search interfaces. It is helpful to exactly
> match the reserved resource ranges when walking through iomem resources.
It's more than that, though. You're specifically storing the reserved
area(s) when we see them come through the firmware.
> Furthermore, in order to make it still work after the new descriptor
> is added, these codes originally related to 'IORES_DESC_NONE' have
> been updated.
It would be nice to explain why they needed to be updated and what
breaks if they are not.
> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
> index 5378d10f1d31..91b6112e7489 100644
> --- a/arch/x86/mm/ioremap.c
> +++ b/arch/x86/mm/ioremap.c
> @@ -83,7 +83,14 @@ static bool __ioremap_check_ram(struct resource *res)
>
> static int __ioremap_check_desc_other(struct resource *res)
> {
> - return (res->desc != IORES_DESC_NONE);
> + /*
> + * The E820_TYPE_RESERVED was converted to the IORES_DESC_NONE
> + * before the new IORES_DESC_RESERVED is added, so it contained
> + * the e820 reserved type. In order to make it still work for
> + * SEV, here keep it the same as before.
> + */
> + return ((res->desc != IORES_DESC_NONE) ||
> + (res->desc != IORES_DESC_RESERVED));
> }
After reading the changelog and the comment, I still have no idea why
this hunk is here. Could you try to explain a bit more?
WARNING: multiple messages have this Message-ID (diff)
From: Dave Hansen <dave.hansen@intel.com>
To: Lianbo Jiang <lijiang@redhat.com>, linux-kernel@vger.kernel.org
Cc: kexec@lists.infradead.org, x86@kernel.org,
linux-ia64@vger.kernel.org, linux-efi@vger.kernel.org,
tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
akpm@linux-foundation.org, dave.hansen@linux.intel.com,
luto@kernel.org, peterz@infradead.org, ard.biesheuvel@linaro.org,
tony.luck@intel.com, fenghua.yu@intel.com, dyoung@redhat.com,
bhe@redhat.com
Subject: Re: [PATCH 1/2 RESEND v7] resource: add the new I/O resource descriptor 'IORES_DESC_RESERVED'
Date: Mon, 26 Nov 2018 20:52:33 +0000 [thread overview]
Message-ID: <ae405fe9-94fd-3fb7-decd-c7821cf95b7d@intel.com> (raw)
In-Reply-To: <20181124051223.19994-2-lijiang@redhat.com>
On 11/23/18 9:12 PM, Lianbo Jiang wrote:
> The upstream kernel can not accurately add the e820 reserved type to> kdump krenel e820 table.
^ kernel
> Kdump uses walk_iomem_res_desc() to iterate io resources, then adds
> the matched resource ranges to the e820 table for kdump kernel. But,
> when convert the e820 type to the iores descriptor, several e820
> types are converted to 'IORES_DESC_NONE' in this function e820_type
> _to_iores_desc(). So the walk_iomem_res_desc() will get the redundant
> types(such as E820_TYPE_RAM/E820_TYPE_UNUSABLE/E820_TYPE_KERN) when
> walk through io resources with the descriptor 'IORES_DESC_NONE'.
Let me see if I understand.
When doing kexec, the old kernel makes a new e820 table for the new
kernel. The old kernel constructs the new e820 table from
'iomem_resource'. But, when creating the 'iomem_resource' tree,
reserved areas like E820_TYPE_RESERVED are not properly passed through.
This causes problems like described in the next patch.
> This patch adds the new I/O resource descriptor 'IORES_DESC_RESERVED'
> for the iomem resources search interfaces. It is helpful to exactly
> match the reserved resource ranges when walking through iomem resources.
It's more than that, though. You're specifically storing the reserved
area(s) when we see them come through the firmware.
> Furthermore, in order to make it still work after the new descriptor
> is added, these codes originally related to 'IORES_DESC_NONE' have
> been updated.
It would be nice to explain why they needed to be updated and what
breaks if they are not.
> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
> index 5378d10f1d31..91b6112e7489 100644
> --- a/arch/x86/mm/ioremap.c
> +++ b/arch/x86/mm/ioremap.c
> @@ -83,7 +83,14 @@ static bool __ioremap_check_ram(struct resource *res)
>
> static int __ioremap_check_desc_other(struct resource *res)
> {
> - return (res->desc != IORES_DESC_NONE);
> + /*
> + * The E820_TYPE_RESERVED was converted to the IORES_DESC_NONE
> + * before the new IORES_DESC_RESERVED is added, so it contained
> + * the e820 reserved type. In order to make it still work for
> + * SEV, here keep it the same as before.
> + */
> + return ((res->desc != IORES_DESC_NONE) ||
> + (res->desc != IORES_DESC_RESERVED));
> }
After reading the changelog and the comment, I still have no idea why
this hunk is here. Could you try to explain a bit more?
next prev parent reply other threads:[~2018-11-26 20:52 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-24 5:12 [PATCH 0/2 RESEND v7] add reserved e820 ranges to the kdump kernel e820 table Lianbo Jiang
2018-11-24 5:12 ` Lianbo Jiang
2018-11-24 5:12 ` Lianbo Jiang
2018-11-24 5:12 ` [PATCH 1/2 RESEND v7] resource: add the new I/O resource descriptor 'IORES_DESC_RESERVED' Lianbo Jiang
2018-11-24 5:12 ` Lianbo Jiang
2018-11-24 5:12 ` Lianbo Jiang
2018-11-26 20:52 ` Dave Hansen [this message]
2018-11-26 20:52 ` Dave Hansen
2018-11-26 20:52 ` Dave Hansen
2018-11-27 10:04 ` lijiang
2018-11-27 10:04 ` lijiang
2018-11-27 10:04 ` lijiang
2018-11-27 15:34 ` Dave Hansen
2018-11-27 15:34 ` Dave Hansen
2018-11-27 15:34 ` Dave Hansen
2018-11-28 3:51 ` lijiang
2018-11-28 3:51 ` lijiang
2018-11-28 3:51 ` lijiang
2018-11-28 16:02 ` Dave Hansen
2018-11-28 16:02 ` Dave Hansen
2018-11-28 16:02 ` Dave Hansen
2018-11-28 16:02 ` Dave Hansen
2018-11-29 2:14 ` lijiang
2018-11-29 2:14 ` lijiang
2018-11-29 2:14 ` lijiang
2018-11-24 5:12 ` [PATCH 2/2 RESEND v7] x86/kexec_file: add reserved e820 ranges to kdump kernel e820 table Lianbo Jiang
2018-11-24 5:12 ` Lianbo Jiang
2018-11-24 5:12 ` Lianbo Jiang
2018-11-26 17:44 ` [PATCH 0/2 RESEND v7] add reserved e820 ranges to the " Dave Hansen
2018-11-26 17:44 ` Dave Hansen
2018-11-26 17:44 ` Dave Hansen
2018-11-26 18:04 ` Borislav Petkov
2018-11-26 18:04 ` Borislav Petkov
2018-11-26 18:04 ` Borislav Petkov
2018-11-26 18:54 ` Dave Hansen
2018-11-26 18:54 ` Dave Hansen
2018-11-26 18:54 ` Dave Hansen
2018-11-26 18:54 ` Dave Hansen
2018-11-27 2:58 ` lijiang
2018-11-27 2:58 ` lijiang
2018-11-27 2:58 ` lijiang
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=ae405fe9-94fd-3fb7-decd-c7821cf95b7d@intel.com \
--to=dave.hansen@intel.com \
--cc=akpm@linux-foundation.org \
--cc=ard.biesheuvel@linaro.org \
--cc=bhe@redhat.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=dyoung@redhat.com \
--cc=fenghua.yu@intel.com \
--cc=kexec@lists.infradead.org \
--cc=lijiang@redhat.com \
--cc=linux-efi@vger.kernel.org \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.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.