From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
To: <linux-kernel@vger.kernel.org>
Cc: <xen-devel@lists.xensource.com>,
<Stefano.Stabellini@eu.citrix.com>, <konrad.wilk@oracle.com>,
<tim@xen.org>, <Ian.Campbell@citrix.com>,
<linux-arm-kernel@lists.infradead.org>,
<linaro-dev@lists.linaro.org>, <catalin.marinas@arm.com>,
<arnd@arndb.de>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: [PATCH v3 03/25] xen/arm: page.h definitions
Date: Thu, 16 Aug 2012 16:35:55 +0100 [thread overview]
Message-ID: <1345131377-14713-3-git-send-email-stefano.stabellini@eu.citrix.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1208161618550.4850@kaball.uk.xensource.com>
ARM Xen guests always use paging in hardware, like PV on HVM guests in
the X86 world.
Changes in v3:
- improve comments.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
arch/arm/include/asm/xen/page.h | 82 +++++++++++++++++++++++++++++++++++++++
1 files changed, 82 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/include/asm/xen/page.h
diff --git a/arch/arm/include/asm/xen/page.h b/arch/arm/include/asm/xen/page.h
new file mode 100644
index 0000000..1742023
--- /dev/null
+++ b/arch/arm/include/asm/xen/page.h
@@ -0,0 +1,82 @@
+#ifndef _ASM_ARM_XEN_PAGE_H
+#define _ASM_ARM_XEN_PAGE_H
+
+#include <asm/page.h>
+#include <asm/pgtable.h>
+
+#include <linux/pfn.h>
+#include <linux/types.h>
+
+#include <xen/interface/grant_table.h>
+
+#define pfn_to_mfn(pfn) (pfn)
+#define phys_to_machine_mapping_valid (1)
+#define mfn_to_pfn(mfn) (mfn)
+#define mfn_to_virt(m) (__va(mfn_to_pfn(m) << PAGE_SHIFT))
+
+#define pte_mfn pte_pfn
+#define mfn_pte pfn_pte
+
+/* Xen machine address */
+typedef struct xmaddr {
+ phys_addr_t maddr;
+} xmaddr_t;
+
+/* Xen pseudo-physical address */
+typedef struct xpaddr {
+ phys_addr_t paddr;
+} xpaddr_t;
+
+#define XMADDR(x) ((xmaddr_t) { .maddr = (x) })
+#define XPADDR(x) ((xpaddr_t) { .paddr = (x) })
+
+static inline xmaddr_t phys_to_machine(xpaddr_t phys)
+{
+ unsigned offset = phys.paddr & ~PAGE_MASK;
+ return XMADDR(PFN_PHYS(pfn_to_mfn(PFN_DOWN(phys.paddr))) | offset);
+}
+
+static inline xpaddr_t machine_to_phys(xmaddr_t machine)
+{
+ unsigned offset = machine.maddr & ~PAGE_MASK;
+ return XPADDR(PFN_PHYS(mfn_to_pfn(PFN_DOWN(machine.maddr))) | offset);
+}
+/* VIRT <-> MACHINE conversion */
+#define virt_to_machine(v) (phys_to_machine(XPADDR(__pa(v))))
+#define virt_to_pfn(v) (PFN_DOWN(__pa(v)))
+#define virt_to_mfn(v) (pfn_to_mfn(virt_to_pfn(v)))
+#define mfn_to_virt(m) (__va(mfn_to_pfn(m) << PAGE_SHIFT))
+
+static inline xmaddr_t arbitrary_virt_to_machine(void *vaddr)
+{
+ /* TODO: assuming it is mapped in the kernel 1:1 */
+ return virt_to_machine(vaddr);
+}
+
+/* TODO: this shouldn't be here but it is because the frontend drivers
+ * are using it (its rolled in headers) even though we won't hit the code path.
+ * So for right now just punt with this.
+ */
+static inline pte_t *lookup_address(unsigned long address, unsigned int *level)
+{
+ BUG();
+ return NULL;
+}
+
+static inline int m2p_add_override(unsigned long mfn, struct page *page,
+ struct gnttab_map_grant_ref *kmap_op)
+{
+ return 0;
+}
+
+static inline int m2p_remove_override(struct page *page, bool clear_pte)
+{
+ return 0;
+}
+
+static inline bool set_phys_to_machine(unsigned long pfn, unsigned long mfn)
+{
+ BUG();
+ return false;
+}
+#endif /* _ASM_ARM_XEN_PAGE_H */
--
1.7.2.5
next prev parent reply other threads:[~2012-08-16 15:36 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-16 15:33 [PATCH v3 00/23] Introduce Xen support on ARM Stefano Stabellini
2012-08-16 15:35 ` [PATCH v3 01/25] arm: initial Xen support Stefano Stabellini
2012-08-16 15:35 ` [PATCH v3 02/25] xen/arm: hypercalls Stefano Stabellini
2012-08-16 15:35 ` Stefano Stabellini [this message]
2012-08-16 15:35 ` [PATCH v3 04/25] xen/arm: sync_bitops Stefano Stabellini
2012-08-16 15:35 ` [PATCH v3 05/25] xen/arm: empty implementation of grant_table arch specific functions Stefano Stabellini
2012-08-16 15:35 ` [PATCH v3 06/25] docs: Xen ARM DT bindings Stefano Stabellini
2012-08-27 23:03 ` Rob Herring
2012-09-12 17:07 ` Stefano Stabellini
2012-09-12 18:14 ` Stefano Stabellini
2012-09-13 2:34 ` Rob Herring
2012-09-13 10:29 ` Dave Martin
2012-09-13 11:19 ` Stefano Stabellini
2012-09-13 11:33 ` Stefano Stabellini
2012-09-13 10:26 ` Dave Martin
2012-09-13 11:12 ` Stefano Stabellini
2012-08-16 15:35 ` [PATCH v3 07/25] xen/arm: Xen detection and shared_info page mapping Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 08/25] xen/arm: Introduce xen_pfn_t for pfn and mfn types Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 09/25] xen/arm: Introduce xen_ulong_t for unsigned long Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 10/25] xen/arm: compile and run xenbus Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 11/25] xen: do not compile manage, balloon, pci, acpi and cpu_hotplug on ARM Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 12/25] xen/arm: introduce CONFIG_XEN " Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 13/25] xen/arm: get privilege status Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 14/25] xen/arm: initialize grant_table on ARM Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 15/25] xen/arm: receive Xen events " Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 16/25] xen: clear IRQ_NOAUTOEN and IRQ_NOREQUEST Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 17/25] xen/arm: implement alloc/free_xenballooned_pages with alloc_pages/kfree Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 18/25] xen: allow privcmd for HVM guests Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 19/25] xen/arm: compile blkfront and blkback Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 20/25] xen/arm: compile netback Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 21/25] arm/v2m: initialize arch_timers even if v2m_timer is not present Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 22/25] xen/arm: use the __HVC macro Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 23/25] xen: missing includes Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 24/25] xen: update xen_add_to_physmap interface Stefano Stabellini
2012-08-16 15:36 ` [PATCH v3 25/25] [HACK] xen/arm: implement xen_remap_domain_mfn_range Stefano Stabellini
2012-09-13 17:15 ` [PATCH v3 00/23] Introduce Xen support on ARM Stefano Stabellini
2012-10-24 15:26 ` [PATCH RESEND] xen/arm: use the __HVC macro Stefano Stabellini
2012-11-05 10:58 ` Dave Martin
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=1345131377-14713-3-git-send-email-stefano.stabellini@eu.citrix.com \
--to=stefano.stabellini@eu.citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=konrad.wilk@oracle.com \
--cc=linaro-dev@lists.linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tim@xen.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®