From: Juergen Gross <jgross@suse.com>
To: linux-kernel@vger.kernel.org, xen-devel@lists.xensource.com,
konrad.wilk@oracle.com, david.vrabel@citrix.com,
boris.ostrovsky@oracle.com
Cc: Juergen Gross <jgross@suse.com>
Subject: [PATCH 02/13] xen: anchor linear p2m list in shared info structure
Date: Wed, 18 Feb 2015 07:51:55 +0100 [thread overview]
Message-ID: <1424242326-26611-3-git-send-email-jgross@suse.com> (raw)
In-Reply-To: <1424242326-26611-1-git-send-email-jgross@suse.com>
The linear p2m list should be anchored in the shared info structure
read by the Xen tools to be able to support 64 bit pv-domains larger
than 512 MB. Additionally the linear p2m list interface includes a
generation count which is changed prior to and after each mapping
change of the p2m list. Reading the generation count the Xen tools can
detect changes of the mappings and re-read the p2m list eventually.
Signed-off-by: Juergen Gross <jgross@suse.com>
---
arch/x86/xen/p2m.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c
index f18fd1d..df73cc5 100644
--- a/arch/x86/xen/p2m.c
+++ b/arch/x86/xen/p2m.c
@@ -256,6 +256,10 @@ void xen_setup_mfn_list_list(void)
HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list_list =
virt_to_mfn(p2m_top_mfn);
HYPERVISOR_shared_info->arch.max_pfn = xen_max_p2m_pfn;
+ HYPERVISOR_shared_info->arch.p2m_generation = 0;
+ HYPERVISOR_shared_info->arch.p2m_vaddr = (unsigned long)xen_p2m_addr;
+ HYPERVISOR_shared_info->arch.p2m_cr3 =
+ xen_pfn_to_cr3(virt_to_mfn(swapper_pg_dir));
}
/* Set up p2m_top to point to the domain-builder provided p2m pages */
@@ -469,8 +473,10 @@ static pte_t *alloc_p2m_pmd(unsigned long addr, pte_t *pte_pg)
ptechk = lookup_address(vaddr, &level);
if (ptechk == pte_pg) {
+ HYPERVISOR_shared_info->arch.p2m_generation++;
set_pmd(pmdp,
__pmd(__pa(pte_newpg[i]) | _KERNPG_TABLE));
+ HYPERVISOR_shared_info->arch.p2m_generation++;
pte_newpg[i] = NULL;
}
@@ -568,8 +574,10 @@ static bool alloc_p2m(unsigned long pfn)
spin_lock_irqsave(&p2m_update_lock, flags);
if (pte_pfn(*ptep) == p2m_pfn) {
+ HYPERVISOR_shared_info->arch.p2m_generation++;
set_pte(ptep,
pfn_pte(PFN_DOWN(__pa(p2m)), PAGE_KERNEL));
+ HYPERVISOR_shared_info->arch.p2m_generation++;
if (mid_mfn)
mid_mfn[mididx] = virt_to_mfn(p2m);
p2m = NULL;
@@ -621,6 +629,11 @@ bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn)
return true;
}
+ /*
+ * The interface requires atomic updates on p2m elements.
+ * xen_safe_write_ulong() is using __put_user which does an atomic
+ * store via asm().
+ */
if (likely(!xen_safe_write_ulong(xen_p2m_addr + pfn, mfn)))
return true;
--
2.1.4
next prev parent reply other threads:[~2015-02-18 6:52 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-18 6:51 [PATCH 00/13] xen: support pv-domains larger than 512GB Juergen Gross
2015-02-18 6:51 ` [PATCH 01/13] xen: sync with xen header Juergen Gross
2015-02-18 6:51 ` Juergen Gross [this message]
2015-02-18 10:32 ` [Xen-devel] [PATCH 02/13] xen: anchor linear p2m list in shared info structure David Vrabel
2015-02-18 10:42 ` Juergen Gross
2015-02-18 10:50 ` Andrew Cooper
2015-02-18 10:54 ` David Vrabel
2015-02-18 10:57 ` Andrew Cooper
2015-02-18 10:57 ` Juergen Gross
2015-02-18 10:56 ` Juergen Gross
2015-02-18 10:51 ` David Vrabel
2015-02-18 6:51 ` [PATCH 03/13] xen: eliminate scalability issues from initial mapping setup Juergen Gross
2015-02-18 6:51 ` [PATCH 04/13] xen: move static e820 map to global scope Juergen Gross
2015-02-19 17:27 ` [Xen-devel] " David Vrabel
2015-02-18 6:51 ` [PATCH 05/13] xen: simplify xen_set_identity_and_remap() by using global variables Juergen Gross
2015-02-19 18:10 ` [Xen-devel] " David Vrabel
2015-02-24 6:15 ` Juergen Gross
2015-02-18 6:51 ` [PATCH 06/13] xen: detect pre-allocated memory interfering with e820 map Juergen Gross
2015-02-19 18:07 ` [Xen-devel] " David Vrabel
2015-02-24 6:27 ` Juergen Gross
2015-02-25 14:24 ` David Vrabel
2015-02-25 16:00 ` Juergen Gross
2015-03-30 10:00 ` Juergen Gross
2015-02-18 6:52 ` [PATCH 07/13] xen: find unused contiguous memory area Juergen Gross
2015-02-19 17:31 ` [Xen-devel] " David Vrabel
2015-02-18 6:52 ` [PATCH 08/13] xen: add service function to copy physical memory areas Juergen Gross
2015-02-19 17:35 ` [Xen-devel] " David Vrabel
2015-02-24 6:34 ` Juergen Gross
2015-02-18 6:52 ` [PATCH 09/13] xen: check for kernel memory conflicting with memory layout Juergen Gross
2015-02-19 17:36 ` [Xen-devel] " David Vrabel
2015-02-24 6:45 ` Juergen Gross
2015-02-18 6:52 ` [PATCH 10/13] xen: check pre-allocated page tables for conflict with memory map Juergen Gross
2015-02-19 17:37 ` [Xen-devel] " David Vrabel
2015-02-24 6:45 ` Juergen Gross
2015-02-18 6:52 ` [PATCH 11/13] xen: move initrd away from e820 non-ram area Juergen Gross
2015-02-19 17:42 ` [Xen-devel] " David Vrabel
2015-02-18 6:52 ` [PATCH 12/13] xen: if p2m list located in to be remapped region delay remapping Juergen Gross
2015-02-19 17:44 ` [Xen-devel] " David Vrabel
2015-02-24 7:01 ` Juergen Gross
2015-02-18 6:52 ` [PATCH 13/13] xen: allow more than 512 GB of RAM for 64 bit pv-domains Juergen Gross
2015-02-18 9:21 ` Paul Bolle
2015-02-18 9:37 ` Juergen Gross
2015-02-18 9:49 ` [Xen-devel] " Jan Beulich
[not found] ` <54E46E3C0200007800060F98@suse.com>
2015-02-18 9:59 ` Juergen Gross
2015-02-18 10:35 ` Paul Bolle
2015-02-18 11:18 ` [Xen-devel] " David Vrabel
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=1424242326-26611-3-git-send-email-jgross@suse.com \
--to=jgross@suse.com \
--cc=boris.ostrovsky@oracle.com \
--cc=david.vrabel@citrix.com \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.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
all inboxes | Powered by JetHome®