diff options
Diffstat (limited to 'mali-midgard-16.0/patches/arm64-standalone-headers.patch')
-rw-r--r-- | mali-midgard-16.0/patches/arm64-standalone-headers.patch | 532 |
1 files changed, 0 insertions, 532 deletions
diff --git a/mali-midgard-16.0/patches/arm64-standalone-headers.patch b/mali-midgard-16.0/patches/arm64-standalone-headers.patch deleted file mode 100644 index 969e387..0000000 --- a/mali-midgard-16.0/patches/arm64-standalone-headers.patch +++ /dev/null @@ -1,532 +0,0 @@ -diff -urN linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/opcodes.h linux-headers-4.8.0-2-common/arch/arm64/include/asm/opcodes.h ---- linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/opcodes.h 2016-12-15 15:29:37.330706881 +0000 -+++ linux-headers-4.8.0-2-common/arch/arm64/include/asm/opcodes.h 1970-01-01 00:00:00.000000000 +0000 -@@ -1,5 +0,0 @@ --#ifdef CONFIG_CPU_BIG_ENDIAN --#define CONFIG_CPU_ENDIAN_BE8 CONFIG_CPU_BIG_ENDIAN --#endif -- --#include <../../arm/include/asm/opcodes.h> -diff -urN linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/sysreg.h linux-headers-4.8.0-2-common/arch/arm64/include/asm/sysreg.h ---- linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/sysreg.h 2016-12-15 15:29:37.334706963 +0000 -+++ linux-headers-4.8.0-2-common/arch/arm64/include/asm/sysreg.h 2016-12-29 17:53:10.380735552 +0000 -@@ -22,8 +22,6 @@ - - #include <linux/stringify.h> - --#include <asm/opcodes.h> -- - /* - * ARMv8 ARM reserves the following encoding for system registers: - * (Ref: ARMv8 ARM, Section: "System instruction class encoding overview", -@@ -37,6 +35,14 @@ - #define sys_reg(op0, op1, crn, crm, op2) \ - ((((op0)&3)<<19)|((op1)<<16)|((crn)<<12)|((crm)<<8)|((op2)<<5)) - -+#ifdef __ASSEMBLY__ -+#define ___emit_inst(x) .inst x -+#else -+#define ___emit_inst(x) ".inst " __stringify(x) "\n\t" -+#endif -+ -+#define __emit_inst(x) ___emit_inst((x)) -+ - #define SYS_MIDR_EL1 sys_reg(3, 0, 0, 0, 0) - #define SYS_MPIDR_EL1 sys_reg(3, 0, 0, 0, 5) - #define SYS_REVIDR_EL1 sys_reg(3, 0, 0, 0, 6) -@@ -81,10 +87,10 @@ - #define REG_PSTATE_PAN_IMM sys_reg(0, 0, 4, 0, 4) - #define REG_PSTATE_UAO_IMM sys_reg(0, 0, 4, 0, 3) - --#define SET_PSTATE_PAN(x) __inst_arm(0xd5000000 | REG_PSTATE_PAN_IMM |\ -- (!!x)<<8 | 0x1f) --#define SET_PSTATE_UAO(x) __inst_arm(0xd5000000 | REG_PSTATE_UAO_IMM |\ -- (!!x)<<8 | 0x1f) -+#define SET_PSTATE_PAN(x) __emit_inst(0xd5000000 | REG_PSTATE_PAN_IMM | \ -+ (!!x)<<8 | 0x1f) -+#define SET_PSTATE_UAO(x) __emit_inst(0xd5000000 | REG_PSTATE_UAO_IMM | \ -+ (!!x)<<8 | 0x1f) - - /* Common SCTLR_ELx flags. */ - #define SCTLR_ELx_EE (1 << 25) -diff -urN linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/hypercall.h linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/hypercall.h ---- linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/hypercall.h 2016-12-15 15:29:37.334706963 +0000 -+++ linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/hypercall.h 2016-12-29 18:50:39.875430462 +0000 -@@ -1 +1 @@ --#include <../../arm/include/asm/xen/hypercall.h> -+#include <xen/arm/hypercall.h> -diff -urN linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/hypervisor.h linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/hypervisor.h ---- linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/hypervisor.h 2016-12-15 15:29:37.334706963 +0000 -+++ linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/hypervisor.h 2016-12-29 18:50:56.119697557 +0000 -@@ -1 +1 @@ --#include <../../arm/include/asm/xen/hypervisor.h> -+#include <xen/arm/hypervisor.h> -diff -urN linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/interface.h linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/interface.h ---- linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/interface.h 2016-12-15 15:29:37.334706963 +0000 -+++ linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/interface.h 2016-12-29 18:50:33.559326677 +0000 -@@ -1 +1 @@ --#include <../../arm/include/asm/xen/interface.h> -+#include <xen/arm/interface.h> -diff -urN linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/page-coherent.h linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/page-coherent.h ---- linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/page-coherent.h 2016-12-15 15:29:37.334706963 +0000 -+++ linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/page-coherent.h 2016-12-29 18:50:48.011564209 +0000 -@@ -1 +1 @@ --#include <../../arm/include/asm/xen/page-coherent.h> -+#include <xen/arm/page-coherent.h> -diff -urN linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/page.h linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/page.h ---- linux-headers-4.8.0-2-common-unpatched/arch/arm64/include/asm/xen/page.h 2016-12-15 15:29:37.334706963 +0000 -+++ linux-headers-4.8.0-2-common/arch/arm64/include/asm/xen/page.h 2016-12-29 18:50:28.155237909 +0000 -@@ -1 +1 @@ --#include <../../arm/include/asm/xen/page.h> -+#include <xen/arm/page.h> -diff -urN linux-headers-4.8.0-2-common-unpatched/include/xen/arm/hypercall.h linux-headers-4.8.0-2-common/include/xen/arm/hypercall.h ---- linux-headers-4.8.0-2-common-unpatched/include/xen/arm/hypercall.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-headers-4.8.0-2-common/include/xen/arm/hypercall.h 2016-12-29 18:32:54.781934916 +0000 -@@ -0,0 +1,87 @@ -+/****************************************************************************** -+ * hypercall.h -+ * -+ * Linux-specific hypervisor handling. -+ * -+ * Stefano Stabellini <stefano.stabellini@eu.citrix.com>, Citrix, 2012 -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License version 2 -+ * as published by the Free Software Foundation; or, when distributed -+ * separately from the Linux kernel or incorporated into other -+ * software packages, subject to the following license: -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a copy -+ * of this source file (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, copy, modify, -+ * merge, publish, distribute, sublicense, and/or sell copies of the Software, -+ * and to permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included in -+ * all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -+ * IN THE SOFTWARE. -+ */ -+ -+#ifndef _ASM_ARM_XEN_HYPERCALL_H -+#define _ASM_ARM_XEN_HYPERCALL_H -+ -+#include <linux/bug.h> -+ -+#include <xen/interface/xen.h> -+#include <xen/interface/sched.h> -+#include <xen/interface/platform.h> -+ -+long privcmd_call(unsigned call, unsigned long a1, -+ unsigned long a2, unsigned long a3, -+ unsigned long a4, unsigned long a5); -+int HYPERVISOR_xen_version(int cmd, void *arg); -+int HYPERVISOR_console_io(int cmd, int count, char *str); -+int HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int count); -+int HYPERVISOR_sched_op(int cmd, void *arg); -+int HYPERVISOR_event_channel_op(int cmd, void *arg); -+unsigned long HYPERVISOR_hvm_op(int op, void *arg); -+int HYPERVISOR_memory_op(unsigned int cmd, void *arg); -+int HYPERVISOR_physdev_op(int cmd, void *arg); -+int HYPERVISOR_vcpu_op(int cmd, int vcpuid, void *extra_args); -+int HYPERVISOR_tmem_op(void *arg); -+int HYPERVISOR_vm_assist(unsigned int cmd, unsigned int type); -+int HYPERVISOR_platform_op_raw(void *arg); -+static inline int HYPERVISOR_platform_op(struct xen_platform_op *op) -+{ -+ op->interface_version = XENPF_INTERFACE_VERSION; -+ return HYPERVISOR_platform_op_raw(op); -+} -+int HYPERVISOR_multicall(struct multicall_entry *calls, uint32_t nr); -+ -+static inline int -+HYPERVISOR_suspend(unsigned long start_info_mfn) -+{ -+ struct sched_shutdown r = { .reason = SHUTDOWN_suspend }; -+ -+ /* start_info_mfn is unused on ARM */ -+ return HYPERVISOR_sched_op(SCHEDOP_shutdown, &r); -+} -+ -+static inline void -+MULTI_update_va_mapping(struct multicall_entry *mcl, unsigned long va, -+ unsigned int new_val, unsigned long flags) -+{ -+ BUG(); -+} -+ -+static inline void -+MULTI_mmu_update(struct multicall_entry *mcl, struct mmu_update *req, -+ int count, int *success_count, domid_t domid) -+{ -+ BUG(); -+} -+ -+#endif /* _ASM_ARM_XEN_HYPERCALL_H */ -diff -urN linux-headers-4.8.0-2-common-unpatched/include/xen/arm/hypervisor.h linux-headers-4.8.0-2-common/include/xen/arm/hypervisor.h ---- linux-headers-4.8.0-2-common-unpatched/include/xen/arm/hypervisor.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-headers-4.8.0-2-common/include/xen/arm/hypervisor.h 2016-12-29 18:38:24.175590765 +0000 -@@ -0,0 +1,39 @@ -+#ifndef _ASM_ARM_XEN_HYPERVISOR_H -+#define _ASM_ARM_XEN_HYPERVISOR_H -+ -+#include <linux/init.h> -+ -+extern struct shared_info *HYPERVISOR_shared_info; -+extern struct start_info *xen_start_info; -+ -+/* Lazy mode for batching updates / context switch */ -+enum paravirt_lazy_mode { -+ PARAVIRT_LAZY_NONE, -+ PARAVIRT_LAZY_MMU, -+ PARAVIRT_LAZY_CPU, -+}; -+ -+static inline enum paravirt_lazy_mode paravirt_get_lazy_mode(void) -+{ -+ return PARAVIRT_LAZY_NONE; -+} -+ -+extern struct dma_map_ops *xen_dma_ops; -+ -+#ifdef CONFIG_XEN -+void __init xen_early_init(void); -+#else -+static inline void xen_early_init(void) { return; } -+#endif -+ -+#ifdef CONFIG_HOTPLUG_CPU -+static inline void xen_arch_register_cpu(int num) -+{ -+} -+ -+static inline void xen_arch_unregister_cpu(int num) -+{ -+} -+#endif -+ -+#endif /* _ASM_ARM_XEN_HYPERVISOR_H */ -diff -urN linux-headers-4.8.0-2-common-unpatched/include/xen/arm/interface.h linux-headers-4.8.0-2-common/include/xen/arm/interface.h ---- linux-headers-4.8.0-2-common-unpatched/include/xen/arm/interface.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-headers-4.8.0-2-common/include/xen/arm/interface.h 2016-12-29 18:45:12.422113087 +0000 -@@ -0,0 +1,85 @@ -+/****************************************************************************** -+ * Guest OS interface to ARM Xen. -+ * -+ * Stefano Stabellini <stefano.stabellini@eu.citrix.com>, Citrix, 2012 -+ */ -+ -+#ifndef _ASM_ARM_XEN_INTERFACE_H -+#define _ASM_ARM_XEN_INTERFACE_H -+ -+#include <linux/types.h> -+ -+#define uint64_aligned_t uint64_t __attribute__((aligned(8))) -+ -+#define __DEFINE_GUEST_HANDLE(name, type) \ -+ typedef struct { union { type *p; uint64_aligned_t q; }; } \ -+ __guest_handle_ ## name -+ -+#define DEFINE_GUEST_HANDLE_STRUCT(name) \ -+ __DEFINE_GUEST_HANDLE(name, struct name) -+#define DEFINE_GUEST_HANDLE(name) __DEFINE_GUEST_HANDLE(name, name) -+#define GUEST_HANDLE(name) __guest_handle_ ## name -+ -+#define set_xen_guest_handle(hnd, val) \ -+ do { \ -+ if (sizeof(hnd) == 8) \ -+ *(uint64_t *)&(hnd) = 0; \ -+ (hnd).p = val; \ -+ } while (0) -+ -+#define __HYPERVISOR_platform_op_raw __HYPERVISOR_platform_op -+ -+#ifndef __ASSEMBLY__ -+/* Explicitly size integers that represent pfns in the interface with -+ * Xen so that we can have one ABI that works for 32 and 64 bit guests. -+ * Note that this means that the xen_pfn_t type may be capable of -+ * representing pfn's which the guest cannot represent in its own pfn -+ * type. However since pfn space is controlled by the guest this is -+ * fine since it simply wouldn't be able to create any sure pfns in -+ * the first place. -+ */ -+typedef uint64_t xen_pfn_t; -+#define PRI_xen_pfn "llx" -+typedef uint64_t xen_ulong_t; -+#define PRI_xen_ulong "llx" -+typedef int64_t xen_long_t; -+#define PRI_xen_long "llx" -+/* Guest handles for primitive C types. */ -+__DEFINE_GUEST_HANDLE(uchar, unsigned char); -+__DEFINE_GUEST_HANDLE(uint, unsigned int); -+DEFINE_GUEST_HANDLE(char); -+DEFINE_GUEST_HANDLE(int); -+DEFINE_GUEST_HANDLE(void); -+DEFINE_GUEST_HANDLE(uint64_t); -+DEFINE_GUEST_HANDLE(uint32_t); -+DEFINE_GUEST_HANDLE(xen_pfn_t); -+DEFINE_GUEST_HANDLE(xen_ulong_t); -+ -+/* Maximum number of virtual CPUs in multi-processor guests. */ -+#define MAX_VIRT_CPUS 1 -+ -+struct arch_vcpu_info { }; -+struct arch_shared_info { }; -+ -+/* TODO: Move pvclock definitions some place arch independent */ -+struct pvclock_vcpu_time_info { -+ u32 version; -+ u32 pad0; -+ u64 tsc_timestamp; -+ u64 system_time; -+ u32 tsc_to_system_mul; -+ s8 tsc_shift; -+ u8 flags; -+ u8 pad[2]; -+} __attribute__((__packed__)); /* 32 bytes */ -+ -+/* It is OK to have a 12 bytes struct with no padding because it is packed */ -+struct pvclock_wall_clock { -+ u32 version; -+ u32 sec; -+ u32 nsec; -+ u32 sec_hi; -+} __attribute__((__packed__)); -+#endif -+ -+#endif /* _ASM_ARM_XEN_INTERFACE_H */ -diff -urN linux-headers-4.8.0-2-common-unpatched/include/xen/arm/page-coherent.h linux-headers-4.8.0-2-common/include/xen/arm/page-coherent.h ---- linux-headers-4.8.0-2-common-unpatched/include/xen/arm/page-coherent.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-headers-4.8.0-2-common/include/xen/arm/page-coherent.h 2016-12-29 18:45:54.666790395 +0000 -@@ -0,0 +1,98 @@ -+#ifndef _ASM_ARM_XEN_PAGE_COHERENT_H -+#define _ASM_ARM_XEN_PAGE_COHERENT_H -+ -+#include <asm/page.h> -+#include <linux/dma-mapping.h> -+ -+void __xen_dma_map_page(struct device *hwdev, struct page *page, -+ dma_addr_t dev_addr, unsigned long offset, size_t size, -+ enum dma_data_direction dir, unsigned long attrs); -+void __xen_dma_unmap_page(struct device *hwdev, dma_addr_t handle, -+ size_t size, enum dma_data_direction dir, -+ unsigned long attrs); -+void __xen_dma_sync_single_for_cpu(struct device *hwdev, -+ dma_addr_t handle, size_t size, enum dma_data_direction dir); -+ -+void __xen_dma_sync_single_for_device(struct device *hwdev, -+ dma_addr_t handle, size_t size, enum dma_data_direction dir); -+ -+static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size, -+ dma_addr_t *dma_handle, gfp_t flags, unsigned long attrs) -+{ -+ return __generic_dma_ops(hwdev)->alloc(hwdev, size, dma_handle, flags, attrs); -+} -+ -+static inline void xen_free_coherent_pages(struct device *hwdev, size_t size, -+ void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs) -+{ -+ __generic_dma_ops(hwdev)->free(hwdev, size, cpu_addr, dma_handle, attrs); -+} -+ -+static inline void xen_dma_map_page(struct device *hwdev, struct page *page, -+ dma_addr_t dev_addr, unsigned long offset, size_t size, -+ enum dma_data_direction dir, unsigned long attrs) -+{ -+ unsigned long page_pfn = page_to_xen_pfn(page); -+ unsigned long dev_pfn = XEN_PFN_DOWN(dev_addr); -+ unsigned long compound_pages = -+ (1<<compound_order(page)) * XEN_PFN_PER_PAGE; -+ bool local = (page_pfn <= dev_pfn) && -+ (dev_pfn - page_pfn < compound_pages); -+ -+ /* -+ * Dom0 is mapped 1:1, while the Linux page can span across -+ * multiple Xen pages, it's not possible for it to contain a -+ * mix of local and foreign Xen pages. So if the first xen_pfn -+ * == mfn the page is local otherwise it's a foreign page -+ * grant-mapped in dom0. If the page is local we can safely -+ * call the native dma_ops function, otherwise we call the xen -+ * specific function. -+ */ -+ if (local) -+ __generic_dma_ops(hwdev)->map_page(hwdev, page, offset, size, dir, attrs); -+ else -+ __xen_dma_map_page(hwdev, page, dev_addr, offset, size, dir, attrs); -+} -+ -+static inline void xen_dma_unmap_page(struct device *hwdev, dma_addr_t handle, -+ size_t size, enum dma_data_direction dir, unsigned long attrs) -+{ -+ unsigned long pfn = PFN_DOWN(handle); -+ /* -+ * Dom0 is mapped 1:1, while the Linux page can be spanned accross -+ * multiple Xen page, it's not possible to have a mix of local and -+ * foreign Xen page. Dom0 is mapped 1:1, so calling pfn_valid on a -+ * foreign mfn will always return false. If the page is local we can -+ * safely call the native dma_ops function, otherwise we call the xen -+ * specific function. -+ */ -+ if (pfn_valid(pfn)) { -+ if (__generic_dma_ops(hwdev)->unmap_page) -+ __generic_dma_ops(hwdev)->unmap_page(hwdev, handle, size, dir, attrs); -+ } else -+ __xen_dma_unmap_page(hwdev, handle, size, dir, attrs); -+} -+ -+static inline void xen_dma_sync_single_for_cpu(struct device *hwdev, -+ dma_addr_t handle, size_t size, enum dma_data_direction dir) -+{ -+ unsigned long pfn = PFN_DOWN(handle); -+ if (pfn_valid(pfn)) { -+ if (__generic_dma_ops(hwdev)->sync_single_for_cpu) -+ __generic_dma_ops(hwdev)->sync_single_for_cpu(hwdev, handle, size, dir); -+ } else -+ __xen_dma_sync_single_for_cpu(hwdev, handle, size, dir); -+} -+ -+static inline void xen_dma_sync_single_for_device(struct device *hwdev, -+ dma_addr_t handle, size_t size, enum dma_data_direction dir) -+{ -+ unsigned long pfn = PFN_DOWN(handle); -+ if (pfn_valid(pfn)) { -+ if (__generic_dma_ops(hwdev)->sync_single_for_device) -+ __generic_dma_ops(hwdev)->sync_single_for_device(hwdev, handle, size, dir; -+ } else -+ __xen_dma_sync_single_for_device(hwdev, handle, size, dir); -+} -+ -+#endif /* _ASM_ARM_XEN_PAGE_COHERENT_H */ -diff -urN linux-headers-4.8.0-2-common-unpatched/include/xen/arm/page.h linux-headers-4.8.0-2-common/include/xen/arm/page.h ---- linux-headers-4.8.0-2-common-unpatched/include/xen/arm/page.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-headers-4.8.0-2-common/include/xen/arm/page.h 2016-12-29 18:46:47.371639580 +0000 -@@ -0,0 +1,122 @@ -+#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 <linux/dma-mapping.h> -+ -+#include <xen/xen.h> -+#include <xen/interface/grant_table.h> -+ -+#define phys_to_machine_mapping_valid(pfn) (1) -+ -+/* 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) }) -+ -+#define INVALID_P2M_ENTRY (~0UL) -+ -+/* -+ * The pseudo-physical frame (pfn) used in all the helpers is always based -+ * on Xen page granularity (i.e 4KB). -+ * -+ * A Linux page may be split across multiple non-contiguous Xen page so we -+ * have to keep track with frame based on 4KB page granularity. -+ * -+ * PV drivers should never make a direct usage of those helpers (particularly -+ * pfn_to_gfn and gfn_to_pfn). -+ */ -+ -+unsigned long __pfn_to_mfn(unsigned long pfn); -+extern struct rb_root phys_to_mach; -+ -+/* Pseudo-physical <-> Guest conversion */ -+static inline unsigned long pfn_to_gfn(unsigned long pfn) -+{ -+ return pfn; -+} -+ -+static inline unsigned long gfn_to_pfn(unsigned long gfn) -+{ -+ return gfn; -+} -+ -+/* Pseudo-physical <-> BUS conversion */ -+static inline unsigned long pfn_to_bfn(unsigned long pfn) -+{ -+ unsigned long mfn; -+ -+ if (phys_to_mach.rb_node != NULL) { -+ mfn = __pfn_to_mfn(pfn); -+ if (mfn != INVALID_P2M_ENTRY) -+ return mfn; -+ } -+ -+ return pfn; -+} -+ -+static inline unsigned long bfn_to_pfn(unsigned long bfn) -+{ -+ return bfn; -+} -+ -+#define bfn_to_local_pfn(bfn) bfn_to_pfn(bfn) -+ -+/* VIRT <-> GUEST conversion */ -+#define virt_to_gfn(v) (pfn_to_gfn(virt_to_phys(v) >> XEN_PAGE_SHIFT)) -+#define gfn_to_virt(m) (__va(gfn_to_pfn(m) << XEN_PAGE_SHIFT)) -+ -+/* Only used in PV code. But ARM guests are always HVM. */ -+static inline xmaddr_t arbitrary_virt_to_machine(void *vaddr) -+{ -+ BUG(); -+} -+ -+/* 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; -+} -+ -+extern int set_foreign_p2m_mapping(struct gnttab_map_grant_ref *map_ops, -+ struct gnttab_map_grant_ref *kmap_ops, -+ struct page **pages, unsigned int count); -+ -+extern int clear_foreign_p2m_mapping(struct gnttab_unmap_grant_ref *unmap_ops, -+ struct gnttab_unmap_grant_ref *kunmap_ops, -+ struct page **pages, unsigned int count); -+ -+bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn); -+bool __set_phys_to_machine_multi(unsigned long pfn, unsigned long mfn, -+ unsigned long nr_pages); -+ -+static inline bool set_phys_to_machine(unsigned long pfn, unsigned long mfn) -+{ -+ return __set_phys_to_machine(pfn, mfn); -+} -+ -+#define xen_remap(cookie, size) ioremap_cache((cookie), (size)) -+#define xen_unmap(cookie) iounmap((cookie)) -+ -+bool xen_arch_need_swiotlb(struct device *dev, -+ phys_addr_t phys, -+ dma_addr_t dev_addr); -+unsigned long xen_get_swiotlb_free_pages(unsigned int order); -+ -+#endif /* _ASM_ARM_XEN_PAGE_H */ |