From c05404f51ef0715d727f163089f954cc07ded36c0c28686ebef65d9690884cab Mon Sep 17 00:00:00 2001 From: Charles Arnold Date: Tue, 8 Nov 2011 20:45:47 +0000 Subject: [PATCH] - Fix broken build when building docs 23819-make-docs.patch - bnc#720054 - Prevent vif-bridge from adding user-created tap interfaces to a bridge 2XXXX-vif-bridge.patch - bnc#713503 - DOM0 filesystem commit 23752-x86-shared-IRQ-vector-maps.patch 23754-AMD-perdev-vector-map.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=158 --- 23752-x86-shared-IRQ-vector-maps.patch | 147 ++++++++++ 23754-AMD-perdev-vector-map.patch | 361 +++++++++++++++++++++++++ 23819-make-docs.patch | 22 ++ 2XXXX-vif-bridge.patch | 29 ++ x86-ioapic-ack-default.patch | 4 +- xen.changes | 20 ++ xen.spec | 41 +-- 7 files changed, 592 insertions(+), 32 deletions(-) create mode 100644 23752-x86-shared-IRQ-vector-maps.patch create mode 100644 23754-AMD-perdev-vector-map.patch create mode 100644 23819-make-docs.patch create mode 100644 2XXXX-vif-bridge.patch diff --git a/23752-x86-shared-IRQ-vector-maps.patch b/23752-x86-shared-IRQ-vector-maps.patch new file mode 100644 index 0000000..5841eee --- /dev/null +++ b/23752-x86-shared-IRQ-vector-maps.patch @@ -0,0 +1,147 @@ +References: bnc#713503 + +# HG changeset patch +# User George Dunlap +# Date 1311701818 -3600 +# Node ID ef9ed3d2aa870a37ed5e611be9c524d526a2d604 +# Parent 590aadf7c46ae979da3552332f592f9492ce6d8b +xen: Infrastructure to allow irqs to share vector maps + +Laying the groundwork for per-device vector maps. This generic +code allows any irq to point to a vector map; all irqs sharing the +same vector map will avoid sharing vectors. + +Signed-off-by: George Dunlap + +# HG changeset patch +# User George Dunlap +# Date 1314026133 -3600 +# Node ID 3a05da2dc7c0a5fc0fcfc40c535d1fcb71203625 +# Parent d1cd78a73a79e0e648937322cdb8d92a7f86327a +x86: Fix up irq vector map logic + +We need to make sure that cfg->used_vector is only cleared once; +otherwise there may be a race condition that allows the same vector to +be assigned twice, defeating the whole purpose of the map. + +This makes two changes: +* __clear_irq_vector() only clears the vector if the irq is not being +moved +* smp_iqr_move_cleanup_interrupt() only clears used_vector if this +is the last place it's being used (move_cleanup_count==0 after +decrement). + +Also make use of asserts more consistent, to catch this kind of logic +bug in the future. + +Signed-off-by: George Dunlap + +--- a/xen/arch/x86/io_apic.c ++++ b/xen/arch/x86/io_apic.c +@@ -548,6 +548,13 @@ fastcall void smp_irq_move_cleanup_inter + } + __get_cpu_var(vector_irq)[vector] = -1; + cfg->move_cleanup_count--; ++ ++ if ( cfg->move_cleanup_count == 0 ++ && cfg->used_vectors ) ++ { ++ ASSERT(test_bit(vector, cfg->used_vectors)); ++ clear_bit(vector, cfg->used_vectors); ++ } + unlock: + spin_unlock(&desc->lock); + } +--- a/xen/arch/x86/irq.c ++++ b/xen/arch/x86/irq.c +@@ -94,6 +94,11 @@ static int __init __bind_irq_vector(int + per_cpu(vector_irq, cpu)[vector] = irq; + cfg->vector = vector; + cfg->cpu_mask = online_mask; ++ if ( cfg->used_vectors ) ++ { ++ ASSERT(!test_bit(vector, cfg->used_vectors)); ++ set_bit(vector, cfg->used_vectors); ++ } + irq_status[irq] = IRQ_USED; + if (IO_APIC_IRQ(irq)) + irq_vector[irq] = vector; +@@ -159,6 +164,7 @@ static void dynamic_irq_cleanup(unsigned + desc->depth = 1; + desc->msi_desc = NULL; + desc->handler = &no_irq_type; ++ desc->chip_data->used_vectors=NULL; + cpus_setall(desc->affinity); + spin_unlock_irqrestore(&desc->lock, flags); + +@@ -191,6 +197,7 @@ static void __clear_irq_vector(int irq) + + if (likely(!cfg->move_in_progress)) + return; ++ + cpus_and(tmp_mask, cfg->old_cpu_mask, cpu_online_map); + for_each_cpu_mask(cpu, tmp_mask) { + for (vector = FIRST_DYNAMIC_VECTOR; vector <= LAST_DYNAMIC_VECTOR; +@@ -202,6 +209,12 @@ static void __clear_irq_vector(int irq) + } + } + ++ if ( cfg->used_vectors ) ++ { ++ ASSERT(test_bit(vector, cfg->used_vectors)); ++ clear_bit(vector, cfg->used_vectors); ++ } ++ + cfg->move_in_progress = 0; + } + +@@ -261,6 +274,7 @@ static void init_one_irq_cfg(struct irq_ + cfg->vector = IRQ_VECTOR_UNASSIGNED; + cpus_clear(cfg->cpu_mask); + cpus_clear(cfg->old_cpu_mask); ++ cfg->used_vectors = NULL; + } + + int init_irq_data(void) +@@ -387,6 +401,10 @@ next: + if (test_bit(vector, used_vectors)) + goto next; + ++ if (cfg->used_vectors ++ && test_bit(vector, cfg->used_vectors) ) ++ goto next; ++ + for_each_cpu_mask(new_cpu, tmp_mask) + if (per_cpu(vector_irq, new_cpu)[vector] != -1) + goto next; +@@ -402,6 +420,11 @@ next: + per_cpu(vector_irq, new_cpu)[vector] = irq; + cfg->vector = vector; + cpus_copy(cfg->cpu_mask, tmp_mask); ++ if ( cfg->used_vectors ) ++ { ++ ASSERT(!test_bit(vector, cfg->used_vectors)); ++ set_bit(vector, cfg->used_vectors); ++ } + + irq_status[irq] = IRQ_USED; + if (IO_APIC_IRQ(irq)) +--- a/xen/include/asm-x86/irq.h ++++ b/xen/include/asm-x86/irq.h +@@ -23,11 +23,16 @@ + #define irq_to_desc(irq) (&irq_desc[irq]) + #define irq_cfg(irq) (&irq_cfg[irq]) + ++typedef struct { ++ DECLARE_BITMAP(_bits,NR_VECTORS); ++} vmask_t; ++ + struct irq_cfg { + int vector; + cpumask_t cpu_mask; + cpumask_t old_cpu_mask; + unsigned move_cleanup_count; ++ vmask_t *used_vectors; + u8 move_in_progress : 1; + }; + diff --git a/23754-AMD-perdev-vector-map.patch b/23754-AMD-perdev-vector-map.patch new file mode 100644 index 0000000..67c0a9e --- /dev/null +++ b/23754-AMD-perdev-vector-map.patch @@ -0,0 +1,361 @@ +References: bnc#713503 + +# HG changeset patch +# User George Dunlap +# Date 1311701836 -3600 +# Node ID 2e0cf9428554da666616982cd0074024ff85b221 +# Parent ef9ed3d2aa870a37ed5e611be9c524d526a2d604 +xen: Option to allow per-device vector maps for MSI IRQs + +Add a vector-map to pci_dev, and add an option to point MSI-related +IRQs to the vector-map of the device. + +This prevents irqs from the same device from being assigned +the same vector on different pcpus. This is required for systems +using an AMD IOMMU, since the intremap tables on AMD only look at +vector, and not destination ID. + +Signed-off-by: George Dunlap + +# HG changeset patch +# User George Dunlap +# Date 1311701852 -3600 +# Node ID fa4e2ca9ecffbc432b451f495ad0a403644a6be8 +# Parent 2e0cf9428554da666616982cd0074024ff85b221 +xen: AMD IOMMU: Automatically enable per-device vector maps + +Automatically enable per-device vector maps when using IOMMU, +unless disabled specifically by an IOMMU parameter. + +Signed-off-by: George Dunlap + +# HG changeset patch +# User George Dunlap +# Date 1315231215 -3600 +# Node ID 32814ad7458dc842a7c588eee13e5c4ee11709a3 +# Parent f1349a968a5ac5577d67ad4a3f3490c580dbe264 +xen: Add global irq_vector_map option, set if using AMD global intremap tables + +As mentioned in previous changesets, AMD IOMMU interrupt +remapping tables only look at the vector, not the destination +id of an interrupt. This means that all IRQs going through +the same interrupt remapping table need to *not* share vectors. + +The irq "vector map" functionality was originally introduced +after a patch which disabled global AMD IOMMUs entirely. That +patch has since been reverted, meaning that AMD intremap tables +can either be per-device or global. + +This patch therefore introduces a global irq vector map option, +and enables it if we're using an AMD IOMMU with a global +interrupt remapping table. + +This patch removes the "irq-perdev-vector-map" boolean +command-line optino and replaces it with "irq_vector_map", +which can have one of three values: none, global, or per-device. + +Setting the irq_vector_map to any value will override the +default that the AMD code sets. + +Signed-off-by: George Dunlap + +# HG changeset patch +# User Jan Beulich +# Date 1317730316 -7200 +# Node ID a99d75671a911f9c0d5d11e0fe88a0a65863cb44 +# Parent 3d1664cc9e458809e399320204aca8536e401ee1 +AMD-IOMMU: remove dead variable references + +These got orphaned up by recent changes. + +Signed-off-by: Jan Beulich +Acked-by: Keir Fraser + +--- a/docs/src/user.tex ++++ b/docs/src/user.tex +@@ -4197,6 +4197,10 @@ writing to the VGA console after domain + \item [ vcpu\_migration\_delay=$<$minimum\_time$>$] Set minimum time of + vcpu migration in microseconds (default 0). This parameter avoids agressive + vcpu migration. For example, the linux kernel uses 0.5ms by default. ++\item [ irq_vector_map=xxx ] Enable irq vector non-sharing maps. Setting 'global' ++ will ensure that no IRQs will share vectors. Setting 'per-device' will ensure ++ that no IRQs from the same device will share vectors. Setting to 'none' will ++ disable it entirely, overriding any defaults the IOMMU code may set. + \end{description} + + In addition, the following options may be specified on the Xen command +--- a/xen/arch/x86/irq.c ++++ b/xen/arch/x86/irq.c +@@ -24,6 +24,8 @@ + #include + #include + ++static void parse_irq_vector_map_param(char *s); ++ + /* opt_noirqbalance: If true, software IRQ balancing/affinity is disabled. */ + bool_t __read_mostly opt_noirqbalance = 0; + boolean_param("noirqbalance", opt_noirqbalance); +@@ -32,6 +34,12 @@ unsigned int __read_mostly nr_irqs_gsi = + unsigned int __read_mostly nr_irqs; + integer_param("nr_irqs", nr_irqs); + ++/* This default may be changed by the AMD IOMMU code */ ++int __read_mostly opt_irq_vector_map = OPT_IRQ_VECTOR_MAP_DEFAULT; ++custom_param("irq_vector_map", parse_irq_vector_map_param); ++ ++vmask_t global_used_vector_map; ++ + u8 __read_mostly *irq_vector; + struct irq_desc __read_mostly *irq_desc = NULL; + +@@ -60,6 +68,26 @@ static struct timer irq_ratelimit_timer; + static unsigned int __read_mostly irq_ratelimit_threshold = 10000; + integer_param("irq_ratelimit", irq_ratelimit_threshold); + ++static void __init parse_irq_vector_map_param(char *s) ++{ ++ char *ss; ++ ++ do { ++ ss = strchr(s, ','); ++ if ( ss ) ++ *ss = '\0'; ++ ++ if ( !strcmp(s, "none")) ++ opt_irq_vector_map=OPT_IRQ_VECTOR_MAP_NONE; ++ else if ( !strcmp(s, "global")) ++ opt_irq_vector_map=OPT_IRQ_VECTOR_MAP_GLOBAL; ++ else if ( !strcmp(s, "per-device")) ++ opt_irq_vector_map=OPT_IRQ_VECTOR_MAP_PERDEV; ++ ++ s = ss + 1; ++ } while ( ss ); ++} ++ + /* Must be called when irq disabled */ + void lock_vector_lock(void) + { +@@ -344,6 +372,41 @@ hw_irq_controller no_irq_type = { + end_none + }; + ++static vmask_t *irq_get_used_vector_mask(int irq) ++{ ++ vmask_t *ret = NULL; ++ ++ if ( opt_irq_vector_map == OPT_IRQ_VECTOR_MAP_GLOBAL ) ++ { ++ struct irq_desc *desc = irq_to_desc(irq); ++ ++ ret = &global_used_vector_map; ++ ++ if ( desc->chip_data->used_vectors ) ++ { ++ printk(XENLOG_INFO "%s: Strange, unassigned irq %d already has used_vectors!\n", ++ __func__, irq); ++ } ++ else ++ { ++ int vector; ++ ++ vector = irq_to_vector(irq); ++ if ( vector > 0 ) ++ { ++ printk(XENLOG_INFO "%s: Strange, irq %d already assigned vector %d!\n", ++ __func__, irq, vector); ++ ++ ASSERT(!test_bit(vector, ret)); ++ ++ set_bit(vector, ret); ++ } ++ } ++ } ++ ++ return ret; ++} ++ + int __assign_irq_vector(int irq, struct irq_cfg *cfg, const cpumask_t *mask) + { + /* +@@ -362,6 +425,7 @@ int __assign_irq_vector(int irq, struct + int cpu, err; + unsigned long flags; + cpumask_t tmp_mask; ++ vmask_t *irq_used_vectors = NULL; + + old_vector = irq_to_vector(irq); + if (old_vector) { +@@ -376,6 +440,17 @@ int __assign_irq_vector(int irq, struct + return -EAGAIN; + + err = -ENOSPC; ++ ++ /* This is the only place normal IRQs are ever marked ++ * as "in use". If they're not in use yet, check to see ++ * if we need to assign a global vector mask. */ ++ if ( irq_status[irq] == IRQ_USED ) ++ { ++ irq_used_vectors = cfg->used_vectors; ++ } ++ else ++ irq_used_vectors = irq_get_used_vector_mask(irq); ++ + for_each_cpu_mask(cpu, *mask) { + int new_cpu; + int vector, offset; +@@ -401,8 +476,8 @@ next: + if (test_bit(vector, used_vectors)) + goto next; + +- if (cfg->used_vectors +- && test_bit(vector, cfg->used_vectors) ) ++ if (irq_used_vectors ++ && test_bit(vector, irq_used_vectors) ) + goto next; + + for_each_cpu_mask(new_cpu, tmp_mask) +@@ -420,15 +495,22 @@ next: + per_cpu(vector_irq, new_cpu)[vector] = irq; + cfg->vector = vector; + cpus_copy(cfg->cpu_mask, tmp_mask); ++ ++ irq_status[irq] = IRQ_USED; ++ ASSERT((cfg->used_vectors == NULL) ++ || (cfg->used_vectors == irq_used_vectors)); ++ cfg->used_vectors = irq_used_vectors; ++ ++ if (IO_APIC_IRQ(irq)) ++ irq_vector[irq] = vector; ++ + if ( cfg->used_vectors ) + { + ASSERT(!test_bit(vector, cfg->used_vectors)); ++ + set_bit(vector, cfg->used_vectors); + } + +- irq_status[irq] = IRQ_USED; +- if (IO_APIC_IRQ(irq)) +- irq_vector[irq] = vector; + err = 0; + local_irq_restore(flags); + break; +@@ -1523,7 +1605,7 @@ int map_domain_pirq( + + if ( !IS_PRIV(current->domain) && + !(IS_PRIV_FOR(current->domain, d) && +- irq_access_permitted(current->domain, pirq))) ++ irq_access_permitted(current->domain, pirq))) + return -EPERM; + + if ( pirq < 0 || pirq >= d->nr_pirqs || irq < 0 || irq >= nr_irqs ) +@@ -1571,8 +1653,22 @@ int map_domain_pirq( + + if ( desc->handler != &no_irq_type ) + dprintk(XENLOG_G_ERR, "dom%d: irq %d in use\n", +- d->domain_id, irq); ++ d->domain_id, irq); + desc->handler = &pci_msi_type; ++ ++ if ( opt_irq_vector_map == OPT_IRQ_VECTOR_MAP_PERDEV ++ && !desc->chip_data->used_vectors ) ++ { ++ desc->chip_data->used_vectors = &pdev->info.used_vectors; ++ if ( desc->chip_data->vector != IRQ_VECTOR_UNASSIGNED ) ++ { ++ int vector = desc->chip_data->vector; ++ ASSERT(!test_bit(vector, desc->chip_data->used_vectors)); ++ ++ set_bit(vector, desc->chip_data->used_vectors); ++ } ++ } ++ + d->arch.pirq_irq[pirq] = irq; + d->arch.irq_pirq[irq] = pirq; + setup_msi_irq(pdev, msi_desc, irq); +@@ -1583,9 +1679,12 @@ int map_domain_pirq( + d->arch.pirq_irq[pirq] = irq; + d->arch.irq_pirq[irq] = pirq; + spin_unlock_irqrestore(&desc->lock, flags); ++ ++ if ( opt_irq_vector_map == OPT_IRQ_VECTOR_MAP_PERDEV ) ++ printk(XENLOG_INFO "Per-device vector maps for GSIs not implemented yet.\n"); + } + +- done: ++done: + return ret; + } + +--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c ++++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c +@@ -166,6 +166,35 @@ int __init amd_iov_detect(void) + return -ENODEV; + } + ++ /* ++ * AMD IOMMUs don't distinguish between vectors destined for ++ * different cpus when doing interrupt remapping. This means ++ * that interrupts going through the same intremap table ++ * can't share the same vector. ++ * ++ * If irq_vector_map isn't specified, choose a sensible default: ++ * - If we're using per-device interemap tables, per-device ++ * vector non-sharing maps ++ * - If we're using a global interemap table, global vector ++ * non-sharing map ++ */ ++ if ( opt_irq_vector_map == OPT_IRQ_VECTOR_MAP_DEFAULT ) ++ { ++ if ( amd_iommu_perdev_intremap ) ++ { ++ printk("AMD-Vi: Enabling per-device vector maps\n"); ++ opt_irq_vector_map = OPT_IRQ_VECTOR_MAP_PERDEV; ++ } ++ else ++ { ++ printk("AMD-Vi: Enabling global vector map\n"); ++ opt_irq_vector_map = OPT_IRQ_VECTOR_MAP_GLOBAL; ++ } ++ } ++ else ++ { ++ printk("AMD-Vi: Not overriding irq_vector_map setting\n"); ++ } + return scan_pci_devices(); + } + +--- a/xen/include/asm-x86/irq.h ++++ b/xen/include/asm-x86/irq.h +@@ -45,6 +45,13 @@ extern u8 *irq_vector; + + extern bool_t opt_noirqbalance; + ++#define OPT_IRQ_VECTOR_MAP_DEFAULT 0 /* Do the default thing */ ++#define OPT_IRQ_VECTOR_MAP_NONE 1 /* None */ ++#define OPT_IRQ_VECTOR_MAP_GLOBAL 2 /* One global vector map (no vector sharing) */ ++#define OPT_IRQ_VECTOR_MAP_PERDEV 3 /* Per-device vetor map (no vector sharing w/in a device) */ ++ ++extern int opt_irq_vector_map; ++ + /* + * Per-cpu current frame pointer - the location of the last exception frame on + * the stack +--- a/xen/include/xen/pci.h ++++ b/xen/include/xen/pci.h +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + /* + * The PCI interface treats multi-function devices as independent +@@ -38,6 +39,7 @@ struct pci_dev_info { + u8 bus; + u8 devfn; + } physfn; ++ vmask_t used_vectors; + }; + + struct pci_dev { diff --git a/23819-make-docs.patch b/23819-make-docs.patch new file mode 100644 index 0000000..c0f1e89 --- /dev/null +++ b/23819-make-docs.patch @@ -0,0 +1,22 @@ +# HG changeset patch +# User Keir Fraser +# Date 1315320580 -3600 +# Node ID 5fe770c8a8a35c58893816ee6335a90ed43f3bbd +# Parent 0268e73809532a4a3ca18a075efcee3c62caf458 +docs: Fix 'make docs' + +Signed-off-by: Keir Fraser + +Index: xen-4.1.2-testing/docs/src/user.tex +=================================================================== +--- xen-4.1.2-testing.orig/docs/src/user.tex ++++ xen-4.1.2-testing/docs/src/user.tex +@@ -4197,7 +4197,7 @@ writing to the VGA console after domain + \item [ vcpu\_migration\_delay=$<$minimum\_time$>$] Set minimum time of + vcpu migration in microseconds (default 0). This parameter avoids agressive + vcpu migration. For example, the linux kernel uses 0.5ms by default. +-\item [ irq_vector_map=xxx ] Enable irq vector non-sharing maps. Setting 'global' ++\item [ irq\_vector\_map=xxx ] Enable irq vector non-sharing maps. Setting 'global' + will ensure that no IRQs will share vectors. Setting 'per-device' will ensure + that no IRQs from the same device will share vectors. Setting to 'none' will + disable it entirely, overriding any defaults the IOMMU code may set. diff --git a/2XXXX-vif-bridge.patch b/2XXXX-vif-bridge.patch new file mode 100644 index 0000000..0d480b0 --- /dev/null +++ b/2XXXX-vif-bridge.patch @@ -0,0 +1,29 @@ +# HG changeset patch +# User Jim Fehlig +# Date 1319581952 21600 +# Node ID 74da2a3a1db1476d627f42e4a99e9e720cc6774d +# Parent 6c583d35d76dda2236c81d9437ff9d57ab02c006 +Prevent vif-bridge from adding user-created tap interfaces to a bridge + +Exit vif-bridge script if there is no device info in xenstore, preventing +it from adding user-created taps to bridges. + + Signed-off-by: Jim Fehlig + +diff -r 6c583d35d76d -r 74da2a3a1db1 tools/hotplug/Linux/vif-bridge +--- a/tools/hotplug/Linux/vif-bridge Thu Oct 20 15:36:01 2011 +0100 ++++ b/tools/hotplug/Linux/vif-bridge Tue Oct 25 16:32:32 2011 -0600 +@@ -31,6 +31,13 @@ + + dir=$(dirname "$0") + . "$dir/vif-common.sh" ++ ++domu=$(xenstore_read_default "$XENBUS_PATH/domain" "") ++if [ -z "$domu" ] ++then ++ log debug "No device details in $XENBUS_PATH, exiting." ++ exit 0 ++fi + + bridge=${bridge:-} + bridge=$(xenstore_read_default "$XENBUS_PATH/bridge" "$bridge") diff --git a/x86-ioapic-ack-default.patch b/x86-ioapic-ack-default.patch index dfa0f01..a04278c 100644 --- a/x86-ioapic-ack-default.patch +++ b/x86-ioapic-ack-default.patch @@ -2,7 +2,7 @@ Change default IO-APIC ack mode for single IO-APIC systems to old-style. --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c -@@ -1674,7 +1674,7 @@ static unsigned int startup_level_ioapic +@@ -1681,7 +1681,7 @@ static unsigned int startup_level_ioapic return 0; /* don't check for pending */ } @@ -11,7 +11,7 @@ Change default IO-APIC ack mode for single IO-APIC systems to old-style. static void setup_ioapic_ack(char *s) { if ( !strcmp(s, "old") ) -@@ -2179,6 +2179,8 @@ void __init setup_IO_APIC(void) +@@ -2186,6 +2186,8 @@ void __init setup_IO_APIC(void) else io_apic_irqs = ~PIC_IRQS; diff --git a/xen.changes b/xen.changes index 872b6b8..4f4daea 100644 --- a/xen.changes +++ b/xen.changes @@ -1,3 +1,23 @@ +------------------------------------------------------------------- +Fri Nov 4 15:14:09 MDT 2011 - carnold@novell.com + +- Fix broken build when building docs + 23819-make-docs.patch + +------------------------------------------------------------------- +Fri Nov 4 11:52:22 MDT 2011 - jfehlig@suse.com + +- bnc#720054 - Prevent vif-bridge from adding user-created tap + interfaces to a bridge + 2XXXX-vif-bridge.patch + +------------------------------------------------------------------- +Fri Nov 4 10:11:04 MDT 2011 - carnold@novell.com + +- bnc#713503 - DOM0 filesystem commit + 23752-x86-shared-IRQ-vector-maps.patch + 23754-AMD-perdev-vector-map.patch + ------------------------------------------------------------------- Thu Nov 3 23:50:31 CET 2011 - ohering@suse.de diff --git a/xen.spec b/xen.spec index 9a979e5..bce2c56 100644 --- a/xen.spec +++ b/xen.spec @@ -96,7 +96,7 @@ BuildRequires: glibc-devel %if %{?with_kmp}0 BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11 %endif -Version: 4.1.2_05 +Version: 4.1.2_07 Release: 1 License: GPLv2+ Group: System/Kernel @@ -210,6 +210,8 @@ Patch23726: 23726-x86-intel-flexmigration-v2.patch Patch23735: 23735-guest-dom0-cap.patch Patch23747: 23747-mmcfg-base-address.patch Patch23749: 23749-mmcfg-reservation.patch +Patch23752: 23752-x86-shared-IRQ-vector-maps.patch +Patch23754: 23754-AMD-perdev-vector-map.patch Patch23771: 23771-x86-ioapic-clear-pin.patch Patch23772: 23772-x86-trampoline.patch Patch23774: 23774-x86_64-EFI-EDD.patch @@ -221,6 +223,7 @@ Patch23800: 23800-x86_64-guest-addr-range.patch Patch23804: 23804-x86-IPI-counts.patch Patch23817: 23817-mem_event_add_ref_counting_for_free_requestslots.patch Patch23818: 23818-mem_event_use_mem_event_mark_and_pause_in_mem_event_check_ring.patch +Patch23819: 23819-make-docs.patch Patch23827: 23827-xenpaging_use_batch_of_pages_during_final_page-in.patch Patch23841: 23841-mem_event_pass_mem_event_domain_pointer_to_mem_event_functions.patch Patch23842: 23842-mem_event_use_different_ringbuffers_for_share_paging_and_access.patch @@ -241,6 +244,7 @@ Patch23978: 23978-xenpaging_check_p2mt_in_p2m_mem_paging_functions.patch Patch23979: 23979-xenpaging_document_p2m_mem_paging_functions.patch Patch23980: 23980-xenpaging_disallow_paging_in_a_PoD_guest.patch Patch23993: 23993-x86-microcode-amd-fix-23871.patch +Patch23993: 23993-x86-microcode-amd-fix-23871.patch # Upstream qemu patches # Our patches Patch300: xen-config.diff @@ -298,6 +302,8 @@ Patch376: xend-devid-or-name.patch Patch377: suspend_evtchn_lock.patch Patch378: log-guest-console.patch Patch379: xend-migration-domname-fix.patch +# Sent upstream and tentatively ACK'ed, but not yet committed +Patch380: 2XXXX-vif-bridge.patch # Patches for snapshot support Patch400: snapshot-ioemu-save.patch Patch401: snapshot-ioemu-restore.patch @@ -416,7 +422,6 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build %suse_kernel_module_package -n xen um xen -f kmp_filelist %endif - %description Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -478,7 +483,6 @@ Group: System/Kernel #Requires: xen = %{version} AutoReqProv: on - %description libs Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -524,7 +528,6 @@ Authors: %if %{?with_dom0_support}0 - %package tools License: GPLv2+ Summary: Xen Virtualization: Control tools for domain 0 @@ -536,7 +539,6 @@ Provides: xen-tools-ioemu = 3.2 Obsoletes: xen-tools-ioemu <= 3.2 AutoReqProv: on - %description tools Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -584,7 +586,6 @@ Authors: Ian Pratt %endif - %package tools-domU License: GPLv2+ Summary: Xen Virtualization: Control tools for domain U @@ -592,7 +593,6 @@ Group: System/Kernel Conflicts: xen-tools AutoReqProv: on - %description tools-domU Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -613,7 +613,6 @@ Summary: Xen Virtualization: Headers and libraries for development Group: System/Kernel Requires: xen-libs = %{version} - %description devel Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -659,14 +658,12 @@ Authors: %if %{?with_kmp}0 - %package KMP License: GPLv2+ Group: System/Kernel Summary: Xen para-virtual device drivers for fully virtualized guests Conflicts: xen - %description KMP Xen para-virtual device drivers for fully virtualized guests @@ -712,13 +709,11 @@ Xen, but is not available for release due to license restrictions. %if %{?with_dom0_support}0 - %package doc-html License: GPLv2+ Summary: Xen Virtualization: HTML documentation Group: Documentation/HTML - %description doc-html Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -738,7 +733,6 @@ License: GPLv2+ Summary: Xen Virtualization: PDF documentation Group: Documentation/Other - %description doc-pdf Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -755,7 +749,6 @@ Authors: Ian Pratt %endif - %prep %setup -q -n %xen_build_dir -a 1 -a 20000 %patch20000 -p1 @@ -829,6 +822,8 @@ tar xfj %{SOURCE2} -C $RPM_BUILD_DIR/%{xen_build_dir}/tools %patch23735 -p1 %patch23747 -p1 %patch23749 -p1 +%patch23752 -p1 +%patch23754 -p1 %patch23771 -p1 %patch23772 -p1 %patch23774 -p1 @@ -840,6 +835,7 @@ tar xfj %{SOURCE2} -C $RPM_BUILD_DIR/%{xen_build_dir}/tools %patch23804 -p1 %patch23817 -p1 %patch23818 -p1 +%patch23819 -p1 %patch23827 -p1 %patch23841 -p1 %patch23842 -p1 @@ -915,6 +911,7 @@ tar xfj %{SOURCE2} -C $RPM_BUILD_DIR/%{xen_build_dir}/tools #%patch377 -p1 suspend_evtchn_lock, buildservice build problem %patch378 -p1 %patch379 -p1 +%patch380 -p1 %patch400 -p1 %patch401 -p1 %patch402 -p1 @@ -1020,7 +1017,6 @@ tar xfj %{SOURCE2} -C $RPM_BUILD_DIR/%{xen_build_dir}/tools %patch99998 -p1 %patch99999 -p1 - %build XEN_EXTRAVERSION=%version-%release XEN_EXTRAVERSION=${XEN_EXTRAVERSION#%{xvers}} @@ -1056,7 +1052,6 @@ for flavor in %flavors_to_build; do done %endif - %install export CFLAGS="$RPM_OPT_FLAGS" %if %{?with_dom0_support}0 @@ -1259,7 +1254,6 @@ rm -f $RPM_BUILD_ROOT/%{_bindir}/xencons %if %{?with_dom0_support}0 - %files -f xen.files.txt %defattr(-,root,root) /boot/xen-%{version}-%{release}.gz @@ -1276,7 +1270,6 @@ rm -f $RPM_BUILD_ROOT/%{_bindir}/xencons /boot/xen.gz %endif - %files libs %defattr(-,root,root) %{_libdir}/fs/ @@ -1284,7 +1277,6 @@ rm -f $RPM_BUILD_ROOT/%{_bindir}/xencons %if %{?with_dom0_support}0 - %files tools %defattr(-,root,root) /usr/bin/xenalyze @@ -1388,14 +1380,12 @@ rm -f $RPM_BUILD_ROOT/%{_bindir}/xencons %config %{_fwdefdir}/xend-relocation-server %endif - %files tools-domU %defattr(-,root,root) /usr/bin/xen-detect /bin/domu-xenstore /bin/xenstore-* - %files devel %defattr(-,root,root) %{_bindir}/serial-split @@ -1405,12 +1395,10 @@ rm -f $RPM_BUILD_ROOT/%{_bindir}/xencons %if %{?with_dom0_support}0 - %files doc-html %defattr(-,root,root) %{_defaultdocdir}/xen/html - %files doc-pdf %defattr(-,root,root) %{_defaultdocdir}/xen/pdf @@ -1418,7 +1406,6 @@ rm -f $RPM_BUILD_ROOT/%{_bindir}/xencons %if %{?with_dom0_support}0 - %post tools %if %{?with_xend}0 # with_xend @@ -1464,11 +1451,9 @@ if [ -f /usr/bin/qemu-nbd ]; then ln -s /usr/bin/qemu-nbd /usr/bin/qemu-nbd-xen fi - %preun tools %{stop_on_removal xendomains xend xencommons} - %postun tools %if %{?with_xend}0 # with_xend @@ -1483,12 +1468,8 @@ if [ -f /usr/bin/qemu-nbd-xen ]; then fi %endif - %post libs -p /sbin/ldconfig - %postun libs -p /sbin/ldconfig - - %changelog