f158f55e6a
xen-4.5.2-testing-src.tar.bz2 - Drop the following xen-4.5.1-testing-src.tar.bz2 552d0f49-x86-traps-identify-the-vcpu-in-context-when-dumping-regs.patch 5576f178-kexec-add-more-pages-to-v1-environment.patch 55780be1-x86-EFI-adjust-EFI_MEMORY_WP-handling-for-spec-version-2.5.patch 558bfaa0-x86-traps-avoid-using-current-too-early.patch 5592a116-nested-EPT-fix-the-handling-of-nested-EPT.patch 559b9dd6-x86-p2m-ept-don-t-unmap-in-use-EPT-pagetable.patch 559bc633-x86-cpupool-clear-proper-cpu_valid-bit-on-CPU-teardown.patch 559bc64e-credit1-properly-deal-with-CPUs-not-in-any-pool.patch 559bc87f-x86-hvmloader-avoid-data-corruption-with-xenstore-rw.patch 559bdde5-pull-in-latest-linux-earlycpio.patch 55a62eb0-xl-correct-handling-of-extra_config-in-main_cpupoolcreate.patch 55a66a1e-make-rangeset_report_ranges-report-all-ranges.patch 55a77e4f-dmar-device-scope-mem-leak-fix.patch 55c1d83d-x86-gdt-Drop-write-only-xalloc-d-array.patch 55c3232b-x86-mm-Make-hap-shadow-teardown-preemptible.patch 55dc78e9-x86-amd_ucode-skip-updates-for-final-levels.patch 55df2f76-IOMMU-skip-domains-without-page-tables-when-dumping.patch 55e43fd8-x86-NUMA-fix-setup_node.patch 55e43ff8-x86-NUMA-don-t-account-hotplug-regions.patch 55e593f1-x86-NUMA-make-init_node_heap-respect-Xen-heap-limit.patch 55f2e438-x86-hvm-fix-saved-pmtimer-and-hpet-values.patch 55f9345b-x86-MSI-fail-if-no-hardware-support.patch 5604f2e6-vt-d-fix-IM-bit-mask-and-unmask-of-FECTL_REG.patch 560a4af9-x86-EPT-tighten-conditions-of-IOMMU-mapping-updates.patch 560a7c36-x86-p2m-pt-delay-freeing-of-intermediate-page-tables.patch 560a7c53-x86-p2m-pt-ignore-pt-share-flag-for-shadow-mode-guests.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=384
126 lines
4.7 KiB
Diff
126 lines
4.7 KiB
Diff
# Commit 88a2372c6ba44dd42b915a95a823cf9d4d260e25
|
|
# Date 2015-03-23 16:49:42 +0100
|
|
# Author Jan Beulich <jbeulich@suse.com>
|
|
# Committer Jan Beulich <jbeulich@suse.com>
|
|
vm-assist: prepare for discontiguous used bit numbers
|
|
|
|
Since the a flag will get assigned a value discontiguous to the
|
|
existing ones (in order to preserve the low bits, as only those are
|
|
currently accessible to 32-bit guests), this requires a little bit of
|
|
rework of the VM assist code in general: An architecture specific
|
|
VM_ASSIST_VALID definition gets introduced (with an optional compat
|
|
mode counterpart), and compilation of the respective code becomes
|
|
conditional upon this being defined (ARM doesn't wire these up and
|
|
hence doesn't need that code).
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
|
Reviewed-by: Tim Deegan <tim@xen.org>
|
|
|
|
Index: xen-4.5.2-testing/xen/common/compat/kernel.c
|
|
===================================================================
|
|
--- xen-4.5.2-testing.orig/xen/common/compat/kernel.c
|
|
+++ xen-4.5.2-testing/xen/common/compat/kernel.c
|
|
@@ -41,6 +41,11 @@ CHECK_TYPE(domain_handle);
|
|
#define xennmi_callback compat_nmi_callback
|
|
#define xennmi_callback_t compat_nmi_callback_t
|
|
|
|
+#ifdef COMPAT_VM_ASSIST_VALID
|
|
+#undef VM_ASSIST_VALID
|
|
+#define VM_ASSIST_VALID COMPAT_VM_ASSIST_VALID
|
|
+#endif
|
|
+
|
|
#define DO(fn) int compat_##fn
|
|
#define COMPAT
|
|
|
|
Index: xen-4.5.2-testing/xen/common/domain.c
|
|
===================================================================
|
|
--- xen-4.5.2-testing.orig/xen/common/domain.c
|
|
+++ xen-4.5.2-testing/xen/common/domain.c
|
|
@@ -1326,9 +1326,11 @@ long do_vcpu_op(int cmd, int vcpuid, XEN
|
|
return rc;
|
|
}
|
|
|
|
-long vm_assist(struct domain *p, unsigned int cmd, unsigned int type)
|
|
+#ifdef VM_ASSIST_VALID
|
|
+long vm_assist(struct domain *p, unsigned int cmd, unsigned int type,
|
|
+ unsigned long valid)
|
|
{
|
|
- if ( type > MAX_VMASST_TYPE )
|
|
+ if ( type >= BITS_PER_LONG || !test_bit(type, &valid) )
|
|
return -EINVAL;
|
|
|
|
switch ( cmd )
|
|
@@ -1343,6 +1345,7 @@ long vm_assist(struct domain *p, unsigne
|
|
|
|
return -ENOSYS;
|
|
}
|
|
+#endif
|
|
|
|
struct pirq *pirq_get_info(struct domain *d, int pirq)
|
|
{
|
|
Index: xen-4.5.2-testing/xen/common/kernel.c
|
|
===================================================================
|
|
--- xen-4.5.2-testing.orig/xen/common/kernel.c
|
|
+++ xen-4.5.2-testing/xen/common/kernel.c
|
|
@@ -396,10 +396,12 @@ DO(nmi_op)(unsigned int cmd, XEN_GUEST_H
|
|
return rc;
|
|
}
|
|
|
|
+#ifdef VM_ASSIST_VALID
|
|
DO(vm_assist)(unsigned int cmd, unsigned int type)
|
|
{
|
|
- return vm_assist(current->domain, cmd, type);
|
|
+ return vm_assist(current->domain, cmd, type, VM_ASSIST_VALID);
|
|
}
|
|
+#endif
|
|
|
|
DO(ni_hypercall)(void)
|
|
{
|
|
Index: xen-4.5.2-testing/xen/include/asm-x86/config.h
|
|
===================================================================
|
|
--- xen-4.5.2-testing.orig/xen/include/asm-x86/config.h
|
|
+++ xen-4.5.2-testing/xen/include/asm-x86/config.h
|
|
@@ -327,6 +327,14 @@ extern unsigned long xen_phys_start;
|
|
#define ARG_XLAT_START(v) \
|
|
(ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
|
|
|
|
+#define NATIVE_VM_ASSIST_VALID ((1UL << VMASST_TYPE_4gb_segments) | \
|
|
+ (1UL << VMASST_TYPE_4gb_segments_notify) | \
|
|
+ (1UL << VMASST_TYPE_writable_pagetables) | \
|
|
+ (1UL << VMASST_TYPE_pae_extended_cr3))
|
|
+#define VM_ASSIST_VALID NATIVE_VM_ASSIST_VALID
|
|
+#define COMPAT_VM_ASSIST_VALID (NATIVE_VM_ASSIST_VALID & \
|
|
+ ((1UL << COMPAT_BITS_PER_LONG) - 1))
|
|
+
|
|
#define ELFSIZE 64
|
|
|
|
#define ARCH_CRASH_SAVE_VMCOREINFO
|
|
Index: xen-4.5.2-testing/xen/include/public/xen.h
|
|
===================================================================
|
|
--- xen-4.5.2-testing.orig/xen/include/public/xen.h
|
|
+++ xen-4.5.2-testing/xen/include/public/xen.h
|
|
@@ -486,7 +486,9 @@ DEFINE_XEN_GUEST_HANDLE(mmuext_op_t);
|
|
/* x86/PAE guests: support PDPTs above 4GB. */
|
|
#define VMASST_TYPE_pae_extended_cr3 3
|
|
|
|
+#if __XEN_INTERFACE_VERSION__ < 0x00040600
|
|
#define MAX_VMASST_TYPE 3
|
|
+#endif
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
Index: xen-4.5.2-testing/xen/include/xen/lib.h
|
|
===================================================================
|
|
--- xen-4.5.2-testing.orig/xen/include/xen/lib.h
|
|
+++ xen-4.5.2-testing/xen/include/xen/lib.h
|
|
@@ -92,7 +92,8 @@ extern void guest_printk(const struct do
|
|
__attribute__ ((format (printf, 2, 3)));
|
|
extern void noreturn panic(const char *format, ...)
|
|
__attribute__ ((format (printf, 1, 2)));
|
|
-extern long vm_assist(struct domain *, unsigned int, unsigned int);
|
|
+extern long vm_assist(struct domain *, unsigned int cmd, unsigned int type,
|
|
+ unsigned long valid);
|
|
extern int __printk_ratelimit(int ratelimit_ms, int ratelimit_burst);
|
|
extern int printk_ratelimit(void);
|
|
|