#ifndef _ASM_X86_XEN_PAGE_H
#define _ASM_X86_XEN_PAGE_H
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/spinlock.h>
#include <linux/pfn.h>
#include <linux/mm.h>
#include <linux/device.h>
#include <asm/extable.h>
#include <asm/page.h>
#include <xen/interface/xen.h>
#include <xen/interface/grant_table.h>
#include <xen/features.h>
xmaddr_t;
xpaddr_t;
#ifdef CONFIG_X86_64
#define XEN_PHYSICAL_MASK …
#else
#define XEN_PHYSICAL_MASK …
#endif
#define XEN_PTE_MFN_MASK …
#define XMADDR(x) …
#define XPADDR(x) …
#define INVALID_P2M_ENTRY …
#define FOREIGN_FRAME_BIT …
#define IDENTITY_FRAME_BIT …
#define FOREIGN_FRAME(m) …
#define IDENTITY_FRAME(m) …
#define P2M_PER_PAGE …
extern unsigned long *machine_to_phys_mapping;
extern unsigned long machine_to_phys_nr;
extern unsigned long *xen_p2m_addr;
extern unsigned long xen_p2m_size;
extern unsigned long xen_max_p2m_pfn;
extern int xen_alloc_p2m_entry(unsigned long pfn);
extern unsigned long get_phys_to_machine(unsigned long pfn);
extern bool set_phys_to_machine(unsigned long pfn, unsigned long mfn);
extern bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn);
extern unsigned long __init set_phys_range_identity(unsigned long pfn_s,
unsigned long pfn_e);
#ifdef CONFIG_XEN_PV
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);
#else
static inline 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)
{
return 0;
}
static inline 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)
{
return 0;
}
#endif
static inline int xen_safe_write_ulong(unsigned long *addr, unsigned long val)
{ … }
static inline int xen_safe_read_ulong(const unsigned long *addr,
unsigned long *val)
{ … }
#ifdef CONFIG_XEN_PV
static inline unsigned long __pfn_to_mfn(unsigned long pfn)
{ … }
#else
static inline unsigned long __pfn_to_mfn(unsigned long pfn)
{
return pfn;
}
#endif
static inline unsigned long pfn_to_mfn(unsigned long pfn)
{ … }
static inline int phys_to_machine_mapping_valid(unsigned long pfn)
{ … }
static inline unsigned long mfn_to_pfn_no_overrides(unsigned long mfn)
{ … }
static inline unsigned long mfn_to_pfn(unsigned long mfn)
{ … }
static inline xmaddr_t phys_to_machine(xpaddr_t phys)
{ … }
static inline xpaddr_t machine_to_phys(xmaddr_t machine)
{ … }
static inline unsigned long pfn_to_gfn(unsigned long pfn)
{ … }
static inline unsigned long gfn_to_pfn(unsigned long gfn)
{ … }
#define pfn_to_bfn(pfn) …
#define bfn_to_pfn(bfn) …
static inline unsigned long bfn_to_local_pfn(unsigned long mfn)
{ … }
#define virt_to_machine(v) …
static inline unsigned long virt_to_pfn(const void *v)
{ … }
#define virt_to_mfn(v) …
#define mfn_to_virt(m) …
#define virt_to_gfn(v) …
#define gfn_to_virt(g) …
static inline unsigned long pte_mfn(pte_t pte)
{ … }
static inline pte_t mfn_pte(unsigned long page_nr, pgprot_t pgprot)
{ … }
static inline pteval_t pte_val_ma(pte_t pte)
{ … }
static inline pte_t __pte_ma(pteval_t x)
{ … }
#define pmd_val_ma(v) …
#ifdef __PAGETABLE_PUD_FOLDED
#define pud_val_ma …
#else
#define pud_val_ma(v) …
#endif
#define __pmd_ma(x) …
#ifdef __PAGETABLE_P4D_FOLDED
#define p4d_val_ma …
#else
#define p4d_val_ma(x) …
#endif
xmaddr_t arbitrary_virt_to_machine(void *address);
unsigned long arbitrary_virt_to_mfn(void *vaddr);
void make_lowmem_page_readonly(void *vaddr);
void make_lowmem_page_readwrite(void *vaddr);
static inline bool xen_arch_need_swiotlb(struct device *dev,
phys_addr_t phys,
dma_addr_t dev_addr)
{ … }
#endif