From 86c3c4dd54f4fe1e4e6af6a7c1dfb081e30fdc405a4166248ef7f6d4c4ea7388 Mon Sep 17 00:00:00 2001 From: Charles Arnold Date: Tue, 3 Sep 2013 22:22:05 +0000 Subject: [PATCH] - bnc#837585 - xen* pkg update DISables `xencommons` and `xendomains` systemd services xen.spec - remove unneeded patch, autoload is handled by PCI device, without PCI device xen_platform_pci would not work anyway xen.sles11sp1.fate311487.xen_platform_pci.dmistring.patch - Update our xen-3.0.4 version of unplug code in qemu-trad add comments about the usage of the code rename handler function reenable handlers for writing/reading from emulated PCI device - Change unplugging of emulated devices in PVonHVM guests Since 3.0.4 xen-platform-pci.ko triggerd the unplug by writing to the PCI space of the emulated PCI device. 3.3 introduced an official unplug protocol. The option to unplug wit the official protocol is disabled per default. Remove our version and enable the unplug via official protocol OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=268 --- disable_emulated_device.patch | 49 ++++++++++++++----- xen.changes | 32 ++++++++++++ ...ate311487.xen_platform_pci.dmistring.patch | 40 --------------- xen.spec | 20 ++++---- xend-traditional-qemu.patch | 19 ++++--- 5 files changed, 91 insertions(+), 69 deletions(-) delete mode 100644 xen.sles11sp1.fate311487.xen_platform_pci.dmistring.patch diff --git a/disable_emulated_device.patch b/disable_emulated_device.patch index 486d61f..1fbb185 100644 --- a/disable_emulated_device.patch +++ b/disable_emulated_device.patch @@ -1,14 +1,39 @@ ---- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c -+++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c -@@ -419,6 +419,11 @@ static int __devinit platform_pci_init(s - platform_mmio = mmio_addr; - platform_mmiolen = mmio_len; +From: Olaf Hering +Subject: [PATCH v2] unmodified_drivers: enable unplug per default + +Since xen-3.3 an official unplug protocol for emulated hardware is +available in the toolstack. The pvops kernel does the unplug per +default, so it is safe to do it also in the drivers for forward ported +xenlinux. +Currently its required to load xen-platform-pci with the module +parameter dev_unplug=all, which is cumbersome. + +Signed-off-by: Olaf Hering +--- + unmodified_drivers/linux-2.6/platform-pci/platform-pci.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +Index: xen-4.3.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c +=================================================================== +--- xen-4.3.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c ++++ xen-4.3.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c +@@ -67,7 +67,7 @@ MODULE_LICENSE("GPL"); + static char *dev_unplug; + module_param(dev_unplug, charp, 0644); + MODULE_PARM_DESC(dev_unplug, "Emulated devices to unplug: " +- "[all,][ide-disks,][aux-ide-disks,][nics]\n"); ++ "[all,][ide-disks,][aux-ide-disks,][nics] (default is 'all')\n"); -+ /* -+ * Disconnect the emulated devices. -+ */ -+ outl(1, (ioaddr + 4)); + struct pci_dev *xen_platform_pdev; + +@@ -291,6 +291,10 @@ static int check_platform_magic(struct d + short magic, unplug = 0; + char protocol, *p, *q, *err; + ++ /* Unconditionally unplug everything */ ++ if (!dev_unplug) ++ unplug = UNPLUG_ALL; + - ret = init_hypercall_stubs(); - if (ret < 0) - goto out; + for (p = dev_unplug; p; p = q) { + q = strchr(dev_unplug, ','); + if (q) diff --git a/xen.changes b/xen.changes index 460d292..311ef2a 100644 --- a/xen.changes +++ b/xen.changes @@ -1,3 +1,35 @@ +------------------------------------------------------------------- +Tue Sep 3 16:23:16 MDT 2013 - carnold@suse.com + +- bnc#837585 - xen* pkg update DISables `xencommons` and + `xendomains` systemd services + xen.spec + +------------------------------------------------------------------- +Fri Aug 30 20:11:46 CEST 2013 - ohering@suse.de + +- remove unneeded patch, autoload is handled by PCI device, without + PCI device xen_platform_pci would not work anyway + xen.sles11sp1.fate311487.xen_platform_pci.dmistring.patch + +------------------------------------------------------------------- +Fri Aug 30 20:07:41 CEST 2013 - ohering@suse.de + +- Update our xen-3.0.4 version of unplug code in qemu-trad + add comments about the usage of the code + rename handler function + reenable handlers for writing/reading from emulated PCI device + +------------------------------------------------------------------- +Fri Aug 30 19:51:03 CEST 2013 - ohering@suse.de + +- Change unplugging of emulated devices in PVonHVM guests + Since 3.0.4 xen-platform-pci.ko triggerd the unplug by writing + to the PCI space of the emulated PCI device. 3.3 introduced an + official unplug protocol. The option to unplug wit the official + protocol is disabled per default. + Remove our version and enable the unplug via official protocol + ------------------------------------------------------------------- Fri Aug 30 08:11:55 MDT 2013 - carnold@suse.com diff --git a/xen.sles11sp1.fate311487.xen_platform_pci.dmistring.patch b/xen.sles11sp1.fate311487.xen_platform_pci.dmistring.patch deleted file mode 100644 index 75980f4..0000000 --- a/xen.sles11sp1.fate311487.xen_platform_pci.dmistring.patch +++ /dev/null @@ -1,40 +0,0 @@ -References: fate#311487 - -Provide a modalias entry in xen-plaform-pci.ko to allow early autoloading in -initrd based on /sys/class/dmi/id/modalias - -Signed-off-by: Olaf Hering - ---- - unmodified_drivers/linux-2.6/platform-pci/platform-pci.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - ---- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c -+++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -472,6 +473,18 @@ static struct pci_device_id platform_pci - - MODULE_DEVICE_TABLE(pci, platform_pci_tbl); - -+static const struct dmi_system_id platform_dmi_tbl[] = { -+ { -+ .ident = "Xen PV-on-HVM", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "Xen"), -+ DMI_MATCH(DMI_PRODUCT_NAME, "HVM domU"), -+ }, -+ }, -+ { }, -+}; -+MODULE_DEVICE_TABLE(dmi, platform_dmi_tbl); -+ - static struct pci_driver platform_driver = { - name: DRV_NAME, - probe: platform_pci_init, diff --git a/xen.spec b/xen.spec index 0ab0648..371b9ec 100644 --- a/xen.spec +++ b/xen.spec @@ -196,8 +196,8 @@ Source20000: xenalyze.hg.tar.bz2 Patch1: 51d277a3-x86-don-t-pass-negative-time-to-gtime_to_gtsc-try-2.patch Patch2: 51d27807-iommu-amd-Fix-logic-for-clearing-the-IOMMU-interrupt-bits.patch Patch3: 51d27841-iommu-amd-Workaround-for-erratum-787.patch -Patch4: 51daa074-Revert-hvmloader-always-include-HPET-table.patch -Patch5: 51d5334e-x86-mm-Ensure-useful-progress-in-alloc_l2_table.patch +Patch4: 51d5334e-x86-mm-Ensure-useful-progress-in-alloc_l2_table.patch +Patch5: 51daa074-Revert-hvmloader-always-include-HPET-table.patch Patch6: 51dd155c-adjust-x86-EFI-build.patch Patch7: 51e517e6-AMD-IOMMU-allocate-IRTEs.patch Patch8: 51e5183f-AMD-IOMMU-untie-remap-and-vector-maps.patch @@ -208,9 +208,9 @@ Patch12: 51e7963f-x86-time-Update-wallclock-in-shared-info-when-altering- Patch13: 51ffd577-fix-off-by-one-mistakes-in-vm_alloc.patch Patch14: 51ffd5fd-x86-refine-FPU-selector-handling-code-for-XSAVEOPT.patch Patch15: 520114bb-Nested-VMX-Flush-TLBs-and-Caches-if-paging-mode-changed.patch -Patch16: 520a5504-VMX-add-boot-parameter-to-enable-disable-APIC-v-dynamically.patch -Patch17: 520a24f6-x86-AMD-Fix-nested-svm-crash-due-to-assertion-in-__virt_to_maddr.patch -Patch18: 520a2570-x86-AMD-Inject-GP-instead-of-UD-when-unable-to-map-vmcb.patch +Patch16: 520a24f6-x86-AMD-Fix-nested-svm-crash-due-to-assertion-in-__virt_to_maddr.patch +Patch17: 520a2570-x86-AMD-Inject-GP-instead-of-UD-when-unable-to-map-vmcb.patch +Patch18: 520a5504-VMX-add-boot-parameter-to-enable-disable-APIC-v-dynamically.patch Patch19: 520b4b60-VT-d-protect-against-bogus-information-coming-from-BIOS.patch Patch20: 520b4bda-x86-MTRR-fix-range-check-in-mtrr_add_page.patch Patch21: 520cb8b6-x86-time-fix-check-for-negative-time-in-__update_vcpu_system_time.patch @@ -258,7 +258,6 @@ Patch503: x86-dom-print.patch Patch504: x86-extra-trap-info.patch Patch520: supported_module.patch Patch521: magic_ioport_compat.patch -Patch522: xen.sles11sp1.fate311487.xen_platform_pci.dmistring.patch Patch523: disable_emulated_device.patch # Legacy Xend and Qemu patches Patch800: xend-traditional-qemu.patch @@ -570,7 +569,6 @@ Authors %patch504 -p1 %patch520 -p1 %patch521 -p1 -%patch522 -p1 %patch523 -p1 %patch800 -p1 %patch99997 -p1 @@ -1220,9 +1218,11 @@ fi %preun tools %if %{?with_systemd}0 -/bin/systemctl disable xend.service -/bin/systemctl disable xencommons.service -/bin/systemctl disable xendomains.service +if [ $1 -eq 0 ]; then + /bin/systemctl disable xend.service + /bin/systemctl disable xencommons.service + /bin/systemctl disable xendomains.service +fi %else %{stop_on_removal xendomains xend xencommons} %endif diff --git a/xend-traditional-qemu.patch b/xend-traditional-qemu.patch index 14175ea..f0f53a0 100644 --- a/xend-traditional-qemu.patch +++ b/xend-traditional-qemu.patch @@ -4022,13 +4022,13 @@ Index: xen-4.3.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c #include #include -@@ -335,11 +337,66 @@ static void xen_platform_ioport_writeb(v +@@ -335,11 +337,71 @@ static void xen_platform_ioport_writeb(v } } +static uint32_t ioport_base; + -+static void platform_ioport_write(void *opaque, uint32_t addr, uint32_t val) ++static void suse_platform_ioport_write(void *opaque, uint32_t addr, uint32_t val) +{ + DECLARE_DOMCTL; + int rc; @@ -4038,6 +4038,7 @@ Index: xen-4.3.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c + + switch (addr - ioport_base) { + case 0: ++ /* FIXME Unknown who makes use of this code! */ + fprintf(logfile, "Init hypercall page %x, addr %x.\n", val, addr); + domctl.domain = (domid_t)domid; + domctl.u.hypercall_init.gmfn = val; @@ -4046,6 +4047,10 @@ Index: xen-4.3.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c + fprintf(logfile, "result -> %d.\n", rc); + break; + case 4: ++ /* xen-kmp used this since xen-3.0.4, instead the official protocol from xen-3.3+ ++ * pre vmdp 1.7 made use of 4 and 8 depending on how vmdp was configured. ++ * If vmdp was to control both disk and LAN it would use 4. ++ * If it controlled just disk or just LAN, it would use 8 below. */ + fprintf(logfile, "Disconnect IDE hard disk...\n"); + ide_unplug_harddisks(); + fprintf(logfile, "Disconnect SCSI hard disk...\n"); @@ -4070,8 +4075,8 @@ Index: xen-4.3.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c + } + break; + default: -+ fprintf(logfile, "Write to bad port %x (base %x) on evtchn device.\n", -+ addr, ioport_base); ++ fprintf(logfile, "Write %x to bad port %x (base %x) on evtchn device.\n", ++ val, addr, ioport_base); + break; + } +} @@ -4080,12 +4085,12 @@ Index: xen-4.3.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c { + ioport_base = addr; + -+ register_ioport_write(addr, 16, 4, platform_ioport_write, NULL); -+/* ++ register_ioport_write(addr, 16, 4, suse_platform_ioport_write, NULL); ++ PCIXenPlatformState *d = (PCIXenPlatformState *)pci_dev; register_ioport_write(addr, size, 1, xen_platform_ioport_writeb, d); register_ioport_read(addr, size, 1, xen_platform_ioport_readb, d); -+*/ ++ } static uint32_t platform_mmio_read(void *opaque, target_phys_addr_t addr)