From 7143fd39031002ea33820e690c7ea9a41489248e58de3fae713329f199bd175a Mon Sep 17 00:00:00 2001 From: Charles Arnold Date: Wed, 16 Jun 2010 15:28:05 +0000 Subject: [PATCH 1/3] - 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 From cfa4e4570f19a546272786afd32b9bc626d42931e1798b6654ba5f8968a16cfd Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Fri, 18 Jun 2010 04:36:30 +0000 Subject: [PATCH 2/3] Accepting request 41620 from Virtualization checked in (request 41620) OBS-URL: https://build.opensuse.org/request/show/41620 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=60 --- 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, 32 insertions(+), 479 deletions(-) delete mode 100644 21273-linux-autconf.patch delete mode 100644 21446-iommu-graceful-generic-fail.patch delete mode 100644 21453-shadow-avoid-remove-all-after-teardown.patch delete mode 100644 21456-compat-hvm-addr-check.patch delete mode 100644 21492-x86-pirq-unbind.patch delete mode 100644 21526-x86-nehalem-cpuid-mask.patch delete mode 100644 21615-dont-save-xen-heap-pages.patch delete mode 100644 21620-x86-signed-domain-irq.patch 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 From af027449cef8a4c47f6c6305bcc4d55a6909ef34b742b00ddf93d770c170662a Mon Sep 17 00:00:00 2001 From: OBS User buildservice-autocommit Date: Fri, 18 Jun 2010 04:36:31 +0000 Subject: [PATCH 3/3] Updating link to change in openSUSE:Factory/xen revision 94.0 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=57fc5c74eb69b67a87b8330bd3592db8 --- 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 | 56 +++--- 11 files changed, 480 insertions(+), 33 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..f7471d3 100644 --- a/xen.spec +++ b/xen.spec @@ -39,7 +39,7 @@ BuildRequires: glibc-32bit glibc-devel-32bit BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11 %endif Version: 4.0.0_21091_05 -Release: 4 +Release: 5 License: GPLv2+ Group: System/Kernel AutoReqProv: on @@ -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