97a0425e04
xen-4.5.1-testing-src.tar.bz2 - Dropped patches now contained in tarball 556c2cf2-x86-don-t-crash-mapping-a-page-using-EFI-rt-page-tables.patch 556d9718-efi-fix-allocation-problems-if-ExitBootServices-fails.patch 556eabf7-x86-apic-Disable-the-LAPIC-later-in-smp_send_stop.patch 556eac15-x86-crash-don-t-use-set_fixmap-in-the-crash-path.patch 55780aaa-efi-avoid-calling-boot-services-after-ExitBootServices.patch 55780aff-x86-EFI-fix-EFI_MEMORY_WP-handling.patch 55780b43-EFI-early-add-mapbs-to-map-EfiBootServices-Code-Data.patch 55780b97-EFI-support-default-attributes-to-map-Runtime-service-areas.patch - Replace 5124efbe-add-qxl-support.patch with the variant that finally made it upstream, 554cc211-libxl-add-qxl.patch - bsc#931627 - VUL-0: CVE-2015-4105: XSA-130: xen: Guest triggerable qemu MSI-X pass-through error messages qemu-MSI-X-latch-writes.patch - bsc#907514 - Bus fatal error & sles12 sudden reboot has been observed - bsc#910258 - SLES12 Xen host crashes with FATAL NMI after shutdown of guest with VT-d NIC - bsc#918984 - Bus fatal error & sles11-SP4 sudden reboot has been observed - bsc#923967 - Partner-L3: Bus fatal error & sles11-SP3 sudden reboot has been observed x86-MSI-X-teardown.patch x86-MSI-X-enable.patch x86-MSI-X-guest-mask.patch x86-MSI-X-maskall.patch qemu-MSI-X-enable-maskall.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=364
84 lines
3.8 KiB
Diff
84 lines
3.8 KiB
Diff
https://bugzilla.novell.com/show_bug.cgi?id=879425
|
|
---
|
|
tools/libxl/libxl.c | 2 ++
|
|
tools/libxl/libxl.h | 12 ++++++++++++
|
|
tools/libxl/libxlu_disk.c | 2 ++
|
|
tools/libxl/libxlu_disk_i.h | 2 +-
|
|
tools/libxl/libxlu_disk_l.l | 1 +
|
|
5 files changed, 18 insertions(+), 1 deletion(-)
|
|
|
|
Index: xen-4.5.1-testing/tools/libxl/libxl.c
|
|
===================================================================
|
|
--- xen-4.5.1-testing.orig/tools/libxl/libxl.c
|
|
+++ xen-4.5.1-testing/tools/libxl/libxl.c
|
|
@@ -2818,6 +2818,8 @@ static void device_disk_add(libxl__egc *
|
|
flexarray_append_pair(back, "discard-enable",
|
|
libxl_defbool_val(disk->discard_enable) ?
|
|
"1" : "0");
|
|
+ if ((disk->readwrite & ~LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MASK) == LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MAGIC)
|
|
+ flexarray_append_pair(back, "suse-diskcache-disable-flush", "1");
|
|
|
|
flexarray_append(front, "backend-id");
|
|
flexarray_append(front, libxl__sprintf(gc, "%d", disk->backend_domid));
|
|
Index: xen-4.5.1-testing/tools/libxl/libxl.h
|
|
===================================================================
|
|
--- xen-4.5.1-testing.orig/tools/libxl/libxl.h
|
|
+++ xen-4.5.1-testing/tools/libxl/libxl.h
|
|
@@ -163,6 +163,18 @@
|
|
#define LIBXL_HAVE_BUILDINFO_HVM_MMIO_HOLE_MEMKB 1
|
|
|
|
/*
|
|
+ * The libxl_device_disk has no way to indicate that cache=unsafe is
|
|
+ * supposed to be used. Provide this knob without breaking the ABI.
|
|
+ * This is done by overloading struct libxl_device_disk->readwrite:
|
|
+ * readwrite == 0: disk is readonly, no discard
|
|
+ * readwrite == 1: disk is readwrite, backend driver may enable discard
|
|
+ * readwrite == MAGIC: disk is readwrite, backend driver should ignore
|
|
+ * flush requests from the frontend driver.
|
|
+ */
|
|
+#define LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MAGIC 0x00006000U
|
|
+#define LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MASK 0xffff0fffU
|
|
+
|
|
+/*
|
|
* libxl ABI compatibility
|
|
*
|
|
* The only guarantee which libxl makes regarding ABI compatibility
|
|
Index: xen-4.5.1-testing/tools/libxl/libxlu_disk.c
|
|
===================================================================
|
|
--- xen-4.5.1-testing.orig/tools/libxl/libxlu_disk.c
|
|
+++ xen-4.5.1-testing/tools/libxl/libxlu_disk.c
|
|
@@ -79,6 +79,8 @@ int xlu_disk_parse(XLU_Config *cfg,
|
|
if (!disk->pdev_path || !strcmp(disk->pdev_path, ""))
|
|
disk->format = LIBXL_DISK_FORMAT_EMPTY;
|
|
}
|
|
+ if (disk->readwrite && dpc.suse_diskcache_disable_flush)
|
|
+ disk->readwrite = (disk->readwrite & LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MASK) | LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MAGIC;
|
|
|
|
if (!disk->vdev) {
|
|
xlu__disk_err(&dpc,0, "no vdev specified");
|
|
Index: xen-4.5.1-testing/tools/libxl/libxlu_disk_i.h
|
|
===================================================================
|
|
--- xen-4.5.1-testing.orig/tools/libxl/libxlu_disk_i.h
|
|
+++ xen-4.5.1-testing/tools/libxl/libxlu_disk_i.h
|
|
@@ -10,7 +10,7 @@ typedef struct {
|
|
void *scanner;
|
|
YY_BUFFER_STATE buf;
|
|
libxl_device_disk *disk;
|
|
- int access_set, had_depr_prefix;
|
|
+ int access_set, suse_diskcache_disable_flush, had_depr_prefix;
|
|
const char *spec;
|
|
} DiskParseContext;
|
|
|
|
Index: xen-4.5.1-testing/tools/libxl/libxlu_disk_l.l
|
|
===================================================================
|
|
--- xen-4.5.1-testing.orig/tools/libxl/libxlu_disk_l.l
|
|
+++ xen-4.5.1-testing/tools/libxl/libxlu_disk_l.l
|
|
@@ -176,6 +176,7 @@ script=[^,]*,? { STRIP(','); SAVESTRING(
|
|
direct-io-safe,? { DPC->disk->direct_io_safe = 1; }
|
|
discard,? { libxl_defbool_set(&DPC->disk->discard_enable, true); }
|
|
no-discard,? { libxl_defbool_set(&DPC->disk->discard_enable, false); }
|
|
+suse-diskcache-disable-flush,? { DPC->suse_diskcache_disable_flush = 1; }
|
|
|
|
/* the target magic parameter, eats the rest of the string */
|
|
|