Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.11-rc8 150 lines 4.9 kB view raw
1#ifndef INCLUDE_XEN_OPS_H 2#define INCLUDE_XEN_OPS_H 3 4#include <linux/percpu.h> 5#include <linux/notifier.h> 6#include <linux/efi.h> 7#include <asm/xen/interface.h> 8#include <xen/interface/vcpu.h> 9 10DECLARE_PER_CPU(struct vcpu_info *, xen_vcpu); 11 12DECLARE_PER_CPU(uint32_t, xen_vcpu_id); 13static inline uint32_t xen_vcpu_nr(int cpu) 14{ 15 return per_cpu(xen_vcpu_id, cpu); 16} 17 18void xen_arch_pre_suspend(void); 19void xen_arch_post_suspend(int suspend_cancelled); 20 21void xen_timer_resume(void); 22void xen_arch_resume(void); 23void xen_arch_suspend(void); 24 25void xen_resume_notifier_register(struct notifier_block *nb); 26void xen_resume_notifier_unregister(struct notifier_block *nb); 27 28bool xen_vcpu_stolen(int vcpu); 29void xen_setup_runstate_info(int cpu); 30void xen_time_setup_guest(void); 31void xen_get_runstate_snapshot(struct vcpu_runstate_info *res); 32u64 xen_steal_clock(int cpu); 33 34int xen_setup_shutdown_event(void); 35 36extern unsigned long *xen_contiguous_bitmap; 37int xen_create_contiguous_region(phys_addr_t pstart, unsigned int order, 38 unsigned int address_bits, 39 dma_addr_t *dma_handle); 40 41void xen_destroy_contiguous_region(phys_addr_t pstart, unsigned int order); 42 43struct vm_area_struct; 44 45/* 46 * xen_remap_domain_gfn_array() - map an array of foreign frames 47 * @vma: VMA to map the pages into 48 * @addr: Address at which to map the pages 49 * @gfn: Array of GFNs to map 50 * @nr: Number entries in the GFN array 51 * @err_ptr: Returns per-GFN error status. 52 * @prot: page protection mask 53 * @domid: Domain owning the pages 54 * @pages: Array of pages if this domain has an auto-translated physmap 55 * 56 * @gfn and @err_ptr may point to the same buffer, the GFNs will be 57 * overwritten by the error codes after they are mapped. 58 * 59 * Returns the number of successfully mapped frames, or a -ve error 60 * code. 61 */ 62int xen_remap_domain_gfn_array(struct vm_area_struct *vma, 63 unsigned long addr, 64 xen_pfn_t *gfn, int nr, 65 int *err_ptr, pgprot_t prot, 66 unsigned domid, 67 struct page **pages); 68 69/* xen_remap_domain_gfn_range() - map a range of foreign frames 70 * @vma: VMA to map the pages into 71 * @addr: Address at which to map the pages 72 * @gfn: First GFN to map. 73 * @nr: Number frames to map 74 * @prot: page protection mask 75 * @domid: Domain owning the pages 76 * @pages: Array of pages if this domain has an auto-translated physmap 77 * 78 * Returns the number of successfully mapped frames, or a -ve error 79 * code. 80 */ 81int xen_remap_domain_gfn_range(struct vm_area_struct *vma, 82 unsigned long addr, 83 xen_pfn_t gfn, int nr, 84 pgprot_t prot, unsigned domid, 85 struct page **pages); 86int xen_unmap_domain_gfn_range(struct vm_area_struct *vma, 87 int numpgs, struct page **pages); 88int xen_xlate_remap_gfn_array(struct vm_area_struct *vma, 89 unsigned long addr, 90 xen_pfn_t *gfn, int nr, 91 int *err_ptr, pgprot_t prot, 92 unsigned domid, 93 struct page **pages); 94int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma, 95 int nr, struct page **pages); 96int xen_xlate_map_ballooned_pages(xen_pfn_t **pfns, void **vaddr, 97 unsigned long nr_grant_frames); 98 99bool xen_running_on_version_or_later(unsigned int major, unsigned int minor); 100 101efi_status_t xen_efi_get_time(efi_time_t *tm, efi_time_cap_t *tc); 102efi_status_t xen_efi_set_time(efi_time_t *tm); 103efi_status_t xen_efi_get_wakeup_time(efi_bool_t *enabled, efi_bool_t *pending, 104 efi_time_t *tm); 105efi_status_t xen_efi_set_wakeup_time(efi_bool_t enabled, efi_time_t *tm); 106efi_status_t xen_efi_get_variable(efi_char16_t *name, efi_guid_t *vendor, 107 u32 *attr, unsigned long *data_size, 108 void *data); 109efi_status_t xen_efi_get_next_variable(unsigned long *name_size, 110 efi_char16_t *name, efi_guid_t *vendor); 111efi_status_t xen_efi_set_variable(efi_char16_t *name, efi_guid_t *vendor, 112 u32 attr, unsigned long data_size, 113 void *data); 114efi_status_t xen_efi_query_variable_info(u32 attr, u64 *storage_space, 115 u64 *remaining_space, 116 u64 *max_variable_size); 117efi_status_t xen_efi_get_next_high_mono_count(u32 *count); 118efi_status_t xen_efi_update_capsule(efi_capsule_header_t **capsules, 119 unsigned long count, unsigned long sg_list); 120efi_status_t xen_efi_query_capsule_caps(efi_capsule_header_t **capsules, 121 unsigned long count, u64 *max_size, 122 int *reset_type); 123 124#ifdef CONFIG_PREEMPT 125 126static inline void xen_preemptible_hcall_begin(void) 127{ 128} 129 130static inline void xen_preemptible_hcall_end(void) 131{ 132} 133 134#else 135 136DECLARE_PER_CPU(bool, xen_in_preemptible_hcall); 137 138static inline void xen_preemptible_hcall_begin(void) 139{ 140 __this_cpu_write(xen_in_preemptible_hcall, true); 141} 142 143static inline void xen_preemptible_hcall_end(void) 144{ 145 __this_cpu_write(xen_in_preemptible_hcall, false); 146} 147 148#endif /* CONFIG_PREEMPT */ 149 150#endif /* INCLUDE_XEN_OPS_H */