From: "Jan Beulich" <JBeulich@suse.com>
To: "Daniel Kiper" <daniel.kiper@oracle.com>
Cc: <andrew.cooper3@citrix.com>, <x86@kernel.org>,
<tglx@linutronix.de>, <kexec@lists.infradead.org>,
<virtualization@lists.linux-foundation.org>,
<xen-devel@lists.xensource.com>, <konrad.wilk@oracle.com>,
<mingo@redhat.com>, <linux-kernel@vger.kernel.org>,
<ebiederm@xmission.com>, <hpa@zytor.com>
Subject: Re: [PATCH v2 02/11] x86/kexec: Add extra pointers to transition page table PGD, PUD, PMD and PTE
Date: Tue, 20 Nov 2012 15:52:07 +0000 [thread overview]
Message-ID: <50ABB53702000078000AA11D@nat28.tlf.novell.com> (raw)
In-Reply-To: <1353423893-23125-3-git-send-email-daniel.kiper@oracle.com>
>>> On 20.11.12 at 16:04, Daniel Kiper <daniel.kiper@oracle.com> wrote:
> Some implementations (e.g. Xen PVOPS) could not use part of identity page
> table
> to construct transition page table. It means that they require separate
> PUDs,
> PMDs and PTEs for virtual and physical (identity) mapping. To satisfy that
> requirement add extra pointer to PGD, PUD, PMD and PTE and align existing
> code.
As said for v1 already - this is not really a requirement of the
interface, or else none of our Xen kernels since 2.6.30 would
have worked. I don't think it is desirable to introduce overhead
for everyone if it's not even needed for Xen.
Jan
> Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
> ---
> arch/x86/include/asm/kexec.h | 10 +++++++---
> arch/x86/kernel/machine_kexec_64.c | 12 ++++++------
> 2 files changed, 13 insertions(+), 9 deletions(-)
>
> diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h
> index 317ff17..3cf5600 100644
> --- a/arch/x86/include/asm/kexec.h
> +++ b/arch/x86/include/asm/kexec.h
> @@ -157,9 +157,13 @@ struct kimage_arch {
> };
> #else
> struct kimage_arch {
> - pud_t *pud;
> - pmd_t *pmd;
> - pte_t *pte;
> + pgd_t *pgd;
> + pud_t *pud0;
> + pud_t *pud1;
> + pmd_t *pmd0;
> + pmd_t *pmd1;
> + pte_t *pte0;
> + pte_t *pte1;
> };
> #endif
>
> diff --git a/arch/x86/kernel/machine_kexec_64.c
> b/arch/x86/kernel/machine_kexec_64.c
> index b3ea9db..976e54b 100644
> --- a/arch/x86/kernel/machine_kexec_64.c
> +++ b/arch/x86/kernel/machine_kexec_64.c
> @@ -137,9 +137,9 @@ out:
>
> static void free_transition_pgtable(struct kimage *image)
> {
> - free_page((unsigned long)image->arch.pud);
> - free_page((unsigned long)image->arch.pmd);
> - free_page((unsigned long)image->arch.pte);
> + free_page((unsigned long)image->arch.pud0);
> + free_page((unsigned long)image->arch.pmd0);
> + free_page((unsigned long)image->arch.pte0);
> }
>
> static int init_transition_pgtable(struct kimage *image, pgd_t *pgd)
> @@ -157,7 +157,7 @@ static int init_transition_pgtable(struct kimage *image,
> pgd_t *pgd)
> pud = (pud_t *)get_zeroed_page(GFP_KERNEL);
> if (!pud)
> goto err;
> - image->arch.pud = pud;
> + image->arch.pud0 = pud;
> set_pgd(pgd, __pgd(__pa(pud) | _KERNPG_TABLE));
> }
> pud = pud_offset(pgd, vaddr);
> @@ -165,7 +165,7 @@ static int init_transition_pgtable(struct kimage *image,
> pgd_t *pgd)
> pmd = (pmd_t *)get_zeroed_page(GFP_KERNEL);
> if (!pmd)
> goto err;
> - image->arch.pmd = pmd;
> + image->arch.pmd0 = pmd;
> set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE));
> }
> pmd = pmd_offset(pud, vaddr);
> @@ -173,7 +173,7 @@ static int init_transition_pgtable(struct kimage *image,
> pgd_t *pgd)
> pte = (pte_t *)get_zeroed_page(GFP_KERNEL);
> if (!pte)
> goto err;
> - image->arch.pte = pte;
> + image->arch.pte0 = pte;
> set_pmd(pmd, __pmd(__pa(pte) | _KERNPG_TABLE));
> }
> pte = pte_offset_kernel(pmd, vaddr);
> --
> 1.5.6.5
next prev parent reply other threads:[~2012-11-20 15:51 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-20 15:04 [PATCH v2 00/11] xen: Initial kexec/kdump implementation Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 01/11] kexec: introduce kexec_ops struct Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 02/11] x86/kexec: Add extra pointers to transition page table PGD, PUD, PMD and PTE Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 03/11] xen: Introduce architecture independent data for kexec/kdump Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 04/11] x86/xen: Introduce architecture dependent " Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 05/11] x86/xen: Register resources required by kexec-tools Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 06/11] x86/xen: Add i386 kexec/kdump implementation Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 07/11] x86/xen: Add x86_64 " Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 08/11] x86/xen: Add kexec/kdump makefile rules Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 09/11] x86/xen/enlighten: Add init and crash kexec/kdump hooks Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 10/11] drivers/xen: Export vmcoreinfo through sysfs Daniel Kiper
2012-11-20 15:04 ` [PATCH v2 11/11] x86: Add Xen kexec control code size check to linker script Daniel Kiper
2012-11-20 15:52 ` Jan Beulich [this message]
2012-11-20 16:40 ` [PATCH v2 01/11] kexec: introduce kexec_ops struct Eric W. Biederman
2012-11-21 10:52 ` Daniel Kiper
2012-11-22 12:15 ` Eric W. Biederman
2012-11-22 17:37 ` H. Peter Anvin
2012-11-23 9:56 ` Jan Beulich
2012-11-23 10:53 ` [Xen-devel] " Ian Campbell
2012-11-22 17:47 ` H. Peter Anvin
2012-11-22 18:07 ` Andrew Cooper
2012-11-22 22:26 ` H. Peter Anvin
2014-03-31 10:50 ` Petr Tesarik
2012-11-23 0:12 ` Andrew Cooper
2012-11-23 1:34 ` H. Peter Anvin
2012-11-23 1:38 ` H. Peter Anvin
2012-11-23 1:56 ` Andrew Cooper
2012-11-23 9:53 ` Jan Beulich
2012-11-23 10:37 ` Daniel Kiper
2012-11-23 10:51 ` [Xen-devel] " Ian Campbell
2012-11-23 11:13 ` Daniel Kiper
2012-11-23 10:51 ` Jan Beulich
2012-11-23 11:08 ` Daniel Kiper
2012-11-23 9:47 ` Daniel Kiper
2012-11-23 20:24 ` Eric W. Biederman
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=50ABB53702000078000AA11D@nat28.tlf.novell.com \
--to=jbeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=daniel.kiper@oracle.com \
--cc=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=kexec@lists.infradead.org \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=virtualization@lists.linux-foundation.org \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xensource.com \
/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;
as well as URLs for NNTP newsgroup(s).