Blame view

include/xen/xen-ops.h 4.76 KB
e04d0d076   Isaku Yamahata   xen: move events....
1
2
3
4
  #ifndef INCLUDE_XEN_OPS_H
  #define INCLUDE_XEN_OPS_H
  
  #include <linux/percpu.h>
cd979883b   Stanislaw Gruszka   xen/acpi-processo...
5
  #include <linux/notifier.h>
be81c8a1d   Daniel Kiper   xen: Put EFI mach...
6
  #include <linux/efi.h>
7892f6928   Ian Campbell   xen: correctly us...
7
  #include <asm/xen/interface.h>
4ccefbe59   Stefano Stabellini   xen: move xen_set...
8
  #include <xen/interface/vcpu.h>
e04d0d076   Isaku Yamahata   xen: move events....
9
10
  
  DECLARE_PER_CPU(struct vcpu_info *, xen_vcpu);
55467dea2   Vitaly Kuznetsov   xen: change the t...
11
12
  DECLARE_PER_CPU(uint32_t, xen_vcpu_id);
  static inline uint32_t xen_vcpu_nr(int cpu)
88e957d6e   Vitaly Kuznetsov   xen: introduce xe...
13
14
15
  {
  	return per_cpu(xen_vcpu_id, cpu);
  }
03c8142bd   Ian Campbell   xen: suspend: add...
16
17
  void xen_arch_pre_suspend(void);
  void xen_arch_post_suspend(int suspend_cancelled);
0e91398f2   Jeremy Fitzhardinge   xen: implement sa...
18

ad55db9fe   Isaku Yamahata   xen: add xen_arch...
19
20
  void xen_timer_resume(void);
  void xen_arch_resume(void);
2b953a5e9   Boris Ostrovsky   xen: Suspend tick...
21
  void xen_arch_suspend(void);
ad55db9fe   Isaku Yamahata   xen: add xen_arch...
22

cd979883b   Stanislaw Gruszka   xen/acpi-processo...
23
24
  void xen_resume_notifier_register(struct notifier_block *nb);
  void xen_resume_notifier_unregister(struct notifier_block *nb);
4ccefbe59   Stefano Stabellini   xen: move xen_set...
25
26
  bool xen_vcpu_stolen(int vcpu);
  void xen_setup_runstate_info(int cpu);
ecb23dc6f   Juergen Gross   xen: add steal_cl...
27
  void xen_time_setup_guest(void);
4ccefbe59   Stefano Stabellini   xen: move xen_set...
28
  void xen_get_runstate_snapshot(struct vcpu_runstate_info *res);
d34c30cc1   Juergen Gross   xen: add static i...
29
  u64 xen_steal_clock(int cpu);
4ccefbe59   Stefano Stabellini   xen: move xen_set...
30

016b6f5fe   Stefano Stabellini   xen: Add suspend/...
31
  int xen_setup_shutdown_event(void);
08bbc9da9   Alex Nixon   xen: Add xen_crea...
32
  extern unsigned long *xen_contiguous_bitmap;
1b65c4e5a   Stefano Stabellini   swiotlb-xen: use ...
33
  int xen_create_contiguous_region(phys_addr_t pstart, unsigned int order,
69908907b   Stefano Stabellini   xen: make xen_cre...
34
35
  				unsigned int address_bits,
  				dma_addr_t *dma_handle);
08bbc9da9   Alex Nixon   xen: Add xen_crea...
36

1b65c4e5a   Stefano Stabellini   swiotlb-xen: use ...
37
  void xen_destroy_contiguous_region(phys_addr_t pstart, unsigned int order);
08bbc9da9   Alex Nixon   xen: Add xen_crea...
38

c140d8799   David Howells   Disintegrate asm/...
39
  struct vm_area_struct;
4e8c0c8c4   David Vrabel   xen/privcmd: impr...
40
41
  
  /*
a13d7201d   Julien Grall   xen/privcmd: Furt...
42
   * xen_remap_domain_gfn_array() - map an array of foreign frames
4e8c0c8c4   David Vrabel   xen/privcmd: impr...
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
   * @vma:     VMA to map the pages into
   * @addr:    Address at which to map the pages
   * @gfn:     Array of GFNs to map
   * @nr:      Number entries in the GFN array
   * @err_ptr: Returns per-GFN error status.
   * @prot:    page protection mask
   * @domid:   Domain owning the pages
   * @pages:   Array of pages if this domain has an auto-translated physmap
   *
   * @gfn and @err_ptr may point to the same buffer, the GFNs will be
   * overwritten by the error codes after they are mapped.
   *
   * Returns the number of successfully mapped frames, or a -ve error
   * code.
   */
a13d7201d   Julien Grall   xen/privcmd: Furt...
58
  int xen_remap_domain_gfn_array(struct vm_area_struct *vma,
4e8c0c8c4   David Vrabel   xen/privcmd: impr...
59
60
61
62
63
  			       unsigned long addr,
  			       xen_pfn_t *gfn, int nr,
  			       int *err_ptr, pgprot_t prot,
  			       unsigned domid,
  			       struct page **pages);
a13d7201d   Julien Grall   xen/privcmd: Furt...
64
  /* xen_remap_domain_gfn_range() - map a range of foreign frames
4e8c0c8c4   David Vrabel   xen/privcmd: impr...
65
66
67
68
69
70
71
72
73
74
75
   * @vma:     VMA to map the pages into
   * @addr:    Address at which to map the pages
   * @gfn:     First GFN to map.
   * @nr:      Number frames to map
   * @prot:    page protection mask
   * @domid:   Domain owning the pages
   * @pages:   Array of pages if this domain has an auto-translated physmap
   *
   * Returns the number of successfully mapped frames, or a -ve error
   * code.
   */
a13d7201d   Julien Grall   xen/privcmd: Furt...
76
  int xen_remap_domain_gfn_range(struct vm_area_struct *vma,
de1ef2065   Ian Campbell   xen/privcmd: move...
77
  			       unsigned long addr,
4e8c0c8c4   David Vrabel   xen/privcmd: impr...
78
  			       xen_pfn_t gfn, int nr,
9a032e393   Ian Campbell   xen: add pages pa...
79
80
  			       pgprot_t prot, unsigned domid,
  			       struct page **pages);
a13d7201d   Julien Grall   xen/privcmd: Furt...
81
  int xen_unmap_domain_gfn_range(struct vm_area_struct *vma,
9a032e393   Ian Campbell   xen: add pages pa...
82
  			       int numpgs, struct page **pages);
4e8c0c8c4   David Vrabel   xen/privcmd: impr...
83
  int xen_xlate_remap_gfn_array(struct vm_area_struct *vma,
628c28eef   David Vrabel   xen: unify foreig...
84
  			      unsigned long addr,
4e8c0c8c4   David Vrabel   xen/privcmd: impr...
85
86
  			      xen_pfn_t *gfn, int nr,
  			      int *err_ptr, pgprot_t prot,
628c28eef   David Vrabel   xen: unify foreig...
87
88
89
90
  			      unsigned domid,
  			      struct page **pages);
  int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
  			      int nr, struct page **pages);
243848fc0   Shannon Zhao   xen/grant-table: ...
91
92
  int xen_xlate_map_ballooned_pages(xen_pfn_t **pfns, void **vaddr,
  				  unsigned long nr_grant_frames);
de1ef2065   Ian Campbell   xen/privcmd: move...
93

394b40f62   Konrad Rzeszutek Wilk   xen/acpi: Move th...
94
  bool xen_running_on_version_or_later(unsigned int major, unsigned int minor);
be81c8a1d   Daniel Kiper   xen: Put EFI mach...
95

a62ed5003   Shannon Zhao   XEN: EFI: Move x8...
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  efi_status_t xen_efi_get_time(efi_time_t *tm, efi_time_cap_t *tc);
  efi_status_t xen_efi_set_time(efi_time_t *tm);
  efi_status_t xen_efi_get_wakeup_time(efi_bool_t *enabled, efi_bool_t *pending,
  				     efi_time_t *tm);
  efi_status_t xen_efi_set_wakeup_time(efi_bool_t enabled, efi_time_t *tm);
  efi_status_t xen_efi_get_variable(efi_char16_t *name, efi_guid_t *vendor,
  				  u32 *attr, unsigned long *data_size,
  				  void *data);
  efi_status_t xen_efi_get_next_variable(unsigned long *name_size,
  				       efi_char16_t *name, efi_guid_t *vendor);
  efi_status_t xen_efi_set_variable(efi_char16_t *name, efi_guid_t *vendor,
  				  u32 attr, unsigned long data_size,
  				  void *data);
  efi_status_t xen_efi_query_variable_info(u32 attr, u64 *storage_space,
  					 u64 *remaining_space,
  					 u64 *max_variable_size);
  efi_status_t xen_efi_get_next_high_mono_count(u32 *count);
  efi_status_t xen_efi_update_capsule(efi_capsule_header_t **capsules,
  				    unsigned long count, unsigned long sg_list);
  efi_status_t xen_efi_query_capsule_caps(efi_capsule_header_t **capsules,
  					unsigned long count, u64 *max_size,
  					int *reset_type);
be81c8a1d   Daniel Kiper   xen: Put EFI mach...
118

fdfd811dd   David Vrabel   x86/xen: allow pr...
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
  #ifdef CONFIG_PREEMPT
  
  static inline void xen_preemptible_hcall_begin(void)
  {
  }
  
  static inline void xen_preemptible_hcall_end(void)
  {
  }
  
  #else
  
  DECLARE_PER_CPU(bool, xen_in_preemptible_hcall);
  
  static inline void xen_preemptible_hcall_begin(void)
  {
  	__this_cpu_write(xen_in_preemptible_hcall, true);
  }
  
  static inline void xen_preemptible_hcall_end(void)
  {
  	__this_cpu_write(xen_in_preemptible_hcall, false);
  }
  
  #endif /* CONFIG_PREEMPT */
e04d0d076   Isaku Yamahata   xen: move events....
144
  #endif /* INCLUDE_XEN_OPS_H */