Hello community,

here is the log from the commit of package xen for openSUSE:Factory checked in 
at 2015-12-18 21:53:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xen (Old)
 and      /work/SRC/openSUSE:Factory/.xen.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xen"

Changes:
--------
--- /work/SRC/openSUSE:Factory/xen/xen.changes  2015-11-02 12:54:43.000000000 
+0100
+++ /work/SRC/openSUSE:Factory/.xen.new/xen.changes     2015-12-18 
21:53:28.000000000 +0100
@@ -1,0 +2,176 @@
+Tue Nov 24 08:44:57 MST 2015 - carn...@suse.com
+
+- fate#315712: XEN: Use the PVOPS kernel
+  Turn off building the KMPs now that we are using the pvops kernel
+  xen.spec
+
+-------------------------------------------------------------------
+Thu Nov 19 11:18:03 MST 2015 - carn...@suse.com
+
+- Upstream patches from Jan
+  561bbc8b-VT-d-don-t-suppress-invalidation-address-write-when-it-is-zero.patch
+  561d20a0-x86-hide-MWAITX-from-PV-domains.patch
+  
561e3283-x86-NUMA-fix-SRAT-table-processor-entry-parsing-and-consumption.patch
+  5632118e-arm-Support-hypercall_create_continuation-for-multicall.patch
+  56321222-arm-rate-limit-logging-from-unimplemented-PHYSDEVOP-and-HVMOP.patch
+  
56321249-arm-handle-races-between-relinquish_memory-and-free_domheap_pages.patch
+  5632127b-x86-guard-against-undue-super-page-PTE-creation.patch
+  5632129c-free-domain-s-vcpu-array.patch (Replaces CVE-2015-7969-xsa149.patch)
+  563212c9-x86-PoD-Eager-sweep-for-zeroed-pages.patch
+  563212e4-xenoprof-free-domain-s-vcpu-array.patch
+  563212ff-x86-rate-limit-logging-in-do_xen-oprof-pmu-_op.patch
+  56323737-libxl-adjust-PoD-target-by-memory-fudge-too.patch
+  56377442-x86-PoD-Make-p2m_pod_empty_cache-restartable.patch
+  5641ceec-x86-HVM-always-intercept-AC-and-DB.patch (Replaces 
CVE-2015-5307-xsa156.patch)
+  5644b756-x86-HVM-don-t-inject-DB-with-error-code.patch 
+- Dropped 55b0a2db-x86-MSI-track-guest-masking.patch
+
+-------------------------------------------------------------------
+Thu Nov 19 07:47:47 UTC 2015 - oher...@suse.de
+
+- Use upstream variants of block-iscsi and block-nbd
+
+-------------------------------------------------------------------
+Thu Nov 19 07:38:06 UTC 2015 - oher...@suse.de
+
+- Remove xenalyze.hg, its part of xen-4.6
+
+-------------------------------------------------------------------
+Wed Nov 10 16:16:24 MDT 2015 - carn...@suse.com
+
+- Update to Xen Version 4.6.0
+  xen-4.6.0-testing-src.tar.bz2
+  mini-os.tar.bz2
+  blktap2-no-uninit.patch
+  stubdom-have-iovec.patch
+- Renamed
+  xsa149.patch to CVE-2015-7969-xsa149.patch
+- Dropped patches now contained in tarball or unnecessary
+  xen-4.5.2-testing-src.tar.bz2
+  54c2553c-grant-table-use-uint16_t-consistently-for-offset-and-length.patch
+  54ca33bc-grant-table-refactor-grant-copy-to-reduce-duplicate-code.patch
+  54ca340e-grant-table-defer-releasing-pages-acquired-in-a-grant-copy.patch
+  54f4985f-libxl-fix-libvirtd-double-free.patch
+  55103616-vm-assist-prepare-for-discontiguous-used-bit-numbers.patch
+  551ac326-xentop-add-support-for-qdisk.patch
+  552d0fd2-x86-hvm-don-t-include-asm-spinlock-h.patch
+  552d0fe8-x86-mtrr-include-asm-atomic.h.patch
+  552d293b-x86-vMSI-X-honor-all-mask-requests.patch
+  552d2966-x86-vMSI-X-add-valid-bits-for-read-acceleration.patch
+  5537a4d8-libxl-use-DEBUG-log-level-instead-of-INFO.patch
+  5548e903-domctl-don-t-truncate-XEN_DOMCTL_max_mem-requests.patch
+  5548e95d-x86-allow-to-suppress-M2P-user-mode-exposure.patch
+  554c7aee-x86-provide-arch_fetch_and_add.patch
+  554c7b00-arm-provide-arch_fetch_and_add.patch
+  554cc211-libxl-add-qxl.patch 55534b0a-x86-provide-add_sized.patch
+  55534b25-arm-provide-add_sized.patch
+  5555a4f8-use-ticket-locks-for-spin-locks.patch
+  5555a5b9-x86-arm-remove-asm-spinlock-h.patch
+  5555a8ec-introduce-non-contiguous-allocation.patch
+  556d973f-unmodified-drivers-tolerate-IRQF_DISABLED-being-undefined.patch
+  5576f143-x86-adjust-PV-I-O-emulation-functions-types.patch
+  55795a52-x86-vMSI-X-support-qword-MMIO-access.patch
+  557eb55f-gnttab-per-active-entry-locking.patch
+  557eb5b6-gnttab-introduce-maptrack-lock.patch
+  557eb620-gnttab-make-the-grant-table-lock-a-read-write-lock.patch
+  557ffab8-evtchn-factor-out-freeing-an-event-channel.patch
+  5582bf43-evtchn-simplify-port_is_valid.patch
+  5582bf81-evtchn-remove-the-locking-when-unmasking-an-event-channel.patch
+  5583d9c5-x86-MSI-X-cleanup.patch
+  5583da09-x86-MSI-track-host-and-guest-masking-separately.patch
+  5583da64-gnttab-use-per-VCPU-maptrack-free-lists.patch
+  5583da8c-gnttab-steal-maptrack-entries-from-other-VCPUs.patch
+  5587d711-evtchn-clear-xen_consumer-when-clearing-state.patch
+  
5587d779-evtchn-defer-freeing-struct-evtchn-s-until-evtchn_destroy_final.patch
+  5587d7b7-evtchn-use-a-per-event-channel-lock-for-sending-events.patch
+  5587d7e2-evtchn-pad-struct-evtchn-to-64-bytes.patch
+  55b0a218-x86-PCI-CFG-write-intercept.patch
+  55b0a255-x86-MSI-X-maskall.patch 55b0a283-x86-MSI-X-teardown.patch
+  55b0a2ab-x86-MSI-X-enable.patch blktapctrl-close-fifos.patch
+  blktapctrl-default-to-ioemu.patch blktapctrl-disable-debug-printf.patch
+  blktap-no-uninit.patch blktap-pv-cdrom.patch build-tapdisk-ioemu.patch
+  ioemu-bdrv-open-CACHE_WB.patch ioemu-blktap-barriers.patch
+  ioemu-blktap-fv-init.patch ioemu-blktap-image-format.patch
+  ioemu-blktap-zero-size.patch 
libxl.set-migration-constraints-from-cmdline.patch
+  local_attach_support_for_phy.patch pci-attach-fix.patch
+  qemu-xen-upstream-megasas-buildtime.patch tapdisk-ioemu-logfile.patch
+  tapdisk-ioemu-shutdown-fix.patch udev-rules.patch 
xen.build-compare.ipxe.patch
+  xen.build-compare.mini-os.patch xen.build-compare.smbiosdate.patch
+  xen.build-compare.vgabios.patch xen.build-compare.xen_compile_h.patch
+  xl-coredump-file-location.patch
+
+-------------------------------------------------------------------
+Thu Nov  5 07:42:08 MST 2015 - carn...@suse.com
+
+- bsc#954405 - VUL-0: CVE-2015-8104: Xen: guest to host DoS by
+  triggering an infinite loop in microcode via #DB exception
+- bsc#954018 - VUL-0: CVE-2015-5307: xen: x86: CPU lockup during
+  fault delivery (XSA-156)
+  CVE-2015-5307-xsa156.patch
+
+-------------------------------------------------------------------
+Wed Nov  4 10:33:59 MST 2015 - carn...@suse.com
+
+- Update to Xen 4.5.2
+  xen-4.5.2-testing-src.tar.bz2
+- Drop the following
+  xen-4.5.1-testing-src.tar.bz2
+  552d0f49-x86-traps-identify-the-vcpu-in-context-when-dumping-regs.patch
+  5576f178-kexec-add-more-pages-to-v1-environment.patch
+  55780be1-x86-EFI-adjust-EFI_MEMORY_WP-handling-for-spec-version-2.5.patch
+  558bfaa0-x86-traps-avoid-using-current-too-early.patch
+  5592a116-nested-EPT-fix-the-handling-of-nested-EPT.patch
+  559b9dd6-x86-p2m-ept-don-t-unmap-in-use-EPT-pagetable.patch
+  559bc633-x86-cpupool-clear-proper-cpu_valid-bit-on-CPU-teardown.patch
+  559bc64e-credit1-properly-deal-with-CPUs-not-in-any-pool.patch
+  559bc87f-x86-hvmloader-avoid-data-corruption-with-xenstore-rw.patch
+  559bdde5-pull-in-latest-linux-earlycpio.patch
+  55a62eb0-xl-correct-handling-of-extra_config-in-main_cpupoolcreate.patch
+  55a66a1e-make-rangeset_report_ranges-report-all-ranges.patch
+  55a77e4f-dmar-device-scope-mem-leak-fix.patch
+  55c1d83d-x86-gdt-Drop-write-only-xalloc-d-array.patch
+  55c3232b-x86-mm-Make-hap-shadow-teardown-preemptible.patch
+  55dc78e9-x86-amd_ucode-skip-updates-for-final-levels.patch
+  55df2f76-IOMMU-skip-domains-without-page-tables-when-dumping.patch
+  55e43fd8-x86-NUMA-fix-setup_node.patch
+  55e43ff8-x86-NUMA-don-t-account-hotplug-regions.patch
+  55e593f1-x86-NUMA-make-init_node_heap-respect-Xen-heap-limit.patch
+  55f2e438-x86-hvm-fix-saved-pmtimer-and-hpet-values.patch
+  55f9345b-x86-MSI-fail-if-no-hardware-support.patch
+  5604f2e6-vt-d-fix-IM-bit-mask-and-unmask-of-FECTL_REG.patch
+  560a4af9-x86-EPT-tighten-conditions-of-IOMMU-mapping-updates.patch
+  560a7c36-x86-p2m-pt-delay-freeing-of-intermediate-page-tables.patch
+  560a7c53-x86-p2m-pt-ignore-pt-share-flag-for-shadow-mode-guests.patch
+  560bd926-credit1-fix-tickling-when-it-happens-from-a-remote-pCPU.patch
+  560e6d34-x86-p2m-pt-tighten-conditions-of-IOMMU-mapping-updates.patch
+  561bbc8b-VT-d-don-t-suppress-invalidation-address-write-when-0.patch
+  561d20a0-x86-hide-MWAITX-from-PV-domains.patch
+  561e3283-x86-NUMA-fix-SRAT-table-processor-entry-handling.patch
+  563212c9-x86-PoD-Eager-sweep-for-zeroed-pages.patch
+  CVE-2015-4106-xsa131-9.patch CVE-2015-3259-xsa137.patch
+  CVE-2015-7311-xsa142.patch CVE-2015-7835-xsa148.patch
+  xsa139-qemuu.patch xsa140-qemuu-1.patch xsa140-qemuu-2.patch
+  xsa140-qemuu-3.patch xsa140-qemuu-4.patch xsa140-qemuu-5.patch
+  xsa140-qemuu-6.patch xsa140-qemuu-7.patch xsa140-qemut-1.patch
+  xsa140-qemut-2.patch xsa140-qemut-3.patch xsa140-qemut-4.patch
+  xsa140-qemut-5.patch xsa140-qemut-6.patch xsa140-qemut-7.patch
+  xsa151.patch xsa152.patch xsa153-libxl.patch
+  CVE-2015-5154-qemuu-check-array-bounds-before-writing-to-io_buffer.patch
+  CVE-2015-5154-qemuu-fix-START-STOP-UNIT-command-completion.patch
+  CVE-2015-5154-qemuu-clear-DRQ-after-handling-all-expected-accesses.patch
+  CVE-2015-5154-qemut-check-array-bounds-before-writing-to-io_buffer.patch
+  CVE-2015-5154-qemut-fix-START-STOP-UNIT-command-completion.patch
+  CVE-2015-5154-qemut-clear-DRQ-after-handling-all-expected-accesses.patch
+  CVE-2015-6815-qemuu-e1000-fix-infinite-loop.patch
+  CVE-2015-6815-qemut-e1000-fix-infinite-loop.patch
+  CVE-2015-5239-qemuu-limit-client_cut_text-msg-payload-size.patch
+  CVE-2015-5239-qemut-limit-client_cut_text-msg-payload-size.patch"
+
+-------------------------------------------------------------------
+Mon Nov  2 11:21:15 MST 2015 - carn...@suse.com
+
+- bsc#950704 - CVE-2015-7970 VUL-1: xen: x86: Long latency
+  populate-on-demand operation is not preemptible (XSA-150)
+  563212c9-x86-PoD-Eager-sweep-for-zeroed-pages.patch
+
+-------------------------------------------------------------------

Old:
----
  54c2553c-grant-table-use-uint16_t-consistently-for-offset-and-length.patch
  54ca33bc-grant-table-refactor-grant-copy-to-reduce-duplicate-code.patch
  54ca340e-grant-table-defer-releasing-pages-acquired-in-a-grant-copy.patch
  54f4985f-libxl-fix-libvirtd-double-free.patch
  55103616-vm-assist-prepare-for-discontiguous-used-bit-numbers.patch
  551ac326-xentop-add-support-for-qdisk.patch
  552d0f49-x86-traps-identify-the-vcpu-in-context-when-dumping-regs.patch
  552d0fd2-x86-hvm-don-t-include-asm-spinlock-h.patch
  552d0fe8-x86-mtrr-include-asm-atomic.h.patch
  552d293b-x86-vMSI-X-honor-all-mask-requests.patch
  552d2966-x86-vMSI-X-add-valid-bits-for-read-acceleration.patch
  5537a4d8-libxl-use-DEBUG-log-level-instead-of-INFO.patch
  5548e903-domctl-don-t-truncate-XEN_DOMCTL_max_mem-requests.patch
  5548e95d-x86-allow-to-suppress-M2P-user-mode-exposure.patch
  554c7aee-x86-provide-arch_fetch_and_add.patch
  554c7b00-arm-provide-arch_fetch_and_add.patch
  554cc211-libxl-add-qxl.patch
  55534b0a-x86-provide-add_sized.patch
  55534b25-arm-provide-add_sized.patch
  5555a4f8-use-ticket-locks-for-spin-locks.patch
  5555a5b9-x86-arm-remove-asm-spinlock-h.patch
  5555a8ec-introduce-non-contiguous-allocation.patch
  556d973f-unmodified-drivers-tolerate-IRQF_DISABLED-being-undefined.patch
  5576f143-x86-adjust-PV-I-O-emulation-functions-types.patch
  5576f178-kexec-add-more-pages-to-v1-environment.patch
  55780be1-x86-EFI-adjust-EFI_MEMORY_WP-handling-for-spec-version-2.5.patch
  55795a52-x86-vMSI-X-support-qword-MMIO-access.patch
  557eb55f-gnttab-per-active-entry-locking.patch
  557eb5b6-gnttab-introduce-maptrack-lock.patch
  557eb620-gnttab-make-the-grant-table-lock-a-read-write-lock.patch
  557ffab8-evtchn-factor-out-freeing-an-event-channel.patch
  5582bf43-evtchn-simplify-port_is_valid.patch
  5582bf81-evtchn-remove-the-locking-when-unmasking-an-event-channel.patch
  5583d9c5-x86-MSI-X-cleanup.patch
  5583da09-x86-MSI-track-host-and-guest-masking-separately.patch
  5583da64-gnttab-use-per-VCPU-maptrack-free-lists.patch
  5583da8c-gnttab-steal-maptrack-entries-from-other-VCPUs.patch
  5587d711-evtchn-clear-xen_consumer-when-clearing-state.patch
  5587d779-evtchn-defer-freeing-struct-evtchn-s-until-evtchn_destroy_final.patch
  5587d7b7-evtchn-use-a-per-event-channel-lock-for-sending-events.patch
  5587d7e2-evtchn-pad-struct-evtchn-to-64-bytes.patch
  558bfaa0-x86-traps-avoid-using-current-too-early.patch
  5592a116-nested-EPT-fix-the-handling-of-nested-EPT.patch
  559b9dd6-x86-p2m-ept-don-t-unmap-in-use-EPT-pagetable.patch
  559bc633-x86-cpupool-clear-proper-cpu_valid-bit-on-CPU-teardown.patch
  559bc64e-credit1-properly-deal-with-CPUs-not-in-any-pool.patch
  559bc87f-x86-hvmloader-avoid-data-corruption-with-xenstore-rw.patch
  559bdde5-pull-in-latest-linux-earlycpio.patch
  55a62eb0-xl-correct-handling-of-extra_config-in-main_cpupoolcreate.patch
  55a66a1e-make-rangeset_report_ranges-report-all-ranges.patch
  55a77e4f-dmar-device-scope-mem-leak-fix.patch
  55b0a218-x86-PCI-CFG-write-intercept.patch
  55b0a255-x86-MSI-X-maskall.patch
  55b0a283-x86-MSI-X-teardown.patch
  55b0a2ab-x86-MSI-X-enable.patch
  55b0a2db-x86-MSI-track-guest-masking.patch
  55c1d83d-x86-gdt-Drop-write-only-xalloc-d-array.patch
  55c3232b-x86-mm-Make-hap-shadow-teardown-preemptible.patch
  55dc78e9-x86-amd_ucode-skip-updates-for-final-levels.patch
  55df2f76-IOMMU-skip-domains-without-page-tables-when-dumping.patch
  55e43fd8-x86-NUMA-fix-setup_node.patch
  55e43ff8-x86-NUMA-don-t-account-hotplug-regions.patch
  55e593f1-x86-NUMA-make-init_node_heap-respect-Xen-heap-limit.patch
  55f2e438-x86-hvm-fix-saved-pmtimer-and-hpet-values.patch
  55f9345b-x86-MSI-fail-if-no-hardware-support.patch
  5604f2e6-vt-d-fix-IM-bit-mask-and-unmask-of-FECTL_REG.patch
  560a4af9-x86-EPT-tighten-conditions-of-IOMMU-mapping-updates.patch
  560a7c36-x86-p2m-pt-delay-freeing-of-intermediate-page-tables.patch
  560a7c53-x86-p2m-pt-ignore-pt-share-flag-for-shadow-mode-guests.patch
  560bd926-credit1-fix-tickling-when-it-happens-from-a-remote-pCPU.patch
  560e6d34-x86-p2m-pt-tighten-conditions-of-IOMMU-mapping-updates.patch
  561bbc8b-VT-d-don-t-suppress-invalidation-address-write-when-0.patch
  561e3283-x86-NUMA-fix-SRAT-table-processor-entry-handling.patch
  CVE-2015-3259-xsa137.patch
  CVE-2015-4106-xsa131-9.patch
  CVE-2015-5154-qemut-check-array-bounds-before-writing-to-io_buffer.patch
  CVE-2015-5154-qemut-clear-DRQ-after-handling-all-expected-accesses.patch
  CVE-2015-5154-qemut-fix-START-STOP-UNIT-command-completion.patch
  CVE-2015-5154-qemuu-check-array-bounds-before-writing-to-io_buffer.patch
  CVE-2015-5154-qemuu-clear-DRQ-after-handling-all-expected-accesses.patch
  CVE-2015-5154-qemuu-fix-START-STOP-UNIT-command-completion.patch
  CVE-2015-5239-qemut-limit-client_cut_text-msg-payload-size.patch
  CVE-2015-5239-qemuu-limit-client_cut_text-msg-payload-size.patch
  CVE-2015-6815-qemut-e1000-fix-infinite-loop.patch
  CVE-2015-6815-qemuu-e1000-fix-infinite-loop.patch
  CVE-2015-7311-xsa142.patch
  CVE-2015-7835-xsa148.patch
  blktap-no-uninit.patch
  blktap-pv-cdrom.patch
  blktapctrl-close-fifos.patch
  blktapctrl-default-to-ioemu.patch
  blktapctrl-disable-debug-printf.patch
  block-iscsi
  block-nbd
  build-tapdisk-ioemu.patch
  ioemu-bdrv-open-CACHE_WB.patch
  ioemu-blktap-barriers.patch
  ioemu-blktap-fv-init.patch
  ioemu-blktap-image-format.patch
  ioemu-blktap-zero-size.patch
  libxl.set-migration-constraints-from-cmdline.patch
  local_attach_support_for_phy.patch
  pci-attach-fix.patch
  qemu-xen-upstream-megasas-buildtime.patch
  tapdisk-ioemu-logfile.patch
  tapdisk-ioemu-shutdown-fix.patch
  udev-rules.patch
  xen-4.5.1-testing-src.tar.bz2
  xen.build-compare.ipxe.patch
  xen.build-compare.mini-os.patch
  xen.build-compare.smbiosdate.patch
  xen.build-compare.vgabios.patch
  xen.build-compare.xen_compile_h.patch
  xenalyze.hg.tar.bz2
  xl-coredump-file-location.patch
  xsa139-qemuu.patch
  xsa140-qemut-1.patch
  xsa140-qemut-2.patch
  xsa140-qemut-3.patch
  xsa140-qemut-4.patch
  xsa140-qemut-5.patch
  xsa140-qemut-6.patch
  xsa140-qemut-7.patch
  xsa140-qemuu-1.patch
  xsa140-qemuu-2.patch
  xsa140-qemuu-3.patch
  xsa140-qemuu-4.patch
  xsa140-qemuu-5.patch
  xsa140-qemuu-6.patch
  xsa140-qemuu-7.patch
  xsa149.patch
  xsa151.patch
  xsa152.patch
  xsa153-libxl.patch

New:
----
  561bbc8b-VT-d-don-t-suppress-invalidation-address-write-when-it-is-zero.patch
  561e3283-x86-NUMA-fix-SRAT-table-processor-entry-parsing-and-consumption.patch
  5632118e-arm-Support-hypercall_create_continuation-for-multicall.patch
  56321222-arm-rate-limit-logging-from-unimplemented-PHYSDEVOP-and-HVMOP.patch
  
56321249-arm-handle-races-between-relinquish_memory-and-free_domheap_pages.patch
  5632127b-x86-guard-against-undue-super-page-PTE-creation.patch
  5632129c-free-domain-s-vcpu-array.patch
  563212c9-x86-PoD-Eager-sweep-for-zeroed-pages.patch
  563212e4-xenoprof-free-domain-s-vcpu-array.patch
  563212ff-x86-rate-limit-logging-in-do_xen-oprof-pmu-_op.patch
  56323737-libxl-adjust-PoD-target-by-memory-fudge-too.patch
  56377442-x86-PoD-Make-p2m_pod_empty_cache-restartable.patch
  5641ceec-x86-HVM-always-intercept-AC-and-DB.patch
  5644b756-x86-HVM-don-t-inject-DB-with-error-code.patch
  blktap2-no-uninit.patch
  mini-os.tar.bz2
  stubdom-have-iovec.patch
  xen-4.6.0-testing-src.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xen.spec ++++++
++++ 699 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/xen/xen.spec
++++ and /work/SRC/openSUSE:Factory/.xen.new/xen.spec

++++++ 5604f239-x86-PV-properly-populate-descriptor-tables.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:34.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:34.000000000 +0100
@@ -34,9 +34,11 @@
 Tested-by: David Vrabel <david.vra...@citrix.com>
 Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>
 
---- a/xen/arch/x86/mm.c
-+++ b/xen/arch/x86/mm.c
-@@ -505,12 +505,12 @@ void update_cr3(struct vcpu *v)
+Index: xen-4.6.0-testing/xen/arch/x86/mm.c
+===================================================================
+--- xen-4.6.0-testing.orig/xen/arch/x86/mm.c
++++ xen-4.6.0-testing/xen/arch/x86/mm.c
+@@ -502,12 +502,12 @@ void update_cr3(struct vcpu *v)
      make_cr3(v, cr3_mfn);
  }
  
@@ -51,7 +53,7 @@
      struct page_info *page;
  
      BUG_ON(unlikely(in_irq()));
-@@ -525,10 +525,10 @@ static void invalidate_shadow_ldt(struct
+@@ -522,10 +522,10 @@ static void invalidate_shadow_ldt(struct
  
      for ( i = 16; i < 32; i++ )
      {
@@ -65,7 +67,7 @@
          ASSERT_PAGE_IS_TYPE(page, PGT_seg_desc_page);
          ASSERT_PAGE_IS_DOMAIN(page, v->domain);
          put_page_and_type(page);
-@@ -4360,16 +4360,18 @@ long do_update_va_mapping_otherdomain(un
+@@ -4420,16 +4420,18 @@ long do_update_va_mapping_otherdomain(un
  void destroy_gdt(struct vcpu *v)
  {
      l1_pgentry_t *pl1e;
@@ -88,7 +90,7 @@
          v->arch.pv_vcpu.gdt_frames[i] = 0;
      }
  }
-@@ -4382,7 +4384,7 @@ long set_gdt(struct vcpu *v,
+@@ -4442,7 +4444,7 @@ long set_gdt(struct vcpu *v,
      struct domain *d = v->domain;
      l1_pgentry_t *pl1e;
      /* NB. There are 512 8-byte entries per GDT page. */

++++++ 
561bbc8b-VT-d-don-t-suppress-invalidation-address-write-when-it-is-zero.patch 
++++++
# Commit 710942e57fb42ff8f344ca82f6b678f67e38ae63
# Date 2015-10-12 15:58:35 +0200
# Author Jan Beulich <jbeul...@suse.com>
# Committer Jan Beulich <jbeul...@suse.com>
VT-d: don't suppress invalidation address write when it is zero

GFN zero is a valid address, and hence may need invalidation done for
it just like for any other GFN.

Signed-off-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>
Acked-by: Yang Zhang <yang.z.zh...@intel.com>

--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -414,7 +414,7 @@ static int flush_iotlb_reg(void *_iommu,
 {
     struct iommu *iommu = (struct iommu *) _iommu;
     int tlb_offset = ecap_iotlb_offset(iommu->ecap);
-    u64 val = 0, val_iva = 0;
+    u64 val = 0;
     unsigned long flags;
 
     /*
@@ -435,7 +435,6 @@ static int flush_iotlb_reg(void *_iommu,
     switch ( type )
     {
     case DMA_TLB_GLOBAL_FLUSH:
-        /* global flush doesn't need set IVA_REG */
         val = DMA_TLB_GLOBAL_FLUSH|DMA_TLB_IVT;
         break;
     case DMA_TLB_DSI_FLUSH:
@@ -443,8 +442,6 @@ static int flush_iotlb_reg(void *_iommu,
         break;
     case DMA_TLB_PSI_FLUSH:
         val = DMA_TLB_PSI_FLUSH|DMA_TLB_IVT|DMA_TLB_DID(did);
-        /* Note: always flush non-leaf currently */
-        val_iva = size_order | addr;
         break;
     default:
         BUG();
@@ -457,8 +454,11 @@ static int flush_iotlb_reg(void *_iommu,
 
     spin_lock_irqsave(&iommu->register_lock, flags);
     /* Note: Only uses first TLB reg currently */
-    if ( val_iva )
-        dmar_writeq(iommu->reg, tlb_offset, val_iva);
+    if ( type == DMA_TLB_PSI_FLUSH )
+    {
+        /* Note: always flush non-leaf currently. */
+        dmar_writeq(iommu->reg, tlb_offset, size_order | addr);
+    }
     dmar_writeq(iommu->reg, tlb_offset + 8, val);
 
     /* Make sure hardware complete it */
++++++ 561d2046-VT-d-use-proper-error-codes-in-iommu_enable_x2apic_IR.patch 
++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:34.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:34.000000000 +0100
@@ -17,9 +17,11 @@
 Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>
 Acked-by: Yang Zhang <yang.z.zh...@intel.com>
 
---- a/xen/arch/x86/apic.c
-+++ b/xen/arch/x86/apic.c
-@@ -946,8 +946,18 @@ void __init x2apic_bsp_setup(void)
+Index: xen-4.6.0-testing/xen/arch/x86/apic.c
+===================================================================
+--- xen-4.6.0-testing.orig/xen/arch/x86/apic.c
++++ xen-4.6.0-testing/xen/arch/x86/apic.c
+@@ -943,8 +943,18 @@ void __init x2apic_bsp_setup(void)
      mask_8259A();
      mask_IO_APIC_setup(ioapic_entries);
  
@@ -39,9 +41,11 @@
          if ( x2apic_enabled )
              panic("Interrupt remapping could not be enabled while "
                    "x2APIC is already enabled by BIOS");
---- a/xen/drivers/passthrough/vtd/intremap.c
-+++ b/xen/drivers/passthrough/vtd/intremap.c
-@@ -144,10 +144,10 @@ static void set_hpet_source_id(unsigned
+Index: xen-4.6.0-testing/xen/drivers/passthrough/vtd/intremap.c
+===================================================================
+--- xen-4.6.0-testing.orig/xen/drivers/passthrough/vtd/intremap.c
++++ xen-4.6.0-testing/xen/drivers/passthrough/vtd/intremap.c
+@@ -143,10 +143,10 @@ static void set_hpet_source_id(unsigned
      set_ire_sid(ire, SVT_VERIFY_SID_SQ, SQ_13_IGNORE_3, hpetid_to_bdf(id));
  }
  
@@ -54,7 +58,7 @@
  
      if ( !iommu_qinval || !iommu_intremap || list_empty(&acpi_drhd_units) )
          return 0;
-@@ -155,12 +155,12 @@ int iommu_supports_eim(void)
+@@ -154,12 +154,12 @@ int iommu_supports_eim(void)
      /* We MUST have a DRHD unit for each IOAPIC. */
      for ( apic = 0; apic < nr_ioapics; apic++ )
          if ( !ioapic_to_drhd(IO_APIC_ID(apic)) )
@@ -69,7 +73,7 @@
  
      for_each_drhd_unit ( drhd )
          if ( !ecap_queued_inval(drhd->iommu->ecap) ||
-@@ -834,10 +834,10 @@ int iommu_enable_x2apic_IR(void)
+@@ -833,10 +833,10 @@ int iommu_enable_x2apic_IR(void)
      struct iommu *iommu;
  
      if ( !iommu_supports_eim() )
@@ -82,7 +86,7 @@
  
      for_each_drhd_unit ( drhd )
      {
-@@ -862,7 +862,7 @@ int iommu_enable_x2apic_IR(void)
+@@ -861,7 +861,7 @@ int iommu_enable_x2apic_IR(void)
          {
              dprintk(XENLOG_INFO VTDPREFIX,
                      "Failed to enable Queued Invalidation!\n");
@@ -91,7 +95,7 @@
          }
      }
  
-@@ -874,7 +874,7 @@ int iommu_enable_x2apic_IR(void)
+@@ -873,7 +873,7 @@ int iommu_enable_x2apic_IR(void)
          {
              dprintk(XENLOG_INFO VTDPREFIX,
                      "Failed to enable Interrupt Remapping!\n");
@@ -100,9 +104,11 @@
          }
      }
  
---- a/xen/include/asm-x86/iommu.h
-+++ b/xen/include/asm-x86/iommu.h
-@@ -28,7 +28,7 @@ int iommu_setup_hpet_msi(struct msi_desc
+Index: xen-4.6.0-testing/xen/include/asm-x86/iommu.h
+===================================================================
+--- xen-4.6.0-testing.orig/xen/include/asm-x86/iommu.h
++++ xen-4.6.0-testing/xen/include/asm-x86/iommu.h
+@@ -27,7 +27,7 @@ int iommu_setup_hpet_msi(struct msi_desc
  /* While VT-d specific, this must get declared in a generic header. */
  int adjust_vtd_irq_affinities(void);
  void iommu_pte_flush(struct domain *d, u64 gfn, u64 *pte, int order, int 
present);

++++++ 561d20a0-x86-hide-MWAITX-from-PV-domains.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:34.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:34.000000000 +0100
@@ -12,17 +12,17 @@
 
 --- a/xen/arch/x86/traps.c
 +++ b/xen/arch/x86/traps.c
-@@ -904,6 +904,7 @@ void pv_cpuid(struct cpu_user_regs *regs
+@@ -967,6 +967,7 @@ void pv_cpuid(struct cpu_user_regs *regs
          __clear_bit(X86_FEATURE_LWP % 32, &c);
          __clear_bit(X86_FEATURE_NODEID_MSR % 32, &c);
          __clear_bit(X86_FEATURE_TOPOEXT % 32, &c);
 +        __clear_bit(X86_FEATURE_MWAITX % 32, &c);
          break;
  
-     case 0x00000005: /* MONITOR/MWAIT */
+     case 0x0000000a: /* Architectural Performance Monitor Features (Intel) */
 --- a/xen/include/asm-x86/cpufeature.h
 +++ b/xen/include/asm-x86/cpufeature.h
-@@ -137,6 +137,7 @@
+@@ -135,6 +135,7 @@
  #define X86_FEATURE_TBM         (6*32+21) /* trailing bit manipulations */
  #define X86_FEATURE_TOPOEXT     (6*32+22) /* topology extensions CPUID leafs 
*/
  #define X86_FEATURE_DBEXT       (6*32+26) /* data breakpoint extension */

++++++ 
561e3283-x86-NUMA-fix-SRAT-table-processor-entry-parsing-and-consumption.patch 
++++++
# Commit 83281fc9b31396e94c0bfb6550b75c165037a0ad
# Date 2015-10-14 12:46:27 +0200
# Author Jan Beulich <jbeul...@suse.com>
# Committer Jan Beulich <jbeul...@suse.com>
x86/NUMA: fix SRAT table processor entry parsing and consumption

- don't overrun apicid_to_node[] (possible in the x2APIC case)
- don't limit number of processor related SRAT entries we can consume
- make acpi_numa_{processor,x2apic}_affinity_init() as similar to one
  another as possible
- print APIC IDs in hex (to ease matching with other log messages), at
  once making legacy and x2APIC ones distinguishable (by width)

Signed-off-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>

--- a/xen/arch/x86/numa.c
+++ b/xen/arch/x86/numa.c
@@ -349,7 +349,7 @@ void __init init_cpu_to_node(void)
         u32 apicid = x86_cpu_to_apicid[i];
         if ( apicid == BAD_APICID )
             continue;
-        node = apicid_to_node[apicid];
+        node = apicid < MAX_LOCAL_APIC ? apicid_to_node[apicid] : NUMA_NO_NODE;
         if ( node == NUMA_NO_NODE || !node_online(node) )
             node = 0;
         numa_set_node(i, node);
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -200,7 +200,7 @@ void __devinit srat_detect_node(int cpu)
     nodeid_t node;
     u32 apicid = x86_cpu_to_apicid[cpu];
 
-    node = apicid_to_node[apicid];
+    node = apicid < MAX_LOCAL_APIC ? apicid_to_node[apicid] : NUMA_NO_NODE;
     if ( node == NUMA_NO_NODE )
         node = 0;
 
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -993,7 +993,8 @@ int cpu_add(uint32_t apic_id, uint32_t a
             cpu = node;
             goto out;
         }
-        apicid_to_node[apic_id] = node;
+        if ( apic_id < MAX_LOCAL_APIC )
+             apicid_to_node[apic_id] = node;
     }
 
     /* Physically added CPUs do not have synchronised TSC. */
--- a/xen/arch/x86/srat.c
+++ b/xen/arch/x86/srat.c
@@ -209,7 +209,6 @@ acpi_numa_x2apic_affinity_init(struct ac
 {
        unsigned pxm;
        nodeid_t node;
-       u32 apic_id;
 
        if (srat_disabled())
                return;
@@ -217,8 +216,13 @@ acpi_numa_x2apic_affinity_init(struct ac
                bad_srat();
                return;
        }
-       if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
+       if (!(pa->flags & ACPI_SRAT_CPU_ENABLED))
+               return;
+       if (pa->apic_id >= MAX_LOCAL_APIC) {
+               printk(KERN_INFO "SRAT: APIC %08x ignored\n", pa->apic_id);
                return;
+       }
+
        pxm = pa->proximity_domain;
        node = setup_node(pxm);
        if (node == NUMA_NO_NODE) {
@@ -226,11 +230,11 @@ acpi_numa_x2apic_affinity_init(struct ac
                return;
        }
 
-       apic_id = pa->apic_id;
-       apicid_to_node[apic_id] = node;
+       apicid_to_node[pa->apic_id] = node;
+       node_set(node, processor_nodes_parsed);
        acpi_numa = 1;
-       printk(KERN_INFO "SRAT: PXM %u -> APIC %u -> Node %u\n",
-              pxm, apic_id, node);
+       printk(KERN_INFO "SRAT: PXM %u -> APIC %08x -> Node %u\n",
+              pxm, pa->apic_id, node);
 }
 
 /* Callback for Proximity Domain -> LAPIC mapping */
@@ -262,7 +266,7 @@ acpi_numa_processor_affinity_init(struct
        apicid_to_node[pa->apic_id] = node;
        node_set(node, processor_nodes_parsed);
        acpi_numa = 1;
-       printk(KERN_INFO "SRAT: PXM %u -> APIC %u -> Node %u\n",
+       printk(KERN_INFO "SRAT: PXM %u -> APIC %02x -> Node %u\n",
               pxm, pa->apic_id, node);
 }
 
--- a/xen/drivers/acpi/numa.c
+++ b/xen/drivers/acpi/numa.c
@@ -198,9 +198,9 @@ int __init acpi_numa_init(void)
        /* SRAT: Static Resource Affinity Table */
        if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) {
                acpi_table_parse_srat(ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY,
-                                     acpi_parse_x2apic_affinity, NR_CPUS);
+                                     acpi_parse_x2apic_affinity, 0);
                acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY,
-                                     acpi_parse_processor_affinity, NR_CPUS);
+                                     acpi_parse_processor_affinity, 0);
                acpi_table_parse_srat(ACPI_SRAT_TYPE_MEMORY_AFFINITY,
                                      acpi_parse_memory_affinity,
                                      NR_NODE_MEMBLKS);
++++++ 5632118e-arm-Support-hypercall_create_continuation-for-multicall.patch 
++++++
# Commit 29bcf64ce8bc0b1b7aacd00c8668f255c4f0686c
# Date 2015-10-29 13:31:10 +0100
# Author Julien Grall <julien.gr...@citrix.com>
# Committer Jan Beulich <jbeul...@suse.com>
arm: Support hypercall_create_continuation for multicall

Multicall for ARM has been supported since commit f0dbdc6 "xen: arm: fully
implement multicall interface.". Although, if an hypercall in multicall
requires preemption, it will crash the host:

(XEN) Xen BUG at domain.c:347
(XEN) ----[ Xen-4.7-unstable  arm64  debug=y  Tainted:    C ]----
[...]
(XEN) Xen call trace:
(XEN)    [<00000000002420cc>] hypercall_create_continuation+0x64/0x380 (PC)
(XEN)    [<0000000000217274>] do_memory_op+0x1b00/0x2334 (LR)
(XEN)    [<0000000000250d2c>] do_multicall_call+0x114/0x124
(XEN)    [<0000000000217ff0>] do_multicall+0x17c/0x23c
(XEN)    [<000000000024f97c>] do_trap_hypercall+0x90/0x12c
(XEN)    [<0000000000251ca8>] do_trap_hypervisor+0xd2c/0x1ba4
(XEN)    [<00000000002582cc>] guest_sync+0x88/0xb8
(XEN)
(XEN)
(XEN) ****************************************
(XEN) Panic on CPU 5:
(XEN) Xen BUG at domain.c:347
(XEN) ****************************************
(XEN)
(XEN) Manual reset required ('noreboot' specified)

Looking to the code, the support of multicall looks valid to me, as we only
need to fill call.args[...]. So drop the BUG();

This is CVE-2015-7812 / XSA-145.

Signed-off-by: Julien Grall <julien.gr...@citrix.com>
Acked-by: Ian Campbell <ian.campb...@citrix.com>

--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -344,8 +344,6 @@ unsigned long hypercall_create_continuat
 
     if ( test_bit(_MCSF_in_multicall, &mcs->flags) )
     {
-        BUG(); /* XXX multicalls not implemented yet. */
-
         __set_bit(_MCSF_call_preempted, &mcs->flags);
 
         for ( i = 0; *p != '\0'; i++ )
++++++ 
56321222-arm-rate-limit-logging-from-unimplemented-PHYSDEVOP-and-HVMOP.patch 
++++++
# Commit 1c0e59ff15764e7b0c59282365974f5b8924ce83
# Date 2015-10-29 13:33:38 +0100
# Author Ian Campbell <ian.campb...@citrix.com>
# Committer Jan Beulich <jbeul...@suse.com>
arm: rate-limit logging from unimplemented PHYSDEVOP and HVMOP.

These are guest accessible and should therefore be rate-limited.
Moreover, include them only in debug builds.

This is CVE-2015-7813 / XSA-146.

Signed-off-by: Ian Campbell <ian.campb...@citrix.com>
Reviewed-by: Jan Beulich <jbeul...@suse.com>

--- a/xen/arch/arm/hvm.c
+++ b/xen/arch/arm/hvm.c
@@ -57,7 +57,7 @@ long do_hvm_op(unsigned long op, XEN_GUE
 
     default:
     {
-        printk("%s: Bad HVM op %ld.\n", __func__, op);
+        gdprintk(XENLOG_DEBUG, "HVMOP op=%lu: not implemented\n", op);
         rc = -ENOSYS;
         break;
     }
--- a/xen/arch/arm/physdev.c
+++ b/xen/arch/arm/physdev.c
@@ -8,12 +8,13 @@
 #include <xen/types.h>
 #include <xen/lib.h>
 #include <xen/errno.h>
+#include <xen/sched.h>
 #include <asm/hypercall.h>
 
 
 int do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
 {
-    printk("%s %d cmd=%d: not implemented yet\n", __func__, __LINE__, cmd);
+    gdprintk(XENLOG_DEBUG, "PHYSDEVOP cmd=%d: not implemented\n", cmd);
     return -ENOSYS;
 }
 
++++++ 
56321249-arm-handle-races-between-relinquish_memory-and-free_domheap_pages.patch
 ++++++
# Commit 1ef01396fdff88b1c3331a09ca5c69619b90f4ea
# Date 2015-10-29 13:34:17 +0100
# Author Ian Campbell <ian.campb...@citrix.com>
# Committer Jan Beulich <jbeul...@suse.com>
arm: handle races between relinquish_memory and free_domheap_pages

Primarily this means XENMEM_decrease_reservation from a toolstack
domain.

Unlike x86 we have no requirement right now to queue such pages onto
a separate list, if we hit this race then the other code has already
fully accepted responsibility for freeing this page and therefore
there is no more for relinquish_memory to do.

This is CVE-2015-7814 / XSA-147.

Signed-off-by: Ian Campbell <ian.campb...@citrix.com>
Reviewed-by: Julien Grall <julien.gr...@citrix.com>
Reviewed-by: Jan Beulich <jbeul...@suse.com>

--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -768,8 +768,15 @@ static int relinquish_memory(struct doma
     {
         /* Grab a reference to the page so it won't disappear from under us. */
         if ( unlikely(!get_page(page, d)) )
-            /* Couldn't get a reference -- someone is freeing this page. */
-            BUG();
+            /*
+             * Couldn't get a reference -- someone is freeing this page and
+             * has already committed to doing so, so no more to do here.
+             *
+             * Note that the page must be left on the list, a list_del
+             * here will clash with the list_del done by the other
+             * party in the race and corrupt the list head.
+             */
+            continue;
 
         if ( test_and_clear_bit(_PGC_allocated, &page->count_info) )
             put_page(page);
++++++ 5632127b-x86-guard-against-undue-super-page-PTE-creation.patch ++++++
# Commit fe360c90ea13f309ef78810f1a2b92f2ae3b30b8
# Date 2015-10-29 13:35:07 +0100
# Author Jan Beulich <jbeul...@suse.com>
# Committer Jan Beulich <jbeul...@suse.com>
x86: guard against undue super page PTE creation

When optional super page support got added (commit bd1cd81d64 "x86: PV
support for hugepages"), two adjustments were missed: mod_l2_entry()
needs to consider the PSE and RW bits when deciding whether to use the
fast path, and the PSE bit must not be removed from L2_DISALLOW_MASK
unconditionally.

This is CVE-2015-7835 / XSA-148.

Reported-by: "栾尚聪(好风)" <shangcong....@alibaba-inc.com>
Signed-off-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: Tim Deegan <t...@xen.org>

--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -160,7 +160,10 @@ static void put_superpage(unsigned long
 static uint32_t base_disallow_mask;
 /* Global bit is allowed to be set on L1 PTEs. Intended for user mappings. */
 #define L1_DISALLOW_MASK ((base_disallow_mask | _PAGE_GNTTAB) & ~_PAGE_GLOBAL)
-#define L2_DISALLOW_MASK (base_disallow_mask & ~_PAGE_PSE)
+
+#define L2_DISALLOW_MASK (unlikely(opt_allow_superpage) \
+                          ? base_disallow_mask & ~_PAGE_PSE \
+                          : base_disallow_mask)
 
 #define l3_disallow_mask(d) (!is_pv_32bit_domain(d) ? \
                              base_disallow_mask : 0xFFFFF198U)
@@ -1839,7 +1842,10 @@ static int mod_l2_entry(l2_pgentry_t *pl
         }
 
         /* Fast path for identical mapping and presence. */
-        if ( !l2e_has_changed(ol2e, nl2e, _PAGE_PRESENT) )
+        if ( !l2e_has_changed(ol2e, nl2e,
+                              unlikely(opt_allow_superpage)
+                              ? _PAGE_PSE | _PAGE_RW | _PAGE_PRESENT
+                              : _PAGE_PRESENT) )
         {
             adjust_guest_l2e(nl2e, d);
             if ( UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, pfn, vcpu, preserve_ad) )
++++++ 5632129c-free-domain-s-vcpu-array.patch ++++++
# Commit d46896ebbb23f3a9fef2eb6066ae614fd1acfd96
# Date 2015-10-29 13:35:40 +0100
# Author Jan Beulich <jbeul...@suse.com>
# Committer Jan Beulich <jbeul...@suse.com>
free domain's vcpu array

This was overlooked in fb442e2171 ("x86_64: allow more vCPU-s per
guest").

This is CVE-2015-7969 / XSA-149.

Reported-by: Ian Campbell <ian.campb...@citrix.com>
Signed-off-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: Ian Campbell <ian.campb...@citrix.com>

--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -833,6 +833,7 @@ static void complete_domain_destroy(stru
 
     xsm_free_security_domain(d);
     free_cpumask_var(d->domain_dirty_cpumask);
+    xfree(d->vcpu);
     free_domain_struct(d);
 
     send_global_virq(VIRQ_DOM_EXC);
++++++ 563212c9-x86-PoD-Eager-sweep-for-zeroed-pages.patch ++++++
# Commit 101ce53266866144e724ed593173bc4098b300b9
# Date 2015-10-29 13:36:25 +0100
# Author Andrew Cooper <andrew.coop...@citrix.com>
# Committer Jan Beulich <jbeul...@suse.com>
x86/PoD: Eager sweep for zeroed pages

Based on the contents of a guests physical address space,
p2m_pod_emergency_sweep() could degrade into a linear memcmp() from 0 to
max_gfn, which runs non-preemptibly.

As p2m_pod_emergency_sweep() runs behind the scenes in a number of contexts,
making it preemptible is not feasible.

Instead, a different approach is taken.  Recently-populated pages are eagerly
checked for reclaimation, which amortises the p2m_pod_emergency_sweep()
operation across each p2m_pod_demand_populate() operation.

Note that in the case that a 2M superpage can't be reclaimed as a superpage,
it is shattered if 4K pages of zeros can be reclaimed.  This is unfortunate
but matches the previous behaviour, and is required to avoid regressions
(domain crash from PoD exhaustion) with VMs configured close to the limit.

This is CVE-2015-7970 / XSA-150.

Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com>
Reviewed-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: George Dunlap <george.dun...@citrix.com>

--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -901,28 +901,6 @@ p2m_pod_zero_check(struct p2m_domain *p2
 }
 
 #define POD_SWEEP_LIMIT 1024
-
-/* When populating a new superpage, look at recently populated superpages
- * hoping that they've been zeroed.  This will snap up zeroed pages as soon as 
- * the guest OS is done with them. */
-static void
-p2m_pod_check_last_super(struct p2m_domain *p2m, unsigned long gfn_aligned)
-{
-    unsigned long check_gfn;
-
-    ASSERT(p2m->pod.last_populated_index < POD_HISTORY_MAX);
-
-    check_gfn = p2m->pod.last_populated[p2m->pod.last_populated_index];
-
-    p2m->pod.last_populated[p2m->pod.last_populated_index] = gfn_aligned;
-
-    p2m->pod.last_populated_index =
-        ( p2m->pod.last_populated_index + 1 ) % POD_HISTORY_MAX;
-
-    p2m_pod_zero_check_superpage(p2m, check_gfn);
-}
-
-
 #define POD_SWEEP_STRIDE  16
 static void
 p2m_pod_emergency_sweep(struct p2m_domain *p2m)
@@ -963,7 +941,7 @@ p2m_pod_emergency_sweep(struct p2m_domai
          * NB that this is a zero-sum game; we're increasing our cache size
          * by re-increasing our 'debt'.  Since we hold the pod lock,
          * (entry_count - count) must remain the same. */
-        if ( p2m->pod.count > 0 && i < limit )
+        if ( i < limit && (p2m->pod.count > 0 || hypercall_preempt_check()) )
             break;
     }
 
@@ -975,6 +953,58 @@ p2m_pod_emergency_sweep(struct p2m_domai
 
 }
 
+static void pod_eager_reclaim(struct p2m_domain *p2m)
+{
+    struct pod_mrp_list *mrp = &p2m->pod.mrp;
+    unsigned int i = 0;
+
+    /*
+     * Always check one page for reclaimation.
+     *
+     * If the PoD pool is empty, keep checking some space is found, or all
+     * entries have been exhaused.
+     */
+    do
+    {
+        unsigned int idx = (mrp->idx + i++) % ARRAY_SIZE(mrp->list);
+        unsigned long gfn = mrp->list[idx];
+
+        if ( gfn != INVALID_GFN )
+        {
+            if ( gfn & POD_LAST_SUPERPAGE )
+            {
+                gfn &= ~POD_LAST_SUPERPAGE;
+
+                if ( p2m_pod_zero_check_superpage(p2m, gfn) == 0 )
+                {
+                    unsigned int x;
+
+                    for ( x = 0; x < SUPERPAGE_PAGES; ++x, ++gfn )
+                        p2m_pod_zero_check(p2m, &gfn, 1);
+                }
+            }
+            else
+                p2m_pod_zero_check(p2m, &gfn, 1);
+
+            mrp->list[idx] = INVALID_GFN;
+        }
+
+    } while ( (p2m->pod.count == 0) && (i < ARRAY_SIZE(mrp->list)) );
+}
+
+static void pod_eager_record(struct p2m_domain *p2m,
+                             unsigned long gfn, unsigned int order)
+{
+    struct pod_mrp_list *mrp = &p2m->pod.mrp;
+
+    ASSERT(mrp->list[mrp->idx] == INVALID_GFN);
+    ASSERT(gfn != INVALID_GFN);
+
+    mrp->list[mrp->idx++] =
+        gfn | (order == PAGE_ORDER_2M ? POD_LAST_SUPERPAGE : 0);
+    mrp->idx %= ARRAY_SIZE(mrp->list);
+}
+
 int
 p2m_pod_demand_populate(struct p2m_domain *p2m, unsigned long gfn,
                         unsigned int order,
@@ -1015,6 +1045,8 @@ p2m_pod_demand_populate(struct p2m_domai
         return 0;
     }
 
+    pod_eager_reclaim(p2m);
+
     /* Only sweep if we're actually out of memory.  Doing anything else
      * causes unnecessary time and fragmentation of superpages in the p2m. */
     if ( p2m->pod.count == 0 )
@@ -1051,6 +1083,8 @@ p2m_pod_demand_populate(struct p2m_domai
     p2m->pod.entry_count -= (1 << order);
     BUG_ON(p2m->pod.entry_count < 0);
 
+    pod_eager_record(p2m, gfn_aligned, order);
+
     if ( tb_init_done )
     {
         struct {
@@ -1066,12 +1100,6 @@ p2m_pod_demand_populate(struct p2m_domai
         __trace_var(TRC_MEM_POD_POPULATE, 0, sizeof(t), &t);
     }
 
-    /* Check the last guest demand-populate */
-    if ( p2m->pod.entry_count > p2m->pod.count 
-         && (order == PAGE_ORDER_2M)
-         && (q & P2M_ALLOC) )
-        p2m_pod_check_last_super(p2m, gfn_aligned);
-
     pod_unlock(p2m);
     return 0;
 out_of_memory:
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -60,6 +60,7 @@ boolean_param("hap_2mb", opt_hap_2mb);
 /* Init the datastructures for later use by the p2m code */
 static int p2m_initialise(struct domain *d, struct p2m_domain *p2m)
 {
+    unsigned int i;
     int ret = 0;
 
     mm_rwlock_init(&p2m->lock);
@@ -75,6 +76,9 @@ static int p2m_initialise(struct domain
 
     p2m->np2m_base = P2M_BASE_EADDR;
 
+    for ( i = 0; i < ARRAY_SIZE(p2m->pod.mrp.list); ++i )
+        p2m->pod.mrp.list[i] = INVALID_GFN;
+
     if ( hap_enabled(d) && cpu_has_vmx )
         ret = ept_p2m_init(p2m);
     else
--- a/xen/include/asm-x86/p2m.h
+++ b/xen/include/asm-x86/p2m.h
@@ -292,10 +292,20 @@ struct p2m_domain {
                          entry_count;  /* # of pages in p2m marked pod      */
         unsigned long    reclaim_single; /* Last gpfn of a scan */
         unsigned long    max_guest;    /* gpfn of max guest demand-populate */
-#define POD_HISTORY_MAX 128
-        /* gpfn of last guest superpage demand-populated */
-        unsigned long    last_populated[POD_HISTORY_MAX]; 
-        unsigned int     last_populated_index;
+
+        /*
+         * Tracking of the most recently populated PoD pages, for eager
+         * reclamation.
+         */
+        struct pod_mrp_list {
+#define NR_POD_MRP_ENTRIES 32
+
+/* Encode ORDER_2M superpage in top bit of GFN */
+#define POD_LAST_SUPERPAGE (INVALID_GFN & ~(INVALID_GFN >> 1))
+
+            unsigned long list[NR_POD_MRP_ENTRIES];
+            unsigned int idx;
+        } mrp;
         mm_lock_t        lock;         /* Locking of private pod structs,   *
                                         * not relying on the p2m lock.      */
     } pod;
++++++ 563212e4-xenoprof-free-domain-s-vcpu-array.patch ++++++
# Commit 6e97c4b37386c2d09e09e9b5d5d232e37728b960
# Date 2015-10-29 13:36:52 +0100
# Author Jan Beulich <jbeul...@suse.com>
# Committer Jan Beulich <jbeul...@suse.com>
xenoprof: free domain's vcpu array

This was overlooked in fb442e2171 ("x86_64: allow more vCPU-s per
guest").

This is CVE-2015-7969 / XSA-151.

Signed-off-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: Ian Campbell <ian.campb...@citrix.com>

--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -239,6 +239,7 @@ static int alloc_xenoprof_struct(
     d->xenoprof->rawbuf = alloc_xenheap_pages(get_order_from_pages(npages), 0);
     if ( d->xenoprof->rawbuf == NULL )
     {
+        xfree(d->xenoprof->vcpu);
         xfree(d->xenoprof);
         d->xenoprof = NULL;
         return -ENOMEM;
@@ -286,6 +287,7 @@ void free_xenoprof_pages(struct domain *
         free_xenheap_pages(x->rawbuf, order);
     }
 
+    xfree(x->vcpu);
     xfree(x);
     d->xenoprof = NULL;
 }
++++++ 563212ff-x86-rate-limit-logging-in-do_xen-oprof-pmu-_op.patch ++++++
# Commit 95e7415843b94c346e5ba8682665f508f220e04b
# Date 2015-10-29 13:37:19 +0100
# Author Jan Beulich <jbeul...@suse.com>
# Committer Jan Beulich <jbeul...@suse.com>
x86: rate-limit logging in do_xen{oprof,pmu}_op()

Some of the sub-ops are acessible to all guests, and hence should be
rate-limited. In the xenoprof case, just like for XSA-146, include them
only in debug builds. Since the vPMU code is rather new, allow them to
be always present, but downgrade them to (rate limited) guest messages.

This is CVE-2015-7971 / XSA-152.

Signed-off-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: Ian Campbell <ian.campb...@citrix.com>

--- a/xen/arch/x86/cpu/vpmu.c
+++ b/xen/arch/x86/cpu/vpmu.c
@@ -682,8 +682,8 @@ long do_xenpmu_op(unsigned int op, XEN_G
             vpmu_mode = pmu_params.val;
         else if ( vpmu_mode != pmu_params.val )
         {
-            printk(XENLOG_WARNING
-                   "VPMU: Cannot change mode while active VPMUs exist\n");
+            gprintk(XENLOG_WARNING,
+                    "VPMU: Cannot change mode while active VPMUs exist\n");
             ret = -EBUSY;
         }
 
@@ -714,8 +714,8 @@ long do_xenpmu_op(unsigned int op, XEN_G
             vpmu_features = pmu_params.val;
         else
         {
-            printk(XENLOG_WARNING "VPMU: Cannot change features while"
-                                  " active VPMUs exist\n");
+            gprintk(XENLOG_WARNING,
+                    "VPMU: Cannot change features while active VPMUs exist\n");
             ret = -EBUSY;
         }
 
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -676,15 +676,13 @@ ret_t do_xenoprof_op(int op, XEN_GUEST_H
     
     if ( (op < 0) || (op > XENOPROF_last_op) )
     {
-        printk("xenoprof: invalid operation %d for domain %d\n",
-               op, current->domain->domain_id);
+        gdprintk(XENLOG_DEBUG, "invalid operation %d\n", op);
         return -EINVAL;
     }
 
     if ( !NONPRIV_OP(op) && (current->domain != xenoprof_primary_profiler) )
     {
-        printk("xenoprof: dom %d denied privileged operation %d\n",
-               current->domain->domain_id, op);
+        gdprintk(XENLOG_DEBUG, "denied privileged operation %d\n", op);
         return -EPERM;
     }
 
@@ -907,8 +905,7 @@ ret_t do_xenoprof_op(int op, XEN_GUEST_H
     spin_unlock(&xenoprof_lock);
 
     if ( ret < 0 )
-        printk("xenoprof: operation %d failed for dom %d (status : %d)\n",
-               op, current->domain->domain_id, ret);
+        gdprintk(XENLOG_DEBUG, "operation %d failed: %d\n", op, ret);
 
     return ret;
 }
++++++ 56323737-libxl-adjust-PoD-target-by-memory-fudge-too.patch ++++++
# Commit e294a0c3af9f4443dc692b180fb1771b1cb075e8
# Date 2015-10-29 15:11:51 +0000
# Author Ian Jackson <ian.jack...@eu.citrix.com>
# Committer Ian Jackson <ian.jack...@eu.citrix.com>
libxl: adjust PoD target by memory fudge, too

PoD guests need to balloon at least as far as required by PoD, or risk
crashing.  Currently they don't necessarily know what the right value
is, because our memory accounting is (at the very least) confusing.

Apply the memory limit fudge factor to the in-hypervisor PoD memory
target, too.  This will increase the size of the guest's PoD cache by
the fudge factor LIBXL_MAXMEM_CONSTANT (currently 1Mby).  This ensures
that even with a slightly-off balloon driver, the guest will be
stable even under memory pressure.

There are two call sites of xc_domain_set_pod_target that need fixing:

The one in libxl_set_memory_target is straightforward.

The one in xc_hvm_build_x86.c:setup_guest is more awkward.  Simply
setting the PoD target differently does not work because the various
amounts of memory during domain construction no longer match up.
Instead, we adjust the guest memory target in xenstore (but only for
PoD guests).

This introduces a 1Mby discrepancy between the balloon target of a PoD
guest at boot, and the target set by an apparently-equivalent `xl
mem-set' (or similar) later.  This approach is low-risk for a security
fix but we need to fix this up properly in xen.git#staging and
probably also in stable trees.

This is XSA-153.

Signed-off-by: Ian Jackson <ian.jack...@eu.citrix.com>
(cherry picked from commit 56fb5fd62320eb40a7517206f9706aa9188d6f7b)

--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -4815,7 +4815,7 @@ retry_transaction:
     }
 
     rc = xc_domain_set_pod_target(ctx->xch, domid,
-            new_target_memkb / 4, NULL, NULL, NULL);
+            (new_target_memkb + LIBXL_MAXMEM_CONSTANT) / 4, NULL, NULL, NULL);
     if (rc != 0) {
         LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR,
                 "xc_domain_set_pod_target domid=%d, memkb=%d "
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -486,6 +486,7 @@ int libxl__build_post(libxl__gc *gc, uin
     xs_transaction_t t;
     char **ents;
     int i, rc;
+    int64_t mem_target_fudge;
 
     if (info->num_vnuma_nodes && !info->num_vcpu_soft_affinity) {
         rc = set_vnuma_affinity(gc, domid, info);
@@ -518,11 +519,17 @@ int libxl__build_post(libxl__gc *gc, uin
         }
     }
 
+    mem_target_fudge =
+        (info->type == LIBXL_DOMAIN_TYPE_HVM &&
+         info->max_memkb > info->target_memkb)
+        ? LIBXL_MAXMEM_CONSTANT : 0;
+
     ents = libxl__calloc(gc, 12 + (info->max_vcpus * 2) + 2, sizeof(char *));
     ents[0] = "memory/static-max";
     ents[1] = GCSPRINTF("%"PRId64, info->max_memkb);
     ents[2] = "memory/target";
-    ents[3] = GCSPRINTF("%"PRId64, info->target_memkb - info->video_memkb);
+    ents[3] = GCSPRINTF("%"PRId64, info->target_memkb - info->video_memkb
+                        - mem_target_fudge);
     ents[4] = "memory/videoram";
     ents[5] = GCSPRINTF("%"PRId64, info->video_memkb);
     ents[6] = "domid";
++++++ 56377442-x86-PoD-Make-p2m_pod_empty_cache-restartable.patch ++++++
# Commit 59a5061723ba47c0028cf48487e5de551c42a378
# Date 2015-11-02 15:33:38 +0100
# Author Andrew Cooper <andrew.coop...@citrix.com>
# Committer Jan Beulich <jbeul...@suse.com>
x86/PoD: Make p2m_pod_empty_cache() restartable

This avoids a long running operation when destroying a domain with a
large PoD cache.

Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com>
Reviewed-by: George Dunlap <george.dun...@citrix.com>

--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -375,11 +375,11 @@ out:
     return ret;
 }
 
-void
-p2m_pod_empty_cache(struct domain *d)
+int p2m_pod_empty_cache(struct domain *d)
 {
     struct p2m_domain *p2m = p2m_get_hostp2m(d);
     struct page_info *page;
+    unsigned int i;
 
     /* After this barrier no new PoD activities can happen. */
     BUG_ON(!d->is_dying);
@@ -389,8 +389,6 @@ p2m_pod_empty_cache(struct domain *d)
 
     while ( (page = page_list_remove_head(&p2m->pod.super)) )
     {
-        int i;
-            
         for ( i = 0 ; i < SUPERPAGE_PAGES ; i++ )
         {
             BUG_ON(page_get_owner(page + i) != d);
@@ -398,19 +396,27 @@ p2m_pod_empty_cache(struct domain *d)
         }
 
         p2m->pod.count -= SUPERPAGE_PAGES;
+
+        if ( hypercall_preempt_check() )
+            goto out;
     }
 
-    while ( (page = page_list_remove_head(&p2m->pod.single)) )
+    for ( i = 0; (page = page_list_remove_head(&p2m->pod.single)); ++i )
     {
         BUG_ON(page_get_owner(page) != d);
         page_list_add_tail(page, &d->page_list);
 
         p2m->pod.count -= 1;
+
+        if ( i && !(i & 511) && hypercall_preempt_check() )
+            goto out;
     }
 
     BUG_ON(p2m->pod.count != 0);
 
+ out:
     unlock_page_alloc(p2m);
+    return p2m->pod.count ? -ERESTART : 0;
 }
 
 int
--- a/xen/arch/x86/mm/paging.c
+++ b/xen/arch/x86/mm/paging.c
@@ -815,7 +815,7 @@ int paging_teardown(struct domain *d)
         return rc;
 
     /* Move populate-on-demand cache back to domain_list for destruction */
-    p2m_pod_empty_cache(d);
+    rc = p2m_pod_empty_cache(d);
 
     return rc;
 }
--- a/xen/include/asm-x86/p2m.h
+++ b/xen/include/asm-x86/p2m.h
@@ -588,7 +588,7 @@ void p2m_pod_dump_data(struct domain *d)
 
 /* Move all pages from the populate-on-demand cache to the domain page_list
  * (usually in preparation for domain destruction) */
-void p2m_pod_empty_cache(struct domain *d);
+int p2m_pod_empty_cache(struct domain *d);
 
 /* Set populate-on-demand cache size so that the total memory allocated to a
  * domain matches target */
++++++ 5641ceec-x86-HVM-always-intercept-AC-and-DB.patch ++++++
# Commit bd2239d9fa975a1ee5bcd27c218ae042cd0a57bc
# Date 2015-11-10 12:03:08 +0100
# Author Jan Beulich <jbeul...@suse.com>
# Committer Jan Beulich <jbeul...@suse.com>
x86/HVM: always intercept #AC and #DB

Both being benign exceptions, and both being possible to get triggered
by exception delivery, this is required to prevent a guest from locking
up a CPU (resulting from no other VM exits occurring once getting into
such a loop).

The specific scenarios:

1) #AC may be raised during exception delivery if the handler is set to
be a ring-3 one by a 32-bit guest, and the stack is misaligned.

This is CVE-2015-5307 / XSA-156.

Reported-by: Benjamin Serebrin <sereb...@google.com>

2) #DB may be raised during exception delivery when a breakpoint got
placed on a data structure involved in delivering the exception. This
can result in an endless loop when a 64-bit guest uses a non-zero IST
for the vector 1 IDT entry, but even without use of IST the time it
takes until a contributory fault would get raised (results depending
on the handler) may be quite long.

This is CVE-2015-8104 / XSA-156.

Signed-off-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>
Tested-by: Andrew Cooper <andrew.coop...@citrix.com>

--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -1043,10 +1043,11 @@ static void noreturn svm_do_resume(struc
         unlikely(v->arch.hvm_vcpu.debug_state_latch != debug_state) )
     {
         uint32_t intercepts = vmcb_get_exception_intercepts(vmcb);
-        uint32_t mask = (1U << TRAP_debug) | (1U << TRAP_int3);
+
         v->arch.hvm_vcpu.debug_state_latch = debug_state;
         vmcb_set_exception_intercepts(
-            vmcb, debug_state ? (intercepts | mask) : (intercepts & ~mask));
+            vmcb, debug_state ? (intercepts | (1U << TRAP_int3))
+                              : (intercepts & ~(1U << TRAP_int3)));
     }
 
     if ( v->arch.hvm_svm.launch_core != smp_processor_id() )
@@ -2434,8 +2435,9 @@ void svm_vmexit_handler(struct cpu_user_
 
     case VMEXIT_EXCEPTION_DB:
         if ( !v->domain->debugger_attached )
-            goto unexpected_exit_type;
-        domain_pause_for_debugger();
+            hvm_inject_hw_exception(TRAP_debug, HVM_DELIVER_NO_ERROR_CODE);
+        else
+            domain_pause_for_debugger();
         break;
 
     case VMEXIT_EXCEPTION_BP:
@@ -2483,6 +2485,11 @@ void svm_vmexit_handler(struct cpu_user_
         break;
     }
 
+    case VMEXIT_EXCEPTION_AC:
+        HVMTRACE_1D(TRAP, TRAP_alignment_check);
+        hvm_inject_hw_exception(TRAP_alignment_check, vmcb->exitinfo1);
+        break;
+
     case VMEXIT_EXCEPTION_UD:
         svm_vmexit_ud_intercept(regs);
         break;
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -1224,16 +1224,10 @@ static void vmx_update_host_cr3(struct v
 
 void vmx_update_debug_state(struct vcpu *v)
 {
-    unsigned long mask;
-
-    mask = 1u << TRAP_int3;
-    if ( !cpu_has_monitor_trap_flag )
-        mask |= 1u << TRAP_debug;
-
     if ( v->arch.hvm_vcpu.debug_state_latch )
-        v->arch.hvm_vmx.exception_bitmap |= mask;
+        v->arch.hvm_vmx.exception_bitmap |= 1U << TRAP_int3;
     else
-        v->arch.hvm_vmx.exception_bitmap &= ~mask;
+        v->arch.hvm_vmx.exception_bitmap &= ~(1U << TRAP_int3);
 
     vmx_vmcs_enter(v);
     vmx_update_exception_bitmap(v);
@@ -3041,9 +3035,10 @@ void vmx_vmexit_handler(struct cpu_user_
             __vmread(EXIT_QUALIFICATION, &exit_qualification);
             HVMTRACE_1D(TRAP_DEBUG, exit_qualification);
             write_debugreg(6, exit_qualification | DR_STATUS_RESERVED_ONE);
-            if ( !v->domain->debugger_attached || cpu_has_monitor_trap_flag )
-                goto exit_and_crash;
-            domain_pause_for_debugger();
+            if ( !v->domain->debugger_attached )
+                hvm_inject_hw_exception(vector, HVM_DELIVER_NO_ERROR_CODE);
+            else
+                domain_pause_for_debugger();
             break;
         case TRAP_int3: 
         {
@@ -3108,6 +3103,11 @@ void vmx_vmexit_handler(struct cpu_user_
 
             hvm_inject_page_fault(regs->error_code, exit_qualification);
             break;
+        case TRAP_alignment_check:
+            HVMTRACE_1D(TRAP, vector);
+            __vmread(VM_EXIT_INTR_ERROR_CODE, &ecode);
+            hvm_inject_hw_exception(vector, ecode);
+            break;
         case TRAP_nmi:
             if ( MASK_EXTR(intr_info, INTR_INFO_INTR_TYPE_MASK) !=
                  X86_EVENTTYPE_NMI )
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -384,7 +384,10 @@ static inline int hvm_event_pending(stru
     (X86_CR4_VMXE | X86_CR4_PAE | X86_CR4_MCE))
 
 /* These exceptions must always be intercepted. */
-#define HVM_TRAP_MASK ((1U << TRAP_machine_check) | (1U << TRAP_invalid_op))
+#define HVM_TRAP_MASK ((1U << TRAP_debug)           | \
+                       (1U << TRAP_invalid_op)      | \
+                       (1U << TRAP_alignment_check) | \
+                       (1U << TRAP_machine_check))
 
 /*
  * x86 event types. This enumeration is valid for:
++++++ 5644b756-x86-HVM-don-t-inject-DB-with-error-code.patch ++++++
# Commit 057e0e72d2a5d598087c5f167ec6a13203a3cf65
# Date 2015-11-12 16:59:18 +0100
# Author Jan Beulich <jbeul...@suse.com>
# Committer Jan Beulich <jbeul...@suse.com>
x86/HVM: don't inject #DB with error code

Signed-off-by: Jan Beulich <jbeul...@suse.com>
Reviewed-by: Andrew Cooper <andrew.coo...@citrix.com>

--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4071,7 +4071,7 @@ void hvm_task_switch(
         goto out;
 
     if ( (tss.trace & 1) && !exn_raised )
-        hvm_inject_hw_exception(TRAP_debug, tss_sel & 0xfff8);
+        hvm_inject_hw_exception(TRAP_debug, HVM_DELIVER_NO_ERROR_CODE);
 
     tr.attr.fields.type = 0xb; /* busy 32-bit tss */
     hvm_set_segment_register(v, x86_seg_tr, &tr);
++++++ CVE-2014-0222-qemuu-qcow1-validate-l2-table-size.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:34.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:34.000000000 +0100
@@ -21,11 +21,11 @@
 Signed-off-by: Kevin Wolf <kw...@redhat.com>
 Reviewed-by: Benoit Canet <ben...@irqsave.net>
 
-Index: xen-4.5.1-testing/tools/qemu-xen-dir-remote/block/qcow.c
+Index: xen-4.6.0-testing/tools/qemu-xen-dir-remote/block/qcow.c
 ===================================================================
---- xen-4.5.1-testing.orig/tools/qemu-xen-dir-remote/block/qcow.c
-+++ xen-4.5.1-testing/tools/qemu-xen-dir-remote/block/qcow.c
-@@ -147,6 +147,14 @@ static int qcow_open(BlockDriverState *b
+--- xen-4.6.0-testing.orig/tools/qemu-xen-dir-remote/block/qcow.c
++++ xen-4.6.0-testing/tools/qemu-xen-dir-remote/block/qcow.c
+@@ -148,6 +148,14 @@ static int qcow_open(BlockDriverState *b
          goto fail;
      }
  

++++++ VNC-Support-for-ExtendedKeyEvent-client-message.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:34.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:34.000000000 +0100
@@ -20,10 +20,10 @@
  vnc.c |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
  1 files changed, 50 insertions(+), 9 deletions(-)
 
-Index: xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/vnc.c
+Index: xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/vnc.c
 ===================================================================
---- xen-4.2.0-testing.orig/tools/qemu-xen-traditional-dir-remote/vnc.c
-+++ xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/vnc.c
+--- xen-4.6.0-testing.orig/tools/qemu-xen-traditional-dir-remote/vnc.c
++++ xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/vnc.c
 @@ -1285,35 +1285,22 @@ static void press_key_altgr_down(VncStat
      }
  }
@@ -115,7 +115,7 @@
          case 0x574D5669:
              vs->has_WMVi = 1;
        default:
-@@ -1774,6 +1791,24 @@ static int protocol_client_msg(VncState
+@@ -1780,6 +1797,24 @@ static int protocol_client_msg(VncState
  
        client_cut_text(vs, read_u32(data, 4), (char *)(data + 8));
        break;
@@ -140,7 +140,7 @@
      default:
        printf("Msg: %d\n", data[0]);
        vnc_client_error(vs);
-@@ -2445,10 +2480,11 @@ void vnc_display_init(DisplayState *ds)
+@@ -2451,10 +2486,11 @@ void vnc_display_init(DisplayState *ds)
  
      vs->ds = ds;
  

++++++ aarch64-rename-PSR_MODE_ELxx-to-match-linux-headers.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:34.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:34.000000000 +0100
@@ -10,11 +10,11 @@
  xen/include/public/arch-arm.h | 14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
-diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
-index 7496556..95f2a7c 100644
---- a/xen/include/public/arch-arm.h
-+++ b/xen/include/public/arch-arm.h
-@@ -342,13 +342,13 @@ typedef uint64_t xen_callback_t;
+Index: xen-4.6.0-testing/xen/include/public/arch-arm.h
+===================================================================
+--- xen-4.6.0-testing.orig/xen/include/public/arch-arm.h
++++ xen-4.6.0-testing/xen/include/public/arch-arm.h
+@@ -365,13 +365,13 @@ typedef uint64_t xen_callback_t;
  
  /* 64 bit modes */
  #define PSR_MODE_BIT  0x10 /* Set iff AArch32 */

++++++ bdrv_open2_flags_2.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:34.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:34.000000000 +0100
@@ -1,24 +1,3 @@
-Index: xen-4.5.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_blktap.c
-===================================================================
---- 
xen-4.5.0-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/xen_blktap.c
-+++ xen-4.5.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_blktap.c
-@@ -225,6 +225,7 @@ static int open_disk(struct td_state *s,
-       BlockDriver* drv;
-       char* devname;
-       static int devnumber = 0;
-+      int flags = readonly ? BDRV_O_RDONLY : BDRV_O_RDWR;
-       int i;
- 
-       DPRINTF("Opening %s as blktap%d\n", path, devnumber);
-@@ -247,7 +248,7 @@ static int open_disk(struct td_state *s,
-       DPRINTF("%s driver specified\n", drv ? drv->format_name : "No");
- 
-       /* Open the image */
--      if (bdrv_open2(bs, path, 0, drv) != 0) {
-+      if (bdrv_open2(bs, path, flags, drv) != 0) {
-               fprintf(stderr, "Could not open image file %s\n", path);
-               return -ENOMEM;
-       }
 Index: xen-4.5.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
 ===================================================================
 --- xen-4.5.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c

++++++ blktap.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:35.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:35.000000000 +0100
@@ -1,10 +1,10 @@
 bug #239173
 bug #242953
 
-Index: xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
+Index: xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
 ===================================================================
---- xen-4.4.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c
-+++ xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
+--- xen-4.6.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c
++++ xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
 @@ -447,9 +447,9 @@ void xenstore_parse_domain_config(int hv
  {
      char **e_danger = NULL;
@@ -32,7 +32,7 @@
          /* read the name of the device */
          if (pasprintf(&buf, "%s/dev", bpath) == -1)
              continue;
-@@ -762,6 +770,7 @@ void xenstore_parse_domain_config(int hv
+@@ -760,6 +768,7 @@ void xenstore_parse_domain_config(int hv
      free(mode);
      free(params);
      free(dev);

++++++ blktap-no-uninit.patch -> blktap2-no-uninit.patch ++++++
--- /work/SRC/openSUSE:Factory/xen/blktap-no-uninit.patch       2015-07-05 
17:50:49.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xen.new/blktap2-no-uninit.patch 2015-12-18 
21:53:25.000000000 +0100
@@ -1,22 +1,10 @@
---- xen-4.5.0-testing/tools/blktap/drivers/Makefile.orig       2015-04-08 
09:20:08.817373085 +0000
-+++ xen-4.5.0-testing/tools/blktap/drivers/Makefile    2015-04-08 
09:20:55.738897365 +0000
-@@ -6,6 +6,9 @@
- 
- CFLAGS   += -Werror
- CFLAGS   += -Wno-unused
-+ifeq ($(call cc-ver,$(CC),0x040900),y)
-+$(call cc-option-add,CFLAGS,CC,-Wno-error=maybe-uninitialized)
-+endif
- CFLAGS   += -I../lib
- CFLAGS   += $(CFLAGS_libxenctrl)
- CFLAGS   += $(CFLAGS_libxenstore)
 --- xen-4.5.0-testing/tools/blktap2/drivers/Makefile.orig      2015-04-08 
11:25:54.974241326 +0200
 +++ xen-4.5.0-testing/tools/blktap2/drivers/Makefile   2015-04-08 
11:26:10.150411238 +0200
 @@ -11,6 +11,7 @@
  
  CFLAGS    += -Werror
  CFLAGS    += -Wno-unused
-+$(call cc-option-add,CFLAGS,CC,-Wno-error=array-bounds)
++CFLAGS    += -Wno-error=array-bounds
  CFLAGS    += -fno-strict-aliasing
  CFLAGS    += -I$(BLKTAP_ROOT)/include -I$(BLKTAP_ROOT)/drivers
  CFLAGS    += $(CFLAGS_libxenctrl)

++++++ cdrom-removable.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:35.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:35.000000000 +0100
@@ -1,7 +1,7 @@
-Index: xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
+Index: xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
 ===================================================================
---- xen-4.4.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c
-+++ xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
+--- xen-4.6.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c
++++ xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
 @@ -18,6 +18,7 @@
  #include "exec-all.h"
  #include "sysemu.h"
@@ -32,7 +32,7 @@
          /* check if it is a cdrom */
          if (danger_type && !strcmp(danger_type, "cdrom")) {
              bdrv_set_type_hint(bs, BDRV_TYPE_CDROM);
-@@ -1095,6 +1111,50 @@ static void xenstore_process_vcpu_set_ev
+@@ -1083,6 +1099,50 @@ static void xenstore_process_vcpu_set_ev
      return;
  }
  
@@ -83,7 +83,7 @@
  void xenstore_process_event(void *opaque)
  {
      char **vec, *offset, *bpath = NULL, *buf = NULL, *drv = NULL, *image = 
NULL;
-@@ -1130,6 +1190,11 @@ void xenstore_process_event(void *opaque
+@@ -1118,6 +1178,11 @@ void xenstore_process_event(void *opaque
              xenstore_watch_callbacks[i].cb(vec[XS_WATCH_TOKEN],
                                             
xenstore_watch_callbacks[i].opaque);
  

++++++ hibernate.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:35.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:35.000000000 +0100
@@ -1,8 +1,8 @@
-Index: xen-4.2.0-testing/tools/firmware/hvmloader/acpi/ssdt_s3.asl
+Index: xen-4.6.0-testing/tools/firmware/hvmloader/acpi/ssdt_s3.asl
 ===================================================================
---- xen-4.2.0-testing.orig/tools/firmware/hvmloader/acpi/ssdt_s3.asl
-+++ xen-4.2.0-testing/tools/firmware/hvmloader/acpi/ssdt_s3.asl
-@@ -20,13 +20,9 @@
+--- xen-4.6.0-testing.orig/tools/firmware/hvmloader/acpi/ssdt_s3.asl
++++ xen-4.6.0-testing/tools/firmware/hvmloader/acpi/ssdt_s3.asl
+@@ -19,13 +19,9 @@
  
  DefinitionBlock ("SSDT_S3.aml", "SSDT", 2, "Xen", "HVM", 0)
  {
@@ -20,11 +20,11 @@
 +     */
  }
  
-Index: xen-4.2.0-testing/tools/firmware/hvmloader/acpi/ssdt_s4.asl
+Index: xen-4.6.0-testing/tools/firmware/hvmloader/acpi/ssdt_s4.asl
 ===================================================================
---- xen-4.2.0-testing.orig/tools/firmware/hvmloader/acpi/ssdt_s4.asl
-+++ xen-4.2.0-testing/tools/firmware/hvmloader/acpi/ssdt_s4.asl
-@@ -20,13 +20,9 @@
+--- xen-4.6.0-testing.orig/tools/firmware/hvmloader/acpi/ssdt_s4.asl
++++ xen-4.6.0-testing/tools/firmware/hvmloader/acpi/ssdt_s4.asl
+@@ -19,13 +19,9 @@
  
  DefinitionBlock ("SSDT_S4.aml", "SSDT", 2, "Xen", "HVM", 0)
  {

++++++ hotplug-Linux-block-performance-fix.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:35.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:35.000000000 +0100
@@ -24,10 +24,10 @@
  tools/hotplug/Linux/block | 89 ++++++++++++++++++++++++++++++-----------------
  1 file changed, 57 insertions(+), 32 deletions(-)
 
-Index: xen-4.4.3-testing/tools/hotplug/Linux/block
+Index: xen-4.6.0-testing/tools/hotplug/Linux/block
 ===================================================================
---- xen-4.4.3-testing.orig/tools/hotplug/Linux/block
-+++ xen-4.4.3-testing/tools/hotplug/Linux/block
+--- xen-4.6.0-testing.orig/tools/hotplug/Linux/block
++++ xen-4.6.0-testing/tools/hotplug/Linux/block
 @@ -38,7 +38,7 @@ find_free_loopback_dev() {
  }
  
@@ -185,7 +185,7 @@
    fi
  }
  
-@@ -279,15 +312,7 @@ mount it read-write in a guest domain."
+@@ -281,15 +314,7 @@ mount it read-write in a guest domain."
              fatal "Unable to lookup $file: dev: $dev inode: $inode"
            fi
  

++++++ ioemu-hvm-pv-support.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:35.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:35.000000000 +0100
@@ -2,6 +2,15 @@
  tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c |   46 
++++++++++++++++
  1 file changed, 46 insertions(+)
 
+Index: xen-4.5.0-testing/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak
+===================================================================
+--- xen-4.5.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak
++++ xen-4.5.0-testing/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak
+@@ -1,3 +1,4 @@ 
++CPPFLAGS+= -I$(XEN_ROOT)/tools/libxc
+ CPPFLAGS+= -I$(XEN_ROOT)/tools/libxc/include
+ CPPFLAGS+= -I$(XEN_ROOT)/tools/xenstore/include
+ CPPFLAGS+= -I$(XEN_ROOT)/tools/include
 Index: 
xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c
 ===================================================================
 --- 
xen-4.4.0-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c

++++++ ipxe-no-error-logical-not-parentheses.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:35.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:35.000000000 +0100
@@ -1,5 +1,7 @@
---- /dev/null  2015-03-12 10:40:51.327307686 +0000
-+++ 
xen-4.5.0-testing/tools/firmware/etherboot/patches/ipxe-no-error-logical-not-parentheses.patch
     2015-03-12 12:21:37.394804667 +0000
+Index: 
xen-4.6.0-testing/tools/firmware/etherboot/patches/ipxe-no-error-logical-not-parentheses.patch
+===================================================================
+--- /dev/null
++++ 
xen-4.6.0-testing/tools/firmware/etherboot/patches/ipxe-no-error-logical-not-parentheses.patch
 @@ -0,0 +1,11 @@
 +--- ipxe/src/Makefile.housekeeping.orig       2015-03-12 12:15:50.054891858 
+0000
 ++++ ipxe/src/Makefile.housekeeping    2015-03-12 12:16:05.978071221 +0000
@@ -11,11 +13,13 @@
 ++CFLAGS               += -Werror -Wno-logical-not-parentheses
 + ASFLAGS              += --fatal-warnings
 + endif
-+ 
---- xen-4.5.0-testing/tools/firmware/etherboot/patches/series.orig     
2015-03-12 12:24:54.895029501 +0000
-+++ xen-4.5.0-testing/tools/firmware/etherboot/patches/series  2015-03-12 
12:25:42.367564285 +0000
-@@ -3,3 +3,4 @@
- build_fix_2.patch
++
+Index: xen-4.6.0-testing/tools/firmware/etherboot/patches/series
+===================================================================
+--- xen-4.6.0-testing.orig/tools/firmware/etherboot/patches/series
++++ xen-4.6.0-testing/tools/firmware/etherboot/patches/series
+@@ -4,3 +4,4 @@ build_fix_2.patch
  build_fix_3.patch
  build-compare.patch
+ build_fix_4.patch
 +ipxe-no-error-logical-not-parentheses.patch

++++++ ipxe.tar.bz2 ++++++

++++++ libxl.add-option-to-disable-disk-cache-flushes-in-qdisk.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:36.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:36.000000000 +0100
@@ -7,11 +7,11 @@
  tools/libxl/libxlu_disk_l.l |    1 +
  5 files changed, 18 insertions(+), 1 deletion(-)
 
-Index: xen-4.5.1-testing/tools/libxl/libxl.c
+Index: xen-4.6.0-testing/tools/libxl/libxl.c
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/libxl.c
-+++ xen-4.5.1-testing/tools/libxl/libxl.c
-@@ -2825,6 +2825,8 @@ static void device_disk_add(libxl__egc *
+--- xen-4.6.0-testing.orig/tools/libxl/libxl.c
++++ xen-4.6.0-testing/tools/libxl/libxl.c
+@@ -2829,6 +2829,8 @@ static void device_disk_add(libxl__egc *
          flexarray_append_pair(back, "discard-enable",
                                libxl_defbool_val(disk->discard_enable) ?
                                "1" : "0");
@@ -20,12 +20,12 @@
  
          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
+Index: xen-4.6.0-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
+--- xen-4.6.0-testing.orig/tools/libxl/libxl.h
++++ xen-4.6.0-testing/tools/libxl/libxl.h
+@@ -205,6 +205,18 @@
+ #define LIBXL_HAVE_BUILDINFO_ARM_GIC_VERSION 1
  
  /*
 + * The libxl_device_disk has no way to indicate that cache=unsafe is
@@ -43,10 +43,10 @@
   * libxl ABI compatibility
   *
   * The only guarantee which libxl makes regarding ABI compatibility
-Index: xen-4.5.1-testing/tools/libxl/libxlu_disk.c
+Index: xen-4.6.0-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
+--- xen-4.6.0-testing.orig/tools/libxl/libxlu_disk.c
++++ xen-4.6.0-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;
@@ -56,10 +56,10 @@
  
      if (!disk->vdev) {
          xlu__disk_err(&dpc,0, "no vdev specified");
-Index: xen-4.5.1-testing/tools/libxl/libxlu_disk_i.h
+Index: xen-4.6.0-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
+--- xen-4.6.0-testing.orig/tools/libxl/libxlu_disk_i.h
++++ xen-4.6.0-testing/tools/libxl/libxlu_disk_i.h
 @@ -10,7 +10,7 @@ typedef struct {
      void *scanner;
      YY_BUFFER_STATE buf;
@@ -69,10 +69,10 @@
      const char *spec;
  } DiskParseContext;
  
-Index: xen-4.5.1-testing/tools/libxl/libxlu_disk_l.l
+Index: xen-4.6.0-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
+--- xen-4.6.0-testing.orig/tools/libxl/libxlu_disk_l.l
++++ xen-4.6.0-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); }

++++++ libxl.pvscsi.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:36.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:36.000000000 +0100
@@ -31,11 +31,11 @@
 7de6f49 support character devices too
 c84381b allow /dev/sda as scsi devspec
 f11e3a2 pvscsi
-Index: xen-4.5.1-testing/docs/man/xl.cfg.pod.5
+Index: xen-4.6.0-testing/docs/man/xl.cfg.pod.5
 ===================================================================
---- xen-4.5.1-testing.orig/docs/man/xl.cfg.pod.5
-+++ xen-4.5.1-testing/docs/man/xl.cfg.pod.5
-@@ -448,6 +448,36 @@ value is optional if this is a guest dom
+--- xen-4.6.0-testing.orig/docs/man/xl.cfg.pod.5
++++ xen-4.6.0-testing/docs/man/xl.cfg.pod.5
+@@ -506,6 +506,36 @@ value is optional if this is a guest dom
  
  =back
  
@@ -72,11 +72,11 @@
  =item B<vfb=[ "VFB_SPEC_STRING", "VFB_SPEC_STRING", ...]>
  
  Specifies the paravirtual framebuffer devices which should be supplied
-Index: xen-4.5.1-testing/docs/man/xl.pod.1
+Index: xen-4.6.0-testing/docs/man/xl.pod.1
 ===================================================================
---- xen-4.5.1-testing.orig/docs/man/xl.pod.1
-+++ xen-4.5.1-testing/docs/man/xl.pod.1
-@@ -1323,6 +1323,26 @@ List virtual trusted platform modules fo
+--- xen-4.6.0-testing.orig/docs/man/xl.pod.1
++++ xen-4.6.0-testing/docs/man/xl.pod.1
+@@ -1293,6 +1293,26 @@ List virtual trusted platform modules fo
  
  =back
  
@@ -103,11 +103,11 @@
  =head1 PCI PASS-THROUGH
  
  =over 4
-Index: xen-4.5.1-testing/tools/libxl/libxl.c
+Index: xen-4.6.0-testing/tools/libxl/libxl.c
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/libxl.c
-+++ xen-4.5.1-testing/tools/libxl/libxl.c
-@@ -2317,6 +2317,273 @@ int libxl_devid_to_device_vtpm(libxl_ctx
+--- xen-4.6.0-testing.orig/tools/libxl/libxl.c
++++ xen-4.6.0-testing/tools/libxl/libxl.c
+@@ -2319,6 +2319,273 @@ int libxl_devid_to_device_vtpm(libxl_ctx
      return rc;
  }
  
@@ -381,7 +381,7 @@
  
  
/******************************************************************************/
  
-@@ -4192,6 +4459,8 @@ out:
+@@ -4133,6 +4400,8 @@ out:
   * libxl_device_vkb_destroy
   * libxl_device_vfb_remove
   * libxl_device_vfb_destroy
@@ -390,7 +390,7 @@
   */
  #define DEFINE_DEVICE_REMOVE(type, removedestroy, f)                    \
      int libxl_device_##type##_##removedestroy(libxl_ctx *ctx,           \
-@@ -4247,6 +4516,10 @@ DEFINE_DEVICE_REMOVE(vtpm, destroy, 1)
+@@ -4188,6 +4457,10 @@ DEFINE_DEVICE_REMOVE(vtpm, destroy, 1)
   * 1. add support for secondary consoles to xenconsoled
   * 2. dynamically add/remove qemu chardevs via qmp messages. */
  
@@ -401,7 +401,7 @@
  #undef DEFINE_DEVICE_REMOVE
  
  
/******************************************************************************/
-@@ -4256,6 +4529,7 @@ DEFINE_DEVICE_REMOVE(vtpm, destroy, 1)
+@@ -4197,6 +4470,7 @@ DEFINE_DEVICE_REMOVE(vtpm, destroy, 1)
   * libxl_device_disk_add
   * libxl_device_nic_add
   * libxl_device_vtpm_add
@@ -409,7 +409,7 @@
   */
  
  #define DEFINE_DEVICE_ADD(type)                                         \
-@@ -4287,6 +4561,9 @@ DEFINE_DEVICE_ADD(nic)
+@@ -4228,6 +4502,9 @@ DEFINE_DEVICE_ADD(nic)
  /* vtpm */
  DEFINE_DEVICE_ADD(vtpm)
  
@@ -419,7 +419,7 @@
  #undef DEFINE_DEVICE_ADD
  
  
/******************************************************************************/
-@@ -6829,6 +7106,20 @@ out:
+@@ -6780,6 +7057,20 @@ out:
      return rc;
  }
  
@@ -440,11 +440,11 @@
  /*
   * Local variables:
   * mode: C
-Index: xen-4.5.1-testing/tools/libxl/libxl.h
+Index: xen-4.6.0-testing/tools/libxl/libxl.h
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/libxl.h
-+++ xen-4.5.1-testing/tools/libxl/libxl.h
-@@ -1238,6 +1238,26 @@ libxl_device_vtpm *libxl_device_vtpm_lis
+--- xen-4.6.0-testing.orig/tools/libxl/libxl.h
++++ xen-4.6.0-testing/tools/libxl/libxl.h
+@@ -1435,6 +1435,26 @@ libxl_device_vtpm *libxl_device_vtpm_lis
  int libxl_device_vtpm_getinfo(libxl_ctx *ctx, uint32_t domid,
                                 libxl_device_vtpm *vtpm, libxl_vtpminfo 
*vtpminfo);
  
@@ -471,7 +471,7 @@
  /* Keyboard */
  int libxl_device_vkb_add(libxl_ctx *ctx, uint32_t domid, libxl_device_vkb 
*vkb,
                           const libxl_asyncop_how *ao_how)
-@@ -1495,6 +1515,27 @@ int libxl_fd_set_nonblock(libxl_ctx *ctx
+@@ -1740,6 +1760,27 @@ int libxl_fd_set_nonblock(libxl_ctx *ctx
  
  #include <libxl_event.h>
  
@@ -499,11 +499,11 @@
  #endif /* LIBXL_H */
  
  /*
-Index: xen-4.5.1-testing/tools/libxl/libxl_create.c
+Index: xen-4.6.0-testing/tools/libxl/libxl_create.c
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/libxl_create.c
-+++ xen-4.5.1-testing/tools/libxl/libxl_create.c
-@@ -1141,6 +1141,7 @@ static void domcreate_rebuild_done(libxl
+--- xen-4.6.0-testing.orig/tools/libxl/libxl_create.c
++++ xen-4.6.0-testing/tools/libxl/libxl_create.c
+@@ -1149,6 +1149,7 @@ static void domcreate_rebuild_done(libxl
      libxl__multidev_begin(ao, &dcs->multidev);
      dcs->multidev.callback = domcreate_launch_dm;
      libxl__add_disks(egc, ao, domid, d_config, &dcs->multidev);
@@ -511,11 +511,11 @@
      libxl__multidev_prepared(egc, &dcs->multidev, 0);
  
      return;
-Index: xen-4.5.1-testing/tools/libxl/libxl_device.c
+Index: xen-4.6.0-testing/tools/libxl/libxl_device.c
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/libxl_device.c
-+++ xen-4.5.1-testing/tools/libxl/libxl_device.c
-@@ -541,6 +541,7 @@ void libxl__multidev_prepared(libxl__egc
+--- xen-4.6.0-testing.orig/tools/libxl/libxl_device.c
++++ xen-4.6.0-testing/tools/libxl/libxl_device.c
+@@ -543,6 +543,7 @@ void libxl__multidev_prepared(libxl__egc
   * The following functions are defined:
   * libxl__add_disks
   * libxl__add_nics
@@ -523,7 +523,7 @@
   * libxl__add_vtpms
   */
  
-@@ -560,10 +561,32 @@ void libxl__multidev_prepared(libxl__egc
+@@ -562,10 +563,32 @@ void libxl__multidev_prepared(libxl__egc
  
  DEFINE_DEVICES_ADD(disk)
  DEFINE_DEVICES_ADD(nic)
@@ -556,11 +556,11 @@
  
/******************************************************************************/
  
  int libxl__device_destroy(libxl__gc *gc, libxl__device *dev)
-Index: xen-4.5.1-testing/tools/libxl/libxl_internal.h
+Index: xen-4.6.0-testing/tools/libxl/libxl_internal.h
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/libxl_internal.h
-+++ xen-4.5.1-testing/tools/libxl/libxl_internal.h
-@@ -1079,6 +1079,7 @@ _hidden int libxl__device_disk_setdefaul
+--- xen-4.6.0-testing.orig/tools/libxl/libxl_internal.h
++++ xen-4.6.0-testing/tools/libxl/libxl_internal.h
+@@ -1185,6 +1185,7 @@ _hidden int libxl__device_disk_setdefaul
  _hidden int libxl__device_nic_setdefault(libxl__gc *gc, libxl_device_nic *nic,
                                           uint32_t domid);
  _hidden int libxl__device_vtpm_setdefault(libxl__gc *gc, libxl_device_vtpm 
*vtpm);
@@ -568,7 +568,7 @@
  _hidden int libxl__device_vfb_setdefault(libxl__gc *gc, libxl_device_vfb 
*vfb);
  _hidden int libxl__device_vkb_setdefault(libxl__gc *gc, libxl_device_vkb 
*vkb);
  _hidden int libxl__device_pci_setdefault(libxl__gc *gc, libxl_device_pci 
*pci);
-@@ -2390,6 +2391,10 @@ _hidden void libxl__device_vtpm_add(libx
+@@ -2561,6 +2562,10 @@ _hidden void libxl__device_vtpm_add(libx
                                     libxl_device_vtpm *vtpm,
                                     libxl__ao_device *aodev);
  
@@ -579,7 +579,7 @@
  /* Internal function to connect a vkb device */
  _hidden int libxl__device_vkb_add(libxl__gc *gc, uint32_t domid,
                                    libxl_device_vkb *vkb);
-@@ -3014,6 +3019,10 @@ _hidden void libxl__add_vtpms(libxl__egc
+@@ -3277,6 +3282,10 @@ _hidden void libxl__add_vtpms(libxl__egc
                               libxl_domain_config *d_config,
                               libxl__multidev *multidev);
  
@@ -590,11 +590,11 @@
  /*----- device model creation -----*/
  
  /* First layer; wraps libxl__spawn_spawn. */
-Index: xen-4.5.1-testing/tools/libxl/libxl_types.idl
+Index: xen-4.6.0-testing/tools/libxl/libxl_types.idl
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/libxl_types.idl
-+++ xen-4.5.1-testing/tools/libxl/libxl_types.idl
-@@ -540,6 +540,26 @@ libxl_device_channel = Struct("device_ch
+--- xen-4.6.0-testing.orig/tools/libxl/libxl_types.idl
++++ xen-4.6.0-testing/tools/libxl/libxl_types.idl
+@@ -617,6 +617,26 @@ libxl_device_channel = Struct("device_ch
             ])),
  ])
  
@@ -621,7 +621,7 @@
  libxl_domain_config = Struct("domain_config", [
      ("c_info", libxl_domain_create_info),
      ("b_info", libxl_domain_build_info),
-@@ -553,6 +573,8 @@ libxl_domain_config = Struct("domain_con
+@@ -632,6 +652,8 @@ libxl_domain_config = Struct("domain_con
      # a channel manifests as a console with a name,
      # see docs/misc/channels.txt
      ("channels", Array(libxl_device_channel, "num_channels")),
@@ -630,7 +630,7 @@
  
      ("on_poweroff", libxl_action_on_shutdown),
      ("on_reboot", libxl_action_on_shutdown),
-@@ -595,6 +617,28 @@ libxl_vtpminfo = Struct("vtpminfo", [
+@@ -674,6 +696,28 @@ libxl_vtpminfo = Struct("vtpminfo", [
      ("uuid", libxl_uuid),
      ], dir=DIR_OUT)
  
@@ -659,10 +659,10 @@
  libxl_vcpuinfo = Struct("vcpuinfo", [
      ("vcpuid", uint32),
      ("cpu", uint32),
-Index: xen-4.5.1-testing/tools/libxl/libxl_types_internal.idl
+Index: xen-4.6.0-testing/tools/libxl/libxl_types_internal.idl
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/libxl_types_internal.idl
-+++ xen-4.5.1-testing/tools/libxl/libxl_types_internal.idl
+--- xen-4.6.0-testing.orig/tools/libxl/libxl_types_internal.idl
++++ xen-4.6.0-testing/tools/libxl/libxl_types_internal.idl
 @@ -22,6 +22,7 @@ libxl__device_kind = Enumeration("device
      (6, "VKBD"),
      (7, "CONSOLE"),
@@ -671,11 +671,11 @@
      ])
  
  libxl__console_backend = Enumeration("console_backend", [
-Index: xen-4.5.1-testing/tools/libxl/xl.h
+Index: xen-4.6.0-testing/tools/libxl/xl.h
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/xl.h
-+++ xen-4.5.1-testing/tools/libxl/xl.h
-@@ -83,6 +83,9 @@ int main_channellist(int argc, char **ar
+--- xen-4.6.0-testing.orig/tools/libxl/xl.h
++++ xen-4.6.0-testing/tools/libxl/xl.h
+@@ -82,6 +82,9 @@ int main_channellist(int argc, char **ar
  int main_blockattach(int argc, char **argv);
  int main_blocklist(int argc, char **argv);
  int main_blockdetach(int argc, char **argv);
@@ -685,10 +685,10 @@
  int main_vtpmattach(int argc, char **argv);
  int main_vtpmlist(int argc, char **argv);
  int main_vtpmdetach(int argc, char **argv);
-Index: xen-4.5.1-testing/tools/libxl/xl_cmdimpl.c
+Index: xen-4.6.0-testing/tools/libxl/xl_cmdimpl.c
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/xl_cmdimpl.c
-+++ xen-4.5.1-testing/tools/libxl/xl_cmdimpl.c
+--- xen-4.6.0-testing.orig/tools/libxl/xl_cmdimpl.c
++++ xen-4.6.0-testing/tools/libxl/xl_cmdimpl.c
 @@ -17,6 +17,7 @@
  #include "libxl_osdeps.h"
  
@@ -705,7 +705,7 @@
  #include <xen/hvm/e820.h>
  
  #include "libxl.h"
-@@ -549,6 +551,122 @@ static void set_default_nic_values(libxl
+@@ -626,6 +628,122 @@ static void set_default_nic_values(libxl
      }
  }
  
@@ -828,16 +828,16 @@
  static void split_string_into_string_list(const char *str,
                                            const char *delim,
                                            libxl_string_list *psl)
-@@ -918,7 +1036,7 @@ static void parse_config_data(const char
+@@ -1261,7 +1379,7 @@ static void parse_config_data(const char
      const char *buf;
-     long l;
+     long l, vcpus = 0;
      XLU_Config *config;
 -    XLU_ConfigList *cpus, *vbds, *nics, *pcis, *cvfbs, *cpuids, *vtpms;
 +    XLU_ConfigList *cpus, *vbds, *nics, *pcis, *cvfbs, *cpuids, *vtpms, 
*vscsis;
-     XLU_ConfigList *channels, *ioports, *irqs, *iomem, *viridian;
+     XLU_ConfigList *channels, *ioports, *irqs, *iomem, *viridian, *dtdevs;
      int num_ioports, num_irqs, num_iomem, num_cpus, num_viridian;
      int pci_power_mgmt = 0;
-@@ -1421,6 +1539,66 @@ static void parse_config_data(const char
+@@ -1782,6 +1900,66 @@ static void parse_config_data(const char
          }
      }
  
@@ -904,7 +904,7 @@
      if (!xlu_cfg_get_list(config, "vtpm", &vtpms, 0, 0)) {
          d_config->num_vtpms = 0;
          d_config->vtpms = NULL;
-@@ -6511,6 +6689,256 @@ int main_blockdetach(int argc, char **ar
+@@ -6702,6 +6880,256 @@ int main_blockdetach(int argc, char **ar
      return rc;
  }
  
@@ -1161,11 +1161,11 @@
  int main_vtpmattach(int argc, char **argv)
  {
      int opt;
-Index: xen-4.5.1-testing/tools/libxl/xl_cmdtable.c
+Index: xen-4.6.0-testing/tools/libxl/xl_cmdtable.c
 ===================================================================
---- xen-4.5.1-testing.orig/tools/libxl/xl_cmdtable.c
-+++ xen-4.5.1-testing/tools/libxl/xl_cmdtable.c
-@@ -372,6 +372,21 @@ struct cmd_spec cmd_table[] = {
+--- xen-4.6.0-testing.orig/tools/libxl/xl_cmdtable.c
++++ xen-4.6.0-testing/tools/libxl/xl_cmdtable.c
+@@ -351,6 +351,21 @@ struct cmd_spec cmd_table[] = {
        "Destroy a domain's virtual block device",
        "<Domain> <DevId>",
      },

++++++ magic_ioport_compat.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:36.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:36.000000000 +0100
@@ -2,11 +2,11 @@
 
 Signed-off-by: K. Y. Srinivasan <ksriniva...@novell.com>
 
-Index: 
xen-4.4.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+Index: 
xen-4.6.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
 ===================================================================
---- 
xen-4.4.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-+++ xen-4.4.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-@@ -337,7 +337,10 @@ static int check_platform_magic(struct d
+--- 
xen-4.6.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
++++ xen-4.6.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+@@ -336,7 +336,10 @@ static int check_platform_magic(struct d
  
        if (magic != XEN_IOPORT_MAGIC_VAL) {
                err = "unrecognised magic value";

++++++ pygrub-boot-legacy-sles.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:36.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:36.000000000 +0100
@@ -1,8 +1,8 @@
-Index: xen-4.5.0-testing/tools/pygrub/src/pygrub
+Index: xen-4.6.0-testing/tools/pygrub/src/pygrub
 ===================================================================
---- xen-4.5.0-testing.orig/tools/pygrub/src/pygrub
-+++ xen-4.5.0-testing/tools/pygrub/src/pygrub
-@@ -450,7 +450,7 @@ class Grub:
+--- xen-4.6.0-testing.orig/tools/pygrub/src/pygrub
++++ xen-4.6.0-testing/tools/pygrub/src/pygrub
+@@ -449,7 +449,7 @@ class Grub:
                  self.cf.filename = f
                  break
          if self.__dict__.get('cf', None) is None:
@@ -11,7 +11,7 @@
          f = fs.open_file(self.cf.filename)
          # limit read size to avoid pathological cases
          buf = f.read(FS_READ_MAX)
-@@ -622,6 +622,20 @@ def run_grub(file, entry, fs, cfg_args):
+@@ -621,6 +621,20 @@ def run_grub(file, entry, fs, cfg_args):
  
      g = Grub(file, fs)
  
@@ -32,7 +32,7 @@
      if list_entries:
          for i in range(len(g.cf.images)):
              img = g.cf.images[i]
-@@ -717,6 +731,19 @@ def sniff_netware(fs, cfg):
+@@ -716,6 +730,19 @@ def sniff_netware(fs, cfg):
  
      return cfg
  
@@ -52,7 +52,7 @@
  def format_sxp(kernel, ramdisk, args):
      s = "linux (kernel %s)" % kernel
      if ramdisk:
-@@ -797,7 +824,7 @@ if __name__ == "__main__":
+@@ -796,7 +823,7 @@ if __name__ == "__main__":
      debug = False
      not_really = False
      output_format = "sxp"

++++++ pygrub-netware-xnloader.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:36.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:36.000000000 +0100
@@ -1,8 +1,8 @@
-Index: xen-4.5.0-testing/tools/pygrub/src/pygrub
+Index: xen-4.6.0-testing/tools/pygrub/src/pygrub
 ===================================================================
---- xen-4.5.0-testing.orig/tools/pygrub/src/pygrub
-+++ xen-4.5.0-testing/tools/pygrub/src/pygrub
-@@ -26,6 +26,7 @@ import fsimage
+--- xen-4.6.0-testing.orig/tools/pygrub/src/pygrub
++++ xen-4.6.0-testing/tools/pygrub/src/pygrub
+@@ -25,6 +25,7 @@ import fsimage
  import grub.GrubConf
  import grub.LiloConf
  import grub.ExtLinuxConf
@@ -10,7 +10,7 @@
  
  PYGRUB_VER = 0.6
  FS_READ_MAX = 1024 * 1024
-@@ -759,6 +760,8 @@ if __name__ == "__main__":
+@@ -758,6 +759,8 @@ if __name__ == "__main__":
              if len(data) == 0:
                  os.close(tfd)
                  del datafile

++++++ qemu-dm-segfault.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:36.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:36.000000000 +0100
@@ -1,7 +1,7 @@
-Index: xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/hw/ide.c
+Index: xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/hw/ide.c
 ===================================================================
---- xen-4.5.1-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/ide.c
-+++ xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/hw/ide.c
+--- xen-4.2.0-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/ide.c
++++ xen-4.2.0-testing/tools/qemu-xen-traditional-dir-remote/hw/ide.c
 @@ -935,8 +935,9 @@ static inline void ide_dma_submit_check(
  
  static inline void ide_set_irq(IDEState *s)
@@ -74,7 +74,7 @@
  
      if (ret < 0) {
          ide_atapi_io_error(s, ret);
-@@ -2372,7 +2375,7 @@ static void cdrom_change_cb(void *opaque
+@@ -2365,7 +2368,7 @@ static void cdrom_change_cb(void *opaque
      IDEState *s = opaque;
      uint64_t nb_sectors;
  

++++++ qemu-xen-dir-remote.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/xen/qemu-xen-dir-remote.tar.bz2 
/work/SRC/openSUSE:Factory/.xen.new/qemu-xen-dir-remote.tar.bz2 differ: char 
11, line 1

++++++ qemu-xen-enable-spice-support.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:36.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:36.000000000 +0100
@@ -1,8 +1,8 @@
-Index: xen-4.5.0-testing/tools/Makefile
+Index: xen-4.6.0-testing/tools/Makefile
 ===================================================================
---- xen-4.5.0-testing.orig/tools/Makefile
-+++ xen-4.5.0-testing/tools/Makefile
-@@ -222,6 +222,7 @@ subdir-all-qemu-xen-dir: qemu-xen-dir-fi
+--- xen-4.6.0-testing.orig/tools/Makefile
++++ xen-4.6.0-testing/tools/Makefile
+@@ -259,6 +259,7 @@ subdir-all-qemu-xen-dir: qemu-xen-dir-fi
                --datadir=$(SHAREDIR)/qemu-xen \
                --localstatedir=$(localstatedir) \
                --disable-kvm \

++++++ qemu-xen-traditional-dir-remote.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tools/qemu-xen-traditional-dir-remote/hw/ide.c 
new/tools/qemu-xen-traditional-dir-remote/hw/ide.c
--- old/tools/qemu-xen-traditional-dir-remote/hw/ide.c  2015-06-26 
15:39:01.000000000 +0200
+++ new/tools/qemu-xen-traditional-dir-remote/hw/ide.c  2015-10-07 
16:07:24.000000000 +0200
@@ -3002,11 +3002,17 @@
     buffered_pio_write(s, addr, 2);
 
     p = s->data_ptr;
+    if (p + 2 > s->data_end) {
+        return;
+    }
+
     *(uint16_t *)p = le16_to_cpu(val);
     p += 2;
     s->data_ptr = p;
-    if (p >= s->data_end)
+    if (p >= s->data_end) {
+        s->status &= ~DRQ_STAT;
         s->end_transfer_func(s);
+    }
 }
 
 static uint32_t ide_data_readw(void *opaque, uint32_t addr)
@@ -3021,11 +3027,17 @@
     buffered_pio_read(s, addr, 2);
 
     p = s->data_ptr;
+    if (p + 2 > s->data_end) {
+        return 0;
+    }
+
     ret = cpu_to_le16(*(uint16_t *)p);
     p += 2;
     s->data_ptr = p;
-    if (p >= s->data_end)
+    if (p >= s->data_end) {
+        s->status &= ~DRQ_STAT;
         s->end_transfer_func(s);
+    }
     return ret;
 }
 
@@ -3040,11 +3052,17 @@
     buffered_pio_write(s, addr, 4);
 
     p = s->data_ptr;
+    if (p + 4 > s->data_end) {
+        return;
+    }
+
     *(uint32_t *)p = le32_to_cpu(val);
     p += 4;
     s->data_ptr = p;
-    if (p >= s->data_end)
+    if (p >= s->data_end) {
+        s->status &= ~DRQ_STAT;
         s->end_transfer_func(s);
+    }
 }
 
 static uint32_t ide_data_readl(void *opaque, uint32_t addr)
@@ -3059,11 +3077,17 @@
     buffered_pio_read(s, addr, 4);
 
     p = s->data_ptr;
+    if (p + 4 > s->data_end) {
+        return 0;
+    }
+
     ret = cpu_to_le32(*(uint32_t *)p);
     p += 4;
     s->data_ptr = p;
-    if (p >= s->data_end)
+    if (p >= s->data_end) {
+        s->status &= ~DRQ_STAT;
         s->end_transfer_func(s);
+    }
     return ret;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/tools/qemu-xen-traditional-dir-remote/i386-dm/helper2.c 
new/tools/qemu-xen-traditional-dir-remote/i386-dm/helper2.c
--- old/tools/qemu-xen-traditional-dir-remote/i386-dm/helper2.c 2015-06-26 
15:39:01.000000000 +0200
+++ new/tools/qemu-xen-traditional-dir-remote/i386-dm/helper2.c 2015-10-07 
16:07:24.000000000 +0200
@@ -493,10 +493,19 @@
 
     memset(&req, 0x00, sizeof(req));
 
-    while (buffered_io_page->read_pointer !=
-           buffered_io_page->write_pointer) {
-        buf_req = &buffered_io_page->buf_ioreq[
-            buffered_io_page->read_pointer % IOREQ_BUFFER_SLOT_NUM];
+    for (;;) {
+        uint32_t rdptr = buffered_io_page->read_pointer, wrptr;
+
+        xen_rmb();
+        wrptr = buffered_io_page->write_pointer;
+        xen_rmb();
+        if (rdptr != buffered_io_page->read_pointer) {
+            continue;
+        }
+        if (rdptr == wrptr) {
+            break;
+        }
+        buf_req = &buffered_io_page->buf_ioreq[rdptr % IOREQ_BUFFER_SLOT_NUM];
         req.size = 1UL << buf_req->size;
         req.count = 1;
         req.addr = buf_req->addr;
@@ -508,15 +517,14 @@
         req.data_is_ptr = 0;
         qw = (req.size == 8);
         if (qw) {
-            buf_req = &buffered_io_page->buf_ioreq[
-                (buffered_io_page->read_pointer+1) % IOREQ_BUFFER_SLOT_NUM];
+            buf_req = &buffered_io_page->buf_ioreq[(rdptr + 1) %
+                                                   IOREQ_BUFFER_SLOT_NUM];
             req.data |= ((uint64_t)buf_req->data) << 32;
         }
 
         __handle_ioreq(env, &req);
 
-        xen_mb();
-        buffered_io_page->read_pointer += qw ? 2 : 1;
+        __sync_fetch_and_add(&buffered_io_page->read_pointer, qw + 1);
     }
 
     return req.count;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tools/qemu-xen-traditional-dir-remote/vnc.c 
new/tools/qemu-xen-traditional-dir-remote/vnc.c
--- old/tools/qemu-xen-traditional-dir-remote/vnc.c     2015-06-26 
15:39:01.000000000 +0200
+++ new/tools/qemu-xen-traditional-dir-remote/vnc.c     2015-10-07 
16:07:24.000000000 +0200
@@ -1768,6 +1768,12 @@
        if (len == 8) {
            uint32_t v;
            v = read_u32(data, 4);
+           if (v > (1 << 20)) {
+               fprintf(stderr, "vnc: client_cut_text msg payload has %u bytes"
+                             " which exceeds our limit of 1MB.\n", v);
+               vnc_client_error(vs);
+               break;
+           }
            if (v)
                return 8 + v;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tools/qemu-xen-traditional-dir-remote/xenstore.c 
new/tools/qemu-xen-traditional-dir-remote/xenstore.c
--- old/tools/qemu-xen-traditional-dir-remote/xenstore.c        2015-06-26 
15:39:01.000000000 +0200
+++ new/tools/qemu-xen-traditional-dir-remote/xenstore.c        2015-10-07 
16:07:24.000000000 +0200
@@ -711,15 +711,13 @@
 
 
     /* Set a watch for log-dirty commands from the migration tools */
-    if (pasprintf(&buf, "/local/domain/0/device-model/%u/logdirty/cmd",
-                  domid) != -1) {
+    if (pasprintf(&buf, "device-model/%u/logdirty/cmd", domid) != -1) {
         xs_watch(xsh, buf, "logdirty");
         fprintf(logfile, "Watching %s\n", buf);
     }
 
     /* Set a watch for suspend requests from the migration tools */
-    if (pasprintf(&buf, 
-                  "/local/domain/0/device-model/%u/command", domid) != -1) {
+    if (pasprintf(&buf, "device-model/%u/command", domid) != -1) {
         xs_watch(xsh, buf, "dm-command");
         fprintf(logfile, "Watching %s\n", buf);
     }
@@ -777,7 +775,7 @@
     int disable_pf = 0;
     unsigned int len;
 
-    if (pasprintf(&buf, "/local/domain/0/device-model/%u/disable_pf",domid) == 
-1)
+    if (pasprintf(&buf, "device-model/%u/disable_pf",domid) == -1)
         goto out;
 
     params = xs_read(xsh, XBT_NULL, buf, &len);
@@ -807,15 +805,11 @@
     unsigned int len;
 
     /* Remember the paths for the command and response entries */
-    if (pasprintf(&ret_path,
-                "/local/domain/0/device-model/%u/logdirty/ret",
-                domid) == -1) {
+    if (pasprintf(&ret_path, "device-model/%u/logdirty/ret", domid) == -1) {
         fprintf(logfile, "Log-dirty: out of memory\n");
         exit(1);
     }
-    if (pasprintf(&cmd_path,
-                "/local/domain/0/device-model/%u/logdirty/cmd",
-                domid) == -1) {
+    if (pasprintf(&cmd_path, "device-model/%u/logdirty/cmd", domid) == -1) {
         fprintf(logfile, "Log-dirty: out of memory\n");
         exit(1);
     }
@@ -854,8 +848,7 @@
     char *path = NULL, *command = NULL, *par = NULL;
     unsigned int len;
 
-    if (pasprintf(&path, 
-                  "/local/domain/0/device-model/%u/command", domid) == -1) {
+    if (pasprintf(&path, "device-model/%u/command", domid) == -1) {
         fprintf(logfile, "out of memory reading dm command\n");
         goto out;
     }
@@ -874,8 +867,7 @@
         xen_pause_requested = 0;
     } else if (!strncmp(command, "usb-add", len)) {
         fprintf(logfile, "dm-command: usb-add a usb device\n");
-        if (pasprintf(&path,
-                "/local/domain/0/device-model/%u/parameter", domid) == -1) {
+        if (pasprintf(&path, "device-model/%u/parameter", domid) == -1) {
             fprintf(logfile, "out of memory reading dm command parameter\n");
             goto out;
         }
@@ -888,8 +880,7 @@
         fprintf(logfile, "dm-command: finish usb-add a usb device:%s\n",par);
     } else if (!strncmp(command, "usb-del", len)) {
         fprintf(logfile, "dm-command: usb-del a usb device\n");
-        if (pasprintf(&path,
-                "/local/domain/0/device-model/%u/parameter", domid) == -1) {
+        if (pasprintf(&path, "device-model/%u/parameter", domid) == -1) {
             fprintf(logfile, "out of memory reading dm command parameter\n");
             goto out;
         }
@@ -904,8 +895,7 @@
     } else if (!strncmp(command, "pci-rem", len)) {
         fprintf(logfile, "dm-command: hot remove pass-through pci dev \n");
 
-        if (pasprintf(&path, 
-                      "/local/domain/0/device-model/%u/parameter", domid) == 
-1) {
+        if (pasprintf(&path, "device-model/%u/parameter", domid) == -1) {
             fprintf(logfile, "out of memory reading dm command parameter\n");
             goto out;
         }
@@ -918,8 +908,7 @@
     } else if (!strncmp(command, "pci-ins", len)) {
         fprintf(logfile, "dm-command: hot insert pass-through pci dev \n");
 
-        if (pasprintf(&path, 
-                      "/local/domain/0/device-model/%u/parameter", domid) == 
-1) {
+        if (pasprintf(&path, "device-model/%u/parameter", domid) == -1) {
             fprintf(logfile, "out of memory reading dm command parameter\n");
             goto out;
         }
@@ -943,8 +932,7 @@
 {
     char *path = NULL;
 
-    if (pasprintf(&path, 
-                  "/local/domain/0/device-model/%u/%s", domid, subpath) == -1) 
{
+    if (pasprintf(&path, "device-model/%u/%s", domid, subpath) == -1) {
         fprintf(logfile, "out of memory recording dm \n");
         goto out;
     }
@@ -1521,7 +1509,7 @@
 {
     char *path = NULL, *value = NULL;
 
-    if (pasprintf(&path, "/local/domain/0/device-model/%d/%s", domid, key) == 
-1)
+    if (pasprintf(&path, "device-model/%d/%s", domid, key) == -1)
         return NULL;
 
     value = xs_read(xsh, XBT_NULL, path, len);

++++++ qemu-xen-upstream-qdisk-cache-unsafe.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:38.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:38.000000000 +0100
@@ -3,11 +3,11 @@
  tools/qemu-xen-dir-remote/hw/block/xen_disk.c |   15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
-Index: xen-4.5.0-testing/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
+Index: xen-4.6.0-testing/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
 ===================================================================
---- xen-4.5.0-testing.orig/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
-+++ xen-4.5.0-testing/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
-@@ -120,6 +120,7 @@ struct XenBlkDev {
+--- xen-4.6.0-testing.orig/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
++++ xen-4.6.0-testing/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
+@@ -121,6 +121,7 @@ struct XenBlkDev {
      int                 requests_inflight;
      int                 requests_finished;
  
@@ -15,7 +15,7 @@
      /* Persistent grants extension */
      gboolean            feature_discard;
      gboolean            feature_persistent;
-@@ -780,6 +781,16 @@ static void blk_parse_discard(struct Xen
+@@ -784,6 +785,16 @@ static void blk_parse_discard(struct Xen
      }
  }
  
@@ -32,7 +32,7 @@
  static int blk_init(struct XenDevice *xendev)
  {
      struct XenBlkDev *blkdev = container_of(xendev, struct XenBlkDev, xendev);
-@@ -848,6 +859,7 @@ static int blk_init(struct XenDevice *xe
+@@ -852,6 +863,7 @@ static int blk_init(struct XenDevice *xe
      xenstore_write_be_int(&blkdev->xendev, "info", info);
  
      blk_parse_discard(blkdev);
@@ -40,7 +40,7 @@
  
      g_free(directiosafe);
      return 0;
-@@ -888,6 +900,9 @@ static int blk_connect(struct XenDevice
+@@ -892,6 +904,9 @@ static int blk_connect(struct XenDevice
          qflags |= BDRV_O_UNMAP;
      }
  

++++++ seabios-dir-remote.tar.bz2 ++++++
++++ 11650 lines of diff (skipped)

++++++ stubdom-have-iovec.patch ++++++
Because of commit 76eb7cef6b84ca804f4db340e23ad9c501767c32
xc_private.h now contains a definition of iovec. This conflicts
when building qemu traditional xen_platform.c which includes
hw.h which includes qemu-common.h which already has a definition
of iovec
Index: xen-4.6.0-testing/tools/libxc/xc_private.h
===================================================================
--- xen-4.6.0-testing.orig/tools/libxc/xc_private.h
+++ xen-4.6.0-testing/tools/libxc/xc_private.h
@@ -42,6 +42,8 @@
 #endif
 
 #if defined(__MINIOS__)
+#ifndef HAVE_IOVEC
+#define HAVE_IOVEC
 /*
  * MiniOS's libc doesn't know about sys/uio.h or writev().
  * Declare enough of sys/uio.h to compile.
@@ -50,6 +52,7 @@ struct iovec {
     void *iov_base;
     size_t iov_len;
 };
+#endif
 #else
 #include <sys/uio.h>
 #endif
++++++ stubdom.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/xen/stubdom.tar.bz2 
/work/SRC/openSUSE:Factory/.xen.new/stubdom.tar.bz2 differ: char 11, line 1

++++++ suspend_evtchn_lock.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:38.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:38.000000000 +0100
@@ -6,11 +6,11 @@
 
 Signed-off-by: Chunyan Liu <cy...@suse.com>
 
-Index: xen-4.5.0-testing/tools/libxc/xc_suspend.c
+Index: xen-4.6.0-testing/tools/libxc/xc_suspend.c
 ===================================================================
---- xen-4.5.0-testing.orig/tools/libxc/xc_suspend.c
-+++ xen-4.5.0-testing/tools/libxc/xc_suspend.c
-@@ -19,6 +19,10 @@
+--- xen-4.6.0-testing.orig/tools/libxc/xc_suspend.c
++++ xen-4.6.0-testing/tools/libxc/xc_suspend.c
+@@ -18,6 +18,10 @@
  
  #include "xc_private.h"
  #include "xenguest.h"
@@ -21,7 +21,7 @@
  
  #define SUSPEND_LOCK_FILE    XEN_RUN_DIR "/suspend-evtchn-%d.lock"
  
-@@ -34,6 +38,37 @@
+@@ -33,6 +37,37 @@
  
  #define SUSPEND_FILE_BUFLEN (sizeof(SUSPEND_LOCK_FILE) + 10)
  
@@ -59,7 +59,7 @@
  static void get_suspend_file(char buf[], int domid)
  {
      snprintf(buf, SUSPEND_FILE_BUFLEN, SUSPEND_LOCK_FILE, domid);
-@@ -47,6 +82,7 @@ static int lock_suspend_event(xc_interfa
+@@ -46,6 +81,7 @@ static int lock_suspend_event(xc_interfa
      struct flock fl;
  
      get_suspend_file(suspend_file, domid);
@@ -67,7 +67,7 @@
  
      *lockfd = -1;
  
-@@ -96,6 +132,8 @@ static int lock_suspend_event(xc_interfa
+@@ -95,6 +131,8 @@ static int lock_suspend_event(xc_interfa
      if (fd >= 0)
          close(fd);
  

++++++ tigervnc-long-press.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:38.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:38.000000000 +0100
@@ -1,8 +1,8 @@
-Index: xen-4.5.0-testing/tools/qemu-xen-dir-remote/ui/vnc.c
+Index: xen-4.6.0-testing/tools/qemu-xen-dir-remote/ui/vnc.c
 ===================================================================
---- xen-4.5.0-testing.orig/tools/qemu-xen-dir-remote/ui/vnc.c
-+++ xen-4.5.0-testing/tools/qemu-xen-dir-remote/ui/vnc.c
-@@ -1645,6 +1645,25 @@ static void do_key_event(VncState *vs, i
+--- xen-4.6.0-testing.orig/tools/qemu-xen-dir-remote/ui/vnc.c
++++ xen-4.6.0-testing/tools/qemu-xen-dir-remote/ui/vnc.c
+@@ -1659,6 +1659,25 @@ static void do_key_event(VncState *vs, i
          if (down)
              vs->modifiers_state[keycode] ^= 1;
          break;

++++++ tmp_build.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:38.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:38.000000000 +0100
@@ -2,11 +2,11 @@
  tools/xenstore/Makefile |    6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
-Index: xen-4.5.1-testing/tools/xenstore/Makefile
+Index: xen-4.6.0-testing/tools/xenstore/Makefile
 ===================================================================
---- xen-4.5.1-testing.orig/tools/xenstore/Makefile
-+++ xen-4.5.1-testing/tools/xenstore/Makefile
-@@ -91,6 +91,7 @@ $(CLIENTS_DOMU): xenstore
+--- xen-4.6.0-testing.orig/tools/xenstore/Makefile
++++ xen-4.6.0-testing/tools/xenstore/Makefile
+@@ -92,6 +92,7 @@ $(CLIENTS_DOMU): xenstore
  
  xenstore: xenstore_client.o $(LIBXENSTORE)
        $(CC) $< $(LDFLAGS) $(LDLIBS_libxenstore) $(SOCKET_LIBS) -o $@ 
$(APPEND_LDFLAGS)
@@ -14,22 +14,17 @@
  
  xenstore-control: xenstore_control.o $(LIBXENSTORE)
        $(CC) $< $(LDFLAGS) $(LDLIBS_libxenstore) $(SOCKET_LIBS) -o $@ 
$(APPEND_LDFLAGS)
-@@ -136,14 +137,16 @@ ifeq ($(XENSTORE_XENSTORED),y)
-       $(INSTALL_DIR) $(DESTDIR)$(SBINDIR)
-       $(INSTALL_DIR) $(DESTDIR)$(XEN_LIB_STORED)
-       $(INSTALL_PROG) xenstored $(DESTDIR)$(SBINDIR)
-+      $(INSTALL_DIR) $(DESTDIR)/bin
- endif
-       $(INSTALL_PROG) xenstore-control $(DESTDIR)$(BINDIR)
-       $(INSTALL_PROG) xenstore $(DESTDIR)$(BINDIR)
+@@ -145,10 +146,11 @@ endif
+       $(INSTALL_PROG) xenstore-control $(DESTDIR)$(bindir)
+       $(INSTALL_PROG) xenstore $(DESTDIR)$(bindir)
        set -e ; for c in $(CLIENTS) ; do \
--              ln -f $(DESTDIR)$(BINDIR)/xenstore $(DESTDIR)$(BINDIR)/$${c} ; \
+-              ln -f $(DESTDIR)$(bindir)/xenstore $(DESTDIR)$(bindir)/$${c} ; \
 +              ln -fs xenstore $(DESTDIR)/usr/bin/$${c} ; \
        done
 +      $(INSTALL_PROG) domu-xenstore $(DESTDIR)/bin
        for client in $(CLIENTS_DOMU); do \
--          $(INSTALL_PROG) $$client $(DESTDIR)/$(BINDIR)/$${client/domu-}; \
+-          $(INSTALL_PROG) $$client $(DESTDIR)$(bindir)/$${client/domu-}; \
 +          ln -fs domu-xenstore $(DESTDIR)/bin/$${client/domu-}; \
        done
-       $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)
-       $(INSTALL_SHLIB) libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)
+       $(INSTALL_DIR) $(DESTDIR)$(libdir)
+       $(INSTALL_SHLIB) libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir)

++++++ x86-cpufreq-report.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:38.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:38.000000000 +0100
@@ -1,9 +1,9 @@
-Index: xen-4.5.0-testing/xen/arch/x86/platform_hypercall.c
+Index: xen-4.6.0-testing/xen/arch/x86/platform_hypercall.c
 ===================================================================
---- xen-4.5.0-testing.orig/xen/arch/x86/platform_hypercall.c
-+++ xen-4.5.0-testing/xen/arch/x86/platform_hypercall.c
-@@ -25,7 +25,7 @@
- #include <xen/irq.h>
+--- xen-4.6.0-testing.orig/xen/arch/x86/platform_hypercall.c
++++ xen-4.6.0-testing/xen/arch/x86/platform_hypercall.c
+@@ -26,7 +26,7 @@
+ #include <xen/symbols.h>
  #include <asm/current.h>
  #include <public/platform.h>
 -#include <acpi/cpufreq/processor_perf.h>
@@ -11,10 +11,11 @@
  #include <asm/edd.h>
  #include <asm/mtrr.h>
  #include <asm/io_apic.h>
-@@ -760,6 +760,41 @@ ret_t do_platform_op(XEN_GUEST_HANDLE_PA
+@@ -825,6 +825,41 @@ ret_t do_platform_op(XEN_GUEST_HANDLE_PA
+             ret = -EFAULT;
      }
      break;
- 
++
 +    case XENPF_get_cpu_freq:
 +    case XENPF_get_cpu_freq_min:
 +    case XENPF_get_cpu_freq_max:
@@ -49,15 +50,14 @@
 +            ret = -EFAULT;
 +    }
 +    break;
-+
+ 
      default:
          ret = -ENOSYS;
-         break;
-Index: xen-4.5.0-testing/xen/include/public/platform.h
+Index: xen-4.6.0-testing/xen/include/public/platform.h
 ===================================================================
---- xen-4.5.0-testing.orig/xen/include/public/platform.h
-+++ xen-4.5.0-testing/xen/include/public/platform.h
-@@ -527,6 +527,16 @@ struct xenpf_core_parking {
+--- xen-4.6.0-testing.orig/xen/include/public/platform.h
++++ xen-4.6.0-testing/xen/include/public/platform.h
+@@ -547,6 +547,16 @@ struct xenpf_core_parking {
  typedef struct xenpf_core_parking xenpf_core_parking_t;
  DEFINE_XEN_GUEST_HANDLE(xenpf_core_parking_t);
  
@@ -74,10 +74,10 @@
  /*
   * Access generic platform resources(e.g., accessing MSR, port I/O, etc)
   * in unified way. Batch resource operations in one call are supported and
-@@ -587,6 +597,7 @@ struct xen_platform_op {
-         struct xenpf_mem_hotadd        mem_add;
+@@ -638,6 +648,7 @@ struct xen_platform_op {
          struct xenpf_core_parking      core_parking;
          struct xenpf_resource_op       resource_op;
+         struct xenpf_symdata           symdata;
 +        struct xenpf_get_cpu_freq      get_cpu_freq;
          uint8_t                        pad[128];
      } u;

++++++ xen-4.5.1-testing-src.tar.bz2 -> xen-4.6.0-testing-src.tar.bz2 ++++++
++++ 187056 lines of diff (skipped)

++++++ xen-destdir.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:42.000000000 +0100
@@ -1,6 +1,8 @@
---- a/tools/xenstore/Makefile
-+++ b/tools/xenstore/Makefile
-@@ -19,6 +19,7 @@ LDFLAGS += $(LDFLAGS-y)
+Index: xen-4.6.0-testing/tools/xenstore/Makefile
+===================================================================
+--- xen-4.6.0-testing.orig/tools/xenstore/Makefile
++++ xen-4.6.0-testing/tools/xenstore/Makefile
+@@ -20,6 +20,7 @@ LDFLAGS += $(LDFLAGS-y)
  
  CLIENTS := xenstore-exists xenstore-list xenstore-read xenstore-rm 
xenstore-chmod
  CLIENTS += xenstore-write xenstore-ls xenstore-watch
@@ -8,7 +10,7 @@
  
  XENSTORED_OBJS = xenstored_core.o xenstored_watch.o xenstored_domain.o 
xenstored_transaction.o xs_lib.o talloc.o utils.o tdb.o hashtable.o
  
-@@ -57,7 +58,7 @@ endif
+@@ -58,7 +59,7 @@ endif
  all: $(ALL_TARGETS)
  
  .PHONY: clients
@@ -17,7 +19,7 @@
  
  ifeq ($(CONFIG_SunOS),y)
  xenstored_probes.h: xenstored_probes.d
-@@ -85,6 +86,9 @@ xenstored.a: $(XENSTORED_OBJS)
+@@ -86,6 +87,9 @@ xenstored.a: $(XENSTORED_OBJS)
  $(CLIENTS): xenstore
        ln -f xenstore $@
  
@@ -27,7 +29,7 @@
  xenstore: xenstore_client.o $(LIBXENSTORE)
        $(CC) $< $(LDFLAGS) $(LDLIBS_libxenstore) $(SOCKET_LIBS) -o $@ 
$(APPEND_LDFLAGS)
  
-@@ -112,7 +116,7 @@ clean:
+@@ -113,7 +117,7 @@ clean:
        rm -f *.a *.o *.opic *.so* xenstored_probes.h
        rm -f xenstored xs_random xs_stress xs_crashme
        rm -f xs_tdb_dump xenstore-control init-xenstore-domain
@@ -35,14 +37,23 @@
 +      rm -f xenstore $(CLIENTS) $(CLIENTS_DOMU)
        $(RM) $(DEPS)
  
- .PHONY: TAGS
-@@ -138,6 +142,9 @@ ifeq ($(XENSTORE_XENSTORED),y)
+ .PHONY: distclean
+@@ -136,13 +140,17 @@ ifeq ($(XENSTORE_XENSTORED),y)
+       $(INSTALL_DIR) $(DESTDIR)$(sbindir)
+       $(INSTALL_DIR) $(DESTDIR)$(XEN_LIB_STORED)
+       $(INSTALL_PROG) xenstored $(DESTDIR)$(sbindir)
++      $(INSTALL_DIR) $(DESTDIR)/bin
+ endif
+       $(INSTALL_PROG) xenstore-control $(DESTDIR)$(bindir)
+       $(INSTALL_PROG) xenstore $(DESTDIR)$(bindir)
        set -e ; for c in $(CLIENTS) ; do \
-               ln -f $(DESTDIR)$(BINDIR)/xenstore $(DESTDIR)$(BINDIR)/$${c} ; \
+               ln -f $(DESTDIR)$(bindir)/xenstore $(DESTDIR)$(bindir)/$${c} ; \
        done
+-      $(INSTALL_DIR) $(DESTDIR)$(libdir)
 +      for client in $(CLIENTS_DOMU); do \
-+          $(INSTALL_PROG) $$client $(DESTDIR)/$(BINDIR)/$${client/domu-}; \
++          $(INSTALL_PROG) $$client $(DESTDIR)$(bindir)/$${client/domu-}; \
 +      done
-       $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)
-       $(INSTALL_SHLIB) libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)
-       ln -sf libxenstore.so.$(MAJOR).$(MINOR) 
$(DESTDIR)$(LIBDIR)/libxenstore.so.$(MAJOR)
++      $(INSTALL_DIR) $(DESTDIR)$(libdir)
+       $(INSTALL_SHLIB) libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir)
+       ln -sf libxenstore.so.$(MAJOR).$(MINOR) 
$(DESTDIR)$(libdir)/libxenstore.so.$(MAJOR)
+       ln -sf libxenstore.so.$(MAJOR) $(DESTDIR)$(libdir)/libxenstore.so

++++++ xen-dom0-modules.service ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:42.000000000 +0100
@@ -2,7 +2,6 @@
 Description=Load dom0 backend drivers
 ConditionPathExists=/proc/xen
 Before=proc-xen.mount
-DefaultDependencies=no
 
 [Install]
 WantedBy=multi-user.target

++++++ xen-hvm-default-bridge.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:42.000000000 +0100
@@ -1,7 +1,7 @@
-Index: xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/net.h
+Index: xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/net.h
 ===================================================================
---- xen-4.5.1-testing.orig/tools/qemu-xen-traditional-dir-remote/net.h
-+++ xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/net.h
+--- xen-4.6.0-testing.orig/tools/qemu-xen-traditional-dir-remote/net.h
++++ xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/net.h
 @@ -107,8 +107,8 @@ void net_host_device_add(const char *dev
  void net_host_device_remove(int vlan_id, const char *device);
  
@@ -13,10 +13,10 @@
  #endif
  #ifdef __sun__
  #define SMBD_COMMAND "/usr/sfw/sbin/smbd"
-Index: xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/net.c
+Index: xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/net.c
 ===================================================================
---- xen-4.5.1-testing.orig/tools/qemu-xen-traditional-dir-remote/net.c
-+++ xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/net.c
+--- xen-4.6.0-testing.orig/tools/qemu-xen-traditional-dir-remote/net.c
++++ xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/net.c
 @@ -1765,9 +1765,10 @@ int net_client_init(const char *device,
              }
              if (get_param_value(script_arg, sizeof(script_arg), "scriptarg", 
p) == 0 &&
@@ -30,10 +30,10 @@
          }
      } else
  #endif
-Index: 
xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/i386-dm/qemu-ifup-Linux
+Index: 
xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/i386-dm/qemu-ifup-Linux
 ===================================================================
---- 
xen-4.5.1-testing.orig/tools/qemu-xen-traditional-dir-remote/i386-dm/qemu-ifup-Linux
-+++ 
xen-4.5.1-testing/tools/qemu-xen-traditional-dir-remote/i386-dm/qemu-ifup-Linux
+--- 
xen-4.6.0-testing.orig/tools/qemu-xen-traditional-dir-remote/i386-dm/qemu-ifup-Linux
++++ 
xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/i386-dm/qemu-ifup-Linux
 @@ -1,36 +1,22 @@
  #!/bin/sh
  

++++++ xen.build-compare.doc_html.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:42.000000000 +0100
@@ -5,20 +5,20 @@
  docs/Makefile |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
-Index: xen-4.5.0-testing/docs/Makefile
+Index: xen-4.6.0-testing/docs/Makefile
 ===================================================================
---- xen-4.5.0-testing.orig/docs/Makefile
-+++ xen-4.5.0-testing/docs/Makefile
-@@ -110,7 +110,7 @@ install-html: html txt figs
- install: install-man-pages install-html
+--- xen-4.6.0-testing.orig/docs/Makefile
++++ xen-4.6.0-testing/docs/Makefile
+@@ -142,7 +142,7 @@ install: install-man-pages install-html
  
+ # Individual file build targets
  html/index.html: $(DOC_HTML) $(CURDIR)/gen-html-index INDEX
 -      $(PERL) -w -- $(CURDIR)/gen-html-index -i INDEX html $(DOC_HTML)
 +      $(PERL) -w -- $(CURDIR)/gen-html-index -i INDEX html $(sort $(DOC_HTML))
  
  html/%.html: %.markdown
-       $(INSTALL_DIR) $(@D)
-@@ -152,8 +152,8 @@ html/hypercall/%/index.html: $(CURDIR)/x
+ ifneq ($(MARKDOWN),)
+@@ -165,8 +165,8 @@ html/hypercall/%/index.html: $(CURDIR)/x
        $(INSTALL_DIR) $(@D)
        $(PERL) -w $(CURDIR)/xen-headers -O $(@D) \
                -T 'arch-$* - Xen public headers' \

++++++ xen.build-compare.seabios.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:42.000000000 +0100
@@ -3,20 +3,21 @@
  tools/firmware/seabios-dir-remote/tools/buildversion.sh |    5 +++++
  1 file changed, 5 insertions(+)
 
-Index: 
xen-4.5.0-testing/tools/firmware/seabios-dir-remote/scripts/buildversion.sh
+Index: 
xen-4.6.0-testing/tools/firmware/seabios-dir-remote/scripts/buildversion.sh
 ===================================================================
---- 
xen-4.5.0-testing.orig/tools/firmware/seabios-dir-remote/scripts/buildversion.sh
-+++ xen-4.5.0-testing/tools/firmware/seabios-dir-remote/scripts/buildversion.sh
-@@ -11,7 +11,12 @@ elif [ -f .version ]; then
+--- 
xen-4.6.0-testing.orig/tools/firmware/seabios-dir-remote/scripts/buildversion.sh
++++ xen-4.6.0-testing/tools/firmware/seabios-dir-remote/scripts/buildversion.sh
+@@ -12,7 +12,12 @@ if [ -z "$BUILD_VERSION" ]; then
+     else
+         VERSION="?"
+     fi
+-    VERSION="${VERSION}-`date +"%Y%m%d_%H%M%S"`-`hostname`"
++    if test -n "${SEABIOS_DATE}"
++    then
++        VERSION="${SEABIOS_DATE}"
++    else
++        VERSION="${VERSION}-`date +"%Y%m%d_%H%M%S"`-`hostname`"
++    fi
  else
-     VERSION="?"
+     VERSION="$BUILD_VERSION"
  fi
-+if test -n "${SEABIOS_DATE}"
-+then
-+    VERSION="${SEABIOS_DATE}"
-+else
- VERSION="${VERSION}-`date +"%Y%m%d_%H%M%S"`-`hostname`"
-+fi
- echo "Version: ${VERSION}"
- 
- # Build header file

++++++ xen.stubdom.newlib.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:42.000000000 +0100
@@ -24,11 +24,11 @@
 
 Signed-off-by: Olaf Hering <o...@aepfle.de>
 
-Index: xen-4.5.0-testing/stubdom/Makefile
+Index: xen-4.6.0-testing/stubdom/Makefile
 ===================================================================
---- xen-4.5.0-testing.orig/stubdom/Makefile
-+++ xen-4.5.0-testing/stubdom/Makefile
-@@ -72,6 +72,8 @@ newlib-$(NEWLIB_VERSION): newlib-$(NEWLI
+--- xen-4.6.0-testing.orig/stubdom/Makefile
++++ xen-4.6.0-testing/stubdom/Makefile
+@@ -80,6 +80,8 @@ newlib-$(NEWLIB_VERSION): newlib-$(NEWLI
        patch -d $@ -p0 < newlib.patch
        patch -d $@ -p0 < newlib-chk.patch
        patch -d $@ -p1 < newlib-stdint-size_max-fix-from-1.17.0.patch
@@ -37,10 +37,10 @@
        find $@ -type f | xargs perl -i.bak \
                -pe 's/\b_(tzname|daylight|timezone)\b/$$1/g'
        touch $@
-Index: xen-4.5.0-testing/stubdom/newlib-cygmon-gmon.patch
+Index: xen-4.6.0-testing/stubdom/newlib-cygmon-gmon.patch
 ===================================================================
 --- /dev/null
-+++ xen-4.5.0-testing/stubdom/newlib-cygmon-gmon.patch
++++ xen-4.6.0-testing/stubdom/newlib-cygmon-gmon.patch
 @@ -0,0 +1,60 @@
 +
 +I: A function uses a 'return;' statement, but has actually a value
@@ -102,9 +102,10 @@
 + moncontrol(mode)
 +     int mode;
 + {
-
---- /dev/null  2014-11-27 12:21:54.951999741 +0100
-+++ xen-4.5.0-testing/stubdom/newlib-makedoc.patch     2015-04-08 
12:03:51.286029882 +0200
+Index: xen-4.6.0-testing/stubdom/newlib-makedoc.patch
+===================================================================
+--- /dev/null
++++ xen-4.6.0-testing/stubdom/newlib-makedoc.patch
 @@ -0,0 +1,10 @@
 +--- newlib-1.16.0/newlib/doc/makedoc.c.orig   2015-04-08 11:56:39.283090914 
+0200
 ++++ newlib-1.16.0/newlib/doc/makedoc.c        2015-04-08 11:56:51.245227742 
+0200

++++++ xen_pvonhvm.xen_emul_unplug.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:42.000000000 +0100
@@ -9,11 +9,11 @@
  unmodified_drivers/linux-2.6/platform-pci/platform-pci.c |   15 
+++++++++++++++
  1 file changed, 15 insertions(+)
 
-Index: 
xen-4.4.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+Index: 
xen-4.6.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
 ===================================================================
---- 
xen-4.4.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-+++ xen-4.4.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-@@ -39,6 +39,9 @@
+--- 
xen-4.6.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
++++ xen-4.6.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+@@ -38,6 +38,9 @@
  #include <xen/interface/hvm/params.h>
  #include <xen/features.h>
  #include <xen/evtchn.h>
@@ -23,7 +23,7 @@
  #ifdef __ia64__
  #include <asm/xen/xencomm.h>
  #endif
-@@ -290,6 +293,18 @@ static int check_platform_magic(struct d
+@@ -289,6 +292,18 @@ static int check_platform_magic(struct d
        short magic, unplug = 0;
        char protocol, *p, *q, *err;
  


++++++ xenconsole-no-multiple-connections.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:42.000000000 +0100
@@ -1,8 +1,8 @@
-Index: xen-4.5.0-testing/tools/console/client/main.c
+Index: xen-4.6.0-testing/tools/console/client/main.c
 ===================================================================
---- xen-4.5.0-testing.orig/tools/console/client/main.c
-+++ xen-4.5.0-testing/tools/console/client/main.c
-@@ -95,6 +95,7 @@ static int get_pty_fd(struct xs_handle *
+--- xen-4.6.0-testing.orig/tools/console/client/main.c
++++ xen-4.6.0-testing/tools/console/client/main.c
+@@ -99,6 +99,7 @@ static int get_pty_fd(struct xs_handle *
   * Assumes there is already a watch set in the store for this path. */
  {
        struct timeval tv;
@@ -10,7 +10,7 @@
        fd_set watch_fdset;
        int xs_fd = xs_fileno(xs), pty_fd = -1;
        int start, now;
-@@ -118,6 +119,14 @@ static int get_pty_fd(struct xs_handle *
+@@ -122,6 +123,14 @@ static int get_pty_fd(struct xs_handle *
                                pty_fd = open(pty_path, O_RDWR | O_NOCTTY);
                                if (pty_fd == -1)
                                        warn("Could not open tty `%s'", 
pty_path);

++++++ xenpaging.qemu.flush-cache.patch ++++++
--- /var/tmp/diff_new_pack.hlQsvO/_old  2015-12-18 21:53:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hlQsvO/_new  2015-12-18 21:53:42.000000000 +0100
@@ -15,11 +15,11 @@
  tools/qemu-xen-traditional-dir-remote/xenstore.c |    3 +++
  1 file changed, 3 insertions(+)
 
-Index: xen-4.5.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
+Index: xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
 ===================================================================
---- xen-4.5.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c
-+++ xen-4.5.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
-@@ -1006,6 +1006,9 @@ static void xenstore_process_dm_command_
+--- xen-4.6.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c
++++ xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
+@@ -995,6 +995,9 @@ static void xenstore_process_dm_command_
          do_pci_add(par);
          free(par);
  #endif


Reply via email to