From 7143fd39031002ea33820e690c7ea9a41489248e58de3fae713329f199bd175a Mon Sep 17 00:00:00 2001 From: Charles Arnold Date: Wed, 16 Jun 2010 15:28:05 +0000 Subject: [PATCH] - linux pvdrv: generalize location of autoconf.h Fixes error because of missing autoconf.h when building os11.2 Factory. - bnc#609153 - xm migrate localhost -l fails on Windows VMs 21615-dont-save-xen-heap-pages.patch - Upstream fixes from Jan 21446-iommu-graceful-generic-fail.patch 21453-shadow-avoid-remove-all-after-teardown.patch 21456-compat-hvm-addr-check.patch 21492-x86-pirq-unbind.patch 21526-x86-nehalem-cpuid-mask.patch 21620-x86-signed-domain-irq.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=59 --- 21273-linux-autconf.patch | 26 +++ 21446-iommu-graceful-generic-fail.patch | 29 ++++ ...adow-avoid-remove-all-after-teardown.patch | 31 ++++ 21456-compat-hvm-addr-check.patch | 22 +++ 21492-x86-pirq-unbind.patch | 23 +++ 21526-x86-nehalem-cpuid-mask.patch | 99 +++++++++++ 21615-dont-save-xen-heap-pages.patch | 159 ++++++++++++++++++ 21620-x86-signed-domain-irq.patch | 34 ++++ xen-extra-fixes.patch | 13 -- xen.changes | 21 +++ xen.spec | 54 +++--- 11 files changed, 479 insertions(+), 32 deletions(-) create mode 100644 21273-linux-autconf.patch create mode 100644 21446-iommu-graceful-generic-fail.patch create mode 100644 21453-shadow-avoid-remove-all-after-teardown.patch create mode 100644 21456-compat-hvm-addr-check.patch create mode 100644 21492-x86-pirq-unbind.patch create mode 100644 21526-x86-nehalem-cpuid-mask.patch create mode 100644 21615-dont-save-xen-heap-pages.patch create mode 100644 21620-x86-signed-domain-irq.patch diff --git a/21273-linux-autconf.patch b/21273-linux-autconf.patch new file mode 100644 index 0000000..dd18589 --- /dev/null +++ b/21273-linux-autconf.patch @@ -0,0 +1,26 @@ +# HG changeset patch +# User Keir Fraser +# Date 1272973376 -3600 +# Node ID d2373000996d850c46297740fbd11ea1d93d59d9 +# Parent b07edd50661e7f768088c08215dabb9becb5c5b6 +linux pvdrv: generalize location of autoconf.h + +The location of the file in the build tree changed in recent Linux; +since there can be only one such file, using a wild card instead of +an explicit directory name seems the easiest solution. + +Signed-off-by: Jan Beulich + +Index: xen-4.0.0-testing/unmodified_drivers/linux-2.6/overrides.mk +=================================================================== +--- xen-4.0.0-testing.orig/unmodified_drivers/linux-2.6/overrides.mk ++++ xen-4.0.0-testing/unmodified_drivers/linux-2.6/overrides.mk +@@ -11,7 +11,7 @@ ifeq ($(ARCH),ia64) + _XEN_CPPFLAGS += -DCONFIG_VMX_GUEST + endif + +-_XEN_CPPFLAGS += -include $(objtree)/include/linux/autoconf.h ++_XEN_CPPFLAGS += -include $(wildcard $(objtree)/include/*/autoconf.h) + + EXTRA_CFLAGS += $(_XEN_CPPFLAGS) + EXTRA_AFLAGS += $(_XEN_CPPFLAGS) diff --git a/21446-iommu-graceful-generic-fail.patch b/21446-iommu-graceful-generic-fail.patch new file mode 100644 index 0000000..4a84654 --- /dev/null +++ b/21446-iommu-graceful-generic-fail.patch @@ -0,0 +1,29 @@ +# HG changeset patch +# User Keir Fraser +# Date 1274506601 -3600 +# Node ID 93410e5e4ad8799932ad31820d0d82c74d1f63a2 +# Parent c1ed00d495342334980be576bbb8a2b1037b89c9 +iommu: Gracefully fail to initialise iommu on generic x86 platforms. + +Signed-off-by: Keir Fraser + +--- a/xen/include/asm-x86/hvm/iommu.h ++++ b/xen/include/asm-x86/hvm/iommu.h +@@ -1,6 +1,8 @@ + #ifndef __ASM_X86_HVM_IOMMU_H__ + #define __ASM_X86_HVM_IOMMU_H__ + ++#include ++ + struct iommu_ops; + extern const struct iommu_ops intel_iommu_ops; + extern const struct iommu_ops amd_iommu_ops; +@@ -31,7 +33,7 @@ static inline int iommu_hardware_setup(v + case X86_VENDOR_AMD: + return amd_iov_detect(); + default: +- BUG(); ++ return -ENODEV; + } + + return 0; diff --git a/21453-shadow-avoid-remove-all-after-teardown.patch b/21453-shadow-avoid-remove-all-after-teardown.patch new file mode 100644 index 0000000..bbb2d73 --- /dev/null +++ b/21453-shadow-avoid-remove-all-after-teardown.patch @@ -0,0 +1,31 @@ +# HG changeset patch +# User Keir Fraser +# Date 1274857281 -3600 +# Node ID 5addb6cb16fd64c664b1e3dd335c76b3426e05e9 +# Parent 459f35d8cac4f19e6eae0a7396f6c97e20ae955c +x86 shadow: Avoid remove-all-shadows after shadow teardown + +If dom0 alters the p2m of a domain that's being destroyed, we can end +up doing a remove-all-shadows after the shadow hash table has been +freed. Since no hash table implies no shadows, just return +immediately. + +Signed-off-by: Tim Deegan + +--- a/xen/arch/x86/mm/shadow/common.c ++++ b/xen/arch/x86/mm/shadow/common.c +@@ -2173,8 +2173,13 @@ static void hash_foreach(struct vcpu *v, + struct domain *d = v->domain; + struct page_info *x; + +- /* Say we're here, to stop hash-lookups reordering the chains */ + ASSERT(shadow_locked_by_me(d)); ++ ++ /* Can be called via p2m code &c after shadow teardown. */ ++ if ( unlikely(!d->arch.paging.shadow.hash_table) ) ++ return; ++ ++ /* Say we're here, to stop hash-lookups reordering the chains */ + ASSERT(d->arch.paging.shadow.hash_walking == 0); + d->arch.paging.shadow.hash_walking = 1; + diff --git a/21456-compat-hvm-addr-check.patch b/21456-compat-hvm-addr-check.patch new file mode 100644 index 0000000..0e1c868 --- /dev/null +++ b/21456-compat-hvm-addr-check.patch @@ -0,0 +1,22 @@ +# HG changeset patch +# User Keir Fraser +# Date 1274857778 -3600 +# Node ID a69d09da4917c7b57ceed65224e4bbc389601081 +# Parent 32cdd423d4ebab2b2d03a4501be08438c5dc7050 +compat-guest accessor macros do not need address check for hvm guests. + +Signed-off-by: Tim Deegan + +--- a/xen/include/xen/compat.h ++++ b/xen/include/xen/compat.h +@@ -90,8 +90,9 @@ + * Allows use of faster __copy_* functions. + */ + #define compat_handle_okay(hnd, nr) \ ++ (paging_mode_external(current->domain) || \ + compat_array_access_ok((void *)(full_ptr_t)(hnd).c, (nr), \ +- sizeof(**(hnd)._)) ++ sizeof(**(hnd)._))) + + #define __copy_to_compat_offset(hnd, off, ptr, nr) ({ \ + const typeof(*(ptr)) *_s = (ptr); \ diff --git a/21492-x86-pirq-unbind.patch b/21492-x86-pirq-unbind.patch new file mode 100644 index 0000000..7981474 --- /dev/null +++ b/21492-x86-pirq-unbind.patch @@ -0,0 +1,23 @@ +# HG changeset patch +# User Keir Fraser +# Date 1275040447 -3600 +# Node ID 96917cf25bf3ad42c6b6cddb7ff4f03857ae9619 +# Parent 95acf74586d782d8d4d39016b3426a1eae127e97 +x86: Fix guest-pointer-array memmove in __pirq_guest_unbind(). + +Thanks to Alex Zefefrt for finding this. + +Signed-off-by: Keir Fraser + +--- a/xen/arch/x86/irq.c ++++ b/xen/arch/x86/irq.c +@@ -1242,7 +1242,8 @@ static irq_guest_action_t *__pirq_guest_ + for ( i = 0; (i < action->nr_guests) && (action->guest[i] != d); i++ ) + continue; + BUG_ON(i == action->nr_guests); +- memmove(&action->guest[i], &action->guest[i+1], IRQ_MAX_GUESTS-i-1); ++ memmove(&action->guest[i], &action->guest[i+1], ++ (action->nr_guests-i-1) * sizeof(action->guest[0])); + action->nr_guests--; + + switch ( action->ack_type ) diff --git a/21526-x86-nehalem-cpuid-mask.patch b/21526-x86-nehalem-cpuid-mask.patch new file mode 100644 index 0000000..a13be19 --- /dev/null +++ b/21526-x86-nehalem-cpuid-mask.patch @@ -0,0 +1,99 @@ +# HG changeset patch +# User Keir Fraser +# Date 1275643111 -3600 +# Node ID 48e2b07cf01c044bf483bd7fa5408a6f9801416b +# Parent f2b1924f20281bc42fa3532c7d82b3ee0700aff4 +Intel: Add CPUID feature mask support for NHM processors. + +Signed-off-by: Jun Nakajima +Signed-off-by: Liping Ke + +--- a/xen/arch/x86/cpu/intel.c ++++ b/xen/arch/x86/cpu/intel.c +@@ -29,6 +29,9 @@ extern int trap_init_f00f_bug(void); + static unsigned int opt_cpuid_mask_ecx, opt_cpuid_mask_edx; + integer_param("cpuid_mask_ecx", opt_cpuid_mask_ecx); + integer_param("cpuid_mask_edx", opt_cpuid_mask_edx); ++static unsigned int opt_cpuid_mask_ext_ecx, opt_cpuid_mask_ext_edx; ++integer_param("cpuid_mask_ext_ecx", opt_cpuid_mask_ext_ecx); ++integer_param("cpuid_mask_ext_edx", opt_cpuid_mask_ext_edx); + + static int use_xsave = 1; + boolean_param("xsave", use_xsave); +@@ -40,24 +43,46 @@ boolean_param("xsave", use_xsave); + struct movsl_mask movsl_mask __read_mostly; + #endif + +-static void __devinit set_cpuidmask(void) ++static void __devinit set_cpuidmask(struct cpuinfo_x86 *c) + { +- unsigned int eax, ebx, ecx, edx, model; ++ unsigned int model = c->x86_model; + +- if (!(opt_cpuid_mask_ecx | opt_cpuid_mask_edx)) ++ if (!(opt_cpuid_mask_ecx | opt_cpuid_mask_edx | ++ opt_cpuid_mask_ext_ecx | opt_cpuid_mask_ext_edx)) + return; + +- cpuid(0x00000001, &eax, &ebx, &ecx, &edx); +- model = ((eax & 0xf0000) >> 12) | ((eax & 0xf0) >> 4); +- if (!((model == 0x1d) || ((model == 0x17) && ((eax & 0xf) >= 4)))) { ++ if (c->x86 != 0x6) /* Only family 6 supports this feature */ ++ return; ++ ++ if ((model == 0x1d) || ((model == 0x17) && (c->x86_mask >= 4))) { ++ wrmsr(MSR_IA32_CPUID_FEATURE_MASK1, ++ opt_cpuid_mask_ecx ? : ~0u, ++ opt_cpuid_mask_edx ? : ~0u); ++ } ++/* ++ * CPU supports this feature if the processor signature meets the following: ++ * (CPUID.(EAX=01h):EAX) > 000106A2h, or ++ * (CPUID.(EAX=01h):EAX) == 000106Exh, 0002065xh, 000206Cxh, 000206Exh, or 000206Fxh ++ * ++ */ ++ else if (((model == 0x1a) && (c->x86_mask > 2)) ++ || model == 0x1e ++ || model == 0x25 ++ || model == 0x2c ++ || model == 0x2e ++ || model == 0x2f) { ++ wrmsr(MSR_IA32_CPUID1_FEATURE_MASK, ++ opt_cpuid_mask_ecx ? : ~0u, ++ opt_cpuid_mask_edx ? : ~0u); ++ wrmsr(MSR_IA32_CPUID80000001_FEATURE_MASK, ++ opt_cpuid_mask_ext_ecx ? : ~0u, ++ opt_cpuid_mask_ext_edx ? : ~0u); ++ } ++ else { + printk(XENLOG_ERR "Cannot set CPU feature mask on CPU#%d\n", + smp_processor_id()); + return; + } +- +- wrmsr(MSR_IA32_CPUID_FEATURE_MASK1, +- opt_cpuid_mask_ecx ? : ~0u, +- opt_cpuid_mask_edx ? : ~0u); + } + + void __devinit early_intel_workaround(struct cpuinfo_x86 *c) +@@ -179,7 +204,7 @@ static void __devinit init_intel(struct + + detect_ht(c); + +- set_cpuidmask(); ++ set_cpuidmask(c); + + /* Work around errata */ + Intel_errata_workarounds(c); +--- a/xen/include/asm-x86/msr-index.h ++++ b/xen/include/asm-x86/msr-index.h +@@ -158,6 +158,8 @@ + + /* MSR for cpuid feature mask */ + #define MSR_IA32_CPUID_FEATURE_MASK1 0x00000478 ++#define MSR_IA32_CPUID1_FEATURE_MASK 0x00000130 ++#define MSR_IA32_CPUID80000001_FEATURE_MASK 0x00000131 + + /* MSRs & bits used for VMX enabling */ + #define MSR_IA32_VMX_BASIC 0x480 diff --git a/21615-dont-save-xen-heap-pages.patch b/21615-dont-save-xen-heap-pages.patch new file mode 100644 index 0000000..782e3d9 --- /dev/null +++ b/21615-dont-save-xen-heap-pages.patch @@ -0,0 +1,159 @@ +# HG changeset patch +# User Keir Fraser +# Date 1276604289 -3600 +# Node ID a2cc1db1af9c8f9b148c80f8b2c3f64bde7542f9 +# Parent 094b826a2b8e2c17fe7004923352d459e0c23f13 +Don't save Xen heap pages during domain save +References: bnc#609153 + +As discussed in the thread starting at +http://lists.xensource.com/archives/html/xen-devel/2010-05/msg01383.html, +don't save Xen heap pages in order to avoid overallocation when the +domain gets restored, as those pages would get (temporarily) backed +with normal RAM pages by the restore code. + +This requires making DOMCTL_getpageframeinfo{2,3} usable for HVM +guests, meaning that the input to these must be treated as GMFNs. + +Signed-off-by: Jan Beulich + +--- a/tools/libxc/xc_domain_save.c ++++ b/tools/libxc/xc_domain_save.c +@@ -1282,58 +1282,64 @@ int xc_domain_save(int xc_handle, int io + goto out; + } + +- if ( hvm ) ++ /* Get page types */ ++ if ( xc_get_pfn_type_batch(xc_handle, dom, batch, pfn_type) ) + { +- /* Look for and skip completely empty batches. */ +- for ( j = 0; j < batch; j++ ) +- { +- if ( !pfn_err[j] ) +- break; +- pfn_type[j] |= XEN_DOMCTL_PFINFO_XTAB; +- } +- if ( j == batch ) +- { +- munmap(region_base, batch*PAGE_SIZE); +- continue; /* bail on this batch: no valid pages */ +- } +- for ( ; j < batch; j++ ) +- if ( pfn_err[j] ) +- pfn_type[j] |= XEN_DOMCTL_PFINFO_XTAB; ++ ERROR("get_pfn_type_batch failed"); ++ goto out; + } +- else ++ ++ for ( run = j = 0; j < batch; j++ ) + { +- /* Get page types */ +- if ( xc_get_pfn_type_batch(xc_handle, dom, batch, pfn_type) ) +- { +- ERROR("get_pfn_type_batch failed"); +- goto out; +- } ++ unsigned long gmfn = pfn_batch[j]; + +- for ( j = 0; j < batch; j++ ) ++ if ( !hvm ) ++ gmfn = pfn_to_mfn(gmfn); ++ ++ if ( pfn_err[j] ) + { +- unsigned long mfn = pfn_to_mfn(pfn_batch[j]); +- + if ( pfn_type[j] == XEN_DOMCTL_PFINFO_XTAB ) +- { +- DPRINTF("type fail: page %i mfn %08lx\n", +- j, mfn); + continue; +- } +- +- if ( debug ) ++ DPRINTF("map fail: page %i mfn %08lx err %d\n", ++ j, gmfn, pfn_err[j]); ++ pfn_type[j] = XEN_DOMCTL_PFINFO_XTAB; ++ continue; ++ } ++ ++ if ( pfn_type[j] == XEN_DOMCTL_PFINFO_XTAB ) ++ { ++ DPRINTF("type fail: page %i mfn %08lx\n", j, gmfn); ++ continue; ++ } ++ ++ /* canonicalise mfn->pfn */ ++ pfn_type[j] |= pfn_batch[j]; ++ ++run; ++ ++ if ( debug ) ++ { ++ if ( hvm ) ++ DPRINTF("%d pfn=%08lx sum=%08lx\n", ++ iter, ++ pfn_type[j], ++ csum_page(region_base + (PAGE_SIZE*j))); ++ else + DPRINTF("%d pfn= %08lx mfn= %08lx [mfn]= %08lx" + " sum= %08lx\n", + iter, +- pfn_type[j] | pfn_batch[j], +- mfn, +- mfn_to_pfn(mfn), ++ pfn_type[j], ++ gmfn, ++ mfn_to_pfn(gmfn), + csum_page(region_base + (PAGE_SIZE*j))); +- +- /* canonicalise mfn->pfn */ +- pfn_type[j] |= pfn_batch[j]; + } + } + ++ if ( !run ) ++ { ++ munmap(region_base, batch*PAGE_SIZE); ++ continue; /* bail on this batch: no valid pages */ ++ } ++ + if ( write_exact(io_fd, &batch, sizeof(unsigned int)) ) + { + PERROR("Error when writing to state file (2)"); +--- a/xen/arch/x86/domctl.c ++++ b/xen/arch/x86/domctl.c +@@ -207,11 +207,12 @@ long arch_do_domctl( + + for ( j = 0; j < k; j++ ) + { +- unsigned long type = 0, mfn = arr[j]; ++ unsigned long type = 0, mfn = gmfn_to_mfn(d, arr[j]); + + page = mfn_to_page(mfn); + +- if ( unlikely(!mfn_valid(mfn)) ) ++ if ( unlikely(!mfn_valid(mfn)) || ++ unlikely(is_xen_heap_mfn(mfn)) ) + type = XEN_DOMCTL_PFINFO_XTAB; + else if ( xsm_getpageframeinfo(page) != 0 ) + ; +@@ -306,14 +307,15 @@ long arch_do_domctl( + for ( j = 0; j < k; j++ ) + { + struct page_info *page; +- unsigned long mfn = arr32[j]; ++ unsigned long mfn = gmfn_to_mfn(d, arr32[j]); + + page = mfn_to_page(mfn); + + if ( domctl->cmd == XEN_DOMCTL_getpageframeinfo3) + arr32[j] = 0; + +- if ( unlikely(!mfn_valid(mfn)) ) ++ if ( unlikely(!mfn_valid(mfn)) || ++ unlikely(is_xen_heap_mfn(mfn)) ) + arr32[j] |= XEN_DOMCTL_PFINFO_XTAB; + else if ( xsm_getpageframeinfo(page) != 0 ) + continue; diff --git a/21620-x86-signed-domain-irq.patch b/21620-x86-signed-domain-irq.patch new file mode 100644 index 0000000..ee3d1bf --- /dev/null +++ b/21620-x86-signed-domain-irq.patch @@ -0,0 +1,34 @@ +# HG changeset patch +# User Keir Fraser +# Date 1276604463 -3600 +# Node ID b0f7f710f512aba0fca814467e4f5fe7b906ada3 +# Parent 972b7e305138759d4ef42b75d5fe5c6fd2d2e30c +x86: return value of domain_pirq_to_irq() is signed + +That value can, for forcibly unbound PIRQs, validly be negative, and +for the respective check to catch those cases (and prevent using these +negative values as array index), the respective variables must be of +signed type. + +Signed-off-by: Jan Beulich + +--- a/xen/arch/x86/irq.c ++++ b/xen/arch/x86/irq.c +@@ -879,7 +879,7 @@ static void __do_IRQ_guest(int irq) + struct irq_desc *domain_spin_lock_irq_desc( + struct domain *d, int pirq, unsigned long *pflags) + { +- unsigned int irq; ++ int irq; + unsigned long flags; + struct irq_desc *desc; + +@@ -1046,7 +1046,7 @@ extern int ioapic_ack_new; + static int pirq_acktype(struct domain *d, int pirq) + { + struct irq_desc *desc; +- unsigned int irq; ++ int irq; + + irq = domain_pirq_to_irq(d, pirq); + if ( irq <= 0 ) diff --git a/xen-extra-fixes.patch b/xen-extra-fixes.patch index 840987f..cc8613a 100644 --- a/xen-extra-fixes.patch +++ b/xen-extra-fixes.patch @@ -12,16 +12,3 @@ Index: xen-4.0.0-testing/tools/ioemu-remote/block-vvfat.c } /* Now build FAT, and write back information into directory */ -Index: xen-4.0.0-testing/unmodified_drivers/linux-2.6/overrides.mk -=================================================================== ---- xen-4.0.0-testing.orig/unmodified_drivers/linux-2.6/overrides.mk -+++ xen-4.0.0-testing/unmodified_drivers/linux-2.6/overrides.mk -@@ -11,7 +11,7 @@ ifeq ($(ARCH),ia64) - _XEN_CPPFLAGS += -DCONFIG_VMX_GUEST - endif - --_XEN_CPPFLAGS += -include $(objtree)/include/linux/autoconf.h -+_XEN_CPPFLAGS += -include $(objtree)/include/generated/autoconf.h - - EXTRA_CFLAGS += $(_XEN_CPPFLAGS) - EXTRA_AFLAGS += $(_XEN_CPPFLAGS) diff --git a/xen.changes b/xen.changes index 2862a1b..b2b7b77 100644 --- a/xen.changes +++ b/xen.changes @@ -1,3 +1,24 @@ +------------------------------------------------------------------- +Wed Jun 16 08:36:44 MDT 2010 - carnold@novell.com + +- linux pvdrv: generalize location of autoconf.h + Fixes error because of missing autoconf.h when building os11.2 + Factory. + +------------------------------------------------------------------- +Mon Jun 14 10:00:07 MDT 2010 - carnold@novell.com + +- bnc#609153 - xm migrate localhost -l fails on + Windows VMs + 21615-dont-save-xen-heap-pages.patch +- Upstream fixes from Jan + 21446-iommu-graceful-generic-fail.patch + 21453-shadow-avoid-remove-all-after-teardown.patch + 21456-compat-hvm-addr-check.patch + 21492-x86-pirq-unbind.patch + 21526-x86-nehalem-cpuid-mask.patch + 21620-x86-signed-domain-irq.patch + ------------------------------------------------------------------- Mon Jun 7 10:55:20 MDT 2010 - carnold@novell.com diff --git a/xen.spec b/xen.spec index b7bef8d..bde354d 100644 --- a/xen.spec +++ b/xen.spec @@ -90,25 +90,33 @@ Patch12: 21235-crashkernel-advanced.patch Patch13: 21266-vmx-disabled-check.patch Patch14: 21271-x86-cache-flush-global.patch Patch15: 21272-x86-dom0-alloc-performance.patch -Patch16: 21301-svm-lmsl.patch -Patch17: 21304-keyhandler-alternative.patch -Patch18: 21317-xend-blkif-util-tap2.patch -Patch19: passthrough-hotplug-segfault.patch -Patch20: 21331-svm-vintr-during-nmi.patch -Patch21: 21333-xentrace-t_info-size.patch -Patch22: 21340-vtd-dom0-mapping-latency.patch -Patch23: 21346-x86-platform-timer-wrap.patch -Patch24: 21349-x86-memcpy.patch -Patch25: 21360-x86-mce-polling-diabled-init.patch -Patch26: 21372-x86-cross-cpu-wait.patch -Patch27: 21373-dummy-domain-io-caps.patch -Patch28: 21406-x86-microcode-quiet.patch -Patch29: 21408-amd-erratum-383.patch -Patch30: 21421-vts-ats-enabling.patch -Patch31: 21435-vmx-retain-global-controls.patch -Patch32: 21459-block-script.patch -Patch33: 21460-xend-timeoffset.patch -Patch34: 21542-amd-erratum-411.patch +Patch16: 21273-linux-autconf.patch +Patch17: 21301-svm-lmsl.patch +Patch18: 21304-keyhandler-alternative.patch +Patch19: 21317-xend-blkif-util-tap2.patch +Patch20: passthrough-hotplug-segfault.patch +Patch21: 21331-svm-vintr-during-nmi.patch +Patch22: 21333-xentrace-t_info-size.patch +Patch23: 21340-vtd-dom0-mapping-latency.patch +Patch24: 21346-x86-platform-timer-wrap.patch +Patch25: 21349-x86-memcpy.patch +Patch26: 21360-x86-mce-polling-diabled-init.patch +Patch27: 21372-x86-cross-cpu-wait.patch +Patch28: 21373-dummy-domain-io-caps.patch +Patch29: 21406-x86-microcode-quiet.patch +Patch30: 21408-amd-erratum-383.patch +Patch31: 21421-vts-ats-enabling.patch +Patch32: 21435-vmx-retain-global-controls.patch +Patch33: 21446-iommu-graceful-generic-fail.patch +Patch34: 21453-shadow-avoid-remove-all-after-teardown.patch +Patch35: 21456-compat-hvm-addr-check.patch +Patch36: 21459-block-script.patch +Patch37: 21460-xend-timeoffset.patch +Patch38: 21492-x86-pirq-unbind.patch +Patch39: 21526-x86-nehalem-cpuid-mask.patch +Patch40: 21542-amd-erratum-411.patch +Patch41: 21615-dont-save-xen-heap-pages.patch +Patch42: 21620-x86-signed-domain-irq.patch # Our patches Patch300: xen-config.diff Patch301: xend-config.diff @@ -587,6 +595,14 @@ Authors: %patch32 -p1 %patch33 -p1 %patch34 -p1 +%patch35 -p1 +%patch36 -p1 +%patch37 -p1 +%patch38 -p1 +%patch39 -p1 +%patch40 -p1 +%patch41 -p1 +%patch42 -p1 %patch300 -p1 %patch301 -p1 %patch302 -p1