diff --git a/18446-vtd-dom0-passthrough.patch b/18446-vtd-dom0-passthrough.patch index e0d97da..f6364d2 100644 --- a/18446-vtd-dom0-passthrough.patch +++ b/18446-vtd-dom0-passthrough.patch @@ -13,9 +13,11 @@ translate DMA requests through a multi-level page-table. Signed-off-by: Anthony Xu Signed-off-by: Weidong Han ---- a/xen/drivers/passthrough/vtd/iommu.c -+++ b/xen/drivers/passthrough/vtd/iommu.c -@@ -1091,12 +1091,12 @@ static int domain_context_mapping_one( +Index: xen-3.3.1-testing/xen/drivers/passthrough/vtd/iommu.c +=================================================================== +--- xen-3.3.1-testing.orig/xen/drivers/passthrough/vtd/iommu.c ++++ xen-3.3.1-testing/xen/drivers/passthrough/vtd/iommu.c +@@ -1089,12 +1089,12 @@ static int domain_context_mapping_one( } spin_lock_irqsave(&iommu->lock, flags); @@ -31,7 +33,7 @@ Signed-off-by: Weidong Han { /* Ensure we have pagetables allocated down to leaf PTE. */ if ( hd->pgd_maddr == 0 ) -@@ -1460,11 +1460,12 @@ int intel_iommu_map_page( +@@ -1463,11 +1463,12 @@ int intel_iommu_map_page( u64 pg_maddr; int pte_present; @@ -46,7 +48,7 @@ Signed-off-by: Weidong Han pg_maddr = addr_to_dma_page_maddr(d, (paddr_t)gfn << PAGE_SHIFT_4K, 1); if ( pg_maddr == 0 ) -@@ -1501,11 +1502,9 @@ int intel_iommu_unmap_page(struct domain +@@ -1504,11 +1505,9 @@ int intel_iommu_unmap_page(struct domain drhd = list_entry(acpi_drhd_units.next, typeof(*drhd), list); iommu = drhd->iommu; diff --git a/18456-vtd-dom0-passthrough-cmdline.patch b/18456-vtd-dom0-passthrough-cmdline.patch index 9089c12..3f09e30 100644 --- a/18456-vtd-dom0-passthrough-cmdline.patch +++ b/18456-vtd-dom0-passthrough-cmdline.patch @@ -16,8 +16,10 @@ disabled. Signed-off-by: Weidong Han ---- a/xen/drivers/passthrough/iommu.c -+++ b/xen/drivers/passthrough/iommu.c +Index: xen-3.3.1-testing/xen/drivers/passthrough/iommu.c +=================================================================== +--- xen-3.3.1-testing.orig/xen/drivers/passthrough/iommu.c ++++ xen-3.3.1-testing/xen/drivers/passthrough/iommu.c @@ -33,11 +33,13 @@ int amd_iov_detect(void); * pv Enable IOMMU for PV domains * no-pv Disable IOMMU for PV domains (default) @@ -41,9 +43,11 @@ Signed-off-by: Weidong Han s = ss + 1; } while ( ss ); ---- a/xen/drivers/passthrough/vtd/iommu.c -+++ b/xen/drivers/passthrough/vtd/iommu.c -@@ -1091,7 +1091,8 @@ static int domain_context_mapping_one( +Index: xen-3.3.1-testing/xen/drivers/passthrough/vtd/iommu.c +=================================================================== +--- xen-3.3.1-testing.orig/xen/drivers/passthrough/vtd/iommu.c ++++ xen-3.3.1-testing/xen/drivers/passthrough/vtd/iommu.c +@@ -1089,7 +1089,8 @@ static int domain_context_mapping_one( } spin_lock_irqsave(&iommu->lock, flags); @@ -53,7 +57,7 @@ Signed-off-by: Weidong Han { context_set_translation_type(*context, CONTEXT_TT_PASS_THRU); agaw = level_to_agaw(iommu->nr_pt_levels); -@@ -1464,7 +1465,8 @@ int intel_iommu_map_page( +@@ -1467,7 +1468,8 @@ int intel_iommu_map_page( iommu = drhd->iommu; /* do nothing if dom0 and iommu supports pass thru */ @@ -63,7 +67,7 @@ Signed-off-by: Weidong Han return 0; pg_maddr = addr_to_dma_page_maddr(d, (paddr_t)gfn << PAGE_SHIFT_4K, 1); -@@ -1503,7 +1505,8 @@ int intel_iommu_unmap_page(struct domain +@@ -1506,7 +1508,8 @@ int intel_iommu_unmap_page(struct domain iommu = drhd->iommu; /* do nothing if dom0 and iommu supports pass thru */ @@ -73,8 +77,10 @@ Signed-off-by: Weidong Han return 0; dma_pte_clear_one(d, (paddr_t)gfn << PAGE_SHIFT_4K); ---- a/xen/include/xen/iommu.h -+++ b/xen/include/xen/iommu.h +Index: xen-3.3.1-testing/xen/include/xen/iommu.h +=================================================================== +--- xen-3.3.1-testing.orig/xen/include/xen/iommu.h ++++ xen-3.3.1-testing/xen/include/xen/iommu.h @@ -31,6 +31,7 @@ extern int vtd_enabled; extern int iommu_enabled; extern int iommu_pv_enabled; diff --git a/18468-therm-control-msr.patch b/18468-therm-control-msr.patch index 591246e..71b9ad5 100644 --- a/18468-therm-control-msr.patch +++ b/18468-therm-control-msr.patch @@ -13,7 +13,7 @@ Index: xen-3.3.1-testing/xen/arch/x86/traps.c =================================================================== --- xen-3.3.1-testing.orig/xen/arch/x86/traps.c +++ xen-3.3.1-testing/xen/arch/x86/traps.c -@@ -2159,6 +2159,12 @@ static int emulate_privileged_op(struct +@@ -2160,6 +2160,12 @@ static int emulate_privileged_op(struct if ( wrmsr_safe(regs->ecx, eax, edx) != 0 ) goto fail; break; @@ -26,7 +26,7 @@ Index: xen-3.3.1-testing/xen/arch/x86/traps.c default: if ( wrmsr_hypervisor_regs(regs->ecx, eax, edx) ) break; -@@ -2235,6 +2241,12 @@ static int emulate_privileged_op(struct +@@ -2236,6 +2242,12 @@ static int emulate_privileged_op(struct MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL | MSR_IA32_MISC_ENABLE_XTPR_DISABLE; break; diff --git a/18520-per-CPU-GDT.patch b/18520-per-CPU-GDT.patch index 69fbf27..0a2be89 100644 --- a/18520-per-CPU-GDT.patch +++ b/18520-per-CPU-GDT.patch @@ -438,7 +438,7 @@ Index: xen-3.3.1-testing/xen/arch/x86/traps.c =================================================================== --- xen-3.3.1-testing.orig/xen/arch/x86/traps.c +++ xen-3.3.1-testing/xen/arch/x86/traps.c -@@ -2977,13 +2977,13 @@ void set_intr_gate(unsigned int n, void +@@ -2978,13 +2978,13 @@ void set_intr_gate(unsigned int n, void void set_tss_desc(unsigned int n, void *addr) { _set_tssldt_desc( diff --git a/18656-vtd-alloc-checks.patch b/18656-vtd-alloc-checks.patch index 5ef9021..b7b1f8d 100644 --- a/18656-vtd-alloc-checks.patch +++ b/18656-vtd-alloc-checks.patch @@ -12,8 +12,10 @@ mandatory, however. Signed-off-by: Jan Beulich ---- a/xen/drivers/passthrough/vtd/intremap.c -+++ b/xen/drivers/passthrough/vtd/intremap.c +Index: xen-3.3.1-testing/xen/drivers/passthrough/vtd/intremap.c +=================================================================== +--- xen-3.3.1-testing.orig/xen/drivers/passthrough/vtd/intremap.c ++++ xen-3.3.1-testing/xen/drivers/passthrough/vtd/intremap.c @@ -458,7 +458,7 @@ int intremap_setup(struct iommu *iommu) { dprintk(XENLOG_WARNING VTDPREFIX, @@ -23,8 +25,10 @@ Signed-off-by: Jan Beulich } ir_ctrl->iremap_index = -1; } ---- a/xen/drivers/passthrough/vtd/iommu.c -+++ b/xen/drivers/passthrough/vtd/iommu.c +Index: xen-3.3.1-testing/xen/drivers/passthrough/vtd/iommu.c +=================================================================== +--- xen-3.3.1-testing.orig/xen/drivers/passthrough/vtd/iommu.c ++++ xen-3.3.1-testing/xen/drivers/passthrough/vtd/iommu.c @@ -220,10 +220,10 @@ static u64 addr_to_dma_page_maddr(struct if ( !alloc ) break; @@ -47,9 +51,11 @@ Signed-off-by: Jan Beulich } if ( level == 2 ) ---- a/xen/drivers/passthrough/vtd/qinval.c -+++ b/xen/drivers/passthrough/vtd/qinval.c -@@ -429,7 +429,11 @@ int qinval_setup(struct iommu *iommu) +Index: xen-3.3.1-testing/xen/drivers/passthrough/vtd/qinval.c +=================================================================== +--- xen-3.3.1-testing.orig/xen/drivers/passthrough/vtd/qinval.c ++++ xen-3.3.1-testing/xen/drivers/passthrough/vtd/qinval.c +@@ -430,7 +430,11 @@ int qinval_setup(struct iommu *iommu) { qi_ctrl->qinval_maddr = alloc_pgtable_maddr(); if ( qi_ctrl->qinval_maddr == 0 ) @@ -62,8 +68,10 @@ Signed-off-by: Jan Beulich flush->context = flush_context_qi; flush->iotlb = flush_iotlb_qi; } ---- a/xen/drivers/passthrough/vtd/x86/vtd.c -+++ b/xen/drivers/passthrough/vtd/x86/vtd.c +Index: xen-3.3.1-testing/xen/drivers/passthrough/vtd/x86/vtd.c +=================================================================== +--- xen-3.3.1-testing.orig/xen/drivers/passthrough/vtd/x86/vtd.c ++++ xen-3.3.1-testing/xen/drivers/passthrough/vtd/x86/vtd.c @@ -41,17 +41,19 @@ u64 alloc_pgtable_maddr(void) { struct page_info *pg; diff --git a/18762-vtd-intremap-SMI-RTEs.patch b/18762-vtd-intremap-SMI-RTEs.patch new file mode 100644 index 0000000..b34ebf8 --- /dev/null +++ b/18762-vtd-intremap-SMI-RTEs.patch @@ -0,0 +1,78 @@ +# HG changeset patch +# User Keir Fraser +# Date 1226313701 0 +# Node ID 40668908260c7667cc5a0b75862352016c52e38f +# Parent 832efb028a1dc72fb52edc11c958fd19f8542e48 +vtd: fix interrupt remapping to handle SMI RTE's with uninitialized +reserved fields + +Some BIOS does not zero out reserve fields in IOAPIC RTE's. +clear_IO_APIC() zeroes out all RTE's except for RTE with MSI delivery +type. This is a problem when the host OS converts SMI delivery type +to some other type but leaving the reserved field uninitialized. This +can cause interrupt remapping table out of bound error if "format" +field is 1 and the uninitialized "index" field has a value that that +is larger than the maximum index of interrupt remapping table. + +Signed-off-by: Allen Kay = + +Index: xen-3.3.1-testing/xen/drivers/passthrough/vtd/dmar.c +=================================================================== +--- xen-3.3.1-testing.orig/xen/drivers/passthrough/vtd/dmar.c ++++ xen-3.3.1-testing/xen/drivers/passthrough/vtd/dmar.c +@@ -369,7 +369,9 @@ acpi_parse_one_rmrr(struct acpi_dmar_ent + + if ( rmrr->base_address >= rmrr->end_address ) + { +- dprintk(XENLOG_ERR VTDPREFIX, "RMRR is incorrect.\n"); ++ dprintk(XENLOG_ERR VTDPREFIX, ++ "RMRR error: base_addr %"PRIx64" end_address %"PRIx64"\n", ++ rmrr->base_address, rmrr->end_address); + return -EFAULT; + } + +Index: xen-3.3.1-testing/xen/drivers/passthrough/vtd/intremap.c +=================================================================== +--- xen-3.3.1-testing.orig/xen/drivers/passthrough/vtd/intremap.c ++++ xen-3.3.1-testing/xen/drivers/passthrough/vtd/intremap.c +@@ -201,7 +201,7 @@ unsigned int io_apic_read_remap_rte( + + remap_rte = (struct IO_APIC_route_remap_entry *) &old_rte; + +- if ( remap_rte->format == 0 ) ++ if ( (remap_rte->format == 0) || (old_rte.delivery_mode == dest_SMI) ) + { + *IO_APIC_BASE(apic) = rte_upper ? (reg + 1) : reg; + return *(IO_APIC_BASE(apic)+4); +@@ -247,6 +247,31 @@ void io_apic_write_remap_rte( + + remap_rte = (struct IO_APIC_route_remap_entry *) &old_rte; + ++ if ( old_rte.delivery_mode == dest_SMI ) ++ { ++ /* Some BIOS does not zero out reserve fields in IOAPIC ++ * RTE's. clear_IO_APIC() zeroes out all RTE's except for RTE ++ * with MSI delivery type. This is a problem when the host ++ * OS converts SMI delivery type to some other type but leaving ++ * the reserved field uninitialized. This can cause interrupt ++ * remapping table out of bound error if "format" field is 1 ++ * and the "index" field has a value that that is larger than ++ * the maximum index of interrupt remapping table. ++ */ ++ if ( remap_rte->format == 1 ) ++ { ++ remap_rte->format = 0; ++ *IO_APIC_BASE(apic) = reg; ++ *(IO_APIC_BASE(apic)+4) = *(((u32 *)&old_rte)+0); ++ *IO_APIC_BASE(apic) = reg + 1; ++ *(IO_APIC_BASE(apic)+4) = *(((u32 *)&old_rte)+1); ++ } ++ ++ *IO_APIC_BASE(apic) = rte_upper ? (reg + 1) : reg; ++ *(IO_APIC_BASE(apic)+4) = value; ++ return; ++ } ++ + /* mask the interrupt while we change the intremap table */ + saved_mask = remap_rte->mask; + remap_rte->mask = 1; diff --git a/18785-vlapic-lowest-prio.patch b/18785-vlapic-lowest-prio.patch new file mode 100644 index 0000000..67f73fb --- /dev/null +++ b/18785-vlapic-lowest-prio.patch @@ -0,0 +1,109 @@ +# HG changeset patch +# User Keir Fraser +# Date 1227006996 0 +# Node ID ae891977a4d3f5d8d8330ed3796881867b4d88a8 +# Parent 2604400f75e318dc9f5201e3626213290a89862a +x86, hvm: Implement interrupt routing to least priority processor. +References: bnc#429904 + +Instead of round robin the vcpu with the lowest processor +priority is selected for the interrupt. If multiple vcpus +share the same low priority then interrupts are distributed between +those round robin. + +Signed-off-by: Juergen Gross +Signed-off-by: Keir Fraser + +--- a/xen/arch/x86/hvm/vioapic.c ++++ b/xen/arch/x86/hvm/vioapic.c +@@ -344,8 +344,8 @@ static void vioapic_deliver(struct hvm_h + } + else + #endif +- target = apic_round_robin(vioapic_domain(vioapic), +- vector, deliver_bitmask); ++ target = apic_lowest_prio(vioapic_domain(vioapic), ++ deliver_bitmask); + if ( target != NULL ) + { + ioapic_inj_irq(vioapic, target, vector, trig_mode, delivery_mode); +--- a/xen/arch/x86/hvm/vlapic.c ++++ b/xen/arch/x86/hvm/vlapic.c +@@ -377,26 +377,30 @@ static int vlapic_accept_irq(struct vcpu + } + + /* This function is used by both ioapic and lapic.The bitmap is for vcpu_id. */ +-struct vlapic *apic_round_robin( +- struct domain *d, uint8_t vector, uint32_t bitmap) ++struct vlapic *apic_lowest_prio(struct domain *d, uint32_t bitmap) + { +- int next, old; +- struct vlapic *target = NULL; ++ int old = d->arch.hvm_domain.irq.round_robin_prev_vcpu; ++ uint32_t ppr, target_ppr = UINT_MAX; ++ struct vlapic *vlapic, *target = NULL; ++ struct vcpu *v; + +- old = next = d->arch.hvm_domain.irq.round_robin_prev_vcpu; ++ if ( unlikely((v = d->vcpu[old]) == NULL) ) ++ return NULL; + + do { +- if ( ++next == MAX_VIRT_CPUS ) +- next = 0; +- if ( (d->vcpu[next] == NULL) || !test_bit(next, &bitmap) ) +- continue; +- target = vcpu_vlapic(d->vcpu[next]); +- if ( vlapic_enabled(target) ) +- break; +- target = NULL; +- } while ( next != old ); ++ v = v->next_in_list ? : d->vcpu[0]; ++ vlapic = vcpu_vlapic(v); ++ if ( test_bit(v->vcpu_id, &bitmap) && vlapic_enabled(vlapic) && ++ ((ppr = vlapic_get_ppr(vlapic)) < target_ppr) ) ++ { ++ target = vlapic; ++ target_ppr = ppr; ++ } ++ } while ( v->vcpu_id != old ); + +- d->arch.hvm_domain.irq.round_robin_prev_vcpu = next; ++ if ( target != NULL ) ++ d->arch.hvm_domain.irq.round_robin_prev_vcpu = ++ vlapic_vcpu(target)->vcpu_id; + + return target; + } +@@ -456,7 +460,7 @@ static int vlapic_ipi( + + if ( delivery_mode == APIC_DM_LOWEST ) + { +- target = apic_round_robin(vlapic_domain(v), vector, lpr_map); ++ target = apic_lowest_prio(vlapic_domain(v), lpr_map); + if ( target != NULL ) + rc = vlapic_accept_irq(vlapic_vcpu(target), delivery_mode, + vector, level, trig_mode); +--- a/xen/arch/x86/hvm/vmsi.c ++++ b/xen/arch/x86/hvm/vmsi.c +@@ -152,7 +152,7 @@ int vmsi_deliver(struct domain *d, int p + { + case dest_LowestPrio: + { +- target = apic_round_robin(d, vector, deliver_bitmask); ++ target = apic_lowest_prio(d, deliver_bitmask); + if ( target != NULL ) + vmsi_inj_irq(d, target, vector, trig_mode, delivery_mode); + else +--- a/xen/include/asm-x86/hvm/vlapic.h ++++ b/xen/include/asm-x86/hvm/vlapic.h +@@ -93,8 +93,7 @@ void vlapic_msr_set(struct vlapic *vlapi + + int vlapic_accept_pic_intr(struct vcpu *v); + +-struct vlapic *apic_round_robin( +- struct domain *d, uint8_t vector, uint32_t bitmap); ++struct vlapic *apic_lowest_prio(struct domain *d, uint32_t bitmap); + + int vlapic_match_logical_addr(struct vlapic *vlapic, uint8_t mda); + diff --git a/18788-vlapic-accel-dom-restore.patch b/18788-vlapic-accel-dom-restore.patch new file mode 100644 index 0000000..bb3dbaf --- /dev/null +++ b/18788-vlapic-accel-dom-restore.patch @@ -0,0 +1,35 @@ +# HG changeset patch +# User Keir Fraser +# Date 1227023966 0 +# Node ID f09a1d5d4338eab9c593b63b8ae89ddf481a3681 +# Parent ed8524f4a044efbd6d30f9340c6ddfb00f972407 +x86, hvm: Fix domain restore bug with Intel VLAPIC acceleration. + +r18383 mark video memory as ram, and make all valid pages migrated, +including vlapic page (0xFEE00), and share page(0xFFFFF). +An extra memory population for lapic page would override previous +mapping then cause HVM guest with vlapic acceleration hang. + +Signed-off-by: Keir Fraser + +--- a/xen/arch/x86/mm.c ++++ b/xen/arch/x86/mm.c +@@ -1541,6 +1541,7 @@ static int mod_l1_entry(l1_pgentry_t *pl + struct domain *d = curr->domain; + unsigned long mfn; + struct page_info *l1pg = mfn_to_page(gl1mfn); ++ p2m_type_t p2mt; + int rc = 1; + + page_lock(l1pg); +@@ -1558,8 +1559,8 @@ static int mod_l1_entry(l1_pgentry_t *pl + if ( l1e_get_flags(nl1e) & _PAGE_PRESENT ) + { + /* Translate foreign guest addresses. */ +- mfn = gmfn_to_mfn(FOREIGNDOM, l1e_get_pfn(nl1e)); +- if ( unlikely(mfn == INVALID_MFN) ) ++ mfn = mfn_x(gfn_to_mfn(FOREIGNDOM, l1e_get_pfn(nl1e), &p2mt)); ++ if ( !p2m_is_ram(p2mt) || unlikely(mfn == INVALID_MFN) ) + return page_unlock(l1pg), 0; + ASSERT((mfn & ~(PADDR_MASK >> PAGE_SHIFT)) == 0); + nl1e = l1e_from_pfn(mfn, l1e_get_flags(nl1e)); diff --git a/18795-x86-ioapic-guest-write.patch b/18795-x86-ioapic-guest-write.patch new file mode 100644 index 0000000..9461f37 --- /dev/null +++ b/18795-x86-ioapic-guest-write.patch @@ -0,0 +1,29 @@ +# HG changeset patch +# User Keir Fraser +# Date 1227111099 0 +# Node ID bddd2d344c5425bfd25564bc20f90c3776552c6e +# Parent 4107618ee0d8aceb517f43ffa79197a041ed4bcf +x86: secure ioapic_guest_write() against FREE_TO_ASSIGN irq values + +Signed-off-by: Jan Beulich + +--- a/xen/arch/x86/io_apic.c ++++ b/xen/arch/x86/io_apic.c +@@ -2198,7 +2198,7 @@ int ioapic_guest_write(unsigned long phy + if ( new_rte.vector >= FIRST_DYNAMIC_VECTOR ) + new_irq = vector_irq[new_rte.vector]; + +- if ( (old_irq != new_irq) && (old_irq != -1) && IO_APIC_IRQ(old_irq) ) ++ if ( (old_irq != new_irq) && (old_irq >= 0) && IO_APIC_IRQ(old_irq) ) + { + if ( irq_desc[IO_APIC_VECTOR(old_irq)].action ) + { +@@ -2210,7 +2210,7 @@ int ioapic_guest_write(unsigned long phy + remove_pin_at_irq(old_irq, apic, pin); + } + +- if ( (new_irq != -1) && IO_APIC_IRQ(new_irq) ) ++ if ( (new_irq >= 0) && IO_APIC_IRQ(new_irq) ) + { + if ( irq_desc[IO_APIC_VECTOR(new_irq)].action ) + { diff --git a/32on64-extra-mem.patch b/32on64-extra-mem.patch index 71c6c85..e55e46b 100644 --- a/32on64-extra-mem.patch +++ b/32on64-extra-mem.patch @@ -2,7 +2,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== --- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py -@@ -2250,7 +2250,7 @@ class XendDomainInfo: +@@ -2265,7 +2265,7 @@ class XendDomainInfo: vtd_mem = ((vtd_mem + 1023) / 1024) * 1024 # Make sure there's enough RAM available for the domain diff --git a/blktap.patch b/blktap.patch index 224cea7..dca6b63 100644 --- a/blktap.patch +++ b/blktap.patch @@ -5,7 +5,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== --- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py -@@ -2595,7 +2595,7 @@ class XendDomainInfo: +@@ -2610,7 +2610,7 @@ class XendDomainInfo: (fn, BOOTLOADER_LOOPBACK_DEVICE)) vbd = { diff --git a/checkpoint-rename.patch b/checkpoint-rename.patch new file mode 100644 index 0000000..23c0fc5 --- /dev/null +++ b/checkpoint-rename.patch @@ -0,0 +1,13 @@ +Index: xen-3.3.1-testing/tools/python/xen/xend/XendCheckpoint.py +=================================================================== +--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendCheckpoint.py ++++ xen-3.3.1-testing/tools/python/xen/xend/XendCheckpoint.py +@@ -144,7 +144,7 @@ def save(fd, dominfo, network, live, dst + dominfo.destroy() + dominfo.testDeviceComplete() + try: +- dominfo.setName(domain_name, False) ++ dominfo.setName(domain_name) + except VmError: + # Ignore this. The name conflict (hopefully) arises because we + # are doing localhost migration; if we are doing a suspend of a diff --git a/dom-print.patch b/dom-print.patch index 8246ed8..1c300e3 100644 --- a/dom-print.patch +++ b/dom-print.patch @@ -9,6 +9,22 @@ { printk(" DomPage list too long to display\n"); } +@@ -143,6 +143,15 @@ void dump_pageframe_info(struct domain * + { + list_for_each_entry ( page, &d->page_list, list ) + { ++ if ( d->tot_pages > 16 ) ++ { ++ switch ( page->u.inuse.type_info & PGT_type_mask ) ++ { ++ case PGT_none: ++ case PGT_writable_page: ++ continue; ++ } ++ } + printk(" DomPage %p: caf=%08x, taf=%" PRtype_info "\n", + _p(page_to_mfn(page)), + page->count_info, page->u.inuse.type_info); --- a/xen/common/keyhandler.c +++ b/xen/common/keyhandler.c @@ -192,9 +192,9 @@ static void dump_domains(unsigned char k diff --git a/ioemu-vnc-resize.patch b/ioemu-vnc-resize.patch index a2b3144..5ad55e8 100644 --- a/ioemu-vnc-resize.patch +++ b/ioemu-vnc-resize.patch @@ -2,7 +2,7 @@ Index: xen-3.3.1-testing/tools/ioemu-remote/vnc.c =================================================================== --- xen-3.3.1-testing.orig/tools/ioemu-remote/vnc.c +++ xen-3.3.1-testing/tools/ioemu-remote/vnc.c -@@ -352,6 +352,11 @@ static void vnc_dpy_update(DisplayState +@@ -352,6 +352,11 @@ static void vnc_dpy_update(DisplayState { VncState *vs = ds->opaque; @@ -14,7 +14,7 @@ Index: xen-3.3.1-testing/tools/ioemu-remote/vnc.c set_bits_in_row(vs, vs->dirty_row, x, y, w, h); } -@@ -405,9 +413,13 @@ static void vnc_dpy_resize_shared(Displa +@@ -419,9 +424,13 @@ static void vnc_dpy_resize_shared(Displa size_changed = ds->width != w || ds->height != h; ds->width = w; ds->height = h; @@ -29,7 +29,7 @@ Index: xen-3.3.1-testing/tools/ioemu-remote/vnc.c if (vs->update_requested) { vnc_write_u8(vs, 0); /* msg id */ vnc_write_u8(vs, 0); -@@ -1794,6 +1837,31 @@ static int protocol_client_msg(VncState +@@ -1808,6 +1817,31 @@ static int protocol_client_msg(VncState } set_encodings(vs, (int32_t *)(data + 4), limit); diff --git a/pv-driver-build.patch b/pv-driver-build.patch index dc96887..61d1785 100644 --- a/pv-driver-build.patch +++ b/pv-driver-build.patch @@ -1,24 +1,33 @@ -Index: xen-3.3.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-compat.c -=================================================================== ---- xen-3.3.1-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-compat.c -+++ xen-3.3.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-compat.c -@@ -14,7 +14,11 @@ EXPORT_SYMBOL(system_state); +--- a/unmodified_drivers/linux-2.6/balloon/Kbuild ++++ b/unmodified_drivers/linux-2.6/balloon/Kbuild +@@ -4,6 +4,5 @@ obj-m = xen-balloon.o - void ctrl_alt_del(void) - { -- kill_proc(1, SIGINT, 1); /* interrupt init */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27) -+ kill_proc(1, SIGINT, 1); -+#else -+ kill_pid(cad_pid, SIGINT, 1); -+#endif - } + EXTRA_CFLAGS += -I$(M)/platform-pci - #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,8) -Index: xen-3.3.1-testing/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c -=================================================================== ---- xen-3.3.1-testing.orig/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c -+++ xen-3.3.1-testing/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c +-xen-balloon-objs = +-xen-balloon-objs += balloon.o +-xen-balloon-objs += sysfs.o ++xen-balloon-y := balloon.o sysfs.o ++xen-balloon-$(CONFIG_XEN_SCRUB_PAGES) += scrub.o +--- a/unmodified_drivers/linux-2.6/blkfront/Kbuild ++++ b/unmodified_drivers/linux-2.6/blkfront/Kbuild +@@ -3,3 +3,4 @@ include $(M)/overrides.mk + obj-m += xen-vbd.o + + xen-vbd-objs := blkfront.o vbd.o ++xen-vbd-objs += $(patsubst %.c,%.o,$(notdir $(wildcard $(src)/vcd.c))) +--- a/unmodified_drivers/linux-2.6/mkbuildtree ++++ b/unmodified_drivers/linux-2.6/mkbuildtree +@@ -53,6 +53,7 @@ i[34567]86|x86_64) + ln -sf ${XL}/include/asm-x86/mach-xen/asm/synch_bitops*.h include/asm + ln -sf ${XL}/include/asm-x86/mach-xen/asm/maddr*.h include/asm + ln -sf ${XL}/include/asm-x86/mach-xen/asm/gnttab_dma.h include/asm ++ ln -sf ${XL}/arch/x86/lib/scrub.c balloon + else + if [ $uname = x86_64 ]; then + mkdir -p include/asm-i386 +--- a/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c ++++ b/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c @@ -34,7 +34,11 @@ static void ap_suspend(void *_info) atomic_dec(&info->nr_spinning); } @@ -31,3 +40,17 @@ Index: xen-3.3.1-testing/unmodified_drivers/linux-2.6/platform-pci/machine_reboo #else /* !defined(CONFIG_SMP) */ +--- a/unmodified_drivers/linux-2.6/platform-pci/platform-compat.c ++++ b/unmodified_drivers/linux-2.6/platform-pci/platform-compat.c +@@ -14,7 +14,11 @@ EXPORT_SYMBOL(system_state); + + void ctrl_alt_del(void) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27) + kill_proc(1, SIGINT, 1); /* interrupt init */ ++#else ++ kill_cad_pid(SIGINT, 1); ++#endif + } + + #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,8) diff --git a/x86-show-page-walk-early.patch b/x86-show-page-walk-early.patch index 746ca6f..b9ba599 100644 --- a/x86-show-page-walk-early.patch +++ b/x86-show-page-walk-early.patch @@ -2,7 +2,7 @@ Index: xen-3.3.1-testing/xen/arch/x86/traps.c =================================================================== --- xen-3.3.1-testing.orig/xen/arch/x86/traps.c +++ xen-3.3.1-testing/xen/arch/x86/traps.c -@@ -1266,6 +1266,7 @@ asmlinkage void do_early_page_fault(stru +@@ -1267,6 +1267,7 @@ asmlinkage void do_early_page_fault(stru unsigned long *stk = (unsigned long *)regs; printk("Early fatal page fault at %04x:%p (cr2=%p, ec=%04x)\n", regs->cs, _p(regs->eip), _p(cr2), regs->error_code); diff --git a/xen-3.3.1-testing-src.tar.bz2 b/xen-3.3.1-testing-src.tar.bz2 index bba000e..8757937 100644 --- a/xen-3.3.1-testing-src.tar.bz2 +++ b/xen-3.3.1-testing-src.tar.bz2 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e32c923438b84304bb99311df54aa02eb057b9dbcce2770f3b0310975b3ab066 -size 22694395 +oid sha256:b9e84016ef0445bc87420696ade8fcdc52d474eb61b8b2a9aadb4ee0f31c1980 +size 22694606 diff --git a/xen-domUloader.diff b/xen-domUloader.diff index 68990ec..78b47bc 100644 --- a/xen-domUloader.diff +++ b/xen-domUloader.diff @@ -148,7 +148,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py from xen.xend.XendError import XendError, VmError from xen.xend.XendDevices import XendDevices from xen.xend.XendTask import XendTask -@@ -1870,6 +1870,10 @@ class XendDomainInfo: +@@ -1878,6 +1878,10 @@ class XendDomainInfo: deviceClass, config = self.info['devices'].get(dev_uuid) self._waitForDevice(deviceClass, config['devid']) @@ -159,7 +159,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py def _waitForDevice_destroy(self, deviceClass, devid, backpath): return self.getDeviceController(deviceClass).waitForDevice_destroy( devid, backpath) -@@ -2546,8 +2550,11 @@ class XendDomainInfo: +@@ -2561,8 +2565,11 @@ class XendDomainInfo: blexec = osdep.pygrub_path blcfg = None @@ -173,7 +173,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py if not disks: msg = "Had a bootloader specified, but no disks are bootable" -@@ -2558,13 +2565,10 @@ class XendDomainInfo: +@@ -2573,13 +2580,10 @@ class XendDomainInfo: devtype = devinfo[0] disk = devinfo[1]['uname'] @@ -190,7 +190,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py log.info("Mounting %s on %s." % (fn, BOOTLOADER_LOOPBACK_DEVICE)) -@@ -2576,7 +2580,9 @@ class XendDomainInfo: +@@ -2591,7 +2595,9 @@ class XendDomainInfo: from xen.xend import XendDomain dom0 = XendDomain.instance().privilegedDomain() @@ -201,7 +201,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py fn = BOOTLOADER_LOOPBACK_DEVICE try: -@@ -2587,7 +2593,7 @@ class XendDomainInfo: +@@ -2602,7 +2608,7 @@ class XendDomainInfo: log.info("Unmounting %s from %s." % (fn, BOOTLOADER_LOOPBACK_DEVICE)) diff --git a/xen-max-free-mem.diff b/xen-max-free-mem.diff index b849d86..b5b108c 100644 --- a/xen-max-free-mem.diff +++ b/xen-max-free-mem.diff @@ -94,7 +94,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== --- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py -@@ -1038,6 +1038,27 @@ class XendDomainInfo: +@@ -1046,6 +1046,27 @@ class XendDomainInfo: return None diff --git a/xen-warnings.diff b/xen-warnings.diff index eab9d20..f5f571e 100644 --- a/xen-warnings.diff +++ b/xen-warnings.diff @@ -35,20 +35,6 @@ Index: xen-3.3.1-testing/tools/misc/miniterm/miniterm.c break; } -Index: xen-3.3.1-testing/xen/tools/symbols.c -=================================================================== ---- xen-3.3.1-testing.orig/xen/tools/symbols.c -+++ xen-3.3.1-testing/xen/tools/symbols.c -@@ -81,7 +81,8 @@ static int read_symbol(FILE *in, struct - if (rc != 3) { - if (rc != EOF) { - /* skip line */ -- fgets(str, 500, in); -+ if (fgets(str, sizeof(str), in) == NULL) -+ ; /* don't care */ - } - return -1; - } Index: xen-3.3.1-testing/tools/libxc/xc_dom_elfloader.c =================================================================== --- xen-3.3.1-testing.orig/tools/libxc/xc_dom_elfloader.c diff --git a/xen-x86-emulate-movnti.patch b/xen-x86-emulate-movnti.patch deleted file mode 100644 index 9a3341a..0000000 --- a/xen-x86-emulate-movnti.patch +++ /dev/null @@ -1,30 +0,0 @@ -Index: xen-3.3.1-testing/xen/arch/x86/x86_emulate/x86_emulate.c -=================================================================== ---- xen-3.3.1-testing.orig/xen/arch/x86/x86_emulate/x86_emulate.c -+++ xen-3.3.1-testing/xen/arch/x86/x86_emulate/x86_emulate.c -@@ -3657,6 +3657,12 @@ x86_emulate( - case 8: *src.reg = dst.val; break; - } - goto add; -+ -+ case 0xc3: /* movnti */ -+ /* Ignore the non-temporal hint for now. */ -+ generate_exception_if(dst.bytes <= 2, EXC_UD, -1); -+ dst.val = src.val; -+ break; - } - goto writeback; - -@@ -3923,12 +3929,6 @@ x86_emulate( - src.val = x86_seg_gs; - goto pop_seg; - -- case 0xc3: /* movnti */ -- /* Ignore the non-temporal hint for now. */ -- generate_exception_if(dst.bytes <= 2, EXC_UD, -1); -- dst.val = src.val; -- break; -- - case 0xc7: /* Grp9 (cmpxchg8b/cmpxchg16b) */ { - unsigned long old[2], exp[2], new[2]; - unsigned int i; diff --git a/xen.changes b/xen.changes index 3f04b84..77f28ae 100644 --- a/xen.changes +++ b/xen.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Thu Dec 4 11:45:55 MST 2008 - jfehlig@novell.com + +- bnc#456511 - Fix domain name change after checkpoint/shutdown + events. + +------------------------------------------------------------------- +Tue Dec 2 15:57:03 MST 2008 - carnold@novell.com + +- Fixed xmclone.sh. It calls lomount which no longer exists in the + distro. + ------------------------------------------------------------------- Tue Nov 25 15:09:12 CET 2008 - kwolf@suse.de diff --git a/xen.spec b/xen.spec index c8b6b27..cd300d9 100644 --- a/xen.spec +++ b/xen.spec @@ -1,5 +1,5 @@ # -# spec file for package xen (Version 3.3.1_18494_03) +# spec file for package xen (Version 3.3.1_18511_02) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -22,9 +22,9 @@ Name: xen ExclusiveArch: %ix86 x86_64 %define xvers 3.3 %define xvermaj 3 -%define changeset 18494 +%define changeset 18511 %define xen_build_dir xen-3.3.1-testing -%define with_kmp 0 +%define with_kmp 1 BuildRequires: LibVNCServer-devel SDL-devel automake bin86 curl-devel dev86 graphviz latex2html libjpeg-devel libxml2-devel ncurses-devel openssl openssl-devel pciutils-devel python-devel transfig %if %suse_version >= 1030 BuildRequires: texlive texlive-latex @@ -37,7 +37,7 @@ BuildRequires: glibc-32bit glibc-devel-32bit %if %{?with_kmp}0 BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11 %endif -Version: 3.3.1_18494_03 +Version: 3.3.1_18511_02 Release: 1 License: GPL v2 only Group: System/Kernel @@ -109,13 +109,15 @@ Patch39: 18741-x86-dom-cleanup-no-hack.patch Patch40: 18742-x86-partial-page-ref.patch Patch41: 18745-xend-ioport-irq.patch Patch42: 18747-x86-partial-page-ref.patch -Patch43: 18771-reduce-GDT-switching.patch -Patch44: 18778-msi-irq-fix.patch -Patch45: 18764-cpu-affinity.patch -Patch46: 18780-cpu-affinity.patch -Patch47: 18799-cpu-affinity.patch -# Will be fixed in 3.3-testing soon -Patch90: xen-x86-emulate-movnti.patch +Patch43: 18762-vtd-intremap-SMI-RTEs.patch +Patch44: 18771-reduce-GDT-switching.patch +Patch45: 18778-msi-irq-fix.patch +Patch46: 18764-cpu-affinity.patch +Patch47: 18780-cpu-affinity.patch +Patch48: 18785-vlapic-lowest-prio.patch +Patch49: 18788-vlapic-accel-dom-restore.patch +Patch50: 18795-x86-ioapic-guest-write.patch +Patch51: 18799-cpu-affinity.patch # Our patches Patch100: xen-config.diff Patch101: xend-config.diff @@ -165,6 +167,8 @@ Patch160: network-route.patch Patch161: python2.6-fixes.patch Patch162: udev-rules.patch Patch163: ioemu-vnc-resize.patch +# Needs to go upstream +Patch164: checkpoint-rename.patch # Patches for snapshot support Patch170: qemu-img-snapshot.patch Patch171: ioemu-blktap-fix-open.patch @@ -580,7 +584,10 @@ Authors: %patch45 -p1 %patch46 -p1 %patch47 -p1 -%patch90 -p1 +%patch48 -p1 +%patch49 -p1 +%patch50 -p1 +%patch51 -p1 %patch100 -p1 %patch101 -p1 %patch102 -p1 @@ -628,6 +635,7 @@ Authors: %patch161 -p1 %patch162 -p1 %patch163 -p1 +%patch164 -p1 %patch170 -p1 %patch171 -p1 %patch172 -p1 @@ -733,7 +741,6 @@ make -C xen clean %endif export CFLAGS="$RPM_OPT_FLAGS" export RPM_OPT_FLAGS -#make -C xen/include/public/foreign make -C tools/include/xen-foreign # tools export XEN_PYTHON_NATIVE_INSTALL=1 @@ -1006,6 +1013,12 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug /sbin/ldconfig %changelog +* Thu Dec 04 2008 jfehlig@novell.com +- bnc#456511 - Fix domain name change after checkpoint/shutdown + events. +* Tue Dec 02 2008 carnold@novell.com +- Fixed xmclone.sh. It calls lomount which no longer exists in the + distro. * Tue Nov 25 2008 kwolf@suse.de - Fix the build. Build system seems to be unhappy about having two copies of the xenstore binary (this is not a proper fix in fact @@ -1054,7 +1067,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug persistent across dom0 reboot * Wed Oct 29 2008 carnold@novell.com - bnc#436926 - Xen hypervisor crash -* Wed Oct 29 2008 jfehlig@novell.com +* Tue Oct 28 2008 jfehlig@novell.com - bnc#438927 - Fix migration bug in xend * Tue Oct 28 2008 carnold@suse.de - disable KMP, does not build with current kernel @@ -1070,7 +1083,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug vcpus > VCPUs_max on running domain. * Tue Oct 21 2008 carnold@novell.com - Update to changeset 18455. -* Fri Oct 17 2008 olh@suse.de +* Thu Oct 16 2008 olh@suse.de - add ExclusiveArch x86 x86_64 * Wed Oct 15 2008 jfehlig@novell.com - bnc#433722 - Fix handling of default bridge in qemu-ifup. @@ -1109,7 +1122,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug fate#302942 * Thu Sep 11 2008 jfehlig@novell.com - Added ocfs2 to Should-Start in xendomains init script -* Thu Sep 11 2008 plc@novell.com +* Wed Sep 10 2008 plc@novell.com - Added pv cdrom support to blktap fate#300964 * Wed Sep 10 2008 jfehlig@novell.com @@ -1147,7 +1160,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Mon Aug 18 2008 carnold@suse.de - Removed git dependency. Instead use a static version of ioemu-remote. -* Fri Aug 15 2008 jfehlig@novell.com +* Thu Aug 14 2008 jfehlig@novell.com - Added patch to prevent starting same domU from multiple hosts. Feature is disabled by default - see /etc/xen/xend-config.sxp. fate#305062 @@ -1220,7 +1233,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Update to Xen 3.2.1 FCS changeset 16881. * Fri Apr 11 2008 carnold@novell.com - Update to Xen 3.2.1 RC5 changeset 16864. -* Fri Apr 11 2008 jfehlig@novell.com +* Thu Apr 10 2008 jfehlig@novell.com - bnc#378595 - Do not use ifup/ifdown in network-bridge for now. * Mon Mar 24 2008 carnold@novell.com - bnc#373194 - The xen module and the kernel for Dom0 don't match. @@ -1253,7 +1266,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Fri Feb 29 2008 plc@novell.com - Send UNIT_ATTENTION when CD drive has newly inserted media and becomes ready. bnc#365386 -* Fri Feb 29 2008 jfehlig@novell.com +* Thu Feb 28 2008 jfehlig@novell.com - Updated block-iscsi script and xen-domUloader patch, bnc #365385 * Thu Feb 28 2008 carnold@novell.com - Add support for Intel EPT / VPID. @@ -1269,7 +1282,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Tranlate colors from 32 bit to 16 bit when viewing a 32 bit PV VM from a 16 bit client. bnc#351470 Also includes upstream mouse queue patch. -* Sat Feb 23 2008 jfehlig@novell.com +* Fri Feb 22 2008 jfehlig@novell.com - Added PAM configuration files for remote authentication via Xen API. bnc #353464 * Tue Feb 19 2008 carnold@novell.com @@ -1280,7 +1293,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Thu Feb 14 2008 carnold@novell.com - Added upstream changesets that fix various bugs. 16859 16929 16930 16945 16947 16962 16976 16980 16995 16998 17036 -* Thu Feb 14 2008 jfehlig@novell.com +* Wed Feb 13 2008 jfehlig@novell.com - Updated network-multinet - Simplify bridge creation - Create traditional bridge and hostonly networks by default @@ -1291,10 +1304,10 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Mon Feb 04 2008 plc@novell.com - Replaced xen-blktab-subtype-strip.patch with official upstream changeset for bnc#353065. -* Sat Feb 02 2008 carnold@novell.com +* Fri Feb 01 2008 carnold@novell.com - Update to xen 3.2 FCS. Changeset 16718 - Merge xen-tools and xen-tools-ioemu into xen-tools. -* Thu Dec 20 2007 carnold@novell.com +* Wed Dec 19 2007 carnold@novell.com - Update to xen 3.2 RC2. Changeset 16646 * Thu Dec 13 2007 carnold@novell.com - Added agent support for HP Proliant hardware. @@ -1311,11 +1324,11 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - #334445: xenbaked: Fix security vulnerability CVE-2007-3919. * Thu Nov 01 2007 carnold@novell.com - #310279: Kernel Panic while booting Xen -* Wed Oct 03 2007 ccoffing@novell.com +* Tue Oct 02 2007 ccoffing@novell.com - #286859: Fix booting from SAN * Thu Sep 13 2007 ccoffing@novell.com - #310338: Fix "No such file or directory" in network-multinet -* Thu Sep 13 2007 jfehlig@novell.com +* Wed Sep 12 2007 jfehlig@novell.com - #309940: Fix 'xm reboot' - Moved hvm_vnc.diff and xend_mem_leak.diff to 'Upstream patches' section of spec file since both have been accepted upstream now. @@ -1333,7 +1346,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - #289275 - domu will not reboot if pci= is passed in at boot time. * Fri Aug 24 2007 carnold@novell.com - #297345: Added several upstream patches for hvm migration. -* Sat Aug 18 2007 jfehlig@novell.com +* Fri Aug 17 2007 jfehlig@novell.com - Added upstream c/s 15128, 15153, 15477, and 15716. These patches provide foundation for bug #238986 - Renamed xend_dev_destroy_cleanup.patch to reflect the upstream @@ -1347,7 +1360,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - #298176: Do not enable NX if CPU/BIOS does not support it - #289569: Modify network-bridge to handle vlan - #297295: Fix bridge setup: stop using getcfg -* Tue Aug 07 2007 olh@suse.de +* Mon Aug 06 2007 olh@suse.de - remove inclusion of linux/compiler.h and linux/string.h remove ExclusiveArch and fix prep section for quilt setup *.spec * Thu Aug 02 2007 jfehlig@novell.com @@ -1394,7 +1407,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - #285929: Bad "xendomains status" output w/ empty XENDOMAINS_SAVE * Tue Jul 03 2007 carnold@novell.com - Changes necessary to support EDD and EDID from Jan. -* Thu Jun 21 2007 jfehlig@novell.com +* Wed Jun 20 2007 jfehlig@novell.com - Added upstream changesets 15273, 15274, and 15275. - Removed the modified 15157 patch. This patch was actually a consolidation of changesets 15157 and 15250. These changesets @@ -1468,7 +1481,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Thu May 03 2007 ccoffing@novell.com - Update to xen-3.1-testing rc7 (changeset 15020). - Fix identification of virt-manager windows. (#264162) -* Wed May 02 2007 jfehlig@novell.com +* Tue May 01 2007 jfehlig@novell.com - Integrated domUloader with 3.0.5. Updated xen-domUloader.diff. * Mon Apr 30 2007 ccoffing@novell.com - Update to xen-3.0.5-testing rc4 (changeset 14993). @@ -1495,18 +1508,18 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug responsive and less likely to time out or lock up. Partial fix for #237406. - If disk is read-only, pass -r to losetup. (#264158) -* Fri Apr 06 2007 ccoffing@novell.com +* Thu Apr 05 2007 ccoffing@novell.com - Update vm-install: + #260510: do not delete xml settings file + #260579: write correct vif line for PV NIC in FV VM + #261288: re-enable add disk buttons after deleting a disk + #192272, #222765, #250618: Update OS list and their defaults -* Wed Apr 04 2007 ccoffing@novell.com +* Tue Apr 03 2007 ccoffing@novell.com - Could not do simultaneous installs via virt-manager. (#259917) -* Tue Apr 03 2007 jfehlig@novell.com +* Mon Apr 02 2007 jfehlig@novell.com - Fix improper handling of guest kernel arguments in domUloader. Bug #259810 -* Tue Apr 03 2007 ccoffing@novell.com +* Mon Apr 02 2007 ccoffing@novell.com - Update vm-install: + #259420: refresh available memory more often + #259972: cannot enter autoyast url @@ -1529,11 +1542,11 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Mon Mar 19 2007 ccoffing@novell.com - Update to xen-unstable changeset 14444. - Include Ron Terry's network-multi_bridge -* Sat Mar 10 2007 jfehlig@novell.com +* Fri Mar 09 2007 jfehlig@novell.com - Added lame patch to handle showing suspended state via Xen API. The patch only affects Xen API and is thus low risk. Bug #237859 -* Sat Mar 10 2007 carnold@novell.com +* Fri Mar 09 2007 carnold@novell.com - Added AMD support for Vista 64 installation and boot. * Fri Mar 09 2007 ccoffing@novell.com - Make vm-install support NFS for SUSE (#241251). @@ -1550,7 +1563,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug PV installation disk) + #252437: Allow virtual CDROM to be added (via ISO) even if physical CDROM doesn't exist -* Thu Mar 08 2007 jfehlig@novell.com +* Wed Mar 07 2007 jfehlig@novell.com - Fixed bug #252396 + Added upstream c/s 14021. Applies to Xen API c-bindings - low risk. @@ -1562,7 +1575,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Tue Mar 06 2007 carnold@novell.com - Remove a debug message which is spamming the logs during live migration. -* Tue Mar 06 2007 jfehlig@novell.com +* Mon Mar 05 2007 jfehlig@novell.com - Fixed handling of vbd type in Xen API <-> sexpr integration. Bug #250351 + Updated an existing patch (xend_disk_decorate_rm.patch) and @@ -1570,7 +1583,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug purpose of patch. * Mon Mar 05 2007 ccoffing@novell.com - Default apic=0 for SLES 8 and 9, for performance. (#228133) -* Sat Mar 03 2007 carnold@novell.com +* Fri Mar 02 2007 carnold@novell.com - Xen kernel crashes at domain creation time. Bug #248183. Fix mouse for win2k hvm guest. * Fri Mar 02 2007 jfehlig@novell.com @@ -1585,11 +1598,11 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Fri Mar 02 2007 jfehlig@novell.com - Add check for HVM domain in domain_save. The check is performed in domain_suspend and should be included here as well. -* Fri Mar 02 2007 ccoffing@novell.com +* Thu Mar 01 2007 ccoffing@novell.com - Update vm-install: + #250201: for linux PVFB, pass xencons=tty if graphics=none + #250016: honor non-sparse flag -* Fri Mar 02 2007 jfehlig@novell.com +* Thu Mar 01 2007 jfehlig@novell.com - Fix exception caused by incorrect method name in xen-messages.diff. This is one of perhaps several problems with save/restore, bug #237859 @@ -1601,7 +1614,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug + Updated domUloader to accept '--args' parameter. The args provided as an option to --args are simply added to the sexpr returned by domUloader. pygrub has similar behavior. -* Thu Mar 01 2007 ccoffing@novell.com +* Wed Feb 28 2007 ccoffing@novell.com - Update vm-install: + #249013, #228113: default to realtek instead of pcnet + #249124: write os-type to config files @@ -1632,7 +1645,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Tue Feb 20 2007 ccoffing@novell.com - Fix typo in xendomains. (#246107) - Fix order in which vm-install processes command-line arguments. -* Sat Feb 17 2007 jfehlig@novell.com +* Fri Feb 16 2007 jfehlig@novell.com - Added changeset 13775 from xen-unstable. This patch fixes the last known issue with the Xen API patchset backported from xen-unstable. @@ -1640,7 +1653,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Added c/s 13226 from xen-unstable. It affects Xen API only. - Added patch to remove ':disk' and 'tap:qcow' from stored domain config. Fixes bug #237414 and helps with bug #242953. -* Fri Feb 16 2007 jfehlig@novell.com +* Thu Feb 15 2007 jfehlig@novell.com - Backported Xen API functionality from xen-unstable to support hosting CIM providers. This functionality is required for FATE feature 110320. ECO has been approved. @@ -1655,7 +1668,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug Dom0. (#244055) Patches 13630-domctl.patch, 13903-domctl.patch and 13908-domctl.patch - Updated patch pae-guest-linear-pgtable.patch -* Tue Feb 13 2007 ccoffing@novell.com +* Mon Feb 12 2007 ccoffing@novell.com - Load xenblk at dom0 start to support bootstrapping from non-loopback devices. (#242963, #186696) - Update vm-install: @@ -1665,9 +1678,9 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug + #240984: properly detach vncviewer + #240387: default to absolute coordinate mouse for Windows - Drop logging patch. (#245150) -* Mon Feb 12 2007 ro@suse.de +* Sun Feb 11 2007 ro@suse.de - remove -fstack-protector from RPM_OPT_FLAGS for now -* Fri Feb 09 2007 ccoffing@novell.com +* Thu Feb 08 2007 ccoffing@novell.com - Update vm-install: + Allow specifing disk (and disk size) vs. cdrom from CLI + Add missing -M/--max-memory parameter to CLI to match GUI @@ -1724,12 +1737,12 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Wed Jan 17 2007 ccoffing@novell.com - Update xen-vm-install (more disk UI work; support NetWare response files and licenses) -* Wed Jan 17 2007 ccoffing@novell.com +* Tue Jan 16 2007 ccoffing@novell.com - Major fixes to xen-vm-install (adding disks in the UI now works, and fixed several CLI exceptions) - Microcode does not need to be exactly 2048 bytes (changeset 13079; Kurt) -* Sat Jan 13 2007 ccoffing@novell.com +* Fri Jan 12 2007 ccoffing@novell.com - Include script to clone SLES 10 domU, from coolsolutions (fate [#301742]) - Updated patches from Gerd and Jan, including PAE > 4 gig fix, @@ -1739,7 +1752,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Include xen-unstable patches for HVM save/restore and 32-on-64 HVM. - Update to xen-3.0.4-1 (changeset 13132). -* Thu Jan 11 2007 ccoffing@novell.com +* Wed Jan 10 2007 ccoffing@novell.com - Update xen-vm-install and domUloader to support NetWare. - Include AMD's nested page table patches. * Mon Jan 08 2007 ccoffing@novell.com @@ -1774,7 +1787,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Update to xen-unstable (changeset 12734; feature freeze for 3.0.4) - Make /etc/xen mode 0700 to protect vnc passwords. -* Tue Nov 28 2006 ccoffing@novell.com +* Mon Nov 27 2006 ccoffing@novell.com - Fix how bootloader is called by the xend during restarts. (#223850) * Wed Nov 22 2006 ccoffing@novell.com @@ -1788,7 +1801,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Fix some problems in the xen-hvm-default-bridge patch. (#219092) - xmlrpc isn't 64-bit clean, causing xend to get exceptions when PFN is > 2 GB. (#220418) -* Tue Nov 14 2006 kallan@novell.com +* Mon Nov 13 2006 kallan@novell.com - Backport changesets 11847, 11888, 1189[6-9], 119[00-18], 11974, 1203[0-2], and 12205 from xen-unstable so that the PV drivers can compile on older kernels such as sles9 and rhel4 @@ -1870,7 +1883,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Tue Aug 29 2006 ccoffing@novell.com - xendomains does not actually save domains. (#201349) - Update to xen-unstable changeset 11299. -* Tue Aug 29 2006 ccoffing@novell.com +* Mon Aug 28 2006 ccoffing@novell.com - Fix incorrect path on x86_64 for vncfb and sdlfb. * Thu Aug 17 2006 ccoffing@novell.com - Improve xendomains init script, to handle unset sysconfig vars. @@ -2159,12 +2172,12 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug + 9666: Fix HVM hang; was broken due to previous "hda lost interrupt" patch. (#169146) + 9667: Do not set GP fault in VMCS for VMX (no bug#; from Intel) -* Fri May 05 2006 cgriffin@novell.com +* Thu May 04 2006 cgriffin@novell.com - Update xen-3.0-testing tree, changeset 9664: + Changesets 9663 and 9664 fix AMD fully virtualized guests causing the system to reboot when first starting up. (#169855) -* Fri May 05 2006 cgriffin@novell.com +* Thu May 04 2006 cgriffin@novell.com - With a Xen domain set up with a loop-mountable file as rootfs, the "xm start " invocation fails. The cause is a bug domUloader.py (#172586) @@ -2273,7 +2286,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Fix default localtime for full (Bruce Rogers). - Fix path in mk-xen-resue-img.sh (#163622). - Update README (pathnames, yast2-vm descriptions, terminology). -* Tue Apr 04 2006 garloff@suse.de +* Mon Apr 03 2006 garloff@suse.de - init script: Test for control_d in capabilities to determine dom0 rather than privcmd. - init script: Try loading netloop and backend modules. @@ -2317,7 +2330,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Removed the intermediate sym-link between xen.gz and xen--.gz. Grub 0.97 XFS can not handle a double indirect to a file. (#151792) -* Tue Mar 14 2006 garloff@suse.de +* Mon Mar 13 2006 garloff@suse.de - Update README.SuSE: Document limits (mem, cpu hotplug, max_loop), more network troubleshooting, update security info. - Be more tolerant against errors in ifdown/ifup to better coexist @@ -2348,7 +2361,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Fix build of hvmloader and vmxassist by removing external CFLAGS (XS changeset #9110). - Fix build by forcing --prefix during installation of *.py. -* Thu Mar 02 2006 ccoffing@novell.com +* Wed Mar 01 2006 ccoffing@novell.com - Update to hg 9029 (xen-unstable tree). Adds support for HVM on 64 bit hardware. - Update vncmouse diff to 20060301 from Intel; compensates for lack @@ -2383,7 +2396,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Update to hg 8870 (xen-unstable tree). More HVM fixes. - Remove duplicate balloon.free call. - Add patch from Intel to fix dom0 crash on 64 bit SMP HVM. -* Fri Feb 17 2006 carnold@novell.com +* Thu Feb 16 2006 carnold@novell.com - Update to hg 8858 (xen-unstable tree). * Wed Feb 15 2006 ccoffing@novell.com - Update to hg 8857 (xen-unstable tree). Syncs hypervisor core @@ -2447,7 +2460,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Fix gcc 4.1 warnings. * Wed Dec 07 2005 ccoffing@novell.com - Update to hg 8241 (xen-3.0-testing). -* Tue Nov 29 2005 ccoffing@novell.com +* Mon Nov 28 2005 ccoffing@novell.com - Update to hg 8073. - Rationalize command names (eg, setsize -> xentrace-setsize). - Fix gcc 4.1 warnings. @@ -2457,7 +2470,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Include a few simple, obvious fixes from upstream. - Build xm-test package. - Update udev scripts. -* Tue Nov 15 2005 ccoffing@novell.com +* Mon Nov 14 2005 ccoffing@novell.com - Includes upstream fixes to fix i586 save/restore. * Thu Nov 10 2005 ccoffing@novell.com - Include a few simple, obvious fixes: 7609, 7618, 7636, 7689, @@ -2514,7 +2527,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Sat Sep 10 2005 garloff@suse.de - Update to hg 6715. - Fix network-bridge down. -* Thu Sep 08 2005 garloff@suse.de +* Wed Sep 07 2005 garloff@suse.de - Build PAE version along non-PAE version of Hypervisor. * Tue Sep 06 2005 garloff@suse.de - Try to fix network bridge down issue. @@ -2545,12 +2558,12 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Include linux-public headers in xen-devel package. * Sun Aug 21 2005 garloff@suse.de - Update to hg 6305. -* Sun Aug 21 2005 garloff@suse.de +* Sat Aug 20 2005 garloff@suse.de - Update to hg 6299. - Enable VNC support (depending on LibVNCServer). -* Sun Aug 21 2005 garloff@suse.de -- Split off xen-tools-ioemu for supporting unmodified guests. * Sat Aug 20 2005 garloff@suse.de +- Split off xen-tools-ioemu for supporting unmodified guests. +* Fri Aug 19 2005 garloff@suse.de - Enable pygrub (at the cost of depending on e2fsprogs-devel) - Enable VMX ioemu SDL support (at the cost of many dependencies) * Fri Aug 19 2005 garloff@suse.de @@ -2583,7 +2596,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug * Fri Jun 10 2005 garloff@suse.de - Update to latest 2.0-testing snapshot. - Use RPM version and release no as xen version. -* Wed Jun 08 2005 garloff@suse.de +* Tue Jun 07 2005 garloff@suse.de - Update mk-xen-rescue-img.sh script: Handle SLES9 better. - Export PYTHONOPTIMIZE in xend start script. * Mon Jun 06 2005 garloff@suse.de @@ -2626,7 +2639,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - tgif not needed any more. * Tue Mar 01 2005 garloff@suse.de - Include serial-split from Charles Coffing. -* Tue Mar 01 2005 garloff@suse.de +* Mon Feb 28 2005 garloff@suse.de - Update xen to latest snapshot. * Mon Feb 21 2005 garloff@suse.de - Update README.SuSE. @@ -2636,16 +2649,16 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Add bridge-utils dependency. - Update config file and README. - Activate xend init script on installation. -* Thu Feb 10 2005 ro@suse.de +* Wed Feb 09 2005 ro@suse.de - remove te_etex and te_pdf from neededforbuild. -* Thu Feb 10 2005 garloff@suse.de +* Wed Feb 09 2005 garloff@suse.de - Update README about IDE dma. - Default to dhcp. * Wed Feb 09 2005 garloff@suse.de - Update to xen post-2.0.4. - Little bugfix for xen rescue install script. - Update README.SUSE: Better explanation of root FS creation. -* Mon Jan 24 2005 garloff@suse.de +* Sun Jan 23 2005 garloff@suse.de - Change some defaults to be more secure (xend only binds to localhost, ip spoof protection on). - Avoid ipv6 issue with xend network script. @@ -2655,7 +2668,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug - Put boot.local script in root img to parse ip boot par. * Thu Jan 20 2005 garloff@suse.de - Update to newer snapshot. -* Thu Jan 20 2005 garloff@suse.de +* Wed Jan 19 2005 garloff@suse.de - Update to xen-2.0-unstable (post 2.0.3). * Thu Dec 09 2004 garloff@suse.de - Initial creation of package xen, xen-doc-*. diff --git a/xenapi-console-protocol.patch b/xenapi-console-protocol.patch index 3db99ca..b86da54 100644 --- a/xenapi-console-protocol.patch +++ b/xenapi-console-protocol.patch @@ -2,7 +2,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== --- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py -@@ -3224,6 +3224,14 @@ class XendDomainInfo: +@@ -3239,6 +3239,14 @@ class XendDomainInfo: if not config.has_key('backend'): config['backend'] = "00000000-0000-0000-0000-000000000000" diff --git a/xend-core-dump-loc.diff b/xend-core-dump-loc.diff index 1878c2f..c2f3277 100644 --- a/xend-core-dump-loc.diff +++ b/xend-core-dump-loc.diff @@ -2,7 +2,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== --- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py -@@ -1859,7 +1859,7 @@ class XendDomainInfo: +@@ -1867,7 +1867,7 @@ class XendDomainInfo: try: if not corefile: this_time = time.strftime("%Y-%m%d-%H%M.%S", time.localtime()) diff --git a/xend-domain-lock.patch b/xend-domain-lock.patch index dcdb43d..d6b5c9c 100644 --- a/xend-domain-lock.patch +++ b/xend-domain-lock.patch @@ -170,9 +170,9 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py try: + self.acquire_running_lock(); self._constructDomain() - self._storeVmDetails() - self._createChannels() -@@ -2316,6 +2320,11 @@ class XendDomainInfo: + + try: +@@ -2331,6 +2335,11 @@ class XendDomainInfo: self._stateSet(DOM_STATE_HALTED) self.domid = None # Do not push into _stateSet()! @@ -184,7 +184,7 @@ Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py finally: self.refresh_shutdown_lock.release() -@@ -3537,6 +3546,74 @@ class XendDomainInfo: +@@ -3552,6 +3561,74 @@ class XendDomainInfo: def has_device(self, dev_class, dev_uuid): return (dev_uuid in self.info['%s_refs' % dev_class.lower()]) diff --git a/xmclone.sh b/xmclone.sh index 756b2af..3a51af4 100644 --- a/xmclone.sh +++ b/xmclone.sh @@ -23,7 +23,7 @@ # # Defaults # -VERSION=0.4.3 +VERSION=0.4.4 XEN_CONFIGS=/etc/xen/vm/ XEN_BASE=/var/lib/xen/images/ SOURCE= @@ -606,9 +606,42 @@ then # # Mount the newly copied image file # + loopdev='' + for dev in /dev/loop* + do + if [ ! -b "$dev" ] + then + continue + fi + + status=$(losetup "$dev" 2>/dev/null) || status='' + + if [ ! "$status" ] + then + status=$(losetup $dev "$DISKIMAGE") + if [ ! "$status" ] + then + kpartx -a $dev + loopdev=$dev + break + fi + fi + done + if [ ! "$loopdev" ] + then + echo "No loopback devices available." >&2 + exit 1 + fi + echo -n "Trying to mount partition $PART of $DISKIMAGE ... " - lomount -diskimage "$DISKIMAGE" -partition $PART "$tmpdir" \ - || continue + mapperdev=$(echo "$loopdev" | sed -e 's/dev\//dev\/mapper\//g')p$PART + status=$(mount -o rw $mapperdev "$tmpdir") + if [ "$status" ] + then + kpartx -d $loopdev + losetup -d $loopdev + continue + fi echo "succeeded." pushd "$tmpdir" > /dev/null @@ -629,6 +662,8 @@ then then echo "Unable to find ethernet file in image file" 2>&1 cd /tmp; umount "$tmpdir"; rmdir "$tmpdir" + kpartx -d $loopdev + losetup -d $loopdev exit 1 fi mv -f "$ETH0" ifcfg-eth-id-$MAC @@ -681,6 +716,8 @@ then then echo "Unable to change the HOSTNAME from $oldHOSTNAME to $HOSTNAME" >&2 cd /tmp; umount "$tmpdir"; rmdir "$tmpdir" + kpartx -d $loopdev + losetup -d $loopdev exit 1 fi FQDN=`cat HOSTNAME` @@ -699,6 +736,8 @@ then popd > /dev/null umount "$tmpdir" + kpartx -d $loopdev + losetup -d $loopdev done rmdir "$tmpdir"