diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-13 17:29:16 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-13 17:29:16 -0500 |
commit | 896ea17d3da5f44b2625c9cda9874d7dfe447393 (patch) | |
tree | 089f00dd300a49c81f042e9b52ef32cd1333bdbc /include/xen | |
parent | c7708fac5a878d6e0f2de0aa19f9749cff4f707f (diff) | |
parent | 6a7ed405114b2a53ccd99631b0636aaeabf71b3e (diff) |
Merge tag 'stable/for-linus-3.8-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
Pull Xen updates from Konrad Rzeszutek Wilk:
- Add necessary infrastructure to make balloon driver work under ARM.
- Add /dev/xen/privcmd interfaces to work with ARM and PVH.
- Improve Xen PCIBack wild-card parsing.
- Add Xen ACPI PAD (Processor Aggregator) support - so can offline/
online sockets depending on the power consumption.
- PVHVM + kexec = use an E820_RESV region for the shared region so we
don't overwrite said region during kexec reboot.
- Cleanups, compile fixes.
Fix up some trivial conflicts due to the balloon driver now working on
ARM, and there were changes next to the previous work-arounds that are
now gone.
* tag 'stable/for-linus-3.8-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
xen/PVonHVM: fix compile warning in init_hvm_pv_info
xen: arm: implement remap interfaces needed for privcmd mappings.
xen: correctly use xen_pfn_t in remap_domain_mfn_range.
xen: arm: enable balloon driver
xen: balloon: allow PVMMU interfaces to be compiled out
xen: privcmd: support autotranslated physmap guests.
xen: add pages parameter to xen_remap_domain_mfn_range
xen/acpi: Move the xen_running_on_version_or_later function.
xen/xenbus: Remove duplicate inclusion of asm/xen/hypervisor.h
xen/acpi: Fix compile error by missing decleration for xen_domain.
xen/acpi: revert pad config check in xen_check_mwait
xen/acpi: ACPI PAD driver
xen-pciback: reject out of range inputs
xen-pciback: simplify and tighten parsing of device IDs
xen PVonHVM: use E820_Reserved area for shared_info
Diffstat (limited to 'include/xen')
-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 |
3 files changed, 66 insertions, 4 deletions
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 */ |