diff options
author | Ingo Molnar <mingo@kernel.org> | 2013-01-24 06:47:48 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2013-01-24 06:47:48 -0500 |
commit | befddb21c845f8fb49e637997891ef97c6a869dc (patch) | |
tree | 0e7629123184f2dd50291ad6d477b894175f0f26 /include/xen | |
parent | e716efde75267eab919cdb2bef5b2cb77f305326 (diff) | |
parent | 7d1f9aeff1ee4a20b1aeb377dd0f579fe9647619 (diff) |
Merge tag 'v3.8-rc4' into irq/core
Merge Linux 3.8-rc4 before pulling in new commits - we were on an old v3.7 base.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/xen')
-rw-r--r-- | include/xen/hvm.h | 34 | ||||
-rw-r--r-- | include/xen/interface/event_channel.h | 13 | ||||
-rw-r--r-- | include/xen/interface/memory.h | 44 | ||||
-rw-r--r-- | include/xen/interface/platform.h | 17 | ||||
-rw-r--r-- | include/xen/xen-ops.h | 9 |
5 files changed, 111 insertions, 6 deletions
diff --git a/include/xen/hvm.h b/include/xen/hvm.h index b193fa2f9fdd..13e43e41637d 100644 --- a/include/xen/hvm.h +++ b/include/xen/hvm.h | |||
@@ -5,6 +5,36 @@ | |||
5 | #include <xen/interface/hvm/params.h> | 5 | #include <xen/interface/hvm/params.h> |
6 | #include <asm/xen/hypercall.h> | 6 | #include <asm/xen/hypercall.h> |
7 | 7 | ||
8 | static const char *param_name(int op) | ||
9 | { | ||
10 | #define PARAM(x) [HVM_PARAM_##x] = #x | ||
11 | static const char *const names[] = { | ||
12 | PARAM(CALLBACK_IRQ), | ||
13 | PARAM(STORE_PFN), | ||
14 | PARAM(STORE_EVTCHN), | ||
15 | PARAM(PAE_ENABLED), | ||
16 | PARAM(IOREQ_PFN), | ||
17 | PARAM(BUFIOREQ_PFN), | ||
18 | PARAM(TIMER_MODE), | ||
19 | PARAM(HPET_ENABLED), | ||
20 | PARAM(IDENT_PT), | ||
21 | PARAM(DM_DOMAIN), | ||
22 | PARAM(ACPI_S_STATE), | ||
23 | PARAM(VM86_TSS), | ||
24 | PARAM(VPT_ALIGN), | ||
25 | PARAM(CONSOLE_PFN), | ||
26 | PARAM(CONSOLE_EVTCHN), | ||
27 | }; | ||
28 | #undef PARAM | ||
29 | |||
30 | if (op >= ARRAY_SIZE(names)) | ||
31 | return "unknown"; | ||
32 | |||
33 | if (!names[op]) | ||
34 | return "reserved"; | ||
35 | |||
36 | return names[op]; | ||
37 | } | ||
8 | static inline int hvm_get_parameter(int idx, uint64_t *value) | 38 | static inline int hvm_get_parameter(int idx, uint64_t *value) |
9 | { | 39 | { |
10 | struct xen_hvm_param xhv; | 40 | struct xen_hvm_param xhv; |
@@ -14,8 +44,8 @@ static inline int hvm_get_parameter(int idx, uint64_t *value) | |||
14 | xhv.index = idx; | 44 | xhv.index = idx; |
15 | r = HYPERVISOR_hvm_op(HVMOP_get_param, &xhv); | 45 | r = HYPERVISOR_hvm_op(HVMOP_get_param, &xhv); |
16 | if (r < 0) { | 46 | if (r < 0) { |
17 | printk(KERN_ERR "Cannot get hvm parameter %d: %d!\n", | 47 | printk(KERN_ERR "Cannot get hvm parameter %s (%d): %d!\n", |
18 | idx, r); | 48 | param_name(idx), idx, r); |
19 | return r; | 49 | return r; |
20 | } | 50 | } |
21 | *value = xhv.value; | 51 | *value = xhv.value; |
diff --git a/include/xen/interface/event_channel.h b/include/xen/interface/event_channel.h index 2090881c3650..f4942921e202 100644 --- a/include/xen/interface/event_channel.h +++ b/include/xen/interface/event_channel.h | |||
@@ -177,6 +177,19 @@ struct evtchn_unmask { | |||
177 | evtchn_port_t port; | 177 | evtchn_port_t port; |
178 | }; | 178 | }; |
179 | 179 | ||
180 | /* | ||
181 | * EVTCHNOP_reset: Close all event channels associated with specified domain. | ||
182 | * NOTES: | ||
183 | * 1. <dom> may be specified as DOMID_SELF. | ||
184 | * 2. Only a sufficiently-privileged domain may specify other than DOMID_SELF. | ||
185 | */ | ||
186 | #define EVTCHNOP_reset 10 | ||
187 | struct evtchn_reset { | ||
188 | /* IN parameters. */ | ||
189 | domid_t dom; | ||
190 | }; | ||
191 | typedef struct evtchn_reset evtchn_reset_t; | ||
192 | |||
180 | struct evtchn_op { | 193 | struct evtchn_op { |
181 | uint32_t cmd; /* EVTCHNOP_* */ | 194 | uint32_t cmd; /* EVTCHNOP_* */ |
182 | union { | 195 | union { |
diff --git a/include/xen/interface/memory.h b/include/xen/interface/memory.h index 90712e2072d5..b40a4315cb8b 100644 --- a/include/xen/interface/memory.h +++ b/include/xen/interface/memory.h | |||
@@ -153,6 +153,14 @@ struct xen_machphys_mapping { | |||
153 | }; | 153 | }; |
154 | DEFINE_GUEST_HANDLE_STRUCT(xen_machphys_mapping_t); | 154 | DEFINE_GUEST_HANDLE_STRUCT(xen_machphys_mapping_t); |
155 | 155 | ||
156 | #define XENMAPSPACE_shared_info 0 /* shared info page */ | ||
157 | #define XENMAPSPACE_grant_table 1 /* grant table page */ | ||
158 | #define XENMAPSPACE_gmfn 2 /* GMFN */ | ||
159 | #define XENMAPSPACE_gmfn_range 3 /* GMFN range, XENMEM_add_to_physmap only. */ | ||
160 | #define XENMAPSPACE_gmfn_foreign 4 /* GMFN from another dom, | ||
161 | * XENMEM_add_to_physmap_range only. | ||
162 | */ | ||
163 | |||
156 | /* | 164 | /* |
157 | * Sets the GPFN at which a particular page appears in the specified guest's | 165 | * Sets the GPFN at which a particular page appears in the specified guest's |
158 | * pseudophysical address space. | 166 | * pseudophysical address space. |
@@ -167,8 +175,6 @@ struct xen_add_to_physmap { | |||
167 | uint16_t size; | 175 | uint16_t size; |
168 | 176 | ||
169 | /* Source mapping space. */ | 177 | /* Source mapping space. */ |
170 | #define XENMAPSPACE_shared_info 0 /* shared info page */ | ||
171 | #define XENMAPSPACE_grant_table 1 /* grant table page */ | ||
172 | unsigned int space; | 178 | unsigned int space; |
173 | 179 | ||
174 | /* Index into source mapping space. */ | 180 | /* Index into source mapping space. */ |
@@ -182,6 +188,24 @@ DEFINE_GUEST_HANDLE_STRUCT(xen_add_to_physmap); | |||
182 | /*** REMOVED ***/ | 188 | /*** REMOVED ***/ |
183 | /*#define XENMEM_translate_gpfn_list 8*/ | 189 | /*#define XENMEM_translate_gpfn_list 8*/ |
184 | 190 | ||
191 | #define XENMEM_add_to_physmap_range 23 | ||
192 | struct xen_add_to_physmap_range { | ||
193 | /* Which domain to change the mapping for. */ | ||
194 | domid_t domid; | ||
195 | uint16_t space; /* => enum phys_map_space */ | ||
196 | |||
197 | /* Number of pages to go through */ | ||
198 | uint16_t size; | ||
199 | domid_t foreign_domid; /* IFF gmfn_foreign */ | ||
200 | |||
201 | /* Indexes into space being mapped. */ | ||
202 | GUEST_HANDLE(xen_ulong_t) idxs; | ||
203 | |||
204 | /* GPFN in domid where the source mapping page should appear. */ | ||
205 | GUEST_HANDLE(xen_pfn_t) gpfns; | ||
206 | }; | ||
207 | DEFINE_GUEST_HANDLE_STRUCT(xen_add_to_physmap_range); | ||
208 | |||
185 | /* | 209 | /* |
186 | * Returns the pseudo-physical memory map as it was when the domain | 210 | * Returns the pseudo-physical memory map as it was when the domain |
187 | * was started (specified by XENMEM_set_memory_map). | 211 | * was started (specified by XENMEM_set_memory_map). |
@@ -217,4 +241,20 @@ DEFINE_GUEST_HANDLE_STRUCT(xen_memory_map); | |||
217 | * during a driver critical region. | 241 | * during a driver critical region. |
218 | */ | 242 | */ |
219 | extern spinlock_t xen_reservation_lock; | 243 | extern spinlock_t xen_reservation_lock; |
244 | |||
245 | /* | ||
246 | * Unmaps the page appearing at a particular GPFN from the specified guest's | ||
247 | * pseudophysical address space. | ||
248 | * arg == addr of xen_remove_from_physmap_t. | ||
249 | */ | ||
250 | #define XENMEM_remove_from_physmap 15 | ||
251 | struct xen_remove_from_physmap { | ||
252 | /* Which domain to change the mapping for. */ | ||
253 | domid_t domid; | ||
254 | |||
255 | /* GPFN of the current mapping of the page. */ | ||
256 | xen_pfn_t gpfn; | ||
257 | }; | ||
258 | DEFINE_GUEST_HANDLE_STRUCT(xen_remove_from_physmap); | ||
259 | |||
220 | #endif /* __XEN_PUBLIC_MEMORY_H__ */ | 260 | #endif /* __XEN_PUBLIC_MEMORY_H__ */ |
diff --git a/include/xen/interface/platform.h b/include/xen/interface/platform.h index 4755b5fac9c7..5e36932ab407 100644 --- a/include/xen/interface/platform.h +++ b/include/xen/interface/platform.h | |||
@@ -324,6 +324,22 @@ struct xenpf_cpu_ol { | |||
324 | }; | 324 | }; |
325 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_cpu_ol); | 325 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_cpu_ol); |
326 | 326 | ||
327 | /* | ||
328 | * CMD 58 and 59 are reserved for cpu hotadd and memory hotadd, | ||
329 | * which are already occupied at Xen hypervisor side. | ||
330 | */ | ||
331 | #define XENPF_core_parking 60 | ||
332 | struct xenpf_core_parking { | ||
333 | /* IN variables */ | ||
334 | #define XEN_CORE_PARKING_SET 1 | ||
335 | #define XEN_CORE_PARKING_GET 2 | ||
336 | uint32_t type; | ||
337 | /* IN variables: set cpu nums expected to be idled */ | ||
338 | /* OUT variables: get cpu nums actually be idled */ | ||
339 | uint32_t idle_nums; | ||
340 | }; | ||
341 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_core_parking); | ||
342 | |||
327 | struct xen_platform_op { | 343 | struct xen_platform_op { |
328 | uint32_t cmd; | 344 | uint32_t cmd; |
329 | uint32_t interface_version; /* XENPF_INTERFACE_VERSION */ | 345 | uint32_t interface_version; /* XENPF_INTERFACE_VERSION */ |
@@ -341,6 +357,7 @@ struct xen_platform_op { | |||
341 | struct xenpf_set_processor_pminfo set_pminfo; | 357 | struct xenpf_set_processor_pminfo set_pminfo; |
342 | struct xenpf_pcpuinfo pcpu_info; | 358 | struct xenpf_pcpuinfo pcpu_info; |
343 | struct xenpf_cpu_ol cpu_ol; | 359 | struct xenpf_cpu_ol cpu_ol; |
360 | struct xenpf_core_parking core_parking; | ||
344 | uint8_t pad[128]; | 361 | uint8_t pad[128]; |
345 | } u; | 362 | } u; |
346 | }; | 363 | }; |
diff --git a/include/xen/xen-ops.h b/include/xen/xen-ops.h index 6a198e46ab6e..d6fe062cad6b 100644 --- a/include/xen/xen-ops.h +++ b/include/xen/xen-ops.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define INCLUDE_XEN_OPS_H | 2 | #define INCLUDE_XEN_OPS_H |
3 | 3 | ||
4 | #include <linux/percpu.h> | 4 | #include <linux/percpu.h> |
5 | #include <asm/xen/interface.h> | ||
5 | 6 | ||
6 | DECLARE_PER_CPU(struct vcpu_info *, xen_vcpu); | 7 | DECLARE_PER_CPU(struct vcpu_info *, xen_vcpu); |
7 | 8 | ||
@@ -26,7 +27,11 @@ void xen_destroy_contiguous_region(unsigned long vstart, unsigned int order); | |||
26 | struct vm_area_struct; | 27 | struct vm_area_struct; |
27 | int xen_remap_domain_mfn_range(struct vm_area_struct *vma, | 28 | int xen_remap_domain_mfn_range(struct vm_area_struct *vma, |
28 | unsigned long addr, | 29 | unsigned long addr, |
29 | unsigned long mfn, int nr, | 30 | xen_pfn_t mfn, int nr, |
30 | pgprot_t prot, unsigned domid); | 31 | pgprot_t prot, unsigned domid, |
32 | struct page **pages); | ||
33 | int xen_unmap_domain_mfn_range(struct vm_area_struct *vma, | ||
34 | int numpgs, struct page **pages); | ||
31 | 35 | ||
36 | bool xen_running_on_version_or_later(unsigned int major, unsigned int minor); | ||
32 | #endif /* INCLUDE_XEN_OPS_H */ | 37 | #endif /* INCLUDE_XEN_OPS_H */ |