diff --git a/21273-linux-autconf.patch b/21273-linux-autconf.patch deleted file mode 100644 index dd18589..0000000 --- a/21273-linux-autconf.patch +++ /dev/null @@ -1,26 +0,0 @@ -# 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 deleted file mode 100644 index 4a84654..0000000 --- a/21446-iommu-graceful-generic-fail.patch +++ /dev/null @@ -1,29 +0,0 @@ -# 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 deleted file mode 100644 index bbb2d73..0000000 --- a/21453-shadow-avoid-remove-all-after-teardown.patch +++ /dev/null @@ -1,31 +0,0 @@ -# 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 deleted file mode 100644 index 0e1c868..0000000 --- a/21456-compat-hvm-addr-check.patch +++ /dev/null @@ -1,22 +0,0 @@ -# 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 deleted file mode 100644 index 7981474..0000000 --- a/21492-x86-pirq-unbind.patch +++ /dev/null @@ -1,23 +0,0 @@ -# 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 deleted file mode 100644 index a13be19..0000000 --- a/21526-x86-nehalem-cpuid-mask.patch +++ /dev/null @@ -1,99 +0,0 @@ -# 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 deleted file mode 100644 index 782e3d9..0000000 --- a/21615-dont-save-xen-heap-pages.patch +++ /dev/null @@ -1,159 +0,0 @@ -# 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 deleted file mode 100644 index ee3d1bf..0000000 --- a/21620-x86-signed-domain-irq.patch +++ /dev/null @@ -1,34 +0,0 @@ -# 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 cc8613a..840987f 100644 --- a/xen-extra-fixes.patch +++ b/xen-extra-fixes.patch @@ -12,3 +12,16 @@ 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 b2b7b77..2862a1b 100644 --- a/xen.changes +++ b/xen.changes @@ -1,24 +1,3 @@ -------------------------------------------------------------------- -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 bde354d..b7bef8d 100644 --- a/xen.spec +++ b/xen.spec @@ -90,33 +90,25 @@ 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: 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 +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 # Our patches Patch300: xen-config.diff Patch301: xend-config.diff @@ -595,14 +587,6 @@ 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