Hello community,
here is the log from the commit of package xen for openSUSE:Factory
checked in at Wed Jun 1 09:30:52 CEST 2011.
--------
--- xen/xen.changes 2011-05-13 05:23:17.000000000 +0200
+++ /mounts/work_src_done/STABLE/xen/xen.changes 2011-05-31 19:35:01.000000000 +0200
@@ -1,0 +2,93 @@
+Thu May 26 06:36:49 MDT 2011 - carnold@novell.com
+
+- Upstream patches from Jan
+ 23233-hvm-cr-access.patch
+ 23234-svm-decode-assist-base.patch
+ 23235-svm-decode-assist-crs.patch
+ 23236-svm-decode-assist-invlpg.patch
+ 23238-svm-decode-assist-insn-fetch.patch
+ 23303-cpufreq-misc.patch
+ 23304-amd-oprofile-strings.patch
+ 23305-amd-fam15-xenoprof.patch
+ 23306-amd-fam15-vpmu.patch
+ 23334-amd-fam12+14-vpmu.patch
+ 23338-vtd-force-intremap.patch
+
+-------------------------------------------------------------------
+Thu May 26 06:27:56 MDT 2011 - carnold@novell.com
+
+- fate#310957 - Update to Xen 4.1.1-rc1 c/s 23064
+
+-------------------------------------------------------------------
+Tue May 24 18:19:04 CEST 2011 - ohering@suse.de
+
+- xentrace: dynamic tracebuffer allocation
+ xen-unstable.xentrace.dynamic_tbuf.patch
+ xen-unstable.xentrace.empty_t_info_pages.patch
+ xen-unstable.xentrace.verbose.patch
+ xen-unstable.xentrace.no_gdprintk.patch
+ xen-unstable.xentrace.comments.patch
+ xen-unstable.xentrace.printk_prefix.patch
+ xen-unstable.xentrace.remove_debug_printk.patch
+ xen-unstable.xentrace.t_info_pages-formula.patch
+ xen-unstable.xentrace.register_cpu_notifier-boot_time.patch
+ xen-unstable.xentrace.t_info_page-overflow.patch
+ xen-unstable.xentrace.t_info_first_offset.patch
+ xen-unstable.xentrace.data_size__read_mostly.patch
+ xen-unstable.xentrace.__insert_record-dst-type.patch
+
+-------------------------------------------------------------------
+Tue May 24 13:51:14 CEST 2011 - ohering@suse.de
+
+- fate#310510 - fix xenpaging
+ update xenpaging patches for xen 4.1
+ xenpaging.guest_remove_page.slow_path.patch
+ xenpaging.mem_event-no-p2mt.patch
+ xenpaging.no-srand.patch
+ xenpaging.return-void.patch
+ xenpaging.catch-xc_mem_paging_resume-error.patch
+ xenpaging.xenpaging_populate_page-gfn.patch
+ xenpaging.autostart.patch
+
+-------------------------------------------------------------------
+Fri May 20 10:48:54 MDT 2011 - carnold@novell.com
+
+- bnc#670465 - When connecting to Xen guest through vncviewer mouse
+ tracking is off.
+- Upstream patch 23298-hvmop-get-mem-type.patch replaces
+ xen.sles11sp1.bug684297.HVMOP_get_mem_type.patch
+- Upstream patches from Jan
+ 23333-hvm-32bit-compat-hypercalls.patch
+ 23337-vtd-malicious-msi-filter.patch
+ 23338-vtd-force-intremap.patch (CVE-2011-1898)
+ 23341-x86-ioapic-write-entry.patch
+ 23343-vtd-error-path-leaks.patch
+
+-------------------------------------------------------------------
+Thu May 19 11:22:51 CEST 2011 - ohering@suse.de
+
+- bnc#684305 - on_crash is being ignored with kdump now working in HVM
+ xend-config-enable-dump-comment.patch
+
+-------------------------------------------------------------------
+Thu May 19 11:19:37 CEST 2011 - ohering@suse.de
+
+- disable xend's logrotation for xend.log, use included logrotate.conf
+
+-------------------------------------------------------------------
+Wed May 18 17:00:16 CEST 2011 - ohering@suse.de
+
+- bnc#684297 - HVM taking too long to dump vmcore
+ xen.sles11sp1.bug684297.HVMOP_get_mem_type.patch
+ new hvm_op hyper call option
+ xen.sles11sp1.bug684297.xen_oldmem_pfn_is_ram.patch
+ Use new Xen HVMOP_get_mem_type hvmop hypercall option and new Linux
+ kernel register_oldmem_pfn_is_ram interface.
+ (depends on two kernel-source changes)
+
+-------------------------------------------------------------------
+Tue May 17 11:31:49 MDT 2011 - carnold@novell.com
+
+- Update to Xen 4.1.1-rc1-pre c/s 23051
+
+-------------------------------------------------------------------
@@ -44,0 +138,6 @@
+Tue May 3 08:54:51 MDT 2011 - carnold@novell.com
+
+- bnc#691238 - L3: question on behaviour change xm list
+ snapshot-xend.patch
+
+-------------------------------------------------------------------
@@ -54 +153 @@
-Thu Apr 28 14:12:13 MDT 2011 - jfehlig@novell.com
+Thu Apr 28 10:24:46 MDT 2011 - jfehlig@novell.com
@@ -65,0 +165,14 @@
+Tue Apr 26 11:30:39 MDT 2011 - carnold@novell.com
+
+- bnc#623680 - xen kernel freezes during boot when processor module
+ is loaded
+ 23228-x86-conditional-write_tsc.patch
+- bnc#680824 - dom0 can't recognize boot disk when IOMMU is enabled
+ 23200-amd-iommu-intremap-sync.patch
+- Upstream patches from Jan
+ 23127-vtd-bios-settings.patch
+ 23153-x86-amd-clear-DramModEn.patch
+ 23154-x86-amd-iorr-no-rdwr.patch
+ 23199-amd-iommu-unmapped-intr-fault.patch
+
+-------------------------------------------------------------------
@@ -76,0 +190,7 @@
+Thu Apr 19 06:43:19 MST 2011 - jfehlig@novell.com
+
+- bnc#687981 - L3: mistyping model type when defining VIF crashes
+ VM
+ xend-validate-nic-model.patch
+
+-------------------------------------------------------------------
@@ -110,0 +231,9 @@
+Tue Apr 5 10:57:20 MDT 2011 - carnold@novell.com
+
+- Upstream patches from Jan
+ 23103-x86-pirq-guest-eoi-check.patch
+ 23030-x86-hpet-init.patch
+ 23061-amd-iommu-resume.patch
+ 23127-vtd-bios-settings.patch
+
+-------------------------------------------------------------------
@@ -120,0 +250,7 @@
+Mon Mar 28 09:28:49 MDT 2011 - carnold@novell.com
+
+- Enable support for kernel decompression for gzip, bzip2, and LZMA
+ so that kernels compressed with any of these methods can be
+ launched
+
+-------------------------------------------------------------------
@@ -148,0 +285,25 @@
+Thu Mar 17 06:22:30 MDT 2011 - carnold@novell.com
+
+- bnc#675817 - Kernel panic when creating HVM guests on AMD
+ platforms with XSAVE
+ 22462-x86-xsave-init-common.patch
+
+-------------------------------------------------------------------
+Tue Mar 15 09:22:24 MDT 2011 - carnold@novell.com
+
+- bnc#679344 - Xen: multi-vCPU pv guest may crash host
+ 23034-x86-arch_set_info_guest-DoS.patch
+- bnc#678871 - dom0 hangs long time when starting hvm guests with
+ memory >= 64GB
+ 22780-pod-preempt.patch
+- bnc#675363 - Random lockups with kernel-xen. Possibly graphics
+ related
+ 22997-x86-map_pages_to_xen-check.patch
+- Upstream patches from Jan
+ 22949-x86-nmi-pci-serr.patch
+ 22992-x86-fiop-m32i.patch
+ 22996-x86-alloc_xen_pagetable-no-BUG.patch
+ 23020-x86-cpuidle-ordering.patch
+ 23039-csched-constrain-cpu.patch
+
+-------------------------------------------------------------------
@@ -153,0 +315,6 @@
+Mon Mar 14 10:11:19 MDT 2011 - carnold@novell.com
+
+- bnc#678229 - restore of sles HVM fails
+ 22873-svm-sr-32bit-sysenter-msrs.patch
+
+-------------------------------------------------------------------
@@ -159 +326,24 @@
-Fri Feb 18 09:46:56 CST 2011 - lidongyang@novell.com
+Mon Feb 28 14:07:01 CST 2011 - cyliu@novell.com
+
+- Fix /vm/uuid xenstore leak on tapdisk2 device cleanup
+ 22499-xen-hotplug-cleanup.patch
+
+-------------------------------------------------------------------
+Fri Feb 25 14:07:01 MST 2011 - carnold@novell.com
+
+- Upstream patches from Jan
+ 22872-amd-iommu-pci-reattach.patch
+ 22879-hvm-no-self-set-mem-type.patch
+ 22899-x86-tighten-msr-permissions.patch
+ 22915-x86-hpet-msi-s3.patch
+ 22947-amd-k8-mce-init-all-msrs.patch
+
+-------------------------------------------------------------------
+Thu Feb 17 21:18:19 MST 2011 - jfehlig@novell.com
+
++++ 162 more lines (skipped)
++++ between xen/xen.changes
++++ and /mounts/work_src_done/STABLE/xen/xen.changes
calling whatdependson for head-i586
Old:
----
23153-x86-amd-clear-DramModEn.patch
23154-x86-amd-iorr-no-rdwr.patch
23200-amd-iommu-intremap-sync.patch
23228-x86-conditional-write_tsc.patch
cve-2011-1583-4.1.patch
xen-4.1.0-testing-src.tar.bz2
xenpaging.HVMCOPY_gfn_paged_out.patch
xenpaging.MRU_SIZE.patch
xenpaging.autostart_delay.patch
xenpaging.blacklist.patch
xenpaging.doc.patch
xenpaging.get_paged_frame.patch
xenpaging.guest_remove_page.patch
xenpaging.machine_to_phys_mapping.patch
xenpaging.makefile.patch
xenpaging.mem_event_check_ring-free_requests.patch
xenpaging.mem_paging_tool_qemu_flush_cache.patch
xenpaging.no_domain_id.patch
xenpaging.notify_policy_only_once.patch
xenpaging.num_pages_equal_max_pages.patch
xenpaging.optimize_p2m_mem_paging_populate.patch
xenpaging.p2m_mem_paging_populate_if_p2m_ram_paged.patch
xenpaging.page_already_populated.patch
xenpaging.pagefile.patch
xenpaging.pageout_policy.patch
xenpaging.paging_prep_enomem.patch
xenpaging.policy_linear.patch
xenpaging.populate_only_if_paged.patch
xenpaging.print-arguments.patch
xenpaging.runtime_mru_size.patch
xenpaging.signal_handling.patch
xenpaging.tools_xenpaging_cleanup.patch
xenpaging.xenpaging_init.patch
xentrace.dynamic_sized_tbuf.patch
New:
----
23233-hvm-cr-access.patch
23234-svm-decode-assist-base.patch
23235-svm-decode-assist-crs.patch
23236-svm-decode-assist-invlpg.patch
23238-svm-decode-assist-insn-fetch.patch
23303-cpufreq-misc.patch
23304-amd-oprofile-strings.patch
23305-amd-fam15-xenoprof.patch
23306-amd-fam15-vpmu.patch
23334-amd-fam12+14-vpmu.patch
23338-vtd-force-intremap.patch
xen-4.1.1-testing-src.tar.bz2
xen-unstable.xentrace.__insert_record-dst-type.patch
xen-unstable.xentrace.comments.patch
xen-unstable.xentrace.data_size__read_mostly.patch
xen-unstable.xentrace.dynamic_tbuf.patch
xen-unstable.xentrace.empty_t_info_pages.patch
xen-unstable.xentrace.no_gdprintk.patch
xen-unstable.xentrace.printk_prefix.patch
xen-unstable.xentrace.register_cpu_notifier-boot_time.patch
xen-unstable.xentrace.remove_debug_printk.patch
xen-unstable.xentrace.t_info_first_offset.patch
xen-unstable.xentrace.t_info_page-overflow.patch
xen-unstable.xentrace.t_info_pages-formula.patch
xen-unstable.xentrace.verbose.patch
xen.sles11sp1.bug684297.xen_oldmem_pfn_is_ram.patch
xend-config-enable-dump-comment.patch
xend-disable-internal-logrotate.patch
xenpaging.catch-xc_mem_paging_resume-error.patch
xenpaging.guest_remove_page.slow_path.patch
xenpaging.mem_event-no-p2mt.patch
xenpaging.no-srand.patch
xenpaging.return-void.patch
xenpaging.xenpaging_populate_page-gfn.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -22,8 +22,8 @@
ExclusiveArch: %ix86 x86_64
%define xvers 4.1
%define xvermaj 4
-%define changeset 23013
-%define xen_build_dir xen-4.1.0-testing
+%define changeset 23064
+%define xen_build_dir xen-4.1.1-testing
%define with_kmp 1
%define with_stubdom 0
%if %suse_version > 1140
@@ -79,14 +79,14 @@
%if %{?with_kmp}0
BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11
%endif
-Version: 4.1.0_01
-Release: 13
+Version: 4.1.1_01
+Release: 1
License: GPLv2+
Group: System/Kernel
AutoReqProv: on
PreReq: %insserv_prereq %fillup_prereq
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
-Source0: xen-4.1.0-testing-src.tar.bz2
+Source0: xen-4.1.1-testing-src.tar.bz2
Source1: stubdom.tar.bz2
Source2: xen-utils-0.1.tar.bz2
Source3: README.SuSE
@@ -120,7 +120,6 @@
# http://xenbits.xensource.com/ext/xenalyze
Source20000: xenalyze.hg.tar.bz2
# Upstream patches
-Patch0: cve-2011-1583-4.1.patch
Patch1: 22998-x86-get_page_from_l1e-retcode.patch
Patch2: 22999-x86-mod_l1_entry-retcode.patch
Patch3: 23000-x86-mod_l2_entry-retcode.patch
@@ -128,11 +127,18 @@
Patch5: 23099-x86-rwlock-scalability.patch
Patch6: 23103-x86-pirq-guest-eoi-check.patch
Patch7: 23127-vtd-bios-settings.patch
-Patch8: 23153-x86-amd-clear-DramModEn.patch
-Patch9: 23154-x86-amd-iorr-no-rdwr.patch
-Patch10: 23199-amd-iommu-unmapped-intr-fault.patch
-Patch11: 23200-amd-iommu-intremap-sync.patch
-Patch12: 23228-x86-conditional-write_tsc.patch
+Patch8: 23199-amd-iommu-unmapped-intr-fault.patch
+Patch9: 23233-hvm-cr-access.patch
+Patch10: 23234-svm-decode-assist-base.patch
+Patch11: 23235-svm-decode-assist-crs.patch
+Patch12: 23236-svm-decode-assist-invlpg.patch
+Patch13: 23238-svm-decode-assist-insn-fetch.patch
+Patch14: 23303-cpufreq-misc.patch
+Patch15: 23304-amd-oprofile-strings.patch
+Patch16: 23305-amd-fam15-xenoprof.patch
+Patch17: 23306-amd-fam15-vpmu.patch
+Patch18: 23334-amd-fam12+14-vpmu.patch
+Patch19: 23338-vtd-force-intremap.patch
# Upstream qemu patches
# Our patches
Patch300: xen-config.diff
@@ -221,8 +227,9 @@
Patch440: bdrv_default_rwflag.patch
Patch442: xen-minimum-restart-time.patch
Patch443: vif-bridge.mtu.patch
-Patch444: xentrace.dynamic_sized_tbuf.patch
Patch445: hotplug.losetup.patch
+Patch446: xend-disable-internal-logrotate.patch
+Patch447: xend-config-enable-dump-comment.patch
# Jim's domain lock patch
Patch450: xend-domain-lock.patch
# Hypervisor and PV driver Patches
@@ -238,39 +245,33 @@
Patch510: pv-driver-build.patch
Patch511: supported_module.diff
Patch512: magic_ioport_compat.patch
+Patch513: xen.sles11sp1.bug684297.xen_oldmem_pfn_is_ram.patch
Patch650: disable_emulated_device.diff
Patch651: ioemu-disable-scsi.patch
Patch652: ioemu-disable-emulated-ide-if-pv.patch
Patch700: hv_extid_compatibility.patch
+# xentrace / xenalyze
+Patch1000: xen-unstable.xentrace.dynamic_tbuf.patch
+Patch1001: xen-unstable.xentrace.empty_t_info_pages.patch
+Patch1002: xen-unstable.xentrace.verbose.patch
+Patch1003: xen-unstable.xentrace.no_gdprintk.patch
+Patch1004: xen-unstable.xentrace.comments.patch
+Patch1005: xen-unstable.xentrace.printk_prefix.patch
+Patch1006: xen-unstable.xentrace.remove_debug_printk.patch
+Patch1007: xen-unstable.xentrace.t_info_pages-formula.patch
+Patch1008: xen-unstable.xentrace.register_cpu_notifier-boot_time.patch
+Patch1009: xen-unstable.xentrace.t_info_page-overflow.patch
+Patch1010: xen-unstable.xentrace.t_info_first_offset.patch
+Patch1011: xen-unstable.xentrace.data_size__read_mostly.patch
+Patch1012: xen-unstable.xentrace.__insert_record-dst-type.patch
# FATE 310510
-Patch10001: xenpaging.tools_xenpaging_cleanup.patch
-Patch10002: xenpaging.pageout_policy.patch
-Patch10003: xenpaging.get_paged_frame.patch
-Patch10004: xenpaging.makefile.patch
-Patch10010: xenpaging.policy_linear.patch
-Patch10011: xenpaging.pagefile.patch
-Patch10012: xenpaging.xenpaging_init.patch
-Patch10013: xenpaging.mem_paging_tool_qemu_flush_cache.patch
-Patch10014: xenpaging.machine_to_phys_mapping.patch
-Patch10015: xenpaging.populate_only_if_paged.patch
-Patch10017: xenpaging.autostart.patch
-Patch10018: xenpaging.signal_handling.patch
-Patch10019: xenpaging.MRU_SIZE.patch
-Patch10020: xenpaging.guest_remove_page.patch
-Patch10021: xenpaging.mem_event_check_ring-free_requests.patch
-Patch10022: xenpaging.blacklist.patch
-Patch10023: xenpaging.autostart_delay.patch
-Patch10024: xenpaging.page_already_populated.patch
-Patch10025: xenpaging.notify_policy_only_once.patch
-Patch10026: xenpaging.num_pages_equal_max_pages.patch
-Patch10027: xenpaging.p2m_mem_paging_populate_if_p2m_ram_paged.patch
-Patch10028: xenpaging.HVMCOPY_gfn_paged_out.patch
-Patch10029: xenpaging.optimize_p2m_mem_paging_populate.patch
-Patch10030: xenpaging.paging_prep_enomem.patch
-Patch10031: xenpaging.print-arguments.patch
-Patch10032: xenpaging.no_domain_id.patch
-Patch10033: xenpaging.runtime_mru_size.patch
-Patch10040: xenpaging.doc.patch
+Patch1100: xenpaging.guest_remove_page.slow_path.patch
+Patch1101: xenpaging.mem_event-no-p2mt.patch
+Patch1102: xenpaging.no-srand.patch
+Patch1103: xenpaging.return-void.patch
+Patch1104: xenpaging.catch-xc_mem_paging_resume-error.patch
+Patch1105: xenpaging.xenpaging_populate_page-gfn.patch
+Patch1106: xenpaging.autostart.patch
# xenalyze
Patch20000: xenalyze.gcc46.patch
# Build patch
@@ -608,7 +609,6 @@
%setup -q -n %xen_build_dir -a 1 -a 20000
%patch20000 -p1
tar xfj %{SOURCE2} -C $RPM_BUILD_DIR/%{xen_build_dir}/tools
-%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
@@ -621,6 +621,13 @@
%patch10 -p1
%patch11 -p1
%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
%patch300 -p1
%patch301 -p1
%patch302 -p1
@@ -703,8 +710,9 @@
%patch440 -p1
%patch442 -p1
%patch443 -p1
-%patch444 -p1
%patch445 -p1
+%patch446 -p1
+%patch447 -p1
%patch450 -p1
%patch500 -p1
%patch501 -p1
@@ -718,38 +726,34 @@
%patch510 -p1
%patch511 -p1
%patch512 -p1
+%patch513 -p1
%patch650 -p1
%patch651 -p1
%patch652 -p1
%patch700 -p1
-#%patch10001 -p1
-#%patch10002 -p1
-#%patch10003 -p1
-#%patch10004 -p1
-#%patch10010 -p1
-#%patch10011 -p1
-#%patch10012 -p1
-#%patch10013 -p1
-#%patch10014 -p1
-#%patch10015 -p1
-#%patch10017 -p1
-#%patch10018 -p1
-#%patch10019 -p1
-#%patch10020 -p1
-#%patch10021 -p1
-#%patch10022 -p1
-#%patch10023 -p1
-#%patch10024 -p1
-#%patch10025 -p1
-#%patch10026 -p1
-#%patch10027 -p1
-#%patch10028 -p1
-#%patch10029 -p1
-#%patch10030 -p1
-#%patch10031 -p1
-#%patch10032 -p1
-#%patch10033 -p1
-#%patch10040 -p1
+# xentrace / xenalyze
+%patch1000 -p1
+%patch1001 -p1
+%patch1002 -p1
+%patch1003 -p1
+%patch1004 -p1
+%patch1005 -p1
+%patch1006 -p1
+%patch1007 -p1
+%patch1008 -p1
+%patch1009 -p1
+%patch1010 -p1
+%patch1011 -p1
+%patch1012 -p1
+# FATE 310510
+%patch1100 -p1
+%patch1101 -p1
+%patch1102 -p1
+%patch1103 -p1
+%patch1104 -p1
+%patch1105 -p1
+%patch1106 -p1
+#
%patch99998 -p1
%patch99999 -p1
++++++ 22998-x86-get_page_from_l1e-retcode.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -19,8 +19,10 @@
Signed-off-by: Jan Beulich
---- a/xen/arch/x86/mm/shadow/multi.c
-+++ b/xen/arch/x86/mm/shadow/multi.c
+Index: xen-4.1.1-testing/xen/arch/x86/mm/shadow/multi.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/arch/x86/mm/shadow/multi.c
++++ xen-4.1.1-testing/xen/arch/x86/mm/shadow/multi.c
@@ -872,7 +872,7 @@ shadow_get_page_from_l1e(shadow_l1e_t sl
// If a privileged domain is attempting to install a map of a page it does
// not own, we let it succeed anyway.
@@ -72,8 +74,10 @@
shadow_vram_get_l1e(new_sl1e, sl1e, sl1mfn, d);
break;
}
---- a/xen/arch/x86/mm.c
-+++ b/xen/arch/x86/mm.c
+Index: xen-4.1.1-testing/xen/arch/x86/mm.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/arch/x86/mm.c
++++ xen-4.1.1-testing/xen/arch/x86/mm.c
@@ -799,12 +799,12 @@ get_page_from_l1e(
bool_t write;
++++++ 22999-x86-mod_l1_entry-retcode.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -12,8 +12,10 @@
Signed-off-by: Jan Beulich
---- a/xen/arch/x86/mm.c
-+++ b/xen/arch/x86/mm.c
+Index: xen-4.1.1-testing/xen/arch/x86/mm.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/arch/x86/mm.c
++++ xen-4.1.1-testing/xen/arch/x86/mm.c
@@ -1765,15 +1765,16 @@ static int mod_l1_entry(l1_pgentry_t *pl
struct domain *pt_dom = pt_vcpu->domain;
unsigned long mfn;
++++++ 23000-x86-mod_l2_entry-retcode.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -11,8 +11,10 @@
Signed-off-by: Jan Beulich
---- a/xen/arch/x86/mm.c
-+++ b/xen/arch/x86/mm.c
+Index: xen-4.1.1-testing/xen/arch/x86/mm.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/arch/x86/mm.c
++++ xen-4.1.1-testing/xen/arch/x86/mm.c
@@ -1845,16 +1845,16 @@ static int mod_l2_entry(l2_pgentry_t *pl
struct domain *d = vcpu->domain;
struct page_info *l2pg = mfn_to_page(pfn);
++++++ 23096-x86-hpet-no-cpumask_lock.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -16,8 +16,10 @@
Signed-off-by: Jan Beulich
Acked-by: Gang Wei
---- a/xen/arch/x86/hpet.c
-+++ b/xen/arch/x86/hpet.c
+Index: xen-4.1.1-testing/xen/arch/x86/hpet.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/arch/x86/hpet.c
++++ xen-4.1.1-testing/xen/arch/x86/hpet.c
@@ -34,18 +34,6 @@ struct hpet_event_channel
int shift;
s_time_t next_event;
@@ -81,7 +83,7 @@
wmb();
legacy_hpet_event.event_handler = handle_hpet_broadcast;
-@@ -713,9 +700,7 @@ void hpet_broadcast_exit(void)
+@@ -716,9 +703,7 @@ void hpet_broadcast_exit(void)
if ( !reprogram_timer(this_cpu(timer_deadline)) )
raise_softirq(TIMER_SOFTIRQ);
++++++ 23099-x86-rwlock-scalability.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -27,8 +27,10 @@
Signed-off-by: Keir Fraser
---- a/xen/common/spinlock.c
-+++ b/xen/common/spinlock.c
+Index: xen-4.1.1-testing/xen/common/spinlock.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/common/spinlock.c
++++ xen-4.1.1-testing/xen/common/spinlock.c
@@ -234,7 +234,11 @@ void _spin_unlock_recursive(spinlock_t *
void _read_lock(rwlock_t *lock)
{
@@ -128,8 +130,10 @@
preempt_disable();
return flags;
}
---- a/xen/include/asm-ia64/linux-xen/asm/spinlock.h
-+++ b/xen/include/asm-ia64/linux-xen/asm/spinlock.h
+Index: xen-4.1.1-testing/xen/include/asm-ia64/linux-xen/asm/spinlock.h
+===================================================================
+--- xen-4.1.1-testing.orig/xen/include/asm-ia64/linux-xen/asm/spinlock.h
++++ xen-4.1.1-testing/xen/include/asm-ia64/linux-xen/asm/spinlock.h
@@ -35,17 +35,6 @@ typedef struct {
} raw_rwlock_t;
#define _RAW_RW_LOCK_UNLOCKED /*(raw_rwlock_t)*/ { 0, 0 }
@@ -186,8 +190,10 @@
#define _raw_write_trylock(rw) \
({ \
---- a/xen/include/asm-x86/spinlock.h
-+++ b/xen/include/asm-x86/spinlock.h
+Index: xen-4.1.1-testing/xen/include/asm-x86/spinlock.h
+===================================================================
+--- xen-4.1.1-testing.orig/xen/include/asm-x86/spinlock.h
++++ xen-4.1.1-testing/xen/include/asm-x86/spinlock.h
@@ -35,51 +35,29 @@ typedef struct {
volatile int lock;
} raw_rwlock_t;
@@ -270,8 +276,10 @@
+#define _raw_rw_is_write_locked(x) ((x)->lock > 0)
#endif /* __ASM_SPINLOCK_H */
---- a/xen/include/xen/spinlock.h
-+++ b/xen/include/xen/spinlock.h
+Index: xen-4.1.1-testing/xen/include/xen/spinlock.h
+===================================================================
+--- xen-4.1.1-testing.orig/xen/include/xen/spinlock.h
++++ xen-4.1.1-testing/xen/include/xen/spinlock.h
@@ -157,6 +157,7 @@ unsigned long _read_lock_irqsave(rwlock_
void _read_unlock(rwlock_t *lock);
void _read_unlock_irq(rwlock_t *lock);
++++++ 23103-x86-pirq-guest-eoi-check.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -8,11 +8,13 @@
Signed-off-by: Keir Fraser
---- a/xen/arch/x86/irq.c
-+++ b/xen/arch/x86/irq.c
-@@ -1022,6 +1022,12 @@ static void __pirq_guest_eoi(struct doma
- if ( desc == NULL )
+Index: xen-4.1.1-testing/xen/arch/x86/irq.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/arch/x86/irq.c
++++ xen-4.1.1-testing/xen/arch/x86/irq.c
+@@ -1028,6 +1028,12 @@ static void __pirq_guest_eoi(struct doma
return;
+ }
+ if ( !(desc->status & IRQ_GUEST) )
+ {
++++++ 23127-vtd-bios-settings.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -27,8 +27,10 @@
Signed-off-by: Allen Kay
---- a/xen/arch/x86/apic.c
-+++ b/xen/arch/x86/apic.c
+Index: xen-4.1.1-testing/xen/arch/x86/apic.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/arch/x86/apic.c
++++ xen-4.1.1-testing/xen/arch/x86/apic.c
@@ -531,7 +531,7 @@ static void resume_x2apic(void)
mask_8259A();
mask_IO_APIC_setup(ioapic_entries);
@@ -38,7 +40,7 @@
__enable_x2apic();
restore_IO_APIC_setup(ioapic_entries);
-@@ -751,7 +751,7 @@ int lapic_suspend(void)
+@@ -748,7 +748,7 @@ int lapic_suspend(void)
local_irq_save(flags);
disable_local_APIC();
@@ -47,7 +49,7 @@
local_irq_restore(flags);
return 0;
}
-@@ -997,7 +997,7 @@ void __init x2apic_bsp_setup(void)
+@@ -994,7 +994,7 @@ void __init x2apic_bsp_setup(void)
mask_8259A();
mask_IO_APIC_setup(ioapic_entries);
@@ -56,8 +58,10 @@
{
if ( x2apic_enabled )
panic("Interrupt remapping could not be enabled while "
---- a/xen/drivers/passthrough/vtd/dmar.c
-+++ b/xen/drivers/passthrough/vtd/dmar.c
+Index: xen-4.1.1-testing/xen/drivers/passthrough/vtd/dmar.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/drivers/passthrough/vtd/dmar.c
++++ xen-4.1.1-testing/xen/drivers/passthrough/vtd/dmar.c
@@ -46,6 +46,7 @@ LIST_HEAD(acpi_rmrr_units);
LIST_HEAD(acpi_atsr_units);
LIST_HEAD(acpi_rhsa_units);
@@ -97,8 +101,10 @@
+ flags = DMAR_INTR_REMAP | DMAR_X2APIC_OPT_OUT;
+ return ((dmar_flags & flags) == DMAR_INTR_REMAP);
+}
---- a/xen/drivers/passthrough/vtd/extern.h
-+++ b/xen/drivers/passthrough/vtd/extern.h
+Index: xen-4.1.1-testing/xen/drivers/passthrough/vtd/extern.h
+===================================================================
+--- xen-4.1.1-testing.orig/xen/drivers/passthrough/vtd/extern.h
++++ xen-4.1.1-testing/xen/drivers/passthrough/vtd/extern.h
@@ -87,5 +87,7 @@ void vtd_ops_preamble_quirk(struct iommu
void vtd_ops_postamble_quirk(struct iommu* iommu);
void me_wifi_quirk(struct domain *domain, u8 bus, u8 devfn, int map);
@@ -107,9 +113,11 @@
+int platform_supports_x2apic(void);
#endif // _VTD_EXTERN_H_
---- a/xen/drivers/passthrough/vtd/intremap.c
-+++ b/xen/drivers/passthrough/vtd/intremap.c
-@@ -735,6 +735,13 @@ int enable_intremap(struct iommu *iommu,
+Index: xen-4.1.1-testing/xen/drivers/passthrough/vtd/intremap.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/drivers/passthrough/vtd/intremap.c
++++ xen-4.1.1-testing/xen/drivers/passthrough/vtd/intremap.c
+@@ -741,6 +741,13 @@ int enable_intremap(struct iommu *iommu,
ASSERT(ecap_intr_remap(iommu->ecap) && iommu_intremap);
@@ -123,7 +131,7 @@
ir_ctrl = iommu_ir_ctrl(iommu);
sts = dmar_readl(iommu->reg, DMAR_GSTS_REG);
-@@ -821,10 +828,10 @@ out:
+@@ -827,10 +834,10 @@ out:
}
/*
@@ -136,7 +144,7 @@
{
struct acpi_drhd_unit *drhd;
struct iommu *iommu;
-@@ -832,6 +839,9 @@ int iommu_enable_IR(void)
+@@ -838,6 +845,9 @@ int iommu_enable_IR(void)
if ( !iommu_supports_eim() )
return -1;
@@ -146,7 +154,7 @@
for_each_drhd_unit ( drhd )
{
struct qi_ctrl *qi_ctrl = NULL;
-@@ -881,7 +891,7 @@ int iommu_enable_IR(void)
+@@ -887,7 +897,7 @@ int iommu_enable_IR(void)
* This function is used to disable Interrutp remapping when
* suspend local apic
*/
@@ -155,9 +163,11 @@
{
struct acpi_drhd_unit *drhd;
---- a/xen/drivers/passthrough/vtd/iommu.c
-+++ b/xen/drivers/passthrough/vtd/iommu.c
-@@ -2014,7 +2014,7 @@ static int init_vtd_hw(void)
+Index: xen-4.1.1-testing/xen/drivers/passthrough/vtd/iommu.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/drivers/passthrough/vtd/iommu.c
++++ xen-4.1.1-testing/xen/drivers/passthrough/vtd/iommu.c
+@@ -1997,7 +1997,7 @@ static int init_vtd_hw(void)
if ( enable_intremap(iommu, 0) != 0 )
{
dprintk(XENLOG_WARNING VTDPREFIX,
@@ -166,8 +176,10 @@
break;
}
}
---- a/xen/drivers/passthrough/vtd/iommu.h
-+++ b/xen/drivers/passthrough/vtd/iommu.h
+Index: xen-4.1.1-testing/xen/drivers/passthrough/vtd/iommu.h
+===================================================================
+--- xen-4.1.1-testing.orig/xen/drivers/passthrough/vtd/iommu.h
++++ xen-4.1.1-testing/xen/drivers/passthrough/vtd/iommu.h
@@ -22,6 +22,10 @@
#include
@@ -179,8 +191,10 @@
/*
* Intel IOMMU register specification per version 1.0 public spec.
*/
---- a/xen/include/xen/iommu.h
-+++ b/xen/include/xen/iommu.h
+Index: xen-4.1.1-testing/xen/include/xen/iommu.h
+===================================================================
+--- xen-4.1.1-testing.orig/xen/include/xen/iommu.h
++++ xen-4.1.1-testing/xen/include/xen/iommu.h
@@ -63,8 +63,8 @@ struct iommu {
int iommu_setup(void);
++++++ 23199-amd-iommu-unmapped-intr-fault.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -9,8 +9,10 @@
Signed-off-by: Wei Wang
---- a/xen/drivers/passthrough/amd/iommu_map.c
-+++ b/xen/drivers/passthrough/amd/iommu_map.c
+Index: xen-4.1.1-testing/xen/drivers/passthrough/amd/iommu_map.c
+===================================================================
+--- xen-4.1.1-testing.orig/xen/drivers/passthrough/amd/iommu_map.c
++++ xen-4.1.1-testing/xen/drivers/passthrough/amd/iommu_map.c
@@ -327,8 +327,9 @@ void amd_iommu_set_intremap_table(u32 *d
set_field_in_reg_u32(0xB, entry,
IOMMU_DEV_TABLE_INT_TABLE_LENGTH_MASK,
++++++ 23233-hvm-cr-access.patch ++++++
References: FATE#309900
# HG changeset patch
# User Keir Fraser
# Date 1303116432 -3600
# Node ID 1276926e3795b11ef6ac2f59df900d8e0ba9f54b
# Parent 07d832ad23021445bc56fafaeb2843c94d868005
vmx/hvm: move mov-cr handling functions to generic HVM code
Currently the handling of CR accesses intercepts is done much
differently in SVM and VMX. For future usage move the VMX part
into the generic HVM path and use the exported functions.
Signed-off-by: Andre Przywara
Signed-off-by: Keir Fraser
Index: xen-4.1.1-testing/xen/arch/x86/hvm/hvm.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/hvm.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/hvm.c
@@ -1297,6 +1297,86 @@ static void hvm_set_uc_mode(struct vcpu
return hvm_funcs.set_uc_mode(v);
}
+int hvm_mov_to_cr(unsigned int cr, unsigned int gpr)
+{
+ struct vcpu *curr = current;
+ unsigned long val, *reg;
+
+ if ( (reg = get_x86_gpr(guest_cpu_user_regs(), gpr)) == NULL )
+ {
+ gdprintk(XENLOG_ERR, "invalid gpr: %u\n", gpr);
+ goto exit_and_crash;
+ }
+
+ val = *reg;
+ HVMTRACE_LONG_2D(CR_WRITE, cr, TRC_PAR_LONG(val));
+ HVM_DBG_LOG(DBG_LEVEL_1, "CR%u, value = %lx", cr, val);
+
+ switch ( cr )
+ {
+ case 0:
+ return hvm_set_cr0(val);
+
+ case 3:
+ return hvm_set_cr3(val);
+
+ case 4:
+ return hvm_set_cr4(val);
+
+ case 8:
+ vlapic_set_reg(vcpu_vlapic(curr), APIC_TASKPRI, ((val & 0x0f) << 4));
+ break;
+
+ default:
+ gdprintk(XENLOG_ERR, "invalid cr: %d\n", cr);
+ goto exit_and_crash;
+ }
+
+ return X86EMUL_OKAY;
+
+ exit_and_crash:
+ domain_crash(curr->domain);
+ return X86EMUL_UNHANDLEABLE;
+}
+
+int hvm_mov_from_cr(unsigned int cr, unsigned int gpr)
+{
+ struct vcpu *curr = current;
+ unsigned long val = 0, *reg;
+
+ if ( (reg = get_x86_gpr(guest_cpu_user_regs(), gpr)) == NULL )
+ {
+ gdprintk(XENLOG_ERR, "invalid gpr: %u\n", gpr);
+ goto exit_and_crash;
+ }
+
+ switch ( cr )
+ {
+ case 0:
+ case 2:
+ case 3:
+ case 4:
+ val = curr->arch.hvm_vcpu.guest_cr[cr];
+ break;
+ case 8:
+ val = (vlapic_get_reg(vcpu_vlapic(curr), APIC_TASKPRI) & 0xf0) >> 4;
+ break;
+ default:
+ gdprintk(XENLOG_ERR, "invalid cr: %u\n", cr);
+ goto exit_and_crash;
+ }
+
+ *reg = val;
+ HVMTRACE_LONG_2D(CR_READ, cr, TRC_PAR_LONG(val));
+ HVM_DBG_LOG(DBG_LEVEL_VMMU, "CR%u, value = %lx", cr, val);
+
+ return X86EMUL_OKAY;
+
+ exit_and_crash:
+ domain_crash(curr->domain);
+ return X86EMUL_UNHANDLEABLE;
+}
+
int hvm_set_cr0(unsigned long value)
{
struct vcpu *v = current;
Index: xen-4.1.1-testing/xen/arch/x86/hvm/vmx/vmx.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/vmx/vmx.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/vmx/vmx.c
@@ -1546,182 +1546,42 @@ static void vmx_invlpg_intercept(unsigne
vpid_sync_vcpu_gva(curr, vaddr);
}
-#define CASE_SET_REG(REG, reg) \
- case VMX_CONTROL_REG_ACCESS_GPR_ ## REG: regs->reg = value; break
-#define CASE_GET_REG(REG, reg) \
- case VMX_CONTROL_REG_ACCESS_GPR_ ## REG: value = regs->reg; break
-
-#define CASE_EXTEND_SET_REG \
- CASE_EXTEND_REG(S)
-#define CASE_EXTEND_GET_REG \
- CASE_EXTEND_REG(G)
-
-#ifdef __i386__
-#define CASE_EXTEND_REG(T)
-#else
-#define CASE_EXTEND_REG(T) \
- CASE_ ## T ## ET_REG(R8, r8); \
- CASE_ ## T ## ET_REG(R9, r9); \
- CASE_ ## T ## ET_REG(R10, r10); \
- CASE_ ## T ## ET_REG(R11, r11); \
- CASE_ ## T ## ET_REG(R12, r12); \
- CASE_ ## T ## ET_REG(R13, r13); \
- CASE_ ## T ## ET_REG(R14, r14); \
- CASE_ ## T ## ET_REG(R15, r15)
-#endif
-
-static int mov_to_cr(int gp, int cr, struct cpu_user_regs *regs)
-{
- unsigned long value;
- struct vcpu *v = current;
- struct vlapic *vlapic = vcpu_vlapic(v);
- int rc = 0;
- unsigned long old;
-
- switch ( gp )
- {
- CASE_GET_REG(EAX, eax);
- CASE_GET_REG(ECX, ecx);
- CASE_GET_REG(EDX, edx);
- CASE_GET_REG(EBX, ebx);
- CASE_GET_REG(EBP, ebp);
- CASE_GET_REG(ESI, esi);
- CASE_GET_REG(EDI, edi);
- CASE_GET_REG(ESP, esp);
- CASE_EXTEND_GET_REG;
- default:
- gdprintk(XENLOG_ERR, "invalid gp: %d\n", gp);
- goto exit_and_crash;
- }
-
- HVMTRACE_LONG_2D(CR_WRITE, cr, TRC_PAR_LONG(value));
-
- HVM_DBG_LOG(DBG_LEVEL_1, "CR%d, value = %lx", cr, value);
-
- switch ( cr )
- {
- case 0:
- old = v->arch.hvm_vcpu.guest_cr[0];
- rc = !hvm_set_cr0(value);
- if (rc)
- hvm_memory_event_cr0(value, old);
- return rc;
-
- case 3:
- old = v->arch.hvm_vcpu.guest_cr[3];
- rc = !hvm_set_cr3(value);
- if (rc)
- hvm_memory_event_cr3(value, old);
- return rc;
-
- case 4:
- old = v->arch.hvm_vcpu.guest_cr[4];
- rc = !hvm_set_cr4(value);
- if (rc)
- hvm_memory_event_cr4(value, old);
- return rc;
-
- case 8:
- vlapic_set_reg(vlapic, APIC_TASKPRI, ((value & 0x0F) << 4));
- break;
-
- default:
- gdprintk(XENLOG_ERR, "invalid cr: %d\n", cr);
- goto exit_and_crash;
- }
-
- return 1;
-
- exit_and_crash:
- domain_crash(v->domain);
- return 0;
-}
-
-/*
- * Read from control registers. CR0 and CR4 are read from the shadow.
- */
-static void mov_from_cr(int cr, int gp, struct cpu_user_regs *regs)
+static int vmx_cr_access(unsigned long exit_qualification)
{
- unsigned long value = 0;
- struct vcpu *v = current;
- struct vlapic *vlapic = vcpu_vlapic(v);
-
- switch ( cr )
- {
- case 3:
- value = (unsigned long)v->arch.hvm_vcpu.guest_cr[3];
- break;
- case 8:
- value = (unsigned long)vlapic_get_reg(vlapic, APIC_TASKPRI);
- value = (value & 0xF0) >> 4;
- break;
- default:
- gdprintk(XENLOG_ERR, "invalid cr: %d\n", cr);
- domain_crash(v->domain);
- break;
- }
-
- switch ( gp ) {
- CASE_SET_REG(EAX, eax);
- CASE_SET_REG(ECX, ecx);
- CASE_SET_REG(EDX, edx);
- CASE_SET_REG(EBX, ebx);
- CASE_SET_REG(EBP, ebp);
- CASE_SET_REG(ESI, esi);
- CASE_SET_REG(EDI, edi);
- CASE_SET_REG(ESP, esp);
- CASE_EXTEND_SET_REG;
- default:
- printk("invalid gp: %d\n", gp);
- domain_crash(v->domain);
- break;
- }
-
- HVMTRACE_LONG_2D(CR_READ, cr, TRC_PAR_LONG(value));
-
- HVM_DBG_LOG(DBG_LEVEL_VMMU, "CR%d, value = %lx", cr, value);
-}
-
-static int vmx_cr_access(unsigned long exit_qualification,
- struct cpu_user_regs *regs)
-{
- unsigned int gp, cr;
- unsigned long value;
- struct vcpu *v = current;
+ struct vcpu *curr = current;
- switch ( exit_qualification & VMX_CONTROL_REG_ACCESS_TYPE )
+ switch ( VMX_CONTROL_REG_ACCESS_TYPE(exit_qualification) )
{
- case VMX_CONTROL_REG_ACCESS_TYPE_MOV_TO_CR:
- gp = exit_qualification & VMX_CONTROL_REG_ACCESS_GPR;
- cr = exit_qualification & VMX_CONTROL_REG_ACCESS_NUM;
- return mov_to_cr(gp, cr, regs);
- case VMX_CONTROL_REG_ACCESS_TYPE_MOV_FROM_CR:
- gp = exit_qualification & VMX_CONTROL_REG_ACCESS_GPR;
- cr = exit_qualification & VMX_CONTROL_REG_ACCESS_NUM;
- mov_from_cr(cr, gp, regs);
- break;
- case VMX_CONTROL_REG_ACCESS_TYPE_CLTS:
- {
- unsigned long old = v->arch.hvm_vcpu.guest_cr[0];
- v->arch.hvm_vcpu.guest_cr[0] &= ~X86_CR0_TS;
- vmx_update_guest_cr(v, 0);
-
- hvm_memory_event_cr0(v->arch.hvm_vcpu.guest_cr[0], old);
-
+ case VMX_CONTROL_REG_ACCESS_TYPE_MOV_TO_CR: {
+ unsigned long gp = VMX_CONTROL_REG_ACCESS_GPR(exit_qualification);
+ unsigned long cr = VMX_CONTROL_REG_ACCESS_NUM(exit_qualification);
+ return hvm_mov_to_cr(cr, gp);
+ }
+ case VMX_CONTROL_REG_ACCESS_TYPE_MOV_FROM_CR: {
+ unsigned long gp = VMX_CONTROL_REG_ACCESS_GPR(exit_qualification);
+ unsigned long cr = VMX_CONTROL_REG_ACCESS_NUM(exit_qualification);
+ return hvm_mov_from_cr(cr, gp);
+ }
+ case VMX_CONTROL_REG_ACCESS_TYPE_CLTS: {
+ unsigned long old = curr->arch.hvm_vcpu.guest_cr[0];
+ curr->arch.hvm_vcpu.guest_cr[0] &= ~X86_CR0_TS;
+ vmx_update_guest_cr(curr, 0);
+ hvm_memory_event_cr0(curr->arch.hvm_vcpu.guest_cr[0], old);
HVMTRACE_0D(CLTS);
break;
}
- case VMX_CONTROL_REG_ACCESS_TYPE_LMSW:
- value = v->arch.hvm_vcpu.guest_cr[0];
+ case VMX_CONTROL_REG_ACCESS_TYPE_LMSW: {
+ unsigned long value = curr->arch.hvm_vcpu.guest_cr[0];
/* LMSW can: (1) set bits 0-3; (2) clear bits 1-3. */
value = (value & ~0xe) | ((exit_qualification >> 16) & 0xf);
HVMTRACE_LONG_1D(LMSW, value);
- return !hvm_set_cr0(value);
+ return hvm_set_cr0(value);
+ }
default:
BUG();
}
- return 1;
+ return X86EMUL_OKAY;
}
static const struct lbr_info {
@@ -2526,7 +2386,7 @@ asmlinkage void vmx_vmexit_handler(struc
case EXIT_REASON_CR_ACCESS:
{
exit_qualification = __vmread(EXIT_QUALIFICATION);
- if ( vmx_cr_access(exit_qualification, regs) )
+ if ( vmx_cr_access(exit_qualification) == X86EMUL_OKAY )
update_guest_eip(); /* Safe: MOV Cn, LMSW, CLTS */
break;
}
Index: xen-4.1.1-testing/xen/arch/x86/traps.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/traps.c
+++ xen-4.1.1-testing/xen/arch/x86/traps.c
@@ -368,6 +368,36 @@ void vcpu_show_execution_state(struct vc
vcpu_unpause(v);
}
+unsigned long *get_x86_gpr(struct cpu_user_regs *regs, unsigned int modrm_reg)
+{
+ void *p;
+
+ switch ( modrm_reg )
+ {
+ case 0: p = ®s->eax; break;
+ case 1: p = ®s->ecx; break;
+ case 2: p = ®s->edx; break;
+ case 3: p = ®s->ebx; break;
+ case 4: p = ®s->esp; break;
+ case 5: p = ®s->ebp; break;
+ case 6: p = ®s->esi; break;
+ case 7: p = ®s->edi; break;
+#if defined(__x86_64__)
+ case 8: p = ®s->r8; break;
+ case 9: p = ®s->r9; break;
+ case 10: p = ®s->r10; break;
+ case 11: p = ®s->r11; break;
+ case 12: p = ®s->r12; break;
+ case 13: p = ®s->r13; break;
+ case 14: p = ®s->r14; break;
+ case 15: p = ®s->r15; break;
+#endif
+ default: p = NULL; break;
+ }
+
+ return p;
+}
+
static char *trapstr(int trapnr)
{
static char *strings[] = {
Index: xen-4.1.1-testing/xen/include/asm-x86/hvm/support.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/hvm/support.h
+++ xen-4.1.1-testing/xen/include/asm-x86/hvm/support.h
@@ -137,5 +137,7 @@ int hvm_set_cr3(unsigned long value);
int hvm_set_cr4(unsigned long value);
int hvm_msr_read_intercept(unsigned int msr, uint64_t *msr_content);
int hvm_msr_write_intercept(unsigned int msr, uint64_t msr_content);
+int hvm_mov_to_cr(unsigned int cr, unsigned int gpr);
+int hvm_mov_from_cr(unsigned int cr, unsigned int gpr);
#endif /* __ASM_X86_HVM_SUPPORT_H__ */
Index: xen-4.1.1-testing/xen/include/asm-x86/hvm/vmx/vmx.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/hvm/vmx/vmx.h
+++ xen-4.1.1-testing/xen/include/asm-x86/hvm/vmx/vmx.h
@@ -144,31 +144,15 @@ void vmx_update_cpu_exec_control(struct
* Exit Qualifications for MOV for Control Register Access
*/
/* 3:0 - control register number (CRn) */
-#define VMX_CONTROL_REG_ACCESS_NUM 0xf
+#define VMX_CONTROL_REG_ACCESS_NUM(eq) ((eq) & 0xf)
/* 5:4 - access type (CR write, CR read, CLTS, LMSW) */
-#define VMX_CONTROL_REG_ACCESS_TYPE 0x30
+#define VMX_CONTROL_REG_ACCESS_TYPE(eq) (((eq) >> 4) & 0x3)
+# define VMX_CONTROL_REG_ACCESS_TYPE_MOV_TO_CR 0
+# define VMX_CONTROL_REG_ACCESS_TYPE_MOV_FROM_CR 1
+# define VMX_CONTROL_REG_ACCESS_TYPE_CLTS 2
+# define VMX_CONTROL_REG_ACCESS_TYPE_LMSW 3
/* 10:8 - general purpose register operand */
-#define VMX_CONTROL_REG_ACCESS_GPR 0xf00
-#define VMX_CONTROL_REG_ACCESS_TYPE_MOV_TO_CR (0 << 4)
-#define VMX_CONTROL_REG_ACCESS_TYPE_MOV_FROM_CR (1 << 4)
-#define VMX_CONTROL_REG_ACCESS_TYPE_CLTS (2 << 4)
-#define VMX_CONTROL_REG_ACCESS_TYPE_LMSW (3 << 4)
-#define VMX_CONTROL_REG_ACCESS_GPR_EAX (0 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_ECX (1 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_EDX (2 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_EBX (3 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_ESP (4 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_EBP (5 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_ESI (6 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_EDI (7 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_R8 (8 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_R9 (9 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_R10 (10 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_R11 (11 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_R12 (12 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_R13 (13 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_R14 (14 << 8)
-#define VMX_CONTROL_REG_ACCESS_GPR_R15 (15 << 8)
+#define VMX_CONTROL_REG_ACCESS_GPR(eq) (((eq) >> 8) & 0xf)
/*
* Access Rights
Index: xen-4.1.1-testing/xen/include/asm-x86/processor.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/processor.h
+++ xen-4.1.1-testing/xen/include/asm-x86/processor.h
@@ -589,6 +589,8 @@ int wrmsr_hypervisor_regs(uint32_t idx,
int microcode_update(XEN_GUEST_HANDLE(const_void), unsigned long len);
int microcode_resume_cpu(int cpu);
+unsigned long *get_x86_gpr(struct cpu_user_regs *regs, unsigned int modrm_reg);
+
#endif /* !__ASSEMBLY__ */
#endif /* __ASM_X86_PROCESSOR_H */
++++++ 23234-svm-decode-assist-base.patch ++++++
References: FATE#309900
# HG changeset patch
# User Andre Przywara
# Date 1303116553 -3600
# Node ID bf7afd48339a18cd86d89337f3c055045fb78d3b
# Parent 1276926e3795b11ef6ac2f59df900d8e0ba9f54b
svm: add bit definitions for SVM DecodeAssist
Chapter 15.33 of recent APM Vol.2 manuals describe some additions
to SVM called DecodeAssist. Add the newly added fields to the VMCB
structure and name the associated CPUID bit.
Signed-off-by: Andre Przywara
# HG changeset patch
# User Keir Fraser
# Date 1303117802 -3600
# Node ID 381ab77db71a4739b8a4f4fdad4ef3504999f998
# Parent e324c4d1dd6eeb9417fec513640ca795bd0f5dd4
svm: decode-assists feature must depend on nextrip feature.
...since the decode-assist fast paths assume nextrip vmcb field is
valid.
Signed-off-by: Keir Fraser
Index: xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/svm/svm.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
@@ -928,11 +928,16 @@ struct hvm_function_table * __init start
printk("SVM: Supported advanced features:\n");
+ /* DecodeAssists fast paths assume nextrip is valid for fast rIP update. */
+ if ( !cpu_has_svm_nrips )
+ clear_bit(SVM_FEATURE_DECODEASSISTS, &svm_feature_flags);
+
#define P(p,s) if ( p ) { printk(" - %s\n", s); printed = 1; }
P(cpu_has_svm_npt, "Nested Page Tables (NPT)");
P(cpu_has_svm_lbrv, "Last Branch Record (LBR) Virtualisation");
P(cpu_has_svm_nrips, "Next-RIP Saved on #VMEXIT");
P(cpu_has_svm_cleanbits, "VMCB Clean Bits");
+ P(cpu_has_svm_decode, "DecodeAssists");
P(cpu_has_pause_filter, "Pause-Intercept Filter");
#undef P
Index: xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/svm.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/hvm/svm/svm.h
+++ xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/svm.h
@@ -80,6 +80,7 @@ extern u32 svm_feature_flags;
#define cpu_has_svm_svml cpu_has_svm_feature(SVM_FEATURE_SVML)
#define cpu_has_svm_nrips cpu_has_svm_feature(SVM_FEATURE_NRIPS)
#define cpu_has_svm_cleanbits cpu_has_svm_feature(SVM_FEATURE_VMCBCLEAN)
+#define cpu_has_svm_decode cpu_has_svm_feature(SVM_FEATURE_DECODEASSISTS)
#define cpu_has_pause_filter cpu_has_svm_feature(SVM_FEATURE_PAUSEFILTER)
#endif /* __ASM_X86_HVM_SVM_H__ */
Index: xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/vmcb.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/hvm/svm/vmcb.h
+++ xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/vmcb.h
@@ -432,7 +432,9 @@ struct vmcb_struct {
vmcbcleanbits_t cleanbits; /* offset 0xC0 */
u32 res09; /* offset 0xC4 */
u64 nextrip; /* offset 0xC8 */
- u64 res10a[102]; /* offset 0xD0 pad to save area */
+ u8 guest_ins_len; /* offset 0xD0 */
+ u8 guest_ins[15]; /* offset 0xD1 */
+ u64 res10a[100]; /* offset 0xE0 pad to save area */
svm_segment_register_t es; /* offset 1024 - cleanbit 8 */
svm_segment_register_t cs; /* cleanbit 8 */
++++++ 23235-svm-decode-assist-crs.patch ++++++
References: FATE#309900
# HG changeset patch
# User Andre Przywara
# Date 1303117266 -3600
# Node ID 2c8ad607ece18b4740b9fc4ffe267a0e0893c141
# Parent bf7afd48339a18cd86d89337f3c055045fb78d3b
svm: implement CR access part of DecodeAssist
Newer SVM implementations (Bulldozer) now give the used general
purpose register on a MOV-CR intercept explictly. This avoids
fetching and decoding the instruction from guest's memory and speeds
up some Windows guest, which exercise CR8 quite often.
Signed-off-by: Andre Przywara
Signed-off-by: Keir Fraser
Index: xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/svm/svm.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
@@ -1040,6 +1040,22 @@ static void svm_vmexit_do_cpuid(struct c
__update_guest_eip(regs, inst_len);
}
+static void svm_vmexit_do_cr_access(
+ struct vmcb_struct *vmcb, struct cpu_user_regs *regs)
+{
+ int gp, cr, dir, rc;
+
+ cr = vmcb->exitcode - VMEXIT_CR0_READ;
+ dir = (cr > 15);
+ cr &= 0xf;
+ gp = vmcb->exitinfo1 & 0xf;
+
+ rc = dir ? hvm_mov_to_cr(cr, gp) : hvm_mov_from_cr(cr, gp);
+
+ if ( rc == X86EMUL_OKAY )
+ __update_guest_eip(regs, vmcb->nextrip - vmcb->rip);
+}
+
static void svm_dr_access(struct vcpu *v, struct cpu_user_regs *regs)
{
HVMTRACE_0D(DR_WRITE);
@@ -1621,11 +1637,19 @@ asmlinkage void svm_vmexit_handler(struc
int dir = (vmcb->exitinfo1 & 1) ? IOREQ_READ : IOREQ_WRITE;
if ( handle_pio(port, bytes, dir) )
__update_guest_eip(regs, vmcb->exitinfo2 - vmcb->rip);
- break;
}
- /* fallthrough to emulation if a string instruction */
+ else if ( !handle_mmio() )
+ hvm_inject_exception(TRAP_gp_fault, 0, 0);
+ break;
+
case VMEXIT_CR0_READ ... VMEXIT_CR15_READ:
case VMEXIT_CR0_WRITE ... VMEXIT_CR15_WRITE:
+ if ( cpu_has_svm_decode && (vmcb->exitinfo1 & (1ULL << 63)) )
+ svm_vmexit_do_cr_access(vmcb, regs);
+ else if ( !handle_mmio() )
+ hvm_inject_exception(TRAP_gp_fault, 0, 0);
+ break;
+
case VMEXIT_INVLPG:
case VMEXIT_INVLPGA:
if ( !handle_mmio() )
++++++ 23236-svm-decode-assist-invlpg.patch ++++++
References: FATE#309900
# HG changeset patch
# User Christoph Egger
# Date 1302700499 -3600
# Node ID 3b2182100ba2fa5c4a3a450e473717e2300aa8f1
# Parent 2284c79b606ac14ef5c5bc2c1cce62188b5bd9ee
x86/svm/asid: Introduce svm_invlpga()
Signed-off-by: Christoph Egger
# HG changeset patch
# User Andre Przywara
# Date 1303117597 -3600
# Node ID e324c4d1dd6eeb9417fec513640ca795bd0f5dd4
# Parent 2c8ad607ece18b4740b9fc4ffe267a0e0893c141
svm: implement INVLPG part of DecodeAssist
Newer SVM implementations (Bulldozer) give the desired address on
a INVLPG intercept explicitly in the EXITINFO1 field of the VMCB.
Use this address to avoid a costly instruction fetch and decode
cycle.
Signed-off-by: Andre Przywara
# HG changeset patch
# User Christoph Egger
# Date 1305187246 -3600
# Node ID 19d6541c4abec3486c83de76102ec46d7fe22a16
# Parent b6e8e916ed2827fb1329de0de2e23ee5b6b78662
nestedsvm: update rip on invlpga intercept
Fixes endless loop.
Signed-off-by: Christoph Egger
Index: xen-4.1.1-testing/xen/arch/x86/hvm/svm/emulate.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/svm/emulate.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/svm/emulate.c
@@ -102,6 +102,7 @@ MAKE_INSTR(INT3, 1, 0xcc);
MAKE_INSTR(RDTSC, 2, 0x0f, 0x31);
MAKE_INSTR(PAUSE, 1, 0x90);
MAKE_INSTR(XSETBV, 3, 0x0f, 0x01, 0xd1);
+MAKE_INSTR(INVLPGA,3, 0x0f, 0x01, 0xdf);
static const u8 *opc_bytes[INSTR_MAX_COUNT] =
{
@@ -116,6 +117,7 @@ static const u8 *opc_bytes[INSTR_MAX_COU
[INSTR_RDTSC] = OPCODE_RDTSC,
[INSTR_PAUSE] = OPCODE_PAUSE,
[INSTR_XSETBV] = OPCODE_XSETBV,
+ [INSTR_INVLPGA] = OPCODE_INVLPGA,
};
static int fetch(struct vcpu *v, u8 *buf, unsigned long addr, int len)
Index: xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/svm/svm.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
@@ -1651,11 +1651,22 @@ asmlinkage void svm_vmexit_handler(struc
break;
case VMEXIT_INVLPG:
- case VMEXIT_INVLPGA:
- if ( !handle_mmio() )
+ if ( cpu_has_svm_decode )
+ {
+ svm_invlpg_intercept(vmcb->exitinfo1);
+ __update_guest_eip(regs, vmcb->nextrip - vmcb->rip);
+ }
+ else if ( !handle_mmio() )
hvm_inject_exception(TRAP_gp_fault, 0, 0);
break;
+ case VMEXIT_INVLPGA:
+ if ( (inst_len = __get_instruction_length(v, INSTR_INVLPGA)) == 0 )
+ break;
+ svm_invlpga(regs->eax, v->arch.hvm_vcpu.asid);
+ __update_guest_eip(regs, inst_len);
+ break;
+
case VMEXIT_VMMCALL:
if ( (inst_len = __get_instruction_length(v, INSTR_VMCALL)) == 0 )
break;
Index: xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/asid.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/hvm/svm/asid.h
+++ xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/asid.h
@@ -34,10 +34,7 @@ static inline void svm_asid_g_invlpg(str
{
#if 0
/* Optimization? */
- asm volatile (".byte 0x0F,0x01,0xDF \n"
- : /* output */
- : /* input */
- "a" (g_vaddr), "c"(v->arch.hvm_svm.vmcb->guest_asid) );
+ svm_invlpga(g_vaddr, v->arch.hvm_svm.vmcb->guest_asid);
#endif
/* Safe fallback. Take a new ASID. */
Index: xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/emulate.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/hvm/svm/emulate.h
+++ xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/emulate.h
@@ -33,6 +33,7 @@ enum instruction_index {
INSTR_RDTSC,
INSTR_PAUSE,
INSTR_XSETBV,
+ INSTR_INVLPGA,
INSTR_MAX_COUNT /* Must be last - Number of instructions supported */
};
Index: xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/svm.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/hvm/svm/svm.h
+++ xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/svm.h
@@ -62,6 +62,15 @@ static inline void svm_vmsave(void *vmcb
: : "a" (__pa(vmcb)) : "memory" );
}
+static inline void svm_invlpga(unsigned long vaddr, uint32_t asid)
+{
+ asm volatile (
+ ".byte 0x0f,0x01,0xdf"
+ : /* output */
+ : /* input */
+ "a" (vaddr), "c" (asid));
+}
+
extern u32 svm_feature_flags;
#define SVM_FEATURE_NPT 0 /* Nested page table support */
++++++ 23238-svm-decode-assist-insn-fetch.patch ++++++
References: FATE#309900
# HG changeset patch
# User Keir Fraser
# Date 1303130170 -3600
# Node ID 60f5df2afcbbe1e8d8438c2b7b8223d9d2102e06
# Parent 381ab77db71a4739b8a4f4fdad4ef3504999f998
svm: implement instruction fetch part of DecodeAssist (on #PF/#NPF)
Newer SVM implementations (Bulldozer) copy up to 15 bytes from the
instruction stream into the VMCB when a #PF or #NPF exception is
intercepted. This patch makes use of this information if available.
This saves us from a) traversing the guest's page tables, b) mapping
the guest's memory and c) copy the instructions from there into the
hypervisor's address space.
This speeds up #NPF intercepts quite a lot and avoids cache and TLB
trashing.
Signed-off-by: Andre Przywara
Signed-off-by: Keir Fraser
Index: xen-4.1.1-testing/xen/arch/x86/hvm/emulate.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/emulate.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/emulate.c
@@ -996,6 +996,8 @@ int hvm_emulate_one(
hvmemul_ctxt->insn_buf_eip = regs->eip;
hvmemul_ctxt->insn_buf_bytes =
+ hvm_get_insn_bytes(curr, hvmemul_ctxt->insn_buf)
+ ? :
(hvm_virtual_to_linear_addr(
x86_seg_cs, &hvmemul_ctxt->seg_reg[x86_seg_cs],
regs->eip, sizeof(hvmemul_ctxt->insn_buf),
Index: xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/svm/svm.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
@@ -603,6 +603,21 @@ static void svm_set_rdtsc_exiting(struct
vmcb_set_general1_intercepts(vmcb, general1_intercepts);
}
+static unsigned int svm_get_insn_bytes(struct vcpu *v, uint8_t *buf)
+{
+ struct vmcb_struct *vmcb = v->arch.hvm_svm.vmcb;
+ unsigned int len = v->arch.hvm_svm.cached_insn_len;
+
+ if ( len != 0 )
+ {
+ /* Latch and clear the cached instruction. */
+ memcpy(buf, vmcb->guest_ins, 15);
+ v->arch.hvm_svm.cached_insn_len = 0;
+ }
+
+ return len;
+}
+
static void svm_init_hypercall_page(struct domain *d, void *hypercall_page)
{
char *p;
@@ -1449,7 +1464,8 @@ static struct hvm_function_table __read_
.msr_read_intercept = svm_msr_read_intercept,
.msr_write_intercept = svm_msr_write_intercept,
.invlpg_intercept = svm_invlpg_intercept,
- .set_rdtsc_exiting = svm_set_rdtsc_exiting
+ .set_rdtsc_exiting = svm_set_rdtsc_exiting,
+ .get_insn_bytes = svm_get_insn_bytes
};
asmlinkage void svm_vmexit_handler(struct cpu_user_regs *regs)
@@ -1555,7 +1571,12 @@ asmlinkage void svm_vmexit_handler(struc
(unsigned long)regs->ecx, (unsigned long)regs->edx,
(unsigned long)regs->esi, (unsigned long)regs->edi);
- if ( paging_fault(va, regs) )
+ if ( cpu_has_svm_decode )
+ v->arch.hvm_svm.cached_insn_len = vmcb->guest_ins_len & 0xf;
+ rc = paging_fault(va, regs);
+ v->arch.hvm_svm.cached_insn_len = 0;
+
+ if ( rc )
{
if ( trace_will_trace_event(TRC_SHADOW) )
break;
@@ -1721,7 +1742,10 @@ asmlinkage void svm_vmexit_handler(struc
case VMEXIT_NPF:
perfc_incra(svmexits, VMEXIT_NPF_PERFC);
regs->error_code = vmcb->exitinfo1;
+ if ( cpu_has_svm_decode )
+ v->arch.hvm_svm.cached_insn_len = vmcb->guest_ins_len & 0xf;
svm_do_nested_pgfault(vmcb->exitinfo2);
+ v->arch.hvm_svm.cached_insn_len = 0;
break;
case VMEXIT_IRET: {
Index: xen-4.1.1-testing/xen/include/asm-x86/hvm/hvm.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/hvm/hvm.h
+++ xen-4.1.1-testing/xen/include/asm-x86/hvm/hvm.h
@@ -132,6 +132,9 @@ struct hvm_function_table {
int (*cpu_up)(void);
void (*cpu_down)(void);
+ /* Copy up to 15 bytes from cached instruction bytes at current rIP. */
+ unsigned int (*get_insn_bytes)(struct vcpu *v, uint8_t *buf);
+
/* Instruction intercepts: non-void return values are X86EMUL codes. */
void (*cpuid_intercept)(
unsigned int *eax, unsigned int *ebx,
@@ -324,6 +327,11 @@ static inline void hvm_cpu_down(void)
hvm_funcs.cpu_down();
}
+static inline unsigned int hvm_get_insn_bytes(struct vcpu *v, uint8_t *buf)
+{
+ return (hvm_funcs.get_insn_bytes ? hvm_funcs.get_insn_bytes(v, buf) : 0);
+}
+
enum hvm_task_switch_reason { TSW_jmp, TSW_iret, TSW_call_or_int };
void hvm_task_switch(
uint16_t tss_sel, enum hvm_task_switch_reason taskswitch_reason,
Index: xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/vmcb.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/hvm/svm/vmcb.h
+++ xen-4.1.1-testing/xen/include/asm-x86/hvm/svm/vmcb.h
@@ -498,6 +498,9 @@ struct arch_svm_struct {
int launch_core;
bool_t vmcb_in_sync; /* VMCB sync'ed with VMSAVE? */
+ /* VMCB has a cached instruction from #PF/#NPF Decode Assist? */
+ uint8_t cached_insn_len; /* Zero if no cached instruction. */
+
/* Upper four bytes are undefined in the VMCB, therefore we can't
* use the fields in the VMCB. Write a 64bit value and then read a 64bit
* value is fine unless there's a VMRUN/VMEXIT in between which clears
++++++ 23303-cpufreq-misc.patch ++++++
# HG changeset patch
# User Jan Beulich
# Date 1304930762 -3600
# Node ID 82180954eda9cfe279e7ecf8c9ed4ffa29796bfb
# Parent c822888f36568f26e95f9844c7f0c5e06df7aa20
misc cpufreq cleanup
- proper handling of governor command line options when using the
default governor
- warning message for unrecognized command line options
- replacing a NR_CPUS sized array with per-CPU data
- a couple of __read_mostly annotations
Signed-off-by: Jan Beulich
Index: xen-4.1.1-testing/xen/drivers/cpufreq/cpufreq.c
===================================================================
--- xen-4.1.1-testing.orig/xen/drivers/cpufreq/cpufreq.c
+++ xen-4.1.1-testing/xen/drivers/cpufreq/cpufreq.c
@@ -47,7 +47,8 @@
#include
#include
-static unsigned int usr_max_freq, usr_min_freq;
+static unsigned int __read_mostly usr_min_freq;
+static unsigned int __read_mostly usr_max_freq;
static void cpufreq_cmdline_common_para(struct cpufreq_policy *new_policy);
struct cpufreq_dom {
@@ -57,7 +58,7 @@ struct cpufreq_dom {
};
static LIST_HEAD(cpufreq_dom_list_head);
-struct cpufreq_governor *cpufreq_opt_governor;
+struct cpufreq_governor *__read_mostly cpufreq_opt_governor;
LIST_HEAD(cpufreq_governor_list);
bool_t __read_mostly cpufreq_verbose;
@@ -543,6 +544,7 @@ void __init cpufreq_cmdline_parse(char *
{
static struct cpufreq_governor *__initdata cpufreq_governors[] =
{
+ CPUFREQ_DEFAULT_GOVERNOR,
&cpufreq_gov_userspace,
&cpufreq_gov_dbs,
&cpufreq_gov_performance,
@@ -576,8 +578,10 @@ void __init cpufreq_cmdline_parse(char *
}
if (str && !cpufreq_handle_common_option(str, val) &&
- cpufreq_governors[gov_index]->handle_option)
- cpufreq_governors[gov_index]->handle_option(str, val);
+ (!cpufreq_governors[gov_index]->handle_option ||
+ !cpufreq_governors[gov_index]->handle_option(str, val)))
+ printk(XENLOG_WARNING "cpufreq/%s: option '%s' not recognized\n",
+ cpufreq_governors[gov_index]->name, str);
str = end;
} while (str);
Index: xen-4.1.1-testing/xen/drivers/cpufreq/cpufreq_misc_governors.c
===================================================================
--- xen-4.1.1-testing.orig/xen/drivers/cpufreq/cpufreq_misc_governors.c
+++ xen-4.1.1-testing/xen/drivers/cpufreq/cpufreq_misc_governors.c
@@ -14,14 +14,17 @@
*
*/
+#include
#include
+#include
#include
#include
/*
* cpufreq userspace governor
*/
-static unsigned int cpu_set_freq[NR_CPUS];
+static unsigned int __read_mostly userspace_cmdline_freq;
+static DEFINE_PER_CPU(unsigned int, cpu_set_freq);
static int cpufreq_governor_userspace(struct cpufreq_policy *policy,
unsigned int event)
@@ -35,21 +38,21 @@ static int cpufreq_governor_userspace(st
switch (event) {
case CPUFREQ_GOV_START:
- if (!cpu_set_freq[cpu])
- cpu_set_freq[cpu] = policy->cur;
+ if (!per_cpu(cpu_set_freq, cpu))
+ per_cpu(cpu_set_freq, cpu) = policy->cur;
break;
case CPUFREQ_GOV_STOP:
- cpu_set_freq[cpu] = 0;
+ per_cpu(cpu_set_freq, cpu) = 0;
break;
case CPUFREQ_GOV_LIMITS:
- if (policy->max < cpu_set_freq[cpu])
+ if (policy->max < per_cpu(cpu_set_freq, cpu))
ret = __cpufreq_driver_target(policy, policy->max,
CPUFREQ_RELATION_H);
- else if (policy->min > cpu_set_freq[cpu])
+ else if (policy->min > per_cpu(cpu_set_freq, cpu))
ret = __cpufreq_driver_target(policy, policy->min,
CPUFREQ_RELATION_L);
else
- ret = __cpufreq_driver_target(policy, cpu_set_freq[cpu],
+ ret = __cpufreq_driver_target(policy, per_cpu(cpu_set_freq, cpu),
CPUFREQ_RELATION_L);
break;
@@ -68,7 +71,7 @@ int write_userspace_scaling_setspeed(uns
if (!cpu_online(cpu) || !(policy = per_cpu(cpufreq_cpu_policy, cpu)))
return -EINVAL;
- cpu_set_freq[cpu] = freq;
+ per_cpu(cpu_set_freq, cpu) = freq;
if (freq < policy->min)
freq = policy->min;
@@ -78,19 +81,35 @@ int write_userspace_scaling_setspeed(uns
return __cpufreq_driver_target(policy, freq, CPUFREQ_RELATION_L);
}
-static void __init
+static bool_t __init
cpufreq_userspace_handle_option(const char *name, const char *val)
{
if (!strcmp(name, "speed") && val) {
- unsigned int usr_cmdline_freq;
- unsigned int cpu;
+ userspace_cmdline_freq = simple_strtoul(val, NULL, 0);
+ return 1;
+ }
+ return 0;
+}
- usr_cmdline_freq = simple_strtoul(val, NULL, 0);
- for (cpu = 0; cpu < NR_CPUS; cpu++)
- cpu_set_freq[cpu] = usr_cmdline_freq;
+static int cpufreq_userspace_cpu_callback(
+ struct notifier_block *nfb, unsigned long action, void *hcpu)
+{
+ unsigned int cpu = (unsigned long)hcpu;
+
+ switch (action)
+ {
+ case CPU_UP_PREPARE:
+ per_cpu(cpu_set_freq, cpu) = userspace_cmdline_freq;
+ break;
}
+
+ return NOTIFY_DONE;
}
+static struct notifier_block cpufreq_userspace_cpu_nfb = {
+ .notifier_call = cpufreq_userspace_cpu_callback
+};
+
struct cpufreq_governor cpufreq_gov_userspace = {
.name = "userspace",
.governor = cpufreq_governor_userspace,
@@ -99,6 +118,11 @@ struct cpufreq_governor cpufreq_gov_user
static int __init cpufreq_gov_userspace_init(void)
{
+ unsigned int cpu;
+
+ for_each_online_cpu(cpu)
+ per_cpu(cpu_set_freq, cpu) = userspace_cmdline_freq;
+ register_cpu_notifier(&cpufreq_userspace_cpu_nfb);
return cpufreq_register_governor(&cpufreq_gov_userspace);
}
__initcall(cpufreq_gov_userspace_init);
Index: xen-4.1.1-testing/xen/drivers/cpufreq/cpufreq_ondemand.c
===================================================================
--- xen-4.1.1-testing.orig/xen/drivers/cpufreq/cpufreq_ondemand.c
+++ xen-4.1.1-testing/xen/drivers/cpufreq/cpufreq_ondemand.c
@@ -296,7 +296,7 @@ int cpufreq_governor_dbs(struct cpufreq_
return 0;
}
-static void __init cpufreq_dbs_handle_option(const char *name, const char *val)
+static bool_t __init cpufreq_dbs_handle_option(const char *name, const char *val)
{
if ( !strcmp(name, "rate") && val )
{
@@ -334,6 +334,9 @@ static void __init cpufreq_dbs_handle_op
}
dbs_tuners_ins.powersave_bias = tmp;
}
+ else
+ return 0;
+ return 1;
}
struct cpufreq_governor cpufreq_gov_dbs = {
Index: xen-4.1.1-testing/xen/include/acpi/cpufreq/cpufreq.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/acpi/cpufreq/cpufreq.h
+++ xen-4.1.1-testing/xen/include/acpi/cpufreq/cpufreq.h
@@ -93,7 +93,7 @@ struct cpufreq_governor {
char name[CPUFREQ_NAME_LEN];
int (*governor)(struct cpufreq_policy *policy,
unsigned int event);
- void (*handle_option)(const char *name, const char *value);
+ bool_t (*handle_option)(const char *name, const char *value);
struct list_head governor_list;
};
++++++ 23304-amd-oprofile-strings.patch ++++++
References: FATE#309893, FATE#309902, FATE#309903, FATE#309906
# HG changeset patch
# User Jacob Shin
# Date 1304930954 -3600
# Node ID 8981b582be3e2f6647ef5ff3d93e167436ed357a
# Parent 82180954eda9cfe279e7ecf8c9ed4ffa29796bfb
xenoprof: Update cpu_type to sync with upstream oprofile
Update xenoprof's cpu_type to match upstream oprofile. Currently AMD
Family 11h ~ Family 15h are broken due to string mismatches.
Signed-off-by: Jacob Shin
Index: xen-4.1.1-testing/xen/arch/x86/oprofile/nmi_int.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/oprofile/nmi_int.c
+++ xen-4.1.1-testing/xen/arch/x86/oprofile/nmi_int.c
@@ -435,19 +435,19 @@ static int __init nmi_init(void)
break;
case 0x11:
model = &op_athlon_spec;
- cpu_type = "x86-64/family11";
+ cpu_type = "x86-64/family11h";
break;
case 0x12:
model = &op_athlon_spec;
- cpu_type = "x86-64/family12";
+ cpu_type = "x86-64/family12h";
break;
case 0x14:
model = &op_athlon_spec;
- cpu_type = "x86-64/family14";
+ cpu_type = "x86-64/family14h";
break;
case 0x15:
model = &op_athlon_spec;
- cpu_type = "x86-64/family15";
+ cpu_type = "x86-64/family15h";
break;
}
break;
++++++ 23305-amd-fam15-xenoprof.patch ++++++
References: FATE#309893, FATE#309906
# HG changeset patch
# User Jacob Shin
# Date 1304931187 -3600
# Node ID 014ee4e09644bd3ae55919d267f742c1d60c337a
# Parent 8981b582be3e2f6647ef5ff3d93e167436ed357a
xenoprof: Add support for AMD Family 15h processors
AMD Family 15h CPU mirrors legacy K7 performance monitor counters to
a new location, and adds 2 new counters. This patch updates xenoprof
to take advantage of the new counters.
Signed-off-by: Jacob Shin
Rename fam15h -> amd_fam15h in a few places, as suggested by Jan
Beulich.
Signed-off-by: Keir Fraser
Index: xen-4.1.1-testing/xen/arch/x86/oprofile/nmi_int.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/oprofile/nmi_int.c
+++ xen-4.1.1-testing/xen/arch/x86/oprofile/nmi_int.c
@@ -30,7 +30,7 @@
struct op_counter_config counter_config[OP_MAX_COUNTER];
struct op_ibs_config ibs_config;
-static struct op_x86_model_spec const *__read_mostly model;
+struct op_x86_model_spec const *__read_mostly model;
static struct op_msrs cpu_msrs[NR_CPUS];
static unsigned long saved_lvtpc[NR_CPUS];
@@ -446,7 +446,7 @@ static int __init nmi_init(void)
cpu_type = "x86-64/family14h";
break;
case 0x15:
- model = &op_athlon_spec;
+ model = &op_amd_fam15h_spec;
cpu_type = "x86-64/family15h";
break;
}
Index: xen-4.1.1-testing/xen/arch/x86/oprofile/op_model_athlon.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/oprofile/op_model_athlon.c
+++ xen-4.1.1-testing/xen/arch/x86/oprofile/op_model_athlon.c
@@ -24,8 +24,13 @@
#include "op_x86_model.h"
#include "op_counter.h"
-#define NUM_COUNTERS 4
-#define NUM_CONTROLS 4
+#define K7_NUM_COUNTERS 4
+#define K7_NUM_CONTROLS 4
+
+#define FAM15H_NUM_COUNTERS 6
+#define FAM15H_NUM_CONTROLS 6
+
+#define MAX_COUNTERS FAM15H_NUM_COUNTERS
#define CTR_READ(msr_content,msrs,c) do {rdmsrl(msrs->counters[(c)].addr, (msr_content));} while (0)
#define CTR_WRITE(l,msrs,c) do {wrmsr(msrs->counters[(c)].addr, -(unsigned int)(l), -1);} while (0)
@@ -44,9 +49,10 @@
#define CTRL_SET_HOST_ONLY(val, h) (val |= ((h & 0x1ULL) << 41))
#define CTRL_SET_GUEST_ONLY(val, h) (val |= ((h & 0x1ULL) << 40))
-static unsigned long reset_value[NUM_COUNTERS];
+static unsigned long reset_value[MAX_COUNTERS];
extern char svm_stgi_label[];
+extern struct op_x86_model_spec const *__read_mostly model;
#ifdef CONFIG_X86_64
u32 ibs_caps = 0;
@@ -175,26 +181,44 @@ static void athlon_fill_in_addresses(str
msrs->controls[3].addr = MSR_K7_EVNTSEL3;
}
-
+static void fam15h_fill_in_addresses(struct op_msrs * const msrs)
+{
+ msrs->counters[0].addr = MSR_AMD_FAM15H_PERFCTR0;
+ msrs->counters[1].addr = MSR_AMD_FAM15H_PERFCTR1;
+ msrs->counters[2].addr = MSR_AMD_FAM15H_PERFCTR2;
+ msrs->counters[3].addr = MSR_AMD_FAM15H_PERFCTR3;
+ msrs->counters[4].addr = MSR_AMD_FAM15H_PERFCTR4;
+ msrs->counters[5].addr = MSR_AMD_FAM15H_PERFCTR5;
+
+ msrs->controls[0].addr = MSR_AMD_FAM15H_EVNTSEL0;
+ msrs->controls[1].addr = MSR_AMD_FAM15H_EVNTSEL1;
+ msrs->controls[2].addr = MSR_AMD_FAM15H_EVNTSEL2;
+ msrs->controls[3].addr = MSR_AMD_FAM15H_EVNTSEL3;
+ msrs->controls[4].addr = MSR_AMD_FAM15H_EVNTSEL4;
+ msrs->controls[5].addr = MSR_AMD_FAM15H_EVNTSEL5;
+}
+
static void athlon_setup_ctrs(struct op_msrs const * const msrs)
{
uint64_t msr_content;
int i;
+ unsigned int const nr_ctrs = model->num_counters;
+ unsigned int const nr_ctrls = model->num_controls;
/* clear all counters */
- for (i = 0 ; i < NUM_CONTROLS; ++i) {
+ for (i = 0 ; i < nr_ctrls; ++i) {
CTRL_READ(msr_content, msrs, i);
CTRL_CLEAR(msr_content);
CTRL_WRITE(msr_content, msrs, i);
}
/* avoid a false detection of ctr overflows in NMI handler */
- for (i = 0; i < NUM_COUNTERS; ++i) {
+ for (i = 0; i < nr_ctrs; ++i) {
CTR_WRITE(1, msrs, i);
}
/* enable active counters */
- for (i = 0; i < NUM_COUNTERS; ++i) {
+ for (i = 0; i < nr_ctrs; ++i) {
if (counter_config[i].enabled) {
reset_value[i] = counter_config[i].count;
@@ -300,6 +324,7 @@ static int athlon_check_ctrs(unsigned in
int mode = 0;
struct vcpu *v = current;
struct cpu_user_regs *guest_regs = guest_cpu_user_regs();
+ unsigned int const nr_ctrs = model->num_counters;
if (!guest_mode(regs) &&
(regs->eip == (unsigned long)svm_stgi_label)) {
@@ -312,7 +337,7 @@ static int athlon_check_ctrs(unsigned in
mode = xenoprofile_get_mode(v, regs);
}
- for (i = 0 ; i < NUM_COUNTERS; ++i) {
+ for (i = 0 ; i < nr_ctrs; ++i) {
CTR_READ(msr_content, msrs, i);
if (CTR_OVERFLOWED(msr_content)) {
xenoprof_log_event(current, regs, eip, mode, i);
@@ -373,7 +398,8 @@ static void athlon_start(struct op_msrs
{
uint64_t msr_content;
int i;
- for (i = 0 ; i < NUM_COUNTERS ; ++i) {
+ unsigned int const nr_ctrs = model->num_counters;
+ for (i = 0 ; i < nr_ctrs ; ++i) {
if (reset_value[i]) {
CTRL_READ(msr_content, msrs, i);
CTRL_SET_ACTIVE(msr_content);
@@ -401,10 +427,11 @@ static void athlon_stop(struct op_msrs c
{
uint64_t msr_content;
int i;
+ unsigned int const nr_ctrs = model->num_counters;
/* Subtle: stop on all counters to avoid race with
* setting our pm callback */
- for (i = 0 ; i < NUM_COUNTERS ; ++i) {
+ for (i = 0 ; i < nr_ctrs ; ++i) {
CTRL_READ(msr_content, msrs, i);
CTRL_SET_INACTIVE(msr_content);
CTRL_WRITE(msr_content, msrs, i);
@@ -512,11 +539,21 @@ void __init ibs_init(void)
#endif /* CONFIG_X86_64 */
struct op_x86_model_spec const op_athlon_spec = {
- .num_counters = NUM_COUNTERS,
- .num_controls = NUM_CONTROLS,
+ .num_counters = K7_NUM_COUNTERS,
+ .num_controls = K7_NUM_CONTROLS,
.fill_in_addresses = &athlon_fill_in_addresses,
.setup_ctrs = &athlon_setup_ctrs,
.check_ctrs = &athlon_check_ctrs,
.start = &athlon_start,
+ .stop = &athlon_stop
+};
+
+struct op_x86_model_spec const op_amd_fam15h_spec = {
+ .num_counters = FAM15H_NUM_COUNTERS,
+ .num_controls = FAM15H_NUM_CONTROLS,
+ .fill_in_addresses = &fam15h_fill_in_addresses,
+ .setup_ctrs = &athlon_setup_ctrs,
+ .check_ctrs = &athlon_check_ctrs,
+ .start = &athlon_start,
.stop = &athlon_stop
};
Index: xen-4.1.1-testing/xen/arch/x86/oprofile/op_x86_model.h
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/oprofile/op_x86_model.h
+++ xen-4.1.1-testing/xen/arch/x86/oprofile/op_x86_model.h
@@ -48,6 +48,7 @@ extern struct op_x86_model_spec op_arch_
extern struct op_x86_model_spec const op_p4_spec;
extern struct op_x86_model_spec const op_p4_ht2_spec;
extern struct op_x86_model_spec const op_athlon_spec;
+extern struct op_x86_model_spec const op_amd_fam15h_spec;
void arch_perfmon_setup_counters(void);
#endif /* OP_X86_MODEL_H */
Index: xen-4.1.1-testing/xen/include/asm-x86/msr-index.h
===================================================================
--- xen-4.1.1-testing.orig/xen/include/asm-x86/msr-index.h
+++ xen-4.1.1-testing/xen/include/asm-x86/msr-index.h
@@ -224,6 +224,19 @@
#define MSR_K8_VM_CR 0xc0010114
#define MSR_K8_VM_HSAVE_PA 0xc0010117
+#define MSR_AMD_FAM15H_EVNTSEL0 0xc0010200
+#define MSR_AMD_FAM15H_PERFCTR0 0xc0010201
+#define MSR_AMD_FAM15H_EVNTSEL1 0xc0010202
+#define MSR_AMD_FAM15H_PERFCTR1 0xc0010203
+#define MSR_AMD_FAM15H_EVNTSEL2 0xc0010204
+#define MSR_AMD_FAM15H_PERFCTR2 0xc0010205
+#define MSR_AMD_FAM15H_EVNTSEL3 0xc0010206
+#define MSR_AMD_FAM15H_PERFCTR3 0xc0010207
+#define MSR_AMD_FAM15H_EVNTSEL4 0xc0010208
+#define MSR_AMD_FAM15H_PERFCTR4 0xc0010209
+#define MSR_AMD_FAM15H_EVNTSEL5 0xc001020a
+#define MSR_AMD_FAM15H_PERFCTR5 0xc001020b
+
#define MSR_K8_FEATURE_MASK 0xc0011004
#define MSR_K8_EXT_FEATURE_MASK 0xc0011005
++++++ 23306-amd-fam15-vpmu.patch ++++++
References: FATE#309893, FATE#309906
# HG changeset patch
# User Jacob Shin
# Date 1304931286 -3600
# Node ID e787d4f2e5acdba48728a9390710de800315a540
# Parent 014ee4e09644bd3ae55919d267f742c1d60c337a
hvm: vpmu: Add support for AMD Family 15h processors
AMD Family 15h CPU mirrors legacy K7 performance monitor counters to
a new location, and adds 2 new counters. This patch updates HVM VPMU
to take advantage of the new counters.
Signed-off-by: Jacob Shin
Index: xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/svm/svm.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/svm/svm.c
@@ -1143,6 +1143,18 @@ static int svm_msr_read_intercept(unsign
case MSR_K7_EVNTSEL1:
case MSR_K7_EVNTSEL2:
case MSR_K7_EVNTSEL3:
+ case MSR_AMD_FAM15H_PERFCTR0:
+ case MSR_AMD_FAM15H_PERFCTR1:
+ case MSR_AMD_FAM15H_PERFCTR2:
+ case MSR_AMD_FAM15H_PERFCTR3:
+ case MSR_AMD_FAM15H_PERFCTR4:
+ case MSR_AMD_FAM15H_PERFCTR5:
+ case MSR_AMD_FAM15H_EVNTSEL0:
+ case MSR_AMD_FAM15H_EVNTSEL1:
+ case MSR_AMD_FAM15H_EVNTSEL2:
+ case MSR_AMD_FAM15H_EVNTSEL3:
+ case MSR_AMD_FAM15H_EVNTSEL4:
+ case MSR_AMD_FAM15H_EVNTSEL5:
vpmu_do_rdmsr(msr, msr_content);
break;
@@ -1238,6 +1250,18 @@ static int svm_msr_write_intercept(unsig
case MSR_K7_EVNTSEL1:
case MSR_K7_EVNTSEL2:
case MSR_K7_EVNTSEL3:
+ case MSR_AMD_FAM15H_PERFCTR0:
+ case MSR_AMD_FAM15H_PERFCTR1:
+ case MSR_AMD_FAM15H_PERFCTR2:
+ case MSR_AMD_FAM15H_PERFCTR3:
+ case MSR_AMD_FAM15H_PERFCTR4:
+ case MSR_AMD_FAM15H_PERFCTR5:
+ case MSR_AMD_FAM15H_EVNTSEL0:
+ case MSR_AMD_FAM15H_EVNTSEL1:
+ case MSR_AMD_FAM15H_EVNTSEL2:
+ case MSR_AMD_FAM15H_EVNTSEL3:
+ case MSR_AMD_FAM15H_EVNTSEL4:
+ case MSR_AMD_FAM15H_EVNTSEL5:
vpmu_do_wrmsr(msr, msr_content);
break;
Index: xen-4.1.1-testing/xen/arch/x86/hvm/svm/vpmu.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/svm/vpmu.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/svm/vpmu.c
@@ -36,7 +36,9 @@
#include
#include
-#define NUM_COUNTERS 4
+#define F10H_NUM_COUNTERS 4
+#define F15H_NUM_COUNTERS 6
+#define MAX_NUM_COUNTERS F15H_NUM_COUNTERS
#define MSR_F10H_EVNTSEL_GO_SHIFT 40
#define MSR_F10H_EVNTSEL_EN_SHIFT 22
@@ -47,6 +49,11 @@
#define set_guest_mode(msr) (msr |= (1ULL << MSR_F10H_EVNTSEL_GO_SHIFT))
#define is_overflowed(msr) (!((msr) & (1ULL << (MSR_F10H_COUNTER_LENGTH-1))))
+static int __read_mostly num_counters = 0;
+static u32 __read_mostly *counters = NULL;
+static u32 __read_mostly *ctrls = NULL;
+static bool_t __read_mostly k7_counters_mirrored = 0;
+
/* PMU Counter MSRs. */
u32 AMD_F10H_COUNTERS[] = {
MSR_K7_PERFCTR0,
@@ -63,10 +70,28 @@ u32 AMD_F10H_CTRLS[] = {
MSR_K7_EVNTSEL3
};
+u32 AMD_F15H_COUNTERS[] = {
+ MSR_AMD_FAM15H_PERFCTR0,
+ MSR_AMD_FAM15H_PERFCTR1,
+ MSR_AMD_FAM15H_PERFCTR2,
+ MSR_AMD_FAM15H_PERFCTR3,
+ MSR_AMD_FAM15H_PERFCTR4,
+ MSR_AMD_FAM15H_PERFCTR5
+};
+
+u32 AMD_F15H_CTRLS[] = {
+ MSR_AMD_FAM15H_EVNTSEL0,
+ MSR_AMD_FAM15H_EVNTSEL1,
+ MSR_AMD_FAM15H_EVNTSEL2,
+ MSR_AMD_FAM15H_EVNTSEL3,
+ MSR_AMD_FAM15H_EVNTSEL4,
+ MSR_AMD_FAM15H_EVNTSEL5
+};
+
/* storage for context switching */
struct amd_vpmu_context {
- u64 counters[NUM_COUNTERS];
- u64 ctrls[NUM_COUNTERS];
+ u64 counters[MAX_NUM_COUNTERS];
+ u64 ctrls[MAX_NUM_COUNTERS];
u32 hw_lapic_lvtpc;
};
@@ -78,10 +103,45 @@ static inline int get_pmu_reg_type(u32 a
if ( (addr >= MSR_K7_PERFCTR0) && (addr <= MSR_K7_PERFCTR3) )
return MSR_TYPE_COUNTER;
+ if ( (addr >= MSR_AMD_FAM15H_EVNTSEL0) &&
+ (addr <= MSR_AMD_FAM15H_PERFCTR5 ) )
+ {
+ if (addr & 1)
+ return MSR_TYPE_COUNTER;
+ else
+ return MSR_TYPE_CTRL;
+ }
+
/* unsupported registers */
return -1;
}
+static inline u32 get_fam15h_addr(u32 addr)
+{
+ switch ( addr )
+ {
+ case MSR_K7_PERFCTR0:
+ return MSR_AMD_FAM15H_PERFCTR0;
+ case MSR_K7_PERFCTR1:
+ return MSR_AMD_FAM15H_PERFCTR1;
+ case MSR_K7_PERFCTR2:
+ return MSR_AMD_FAM15H_PERFCTR2;
+ case MSR_K7_PERFCTR3:
+ return MSR_AMD_FAM15H_PERFCTR3;
+ case MSR_K7_EVNTSEL0:
+ return MSR_AMD_FAM15H_EVNTSEL0;
+ case MSR_K7_EVNTSEL1:
+ return MSR_AMD_FAM15H_EVNTSEL1;
+ case MSR_K7_EVNTSEL2:
+ return MSR_AMD_FAM15H_EVNTSEL2;
+ case MSR_K7_EVNTSEL3:
+ return MSR_AMD_FAM15H_EVNTSEL3;
+ default:
+ break;
+ }
+
+ return addr;
+}
static int amd_vpmu_do_interrupt(struct cpu_user_regs *regs)
{
@@ -110,12 +170,12 @@ static inline void context_restore(struc
struct vpmu_struct *vpmu = vcpu_vpmu(v);
struct amd_vpmu_context *ctxt = vpmu->context;
- for ( i = 0; i < NUM_COUNTERS; i++ )
- wrmsrl(AMD_F10H_CTRLS[i], ctxt->ctrls[i]);
+ for ( i = 0; i < num_counters; i++ )
+ wrmsrl(ctrls[i], ctxt->ctrls[i]);
- for ( i = 0; i < NUM_COUNTERS; i++ )
+ for ( i = 0; i < num_counters; i++ )
{
- wrmsrl(AMD_F10H_COUNTERS[i], ctxt->counters[i]);
+ wrmsrl(counters[i], ctxt->counters[i]);
/* Force an interrupt to allow guest reset the counter,
if the value is positive */
@@ -147,11 +207,11 @@ static inline void context_save(struct v
struct vpmu_struct *vpmu = vcpu_vpmu(v);
struct amd_vpmu_context *ctxt = vpmu->context;
- for ( i = 0; i < NUM_COUNTERS; i++ )
- rdmsrl(AMD_F10H_COUNTERS[i], ctxt->counters[i]);
+ for ( i = 0; i < num_counters; i++ )
+ rdmsrl(counters[i], ctxt->counters[i]);
- for ( i = 0; i < NUM_COUNTERS; i++ )
- rdmsrl(AMD_F10H_CTRLS[i], ctxt->ctrls[i]);
+ for ( i = 0; i < num_counters; i++ )
+ rdmsrl(ctrls[i], ctxt->ctrls[i]);
}
static void amd_vpmu_save(struct vcpu *v)
@@ -175,12 +235,18 @@ static void context_update(unsigned int
struct vpmu_struct *vpmu = vcpu_vpmu(v);
struct amd_vpmu_context *ctxt = vpmu->context;
- for ( i = 0; i < NUM_COUNTERS; i++ )
- if ( msr == AMD_F10H_COUNTERS[i] )
+ if ( k7_counters_mirrored &&
+ ((msr >= MSR_K7_EVNTSEL0) && (msr <= MSR_K7_PERFCTR3)) )
+ {
+ msr = get_fam15h_addr(msr);
+ }
+
+ for ( i = 0; i < num_counters; i++ )
+ if ( msr == counters[i] )
ctxt->counters[i] = msr_content;
- for ( i = 0; i < NUM_COUNTERS; i++ )
- if ( msr == AMD_F10H_CTRLS[i] )
+ for ( i = 0; i < num_counters; i++ )
+ if ( msr == ctrls[i] )
ctxt->ctrls[i] = msr_content;
ctxt->hw_lapic_lvtpc = apic_read(APIC_LVTPC);
@@ -235,10 +301,31 @@ static void amd_vpmu_initialise(struct v
{
struct amd_vpmu_context *ctxt = NULL;
struct vpmu_struct *vpmu = vcpu_vpmu(v);
+ __u8 family = current_cpu_data.x86;
if ( vpmu->flags & VPMU_CONTEXT_ALLOCATED )
return;
+ if ( counters == NULL )
+ {
+ switch ( family )
+ {
+ case 0x15:
+ num_counters = F15H_NUM_COUNTERS;
+ counters = AMD_F15H_COUNTERS;
+ ctrls = AMD_F15H_CTRLS;
+ k7_counters_mirrored = 1;
+ break;
+ case 0x10:
+ default:
+ num_counters = F10H_NUM_COUNTERS;
+ counters = AMD_F10H_COUNTERS;
+ ctrls = AMD_F10H_CTRLS;
+ k7_counters_mirrored = 0;
+ break;
+ }
+ }
+
ctxt = xmalloc_bytes(sizeof(struct amd_vpmu_context));
if ( !ctxt )
Index: xen-4.1.1-testing/xen/arch/x86/hvm/vpmu.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/vpmu.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/vpmu.c
@@ -101,6 +101,7 @@ void vpmu_initialise(struct vcpu *v)
switch ( family )
{
case 0x10:
+ case 0x15:
vpmu->arch_vpmu_ops = &amd_vpmu_ops;
break;
default:
++++++ 23334-amd-fam12+14-vpmu.patch ++++++
References: FATE#309902, FATE#309903
# HG changeset patch
# User Jacob Shin
# Date 1305188046 -3600
# Node ID 23e33ea79cac0303c729d4e82905054cded16348
# Parent fabdd682420c0c7b5e81f07f2f54211ebc11babe
hvm: vpmu: Enable HVM VPMU for AMD Family 12h and 14h processors
HVM VPMU support can be enabled for AMD Family 12h and 14h processors
by taking the same code path as 10h.
Signed-off-by: Jacob Shin
Index: xen-4.1.1-testing/xen/arch/x86/hvm/svm/vpmu.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/svm/vpmu.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/svm/vpmu.c
@@ -317,6 +317,8 @@ static void amd_vpmu_initialise(struct v
k7_counters_mirrored = 1;
break;
case 0x10:
+ case 0x12:
+ case 0x14:
default:
num_counters = F10H_NUM_COUNTERS;
counters = AMD_F10H_COUNTERS;
Index: xen-4.1.1-testing/xen/arch/x86/hvm/vpmu.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/vpmu.c
+++ xen-4.1.1-testing/xen/arch/x86/hvm/vpmu.c
@@ -101,6 +101,8 @@ void vpmu_initialise(struct vcpu *v)
switch ( family )
{
case 0x10:
+ case 0x12:
+ case 0x14:
case 0x15:
vpmu->arch_vpmu_ops = &amd_vpmu_ops;
break;
++++++ 23338-vtd-force-intremap.patch ++++++
# HG changeset patch
# User Keir Fraser
# Date 1305214920 -3600
# Node ID 9751bc49639ec4e34837545cdc982d0768e46d94
# Parent cc91832a02c7cb6b09729ca8e9fc497e5cb2ba4d
vt-d: [CVE-2011-1898] Ensure that "iommu=required" enables interrupt remapping.
Ensure that when Xen boots with "iommu=required" it will also insist
that interrupt remapping is supported and enabled. It arranges that
booting with that option on vulnerable hardware will fail, rather than
appearing to succeed but actually being vulnerable to guests.
From: Allen Kay
Signed-off-by: Keir Fraser
Index: xen-4.1.1-testing/xen/drivers/passthrough/vtd/iommu.c
===================================================================
--- xen-4.1.1-testing.orig/xen/drivers/passthrough/vtd/iommu.c
+++ xen-4.1.1-testing/xen/drivers/passthrough/vtd/iommu.c
@@ -1985,6 +1985,8 @@ static int init_vtd_hw(void)
"ioapic_to_iommu: ioapic 0x%x (id: 0x%x) is NULL! "
"Will not try to enable Interrupt Remapping.\n",
apic, IO_APIC_ID(apic));
+ if ( force_iommu )
+ panic("intremap remapping failed to enable with iommu=required/force in grub\n");
break;
}
}
@@ -1998,6 +2000,9 @@ static int init_vtd_hw(void)
{
dprintk(XENLOG_WARNING VTDPREFIX,
"Interrupt Remapping not enabled\n");
+
+ if ( force_iommu && platform_supports_intremap() )
+ panic("intremap remapping failed to enable with iommu=required/force in grub\n");
break;
}
}
++++++ 32on64-extra-mem.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -2913,7 +2913,7 @@ class XendDomainInfo:
self.guest_bitsize = self.image.getBitSize()
++++++ altgr_2.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -29,10 +29,10 @@
Signed-off by Chunyan Liu (cyliu@novell.com)
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/vnc.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/vnc.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/vnc.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/vnc.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/vnc.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/vnc.c
@@ -1308,6 +1308,9 @@ static void do_key_event(VncState *vs, i
shift_keys = vs->modifiers_state[0x2a] | vs->modifiers_state[0x36];
altgr_keys = vs->modifiers_state[0xb8];
++++++ bdrv_default_rwflag.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,10 +1,10 @@
Subject: modify default read/write flag in bdrv_init.
Signed-off by Chunyan Liu
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/vl.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/vl.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/vl.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/vl.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/vl.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/vl.c
@@ -2617,6 +2617,8 @@ int drive_init(struct drive_opt *arg, in
strncpy(drives_table[nb_drives].serial, serial, sizeof(serial));
nb_drives++;
++++++ bdrv_open2_fix_flags.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/block.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/block.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/block.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/block.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/block.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/block.c
@@ -350,7 +350,7 @@ int bdrv_file_open(BlockDriverState **pb
int bdrv_open(BlockDriverState *bs, const char *filename, int flags)
@@ -28,10 +28,10 @@
ret = drv->bdrv_open(bs, filename, open_flags);
if ((ret == -EACCES || ret == -EPERM) && !(flags & BDRV_O_FILE)) {
ret = drv->bdrv_open(bs, filename, open_flags & ~BDRV_O_RDWR);
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/usb-msd.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/usb-msd.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/usb-msd.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/usb-msd.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/usb-msd.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/usb-msd.c
@@ -551,7 +551,7 @@ USBDevice *usb_msd_init(const char *file
s = qemu_mallocz(sizeof(MSDState));
@@ -41,10 +41,10 @@
goto fail;
s->bs = bdrv;
*pbs = bdrv;
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-img.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-img.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/qemu-img.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-img.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/qemu-img.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-img.c
@@ -32,7 +32,7 @@
#endif
++++++ bdrv_open2_flags_2.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
@@ -237,6 +237,7 @@ static int open_disk(struct td_state *s,
BlockDriver* drv;
char* devname;
@@ -19,10 +19,10 @@
fprintf(stderr, "Could not open image file %s\n", path);
return -ENOMEM;
}
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/xenstore.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/xenstore.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
@@ -136,7 +136,8 @@ static void insert_media(void *opaque)
else
format = &bdrv_raw;
++++++ blktap-pv-cdrom.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/blktap/drivers/block-cdrom.c
+Index: xen-4.1.1-testing/tools/blktap/drivers/block-cdrom.c
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/blktap/drivers/block-cdrom.c
++++ xen-4.1.1-testing/tools/blktap/drivers/block-cdrom.c
@@ -0,0 +1,535 @@
+/* block-cdrom.c
+ *
@@ -538,10 +538,10 @@
+ .td_get_parent_id = tdcdrom_get_parent_id,
+ .td_validate_parent = tdcdrom_validate_parent
+};
-Index: xen-4.1.0-testing/xen/include/public/io/cdromif.h
+Index: xen-4.1.1-testing/xen/include/public/io/cdromif.h
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/xen/include/public/io/cdromif.h
++++ xen-4.1.1-testing/xen/include/public/io/cdromif.h
@@ -0,0 +1,122 @@
+/******************************************************************************
+ * cdromif.h
@@ -665,10 +665,10 @@
+ sizeof(struct vcd_generic_command) - sizeof(struct request_sense))
+
+#endif
-Index: xen-4.1.0-testing/tools/blktap/drivers/Makefile
+Index: xen-4.1.1-testing/tools/blktap/drivers/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/drivers/Makefile
-+++ xen-4.1.0-testing/tools/blktap/drivers/Makefile
+--- xen-4.1.1-testing.orig/tools/blktap/drivers/Makefile
++++ xen-4.1.1-testing/tools/blktap/drivers/Makefile
@@ -28,8 +28,9 @@ CFLAGS += -DMEMSHR
MEMSHRLIBS += $(MEMSHR_DIR)/libmemshr.a
endif
@@ -689,10 +689,10 @@
BLK-OBJS-y += aes.o
BLK-OBJS-y += tapaio.o
BLK-OBJS-$(CONFIG_Linux) += blk_linux.o
-Index: xen-4.1.0-testing/tools/blktap/drivers/tapdisk.h
+Index: xen-4.1.1-testing/tools/blktap/drivers/tapdisk.h
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/drivers/tapdisk.h
-+++ xen-4.1.0-testing/tools/blktap/drivers/tapdisk.h
+--- xen-4.1.1-testing.orig/tools/blktap/drivers/tapdisk.h
++++ xen-4.1.1-testing/tools/blktap/drivers/tapdisk.h
@@ -137,6 +137,9 @@ struct tap_disk {
int (*td_get_parent_id) (struct disk_driver *dd, struct disk_id *id);
int (*td_validate_parent)(struct disk_driver *dd,
@@ -737,10 +737,10 @@
};
typedef struct driver_list_entry {
-Index: xen-4.1.0-testing/tools/blktap/lib/blktaplib.h
+Index: xen-4.1.1-testing/tools/blktap/lib/blktaplib.h
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/lib/blktaplib.h
-+++ xen-4.1.0-testing/tools/blktap/lib/blktaplib.h
+--- xen-4.1.1-testing.orig/tools/blktap/lib/blktaplib.h
++++ xen-4.1.1-testing/tools/blktap/lib/blktaplib.h
@@ -225,6 +225,7 @@ typedef struct msg_pid {
#define DISK_TYPE_RAM 3
#define DISK_TYPE_QCOW 4
@@ -749,10 +749,10 @@
/* xenstore/xenbus: */
#define DOMNAME "Domain-0"
-Index: xen-4.1.0-testing/xen/include/public/io/blkif.h
+Index: xen-4.1.1-testing/xen/include/public/io/blkif.h
===================================================================
---- xen-4.1.0-testing.orig/xen/include/public/io/blkif.h
-+++ xen-4.1.0-testing/xen/include/public/io/blkif.h
+--- xen-4.1.1-testing.orig/xen/include/public/io/blkif.h
++++ xen-4.1.1-testing/xen/include/public/io/blkif.h
@@ -80,7 +80,7 @@
* Used in SLES sources for device specific command packet
* contained within the request. Reserved for that purpose.
@@ -762,10 +762,10 @@
/*
* Recognised only if "feature-trim" is present in backend xenbus info.
* The "feature-trim" node contains a boolean indicating whether trim
-Index: xen-4.1.0-testing/tools/blktap/drivers/tapdisk.c
+Index: xen-4.1.1-testing/tools/blktap/drivers/tapdisk.c
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/drivers/tapdisk.c
-+++ xen-4.1.0-testing/tools/blktap/drivers/tapdisk.c
+--- xen-4.1.1-testing.orig/tools/blktap/drivers/tapdisk.c
++++ xen-4.1.1-testing/tools/blktap/drivers/tapdisk.c
@@ -735,6 +735,22 @@ static void get_io_request(struct td_sta
goto out;
}
@@ -789,10 +789,10 @@
default:
DPRINTF("Unknown block operation\n");
break;
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/BlktapController.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/BlktapController.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/server/BlktapController.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/BlktapController.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/server/BlktapController.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/BlktapController.py
@@ -15,6 +15,7 @@ blktap1_disk_types = [
'ram',
'qcow',
++++++ blktap.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,10 +1,10 @@
bug #239173
bug #242953
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -3295,7 +3295,7 @@ class XendDomainInfo:
(fn, BOOTLOADER_LOOPBACK_DEVICE))
@@ -14,10 +14,10 @@
'device': BOOTLOADER_LOOPBACK_DEVICE,
}
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/xenstore.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/xenstore.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
@@ -447,9 +447,9 @@ void xenstore_parse_domain_config(int hv
{
char **e_danger = NULL;
++++++ blktapctrl-default-to-ioemu.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/blktap/drivers/tapdisk.h
+Index: xen-4.1.1-testing/tools/blktap/drivers/tapdisk.h
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/drivers/tapdisk.h
-+++ xen-4.1.0-testing/tools/blktap/drivers/tapdisk.h
+--- xen-4.1.1-testing.orig/tools/blktap/drivers/tapdisk.h
++++ xen-4.1.1-testing/tools/blktap/drivers/tapdisk.h
@@ -168,7 +168,7 @@ static disk_info_t aio_disk = {
"raw image (aio)",
"aio",
++++++ bridge-bonding.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/network-bridge
+Index: xen-4.1.1-testing/tools/hotplug/Linux/network-bridge
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/network-bridge
-+++ xen-4.1.0-testing/tools/hotplug/Linux/network-bridge
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/network-bridge
++++ xen-4.1.1-testing/tools/hotplug/Linux/network-bridge
@@ -249,6 +249,9 @@ op_start () {
claim_lock "network-bridge"
++++++ bridge-opensuse.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/network-bridge
+Index: xen-4.1.1-testing/tools/hotplug/Linux/network-bridge
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/network-bridge
-+++ xen-4.1.0-testing/tools/hotplug/Linux/network-bridge
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/network-bridge
++++ xen-4.1.1-testing/tools/hotplug/Linux/network-bridge
@@ -278,19 +278,19 @@ op_stop () {
transfer_addrs ${bridge} ${pdev}
if ! ifdown ${bridge}; then
++++++ bridge-record-creation.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/network-bridge
+Index: xen-4.1.1-testing/tools/hotplug/Linux/network-bridge
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/network-bridge
-+++ xen-4.1.0-testing/tools/hotplug/Linux/network-bridge
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/network-bridge
++++ xen-4.1.1-testing/tools/hotplug/Linux/network-bridge
@@ -257,6 +257,11 @@ op_start () {
create_bridge ${tdev}
++++++ bridge-vlan.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/network-bridge
+Index: xen-4.1.1-testing/tools/hotplug/Linux/network-bridge
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/network-bridge
-+++ xen-4.1.0-testing/tools/hotplug/Linux/network-bridge
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/network-bridge
++++ xen-4.1.1-testing/tools/hotplug/Linux/network-bridge
@@ -193,6 +193,28 @@ antispoofing () {
iptables -A FORWARD -m physdev --physdev-in ${pdev} -j ACCEPT
}
++++++ build-tapdisk-ioemu.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -15,10 +15,10 @@
tapdisk-ioemu.c | 17 -----------------
4 files changed, 17 insertions(+), 26 deletions(-)
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/Makefile
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/Makefile
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/Makefile
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/Makefile
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/Makefile
@@ -46,14 +46,6 @@ $(filter %-user,$(SUBDIR_RULES)): libqem
recurse-all: $(SUBDIR_RULES)
@@ -56,10 +56,10 @@
######################################################################
# libqemu_common.a: Target independent part of system emulation. The
# long term path is to suppress *all* target specific code in case of
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/configure
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/configure
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/configure
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/configure
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/configure
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/configure
@@ -1511,7 +1511,7 @@ bsd)
;;
esac
@@ -69,10 +69,10 @@
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
tools="qemu-img\$(EXESUF) $tools"
if [ "$linux" = "yes" ] ; then
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-tool.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-tool.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/qemu-tool.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-tool.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/qemu-tool.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-tool.c
@@ -68,7 +68,7 @@ void qemu_bh_delete(QEMUBH *bh)
qemu_free(bh);
}
@@ -82,10 +82,10 @@
IOCanRWHandler *fd_read_poll,
IOHandler *fd_read,
IOHandler *fd_write,
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/tapdisk-ioemu.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/tapdisk-ioemu.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
@@ -12,34 +12,12 @@
extern void qemu_aio_init(void);
++++++ capslock_enable.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/vnc.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/vnc.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/vnc.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/vnc.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/vnc.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/vnc.c
@@ -1342,6 +1342,11 @@ static void do_key_event(VncState *vs, i
}
break;
++++++ cdrom-removable.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/HalDaemon.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/HalDaemon.py
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/HalDaemon.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/HalDaemon.py
@@ -0,0 +1,243 @@
+#!/usr/bin/env python
+# -*- mode: python; -*-
@@ -246,10 +246,10 @@
+ print 'Falling off end'
+
+
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/Hald.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/Hald.py
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/Hald.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/Hald.py
@@ -0,0 +1,125 @@
+#============================================================================
+# This library is free software; you can redistribute it and/or
@@ -376,10 +376,10 @@
+ watcher.run()
+ time.sleep(10)
+ watcher.shutdown()
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/SrvServer.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/SrvServer.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/server/SrvServer.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/SrvServer.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/server/SrvServer.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/SrvServer.py
@@ -57,6 +57,7 @@ from xen.web.SrvDir import SrvDir
from SrvRoot import SrvRoot
@@ -397,10 +397,10 @@
def create():
root = SrvDir()
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/xenstore.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/xenstore.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
@@ -18,6 +18,7 @@
#include "exec-all.h"
#include "sysemu.h"
++++++ change_home_server.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -3130,6 +3130,11 @@ class XendDomainInfo:
self._cleanup_phantom_devs(paths)
self._cleanupVm()
++++++ check_device_status.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -5,10 +5,10 @@
returned. To fix this problem, we do not depend on ev.wait() result, but read
xenstore directly to get correct device status.
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/DevController.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/DevController.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/server/DevController.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/DevController.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/server/DevController.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/DevController.py
@@ -149,7 +149,10 @@ class DevController:
(status, err) = self.waitForBackend(devid)
++++++ checkpoint-rename.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendCheckpoint.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendCheckpoint.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendCheckpoint.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendCheckpoint.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendCheckpoint.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendCheckpoint.py
@@ -172,7 +172,7 @@ def save(fd, dominfo, network, live, dst
dominfo.destroy()
dominfo.testDeviceComplete()
++++++ del_usb_xend_entry.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -1297,8 +1297,15 @@ class XendDomainInfo:
frontpath = self.getDeviceController(deviceClass).frontendPath(dev)
backpath = xstransact.Read(frontpath, "backend")
++++++ disable_emulated_device.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,8 +1,8 @@
-Index: xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+Index: xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
===================================================================
---- xen-4.1.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-+++ xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-@@ -398,6 +398,11 @@ static int __devinit platform_pci_init(s
+--- xen-4.1.1-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
++++ xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+@@ -425,6 +425,11 @@ static int __devinit platform_pci_init(s
platform_mmio = mmio_addr;
platform_mmiolen = mmio_len;
++++++ dom-print.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/xen/arch/x86/domain.c
+Index: xen-4.1.1-testing/xen/arch/x86/domain.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/domain.c
-+++ xen-4.1.0-testing/xen/arch/x86/domain.c
+--- xen-4.1.1-testing.orig/xen/arch/x86/domain.c
++++ xen-4.1.1-testing/xen/arch/x86/domain.c
@@ -150,15 +150,30 @@ void dump_pageframe_info(struct domain *
printk("Memory pages belonging to domain %u:\n", d->domain_id);
++++++ domu-usb-controller.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendConfig.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendConfig.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendConfig.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendConfig.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendConfig.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendConfig.py
@@ -1874,7 +1874,14 @@ class XendConfig(dict):
ports = sxp.child(dev_sxp, 'port')
for port in ports[1:]:
++++++ hibernate.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/firmware/hvmloader/acpi/dsdt.asl
+Index: xen-4.1.1-testing/tools/firmware/hvmloader/acpi/dsdt.asl
===================================================================
---- xen-4.1.0-testing.orig/tools/firmware/hvmloader/acpi/dsdt.asl
-+++ xen-4.1.0-testing/tools/firmware/hvmloader/acpi/dsdt.asl
+--- xen-4.1.1-testing.orig/tools/firmware/hvmloader/acpi/dsdt.asl
++++ xen-4.1.1-testing/tools/firmware/hvmloader/acpi/dsdt.asl
@@ -30,21 +30,9 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2,
/*
* S3 (suspend-to-ram), S4 (suspend-to-disc) and S5 (power-off) type codes:
++++++ hotplug.losetup.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -17,10 +17,10 @@
tools/hotplug/Linux/block | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: xen-4.1.0-testing/tools/hotplug/Linux/block
+Index: xen-4.1.1-testing/tools/hotplug/Linux/block
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/block
-+++ xen-4.1.0-testing/tools/hotplug/Linux/block
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/block
++++ xen-4.1.1-testing/tools/hotplug/Linux/block
@@ -280,8 +280,8 @@ mount it read-write in a guest domain."
fi
++++++ hv_extid_compatibility.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendConfig.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendConfig.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendConfig.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendConfig.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendConfig.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendConfig.py
@@ -159,6 +159,7 @@ XENAPI_PLATFORM_CFG_TYPES = {
'nographic': int,
'nomigrate': int,
@@ -19,10 +19,10 @@
if 'viridian' not in self['platform']:
self['platform']['viridian'] = 0
if 'rtc_timeoffset' not in self['platform']:
-Index: xen-4.1.0-testing/tools/python/xen/xend/image.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/image.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/image.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/image.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/image.py
++++ xen-4.1.1-testing/tools/python/xen/xend/image.py
@@ -839,6 +839,7 @@ class HVMImageHandler(ImageHandler):
self.apic = int(vmConfig['platform'].get('apic', 0))
@@ -31,10 +31,10 @@
self.guest_os_type = vmConfig['platform'].get('guest_os_type')
self.memory_sharing = int(vmConfig['memory_sharing'])
try:
-Index: xen-4.1.0-testing/tools/python/xen/xm/create.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/create.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xm/create.py
-+++ xen-4.1.0-testing/tools/python/xen/xm/create.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/create.py
++++ xen-4.1.1-testing/tools/python/xen/xm/create.py
@@ -242,6 +242,10 @@ gopts.var('viridian', val='VIRIDIAN',
use="""Expose Viridian interface to x86 HVM guest?
(Default is 0).""")
++++++ ioemu-7615-qcow2-fix-alloc_cluster_link_l2.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -17,10 +17,10 @@
Signed-off-by: Kevin Wolf
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/block-qcow2.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/block-qcow2.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/block-qcow2.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/block-qcow2.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/block-qcow2.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/block-qcow2.c
@@ -916,7 +916,7 @@ static int alloc_cluster_link_l2(BlockDr
goto err;
++++++ ioemu-bdrv-open-CACHE_WB.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
@@ -259,8 +259,11 @@ static int open_disk(struct td_state *s,
drv = blktap_drivers[i].drv;
DPRINTF("%s driver specified\n", drv ? drv->format_name : "No");
++++++ ioemu-blktap-barriers.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
@@ -360,6 +360,15 @@ static void qemu_send_responses(void* op
}
++++++ ioemu-blktap-fv-init.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:31.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:31.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_machine_fv.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_machine_fv.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_machine_fv.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_machine_fv.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_machine_fv.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_machine_fv.c
@@ -269,6 +269,7 @@ void qemu_invalidate_entry(uint8_t *buff
#endif /* defined(MAPCACHE) */
++++++ ioemu-blktap-image-format.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -15,10 +15,10 @@
hw/xen_blktap.h | 14 ++++++++++++++
2 files changed, 33 insertions(+), 3 deletions(-)
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
@@ -230,9 +230,10 @@ static int map_new_dev(struct td_state *
return -1;
}
@@ -64,10 +64,10 @@
msglen = sizeof(msg_hdr_t);
msg->type = CTLMSG_IMG_FAIL;
msg->len = msglen;
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.h
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.h
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.h
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.h
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.h
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.h
@@ -53,4 +53,18 @@ typedef struct fd_list_entry {
int init_blktap(void);
++++++ ioemu-blktap-zero-size.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -12,10 +12,10 @@
hw/xen_blktap.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
@@ -268,6 +268,12 @@ static int open_disk(struct td_state *s,
s->size = bs->total_sectors;
s->sector_size = 512;
@@ -29,10 +29,10 @@
s->info = ((s->flags & TD_RDONLY) ? VDISK_READONLY : 0);
return 0;
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/DevController.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/DevController.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/server/DevController.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/DevController.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/server/DevController.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/DevController.py
@@ -155,7 +155,7 @@ class DevController:
(devid, self.deviceClass))
++++++ ioemu-debuginfo.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/Makefile
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/Makefile
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/Makefile
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/Makefile
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/Makefile
@@ -243,7 +243,7 @@ endif
install: all $(if $(BUILD_DOCS),install-doc)
mkdir -p "$(DESTDIR)$(bindir)"
@@ -11,10 +11,10 @@
endif
ifneq ($(BLOBS),)
mkdir -p "$(DESTDIR)$(datadir)"
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/Makefile.target
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/Makefile.target
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/Makefile.target
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/Makefile.target
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/Makefile.target
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/Makefile.target
@@ -755,7 +755,7 @@ clean:
install: all install-hook
++++++ ioemu-disable-emulated-ide-if-pv.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-xen.h
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-xen.h
@@ -1,6 +1,8 @@
#ifndef QEMU_XEN_H
#define QEMU_XEN_H
@@ -20,10 +20,10 @@
int xenstore_parse_disable_pf_config(void);
int xenstore_fd(void);
void xenstore_process_event(void *opaque);
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/vl.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/vl.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/vl.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/vl.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/vl.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/vl.c
@@ -5830,9 +5830,9 @@ int main(int argc, char **argv, char **e
if ((msg = xenbus_read(XBT_NIL, "domid", &domid_s)))
fprintf(stderr,"Can not read our own domid: %s\n", msg);
@@ -36,10 +36,10 @@
#endif /* CONFIG_STUBDOM */
}
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/xenstore.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/xenstore.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
@@ -447,7 +447,7 @@ void xenstore_init(void)
}
}
++++++ ioemu-disable-scsi.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_platform.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_platform.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
@@ -359,6 +359,8 @@ static void platform_ioport_write(void *
case 4:
fprintf(logfile, "Disconnect IDE hard disk...\n");
@@ -11,10 +11,10 @@
fprintf(logfile, "Disconnect netifs...\n");
pci_unplug_netifs();
fprintf(logfile, "Shutdown taps...\n");
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-xen.h
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-xen.h
@@ -57,6 +57,7 @@ void unset_vram_mapping(void *opaque);
#endif
@@ -23,10 +23,10 @@
void destroy_hvm_domain(void);
void unregister_iomem(target_phys_addr_t start);
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/pci.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/pci.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/pci.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/pci.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/pci.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/pci.c
@@ -871,6 +871,50 @@ void pci_unplug_netifs(void)
}
}
++++++ ioemu-vnc-resize.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/vnc.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/vnc.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/vnc.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/vnc.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/vnc.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/vnc.c
@@ -1734,6 +1734,25 @@ static int protocol_client_msg(VncState
}
++++++ libxen_permissive.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/libxen/src/xen_common.c
+Index: xen-4.1.1-testing/tools/libxen/src/xen_common.c
===================================================================
---- xen-4.1.0-testing.orig/tools/libxen/src/xen_common.c
-+++ xen-4.1.0-testing/tools/libxen/src/xen_common.c
+--- xen-4.1.1-testing.orig/tools/libxen/src/xen_common.c
++++ xen-4.1.1-testing/tools/libxen/src/xen_common.c
@@ -904,8 +904,15 @@ static void parse_into(xen_session *s, x
0 != strcmp((char *)value_node->children->name, "struct") ||
value_node->children->children == NULL)
++++++ magic_ioport_compat.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -2,10 +2,10 @@
Signed-off-by: K. Y. Srinivasan
-Index: xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+Index: xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
===================================================================
---- xen-4.1.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-+++ xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+--- xen-4.1.1-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
++++ xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
@@ -322,7 +322,10 @@ static int check_platform_magic(struct d
if (magic != XEN_IOPORT_MAGIC_VAL) {
++++++ minios-fixups.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/extras/mini-os/lib/math.c
+Index: xen-4.1.1-testing/extras/mini-os/lib/math.c
===================================================================
---- xen-4.1.0-testing.orig/extras/mini-os/lib/math.c
-+++ xen-4.1.0-testing/extras/mini-os/lib/math.c
+--- xen-4.1.1-testing.orig/extras/mini-os/lib/math.c
++++ xen-4.1.1-testing/extras/mini-os/lib/math.c
@@ -187,6 +187,7 @@ __qdivrem(uint64_t uq, uint64_t vq, uint
* and thus
* m = 4 - n <= 2
++++++ multi-xvdp.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -5,10 +5,10 @@
loopback devices so more than one instance of bootloader can be run
concurrently.
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -74,7 +74,7 @@ from xen.xend.XendPSCSI import XendPSCSI
from xen.xend.XendDSCSI import XendDSCSI, XendDSCSI_HBA
++++++ network-nat-open-SuSEfirewall2-FORWARD.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,9 +1,9 @@
Open SuSEfirewall2 FORWARD rule when use xen nat
-Index: xen-4.1.0-testing/tools/hotplug/Linux/network-nat
+Index: xen-4.1.1-testing/tools/hotplug/Linux/network-nat
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/network-nat
-+++ xen-4.1.0-testing/tools/hotplug/Linux/network-nat
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/network-nat
++++ xen-4.1.1-testing/tools/hotplug/Linux/network-nat
@@ -83,6 +83,7 @@ function dhcp_stop()
op_start() {
echo 1 >/proc/sys/net/ipv4/ip_forward
++++++ network-nat.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/network-nat
+Index: xen-4.1.1-testing/tools/hotplug/Linux/network-nat
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/network-nat
-+++ xen-4.1.0-testing/tools/hotplug/Linux/network-nat
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/network-nat
++++ xen-4.1.1-testing/tools/hotplug/Linux/network-nat
@@ -1,4 +1,4 @@
-#!/bin/bash -x
+#!/bin/bash
++++++ pv-driver-build.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,12 +1,16 @@
---- a/unmodified_drivers/linux-2.6/blkfront/Kbuild
-+++ b/unmodified_drivers/linux-2.6/blkfront/Kbuild
+Index: xen-4.1.1-testing/unmodified_drivers/linux-2.6/blkfront/Kbuild
+===================================================================
+--- xen-4.1.1-testing.orig/unmodified_drivers/linux-2.6/blkfront/Kbuild
++++ xen-4.1.1-testing/unmodified_drivers/linux-2.6/blkfront/Kbuild
@@ -3,3 +3,4 @@ include $(M)/overrides.mk
obj-m += xen-vbd.o
xen-vbd-objs := blkfront.o vbd.o
+xen-vbd-objs += $(patsubst %.c,%.o,$(notdir $(wildcard $(src)/vcd.c)))
---- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-+++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+Index: xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+===================================================================
+--- xen-4.1.1-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
++++ xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
@@ -123,6 +123,7 @@ unsigned long alloc_xen_mmio(unsigned lo
#ifndef __ia64__
++++++ pvdrv-import-shared-info.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/evtchn.c
+Index: xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/evtchn.c
===================================================================
---- xen-4.1.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/evtchn.c
-+++ xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/evtchn.c
+--- xen-4.1.1-testing.orig/unmodified_drivers/linux-2.6/platform-pci/evtchn.c
++++ xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/evtchn.c
@@ -40,7 +40,9 @@
#include
#endif
@@ -12,10 +12,10 @@
#define is_valid_evtchn(x) ((x) != 0)
#define evtchn_from_irq(x) (irq_evtchn[irq].evtchn)
-Index: xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+Index: xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
===================================================================
---- xen-4.1.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-+++ xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+--- xen-4.1.1-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
++++ xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
@@ -77,7 +77,6 @@ static uint64_t callback_via;
static int __devinit init_xen_info(void)
{
@@ -44,10 +44,10 @@
return 0;
}
-Index: xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.h
+Index: xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.h
===================================================================
---- xen-4.1.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.h
-+++ xen-4.1.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.h
+--- xen-4.1.1-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.h
++++ xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.h
@@ -27,6 +27,11 @@
unsigned long alloc_xen_mmio(unsigned long len);
void platform_pci_resume(void);
++++++ pvdrv_emulation_control.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_platform.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_platform.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
@@ -365,6 +365,19 @@ static void platform_ioport_write(void *
net_tap_shutdown_all();
fprintf(logfile, "Done.\n");
++++++ qemu-dm-segfault.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/ide.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/ide.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/ide.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/ide.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/ide.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/ide.c
@@ -935,8 +935,9 @@ static inline void ide_dma_submit_check(
static inline void ide_set_irq(IDEState *s)
++++++ qemu-security-etch1.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/ne2000.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/ne2000.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/ne2000.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/ne2000.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/ne2000.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/ne2000.c
@@ -218,7 +218,7 @@ static int ne2000_can_receive(void *opaq
NE2000State *s = opaque;
@@ -11,10 +11,10 @@
return !ne2000_buffer_full(s);
}
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/pc.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/pc.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/pc.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/pc.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/pc.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/pc.c
@@ -413,7 +413,8 @@ static void bochs_bios_write(void *opaqu
case 0x400:
case 0x401:
++++++ serial-split.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/misc/serial-split/Makefile
+Index: xen-4.1.1-testing/tools/misc/serial-split/Makefile
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/misc/serial-split/Makefile
++++ xen-4.1.1-testing/tools/misc/serial-split/Makefile
@@ -0,0 +1,20 @@
+CC ?= gcc
+CFLAGS ?= -Wall -Os
@@ -23,10 +23,10 @@
+
+%.o: %.c Makefile
+ $(CC) $(CFLAGS) -c -o $@ $<
-Index: xen-4.1.0-testing/tools/misc/serial-split/serial-split.c
+Index: xen-4.1.1-testing/tools/misc/serial-split/serial-split.c
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/misc/serial-split/serial-split.c
++++ xen-4.1.1-testing/tools/misc/serial-split/serial-split.c
@@ -0,0 +1,422 @@
+/*
+ * serial-split.c
++++++ snapshot-ioemu-delete.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/xenstore.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/xenstore.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
@@ -978,6 +978,18 @@ static void xenstore_process_dm_command_
}
@@ -21,10 +21,10 @@
} else if (!strncmp(command, "continue", len)) {
fprintf(logfile, "dm-command: continue after state save\n");
xen_pause_requested = 0;
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/savevm.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/savevm.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/savevm.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/savevm.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/savevm.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/savevm.c
@@ -1106,6 +1106,35 @@ the_end:
return ret;
}
@@ -61,10 +61,10 @@
#ifndef CONFIG_DM
void do_savevm(const char *name)
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-xen.h
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-xen.h
@@ -42,6 +42,7 @@ enum {
/* xen-vl-extra.c */
++++++ snapshot-ioemu-restore.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/xenstore.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/xenstore.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
@@ -103,6 +103,8 @@ int xenstore_watch_new_callback(const ch
}
++++++ snapshot-ioemu-save.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/savevm.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/savevm.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/savevm.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/savevm.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/savevm.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/savevm.c
@@ -28,6 +28,7 @@
#include "sysemu.h"
#include "qemu-timer.h"
@@ -97,10 +97,10 @@
#ifndef CONFIG_DM
void do_savevm(const char *name)
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/i386-dm/helper2.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/i386-dm/helper2.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/i386-dm/helper2.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/i386-dm/helper2.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/i386-dm/helper2.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/i386-dm/helper2.c
@@ -112,6 +112,9 @@ int send_vcpu = 0;
//the evtchn port for polling the notification,
evtchn_port_t *ioreq_local_port;
@@ -167,10 +167,10 @@
/* Wait to be allowed to continue */
while (xen_pause_requested) {
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-xen.h
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/qemu-xen.h
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/qemu-xen.h
@@ -34,6 +34,15 @@ void qemu_invalidate_map_cache(void)
#define mapcache_lock() ((void)0)
#define mapcache_unlock() ((void)0)
@@ -195,10 +195,10 @@
void xenstore_check_new_media_present(int timeout);
void xenstore_read_vncpasswd(int domid, char *pwbuf, size_t pwbuflen);
void xenstore_write_vslots(char *vslots);
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/xenstore.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/xenstore.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
@@ -17,6 +17,7 @@
#include "exec-all.h"
++++++ snapshot-without-pv-fix.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -8,10 +8,10 @@
drives_table[], otherwise the disk in qemu will just stay opened,not
showing up in drives_table[].
-Index: xen-4.1.0-testing/tools/blktap/drivers/blktapctrl.c
+Index: xen-4.1.1-testing/tools/blktap/drivers/blktapctrl.c
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/drivers/blktapctrl.c
-+++ xen-4.1.0-testing/tools/blktap/drivers/blktapctrl.c
+--- xen-4.1.1-testing.orig/tools/blktap/drivers/blktapctrl.c
++++ xen-4.1.1-testing/tools/blktap/drivers/blktapctrl.c
@@ -380,7 +380,22 @@ static int write_msg(int fd, int msgtype
msg->cookie = blkif->cookie;
@@ -121,10 +121,10 @@
ctlfd = blktap_interface_open();
if (ctlfd < 0) {
-Index: xen-4.1.0-testing/tools/blktap/lib/blkif.c
+Index: xen-4.1.1-testing/tools/blktap/lib/blkif.c
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/lib/blkif.c
-+++ xen-4.1.0-testing/tools/blktap/lib/blkif.c
+--- xen-4.1.1-testing.orig/tools/blktap/lib/blkif.c
++++ xen-4.1.1-testing/tools/blktap/lib/blkif.c
@@ -89,6 +89,11 @@ void register_new_blkif_hook(int (*fn)(b
{
new_blkif_hook = fn;
@@ -162,10 +162,10 @@
void __init_blkif(void)
{
memset(blkif_hash, 0, sizeof(blkif_hash));
-Index: xen-4.1.0-testing/tools/blktap/lib/blktaplib.h
+Index: xen-4.1.1-testing/tools/blktap/lib/blktaplib.h
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/lib/blktaplib.h
-+++ xen-4.1.0-testing/tools/blktap/lib/blktaplib.h
+--- xen-4.1.1-testing.orig/tools/blktap/lib/blktaplib.h
++++ xen-4.1.1-testing/tools/blktap/lib/blktaplib.h
@@ -38,6 +38,7 @@
#include
#include
@@ -197,10 +197,10 @@
/* disk driver types */
#define MAX_DISK_TYPES 20
-Index: xen-4.1.0-testing/tools/blktap/lib/xenbus.c
+Index: xen-4.1.1-testing/tools/blktap/lib/xenbus.c
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/lib/xenbus.c
-+++ xen-4.1.0-testing/tools/blktap/lib/xenbus.c
+--- xen-4.1.1-testing.orig/tools/blktap/lib/xenbus.c
++++ xen-4.1.1-testing/tools/blktap/lib/xenbus.c
@@ -318,6 +318,72 @@ static int check_image(struct xs_handle
return 0;
}
@@ -284,10 +284,10 @@
list_add(&be->list, &belist);
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
@@ -35,6 +35,8 @@
#ifndef QEMU_TOOL
#include "qemu-common.h"
@@ -378,10 +378,10 @@
default:
break;
}
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.h
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.h
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.h
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.h
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.h
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.h
@@ -40,7 +40,8 @@ struct td_state {
void *fd_entry;
uint64_t sector_size;
++++++ snapshot-xend.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/image.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/image.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/image.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/image.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/image.py
++++ xen-4.1.1-testing/tools/python/xen/xend/image.py
@@ -490,7 +490,7 @@ class ImageHandler:
domains.domains_lock.acquire()
@@ -43,10 +43,10 @@
def recreate(self):
if self.device_model is None:
return
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/blkif.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/blkif.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/server/blkif.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/blkif.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/server/blkif.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/blkif.py
@@ -88,6 +88,10 @@ class BlkifController(DevController):
if bootable != None:
back['bootable'] = str(bootable)
@@ -58,10 +58,10 @@
if security.on() == xsconstants.XS_POLICY_USE:
self.do_access_control(config, uname)
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/SrvDomain.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/SrvDomain.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/server/SrvDomain.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/SrvDomain.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/server/SrvDomain.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/SrvDomain.py
@@ -95,6 +95,31 @@ class SrvDomain(SrvDir):
def do_save(self, _, req):
return self.xd.domain_save(self.dom.domid, req.args['file'][0])
@@ -103,10 +103,10 @@
return self.perform(req)
#
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendCheckpoint.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendCheckpoint.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendCheckpoint.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendCheckpoint.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendCheckpoint.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendCheckpoint.py
@@ -65,7 +65,7 @@ def insert_after(list, pred, value):
return
@@ -331,10 +331,10 @@
if not paused:
dominfo.unpause()
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendConfig.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendConfig.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendConfig.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendConfig.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendConfig.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendConfig.py
@@ -244,6 +244,7 @@ XENAPI_CFG_TYPES = {
'memory_sharing': int,
'pool_name' : str,
@@ -343,10 +343,10 @@
}
# List of legacy configuration keys that have no equivalent in the
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomain.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomain.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomain.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomain.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomain.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomain.py
@@ -53,6 +53,7 @@ from xen.xend.xenstore.xstransact import
from xen.xend.xenstore.xswatch import xswatch
from xen.util import mkdir, rwlock
@@ -561,10 +561,10 @@
def domain_pincpu(self, domid, vcpu, cpumap):
"""Set which cpus vcpu can use
-Index: xen-4.1.0-testing/tools/python/xen/xm/main.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/main.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xm/main.py
-+++ xen-4.1.0-testing/tools/python/xen/xm/main.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/main.py
++++ xen-4.1.1-testing/tools/python/xen/xm/main.py
@@ -123,6 +123,14 @@ SUBCOMMAND_HELP = {
'Restore a domain from a saved state.'),
'save' : ('[-c|-f] <Domain> <CheckpointFile>',
@@ -686,10 +686,10 @@
"shutdown": xm_shutdown,
"start": xm_start,
"sysrq": xm_sysrq,
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -508,7 +508,6 @@ class XendDomainInfo:
self._setSchedParams()
self._storeVmDetails()
++++++ stdvga-cache.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/xen/arch/x86/hvm/stdvga.c
+Index: xen-4.1.1-testing/xen/arch/x86/hvm/stdvga.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/hvm/stdvga.c
-+++ xen-4.1.0-testing/xen/arch/x86/hvm/stdvga.c
+--- xen-4.1.1-testing.orig/xen/arch/x86/hvm/stdvga.c
++++ xen-4.1.1-testing/xen/arch/x86/hvm/stdvga.c
@@ -135,7 +135,10 @@ static int stdvga_outb(uint64_t addr, ui
/* When in standard vga mode, emulate here all writes to the vram buffer
++++++ supported_module.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -2,10 +2,10 @@
Signed-off-by: K. Y. Srinivasan
-Index: xen-4.1.0-testing/unmodified_drivers/linux-2.6/Module.supported
+Index: xen-4.1.1-testing/unmodified_drivers/linux-2.6/Module.supported
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/unmodified_drivers/linux-2.6/Module.supported
++++ xen-4.1.1-testing/unmodified_drivers/linux-2.6/Module.supported
@@ -0,0 +1,5 @@
+xen-vbd
+xen-platform-pci
++++++ tapdisk-ioemu-logfile.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -11,10 +11,10 @@
tapdisk-ioemu.c | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/tapdisk-ioemu.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/tapdisk-ioemu.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
@@ -78,15 +78,22 @@ int main(void)
struct timeval tv;
void *old_fd_start = NULL;
++++++ tapdisk-ioemu-shutdown-fix.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -16,10 +16,10 @@
tapdisk-ioemu.c | 13 ++++++++++---
2 files changed, 14 insertions(+), 4 deletions(-)
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
@@ -67,6 +67,7 @@ int read_fd;
int write_fd;
@@ -46,10 +46,10 @@
case CTLMSG_PID:
memset(buf, 0x00, MSG_SIZE);
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/tapdisk-ioemu.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/tapdisk-ioemu.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/tapdisk-ioemu.c
@@ -14,6 +14,7 @@ extern void qemu_aio_init(void);
extern void qemu_aio_poll(void);
++++++ tmp-initscript-modprobe.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/init.d/xencommons
+Index: xen-4.1.1-testing/tools/hotplug/Linux/init.d/xencommons
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/init.d/xencommons
-+++ xen-4.1.0-testing/tools/hotplug/Linux/init.d/xencommons
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/init.d/xencommons
++++ xen-4.1.1-testing/tools/hotplug/Linux/init.d/xencommons
@@ -45,6 +45,18 @@ do_start () {
local time=0
local timeout=30
++++++ tmp_build.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:32.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:32.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/xenstore/Makefile
+Index: xen-4.1.1-testing/tools/xenstore/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/xenstore/Makefile
-+++ xen-4.1.0-testing/tools/xenstore/Makefile
+--- xen-4.1.1-testing.orig/tools/xenstore/Makefile
++++ xen-4.1.1-testing/tools/xenstore/Makefile
@@ -58,6 +58,7 @@ $(CLIENTS_DOMU): xenstore
xenstore: xenstore_client.o $(LIBXENSTORE)
++++++ tools-kboot.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -13,10 +13,10 @@
tools/kboot/select-kernel | 59 +
9 files changed, 2111 insertions(+)
-Index: xen-4.1.0-testing/buildconfigs/linux-defconfig_xenUboot_x86_32
+Index: xen-4.1.1-testing/buildconfigs/linux-defconfig_xenUboot_x86_32
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/buildconfigs/linux-defconfig_xenUboot_x86_32
++++ xen-4.1.1-testing/buildconfigs/linux-defconfig_xenUboot_x86_32
@@ -0,0 +1,874 @@
+#
+# Automatically generated make config: don't edit
@@ -892,10 +892,10 @@
+CONFIG_X86_NO_TSS=y
+CONFIG_X86_NO_IDT=y
+CONFIG_KTIME_SCALAR=y
-Index: xen-4.1.0-testing/buildconfigs/linux-defconfig_xenUboot_x86_64
+Index: xen-4.1.1-testing/buildconfigs/linux-defconfig_xenUboot_x86_64
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/buildconfigs/linux-defconfig_xenUboot_x86_64
++++ xen-4.1.1-testing/buildconfigs/linux-defconfig_xenUboot_x86_64
@@ -0,0 +1,653 @@
+#
+# Automatically generated make config: don't edit
@@ -1550,17 +1550,17 @@
+# CONFIG_CRC32 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
-Index: xen-4.1.0-testing/buildconfigs/mk.linux-2.6-xenUboot
+Index: xen-4.1.1-testing/buildconfigs/mk.linux-2.6-xenUboot
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/buildconfigs/mk.linux-2.6-xenUboot
++++ xen-4.1.1-testing/buildconfigs/mk.linux-2.6-xenUboot
@@ -0,0 +1,2 @@
+EXTRAVERSION = xenUboot
+include buildconfigs/mk.linux-2.6-xen
-Index: xen-4.1.0-testing/tools/kboot/Makefile
+Index: xen-4.1.1-testing/tools/kboot/Makefile
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/kboot/Makefile
++++ xen-4.1.1-testing/tools/kboot/Makefile
@@ -0,0 +1,23 @@
+#
+# tools/kboot/Makefile
@@ -1585,10 +1585,10 @@
+kboot.initramfs: mkinitramfs init select-kernel ../xcutils/xc_kexec
+ sh ./mkinitramfs | tee $@
+
-Index: xen-4.1.0-testing/tools/kboot/README
+Index: xen-4.1.1-testing/tools/kboot/README
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/kboot/README
++++ xen-4.1.1-testing/tools/kboot/README
@@ -0,0 +1,43 @@
+
+This is a simple kexec-based boot loader
@@ -1633,10 +1633,10 @@
+
+--
+Gerd Hoffmann
-Index: xen-4.1.0-testing/tools/kboot/init
+Index: xen-4.1.1-testing/tools/kboot/init
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/kboot/init
++++ xen-4.1.1-testing/tools/kboot/init
@@ -0,0 +1,309 @@
+#!/bin/sh
+
@@ -1947,10 +1947,10 @@
+msg "bye ..."
+banner "boot $guestos"
+xc_kexec -e
-Index: xen-4.1.0-testing/tools/kboot/mkinitramfs
+Index: xen-4.1.1-testing/tools/kboot/mkinitramfs
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/kboot/mkinitramfs
++++ xen-4.1.1-testing/tools/kboot/mkinitramfs
@@ -0,0 +1,111 @@
+#!/bin/sh
+
@@ -2063,10 +2063,10 @@
+ echo "file $LIB/$(basename $lib) $lib 0755 0 0"
+done
+echo
-Index: xen-4.1.0-testing/tools/kboot/select-kernel
+Index: xen-4.1.1-testing/tools/kboot/select-kernel
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/kboot/select-kernel
++++ xen-4.1.1-testing/tools/kboot/select-kernel
@@ -0,0 +1,59 @@
+#!/bin/sh
+
@@ -2127,10 +2127,10 @@
+msg "using $kernelname"
+echo "$kernelname"
+
-Index: xen-4.1.0-testing/make-kboot
+Index: xen-4.1.1-testing/make-kboot
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/make-kboot
++++ xen-4.1.1-testing/make-kboot
@@ -0,0 +1,37 @@
+#!/bin/sh
+
++++++ udev-rules.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/xen-backend.rules
+Index: xen-4.1.1-testing/tools/hotplug/Linux/xen-backend.rules
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/xen-backend.rules
-+++ xen-4.1.0-testing/tools/hotplug/Linux/xen-backend.rules
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/xen-backend.rules
++++ xen-4.1.1-testing/tools/hotplug/Linux/xen-backend.rules
@@ -14,3 +14,4 @@ KERNEL=="gntdev", NAME="xen/%k", MODE="0
KERNEL=="pci_iomul", NAME="xen/%k", MODE="0600"
KERNEL=="tapdev[a-z]*", NAME="xen/blktap-2/tapdev%m", MODE="0600"
++++++ usb-list.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -15,10 +15,10 @@
http://www.gossamer-threads.com/lists/xen/devel/181021?search_string=usb-lis...
-Index: xen-4.1.0-testing/tools/python/xen/xm/main.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/main.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xm/main.py
-+++ xen-4.1.0-testing/tools/python/xen/xm/main.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/main.py
++++ xen-4.1.1-testing/tools/python/xen/xm/main.py
@@ -2629,10 +2629,22 @@ def xm_usb_list(args):
ni = parse_dev_info(x[1])
ni['idx'] = int(x[0])
++++++ vif-bridge-no-iptables.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/vif-bridge
+Index: xen-4.1.1-testing/tools/hotplug/Linux/vif-bridge
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/vif-bridge
-+++ xen-4.1.0-testing/tools/hotplug/Linux/vif-bridge
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/vif-bridge
++++ xen-4.1.1-testing/tools/hotplug/Linux/vif-bridge
@@ -101,9 +101,9 @@ case "$command" in
;;
esac
++++++ vif-bridge.mtu.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -15,10 +15,10 @@
tools/hotplug/Linux/vif-bridge | 5 +++++
1 file changed, 5 insertions(+)
-Index: xen-4.1.0-testing/tools/hotplug/Linux/vif-bridge
+Index: xen-4.1.1-testing/tools/hotplug/Linux/vif-bridge
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/vif-bridge
-+++ xen-4.1.0-testing/tools/hotplug/Linux/vif-bridge
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/vif-bridge
++++ xen-4.1.1-testing/tools/hotplug/Linux/vif-bridge
@@ -97,6 +97,11 @@ case "$command" in
add)
++++++ vif-route-ifup.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -4,10 +4,10 @@
tools/hotplug/Linux/vif-route-ifup | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 55 insertions(+), 1 deletion(-)
-Index: xen-4.1.0-testing/tools/examples/xend-config.sxp
+Index: xen-4.1.1-testing/tools/examples/xend-config.sxp
===================================================================
---- xen-4.1.0-testing.orig/tools/examples/xend-config.sxp
-+++ xen-4.1.0-testing/tools/examples/xend-config.sxp
+--- xen-4.1.1-testing.orig/tools/examples/xend-config.sxp
++++ xen-4.1.1-testing/tools/examples/xend-config.sxp
@@ -200,6 +200,26 @@
#(network-script network-route)
#(vif-script vif-route)
@@ -35,10 +35,10 @@
## Use the following if network traffic is routed with NAT, as an alternative
# to the settings for bridged networking given above.
-Index: xen-4.1.0-testing/tools/hotplug/Linux/Makefile
+Index: xen-4.1.1-testing/tools/hotplug/Linux/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/Makefile
-+++ xen-4.1.0-testing/tools/hotplug/Linux/Makefile
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/Makefile
++++ xen-4.1.1-testing/tools/hotplug/Linux/Makefile
@@ -11,7 +11,7 @@ XENCOMMONS_SYSCONFIG = init.d/sysconfig.
# Xen script dir and scripts to go there.
@@ -48,10 +48,10 @@
XEN_SCRIPTS += network-nat vif-nat
XEN_SCRIPTS += vif2
XEN_SCRIPTS += vif-setup
-Index: xen-4.1.0-testing/tools/hotplug/Linux/vif-route-ifup
+Index: xen-4.1.1-testing/tools/hotplug/Linux/vif-route-ifup
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/hotplug/Linux/vif-route-ifup
++++ xen-4.1.1-testing/tools/hotplug/Linux/vif-route-ifup
@@ -0,0 +1,34 @@
+#!/bin/bash
+#============================================================================
++++++ x86-cpufreq-report.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/xen/arch/x86/platform_hypercall.c
+Index: xen-4.1.1-testing/xen/arch/x86/platform_hypercall.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/platform_hypercall.c
-+++ xen-4.1.0-testing/xen/arch/x86/platform_hypercall.c
+--- xen-4.1.1-testing.orig/xen/arch/x86/platform_hypercall.c
++++ xen-4.1.1-testing/xen/arch/x86/platform_hypercall.c
@@ -22,7 +22,7 @@
#include
#include
@@ -44,10 +44,10 @@
default:
ret = -ENOSYS;
break;
-Index: xen-4.1.0-testing/xen/include/public/platform.h
+Index: xen-4.1.1-testing/xen/include/public/platform.h
===================================================================
---- xen-4.1.0-testing.orig/xen/include/public/platform.h
-+++ xen-4.1.0-testing/xen/include/public/platform.h
+--- xen-4.1.1-testing.orig/xen/include/public/platform.h
++++ xen-4.1.1-testing/xen/include/public/platform.h
@@ -355,6 +355,14 @@ struct xenpf_mem_hotadd
uint32_t flags;
};
++++++ x86-extra-trap-info.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/xen/arch/x86/x86_32/entry.S
+Index: xen-4.1.1-testing/xen/arch/x86/x86_32/entry.S
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/x86_32/entry.S
-+++ xen-4.1.0-testing/xen/arch/x86/x86_32/entry.S
+--- xen-4.1.1-testing.orig/xen/arch/x86/x86_32/entry.S
++++ xen-4.1.1-testing/xen/arch/x86/x86_32/entry.S
@@ -389,29 +389,41 @@ UNLIKELY_END(bounce_vm86_3)
movl %eax,UREGS_eip+4(%esp)
ret
@@ -62,11 +62,11 @@
domain_crash_synchronous:
pushl $domain_crash_synchronous_string
call printk
-Index: xen-4.1.0-testing/xen/arch/x86/x86_64/entry.S
+Index: xen-4.1.1-testing/xen/arch/x86/x86_64/entry.S
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/x86_64/entry.S
-+++ xen-4.1.0-testing/xen/arch/x86/x86_64/entry.S
-@@ -408,22 +408,35 @@ UNLIKELY_END(bounce_failsafe)
+--- xen-4.1.1-testing.orig/xen/arch/x86/x86_64/entry.S
++++ xen-4.1.1-testing/xen/arch/x86/x86_64/entry.S
+@@ -416,22 +416,35 @@ UNLIKELY_END(bounce_failsafe)
jz domain_crash_synchronous
movq %rax,UREGS_rip+8(%rsp)
ret
++++++ x86-ioapic-ack-default.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,9 +1,9 @@
Change default IO-APIC ack mode for single IO-APIC systems to old-style.
-Index: xen-4.1.0-testing/xen/arch/x86/io_apic.c
+Index: xen-4.1.1-testing/xen/arch/x86/io_apic.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/io_apic.c
-+++ xen-4.1.0-testing/xen/arch/x86/io_apic.c
+--- xen-4.1.1-testing.orig/xen/arch/x86/io_apic.c
++++ xen-4.1.1-testing/xen/arch/x86/io_apic.c
@@ -1547,7 +1547,7 @@ static unsigned int startup_level_ioapic
return 0; /* don't check for pending */
}
@@ -13,7 +13,7 @@
static void setup_ioapic_ack(char *s)
{
if ( !strcmp(s, "old") )
-@@ -2054,6 +2054,8 @@ void __init setup_IO_APIC(void)
+@@ -2044,6 +2044,8 @@ void __init setup_IO_APIC(void)
else
io_apic_irqs = ~PIC_IRQS;
++++++ x86-show-page-walk-early.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/xen/arch/x86/mm.c
+Index: xen-4.1.1-testing/xen/arch/x86/mm.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/mm.c
-+++ xen-4.1.0-testing/xen/arch/x86/mm.c
+--- xen-4.1.1-testing.orig/xen/arch/x86/mm.c
++++ xen-4.1.1-testing/xen/arch/x86/mm.c
@@ -160,6 +160,8 @@ static int get_superpage(unsigned long m
#endif
static void put_superpage(unsigned long mfn);
@@ -11,11 +11,11 @@
#define l1_disallow_mask(d) \
((d != dom_io) && \
(rangeset_is_empty((d)->iomem_caps) && \
-Index: xen-4.1.0-testing/xen/arch/x86/traps.c
+Index: xen-4.1.1-testing/xen/arch/x86/traps.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/traps.c
-+++ xen-4.1.0-testing/xen/arch/x86/traps.c
-@@ -1343,6 +1343,7 @@ asmlinkage void __init do_early_page_fau
+--- xen-4.1.1-testing.orig/xen/arch/x86/traps.c
++++ xen-4.1.1-testing/xen/arch/x86/traps.c
+@@ -1377,6 +1377,7 @@ asmlinkage void __init do_early_page_fau
unsigned long *stk = (unsigned long *)regs;
printk("Early fatal page fault at %04x:%p (cr2=%p, ec=%04x)\n",
regs->cs, _p(regs->eip), _p(cr2), regs->error_code);
@@ -23,10 +23,10 @@
printk("Stack dump: ");
while ( ((long)stk & ((PAGE_SIZE - 1) & ~(BYTES_PER_LONG - 1))) != 0 )
printk("%p ", _p(*stk++));
-Index: xen-4.1.0-testing/xen/arch/x86/x86_32/mm.c
+Index: xen-4.1.1-testing/xen/arch/x86/x86_32/mm.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/x86_32/mm.c
-+++ xen-4.1.0-testing/xen/arch/x86/x86_32/mm.c
+--- xen-4.1.1-testing.orig/xen/arch/x86/x86_32/mm.c
++++ xen-4.1.1-testing/xen/arch/x86/x86_32/mm.c
@@ -123,6 +123,8 @@ void __init paging_init(void)
#undef CNT
#undef MFN
@@ -36,10 +36,10 @@
/* Create page tables for ioremap()/map_domain_page_global(). */
for ( i = 0; i < (IOREMAP_MBYTES >> (L2_PAGETABLE_SHIFT - 20)); i++ )
{
-Index: xen-4.1.0-testing/xen/arch/x86/x86_32/traps.c
+Index: xen-4.1.1-testing/xen/arch/x86/x86_32/traps.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/x86_32/traps.c
-+++ xen-4.1.0-testing/xen/arch/x86/x86_32/traps.c
+--- xen-4.1.1-testing.orig/xen/arch/x86/x86_32/traps.c
++++ xen-4.1.1-testing/xen/arch/x86/x86_32/traps.c
@@ -164,7 +164,8 @@ void show_page_walk(unsigned long addr)
l3t += (cr3 & 0xFE0UL) >> 3;
l3e = l3t[l3_table_offset(addr)];
@@ -70,10 +70,10 @@
printk(" L1[0x%03lx] = %"PRIpte" %08lx\n",
l1_table_offset(addr), l1e_get_intpte(l1e), pfn);
unmap_domain_page(l1t);
-Index: xen-4.1.0-testing/xen/arch/x86/x86_64/mm.c
+Index: xen-4.1.1-testing/xen/arch/x86/x86_64/mm.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/x86_64/mm.c
-+++ xen-4.1.0-testing/xen/arch/x86/x86_64/mm.c
+--- xen-4.1.1-testing.orig/xen/arch/x86/x86_64/mm.c
++++ xen-4.1.1-testing/xen/arch/x86/x86_64/mm.c
@@ -750,6 +750,8 @@ void __init paging_init(void)
#undef CNT
#undef MFN
@@ -83,10 +83,10 @@
/* Create user-accessible L2 directory to map the MPT for compat guests. */
BUILD_BUG_ON(l4_table_offset(RDWR_MPT_VIRT_START) !=
l4_table_offset(HIRO_COMPAT_MPT_VIRT_START));
-Index: xen-4.1.0-testing/xen/arch/x86/x86_64/traps.c
+Index: xen-4.1.1-testing/xen/arch/x86/x86_64/traps.c
===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/x86_64/traps.c
-+++ xen-4.1.0-testing/xen/arch/x86/x86_64/traps.c
+--- xen-4.1.1-testing.orig/xen/arch/x86/x86_64/traps.c
++++ xen-4.1.1-testing/xen/arch/x86/x86_64/traps.c
@@ -176,7 +176,8 @@ void show_page_walk(unsigned long addr)
l4t = mfn_to_virt(mfn);
l4e = l4t[l4_table_offset(addr)];
@@ -127,10 +127,10 @@
printk(" L1[0x%03lx] = %"PRIpte" %016lx\n",
l1_table_offset(addr), l1e_get_intpte(l1e), pfn);
}
-Index: xen-4.1.0-testing/xen/include/asm-x86/mm.h
+Index: xen-4.1.1-testing/xen/include/asm-x86/mm.h
===================================================================
---- xen-4.1.0-testing.orig/xen/include/asm-x86/mm.h
-+++ xen-4.1.0-testing/xen/include/asm-x86/mm.h
+--- xen-4.1.1-testing.orig/xen/include/asm-x86/mm.h
++++ xen-4.1.1-testing/xen/include/asm-x86/mm.h
@@ -467,6 +467,8 @@ TYPE_SAFE(unsigned long,mfn);
#define SHARED_M2P_ENTRY (~0UL - 1UL)
#define SHARED_M2P(_e) ((_e) == SHARED_M2P_ENTRY)
++++++ xen-4.1.0-testing-src.tar.bz2 -> xen-4.1.1-testing-src.tar.bz2 ++++++
xen/xen-4.1.0-testing-src.tar.bz2 /mounts/work_src_done/STABLE/xen/xen-4.1.1-testing-src.tar.bz2 differ: char 11, line 1
++++++ xen-api-auth.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendAuthSessions.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendAuthSessions.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendAuthSessions.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendAuthSessions.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendAuthSessions.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendAuthSessions.py
@@ -84,7 +84,7 @@ class XendAuthSessions:
# if PAM doesn't exist, let's ignore it
return False
++++++ xen-changeset.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/xen/Makefile
+Index: xen-4.1.1-testing/xen/Makefile
===================================================================
---- xen-4.1.0-testing.orig/xen/Makefile
-+++ xen-4.1.0-testing/xen/Makefile
+--- xen-4.1.1-testing.orig/xen/Makefile
++++ xen-4.1.1-testing/xen/Makefile
@@ -1,3 +1,4 @@
+export XEN_CHANGESET = unavailable
# This is the correct place to edit the build version.
++++++ xen-config.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,17 +1,17 @@
-Index: xen-4.1.0-testing/Config.mk
+Index: xen-4.1.1-testing/Config.mk
===================================================================
---- xen-4.1.0-testing.orig/Config.mk
-+++ xen-4.1.0-testing/Config.mk
-@@ -183,7 +183,7 @@ endif
+--- xen-4.1.1-testing.orig/Config.mk
++++ xen-4.1.1-testing/Config.mk
+@@ -194,7 +194,7 @@ endif
# Specify which qemu-dm to use. This may be `ioemu' to use the old
# Mercurial in-tree version, or a local directory, or a git URL.
# CONFIG_QEMU ?= `pwd`/$(XEN_ROOT)/../qemu-xen.git
-CONFIG_QEMU ?= $(QEMU_REMOTE)
+CONFIG_QEMU ?= ioemu-qemu-xen
- QEMU_TAG := xen-4.1.0
+ QEMU_TAG := xen-4.1.1-rc1
#QEMU_TAG ?= e073e69457b4d99b6da0b6536296e3498f7f6599
-@@ -193,7 +193,7 @@ QEMU_TAG := xen-4.1.0
+@@ -204,7 +204,7 @@ QEMU_TAG := xen-4.1.1-rc1
# Optional components
XENSTAT_XENTOP ?= y
VTPM_TOOLS ?= n
@@ -20,10 +20,10 @@
PYTHON_TOOLS ?= y
OCAML_TOOLS ?= y
CONFIG_MINITERM ?= n
-Index: xen-4.1.0-testing/tools/Makefile
+Index: xen-4.1.1-testing/tools/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/Makefile
-+++ xen-4.1.0-testing/tools/Makefile
+--- xen-4.1.1-testing.orig/tools/Makefile
++++ xen-4.1.1-testing/tools/Makefile
@@ -79,14 +79,16 @@ IOEMU_CONFIGURE_CROSS ?= --cpu=$(XEN_TAR
--interp-prefix=$(CROSS_SYS_ROOT)
endif
@@ -54,10 +54,10 @@
.PHONY: ioemu-dir-force-update
ioemu-dir-force-update:
-Index: xen-4.1.0-testing/tools/libxc/Makefile
+Index: xen-4.1.1-testing/tools/libxc/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/libxc/Makefile
-+++ xen-4.1.0-testing/tools/libxc/Makefile
+--- xen-4.1.1-testing.orig/tools/libxc/Makefile
++++ xen-4.1.1-testing/tools/libxc/Makefile
@@ -195,7 +195,7 @@ xc_dom_bzimageloader.opic: CFLAGS += $(c
libxenguest.so.$(MAJOR).$(MINOR): COMPRESSION_LIBS = $(call zlib-options,l)
@@ -67,10 +67,10 @@
xenctrl_osdep_ENOSYS.so: $(OSDEP_PIC_OBJS) libxenctrl.so
$(CC) -g $(CFLAGS) $(LDFLAGS) $(SHLIB_LDFLAGS) -o $@ $(OSDEP_PIC_OBJS) -lxenctrl
-Index: xen-4.1.0-testing/tools/firmware/etherboot/Makefile
+Index: xen-4.1.1-testing/tools/firmware/etherboot/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/firmware/etherboot/Makefile
-+++ xen-4.1.0-testing/tools/firmware/etherboot/Makefile
+--- xen-4.1.1-testing.orig/tools/firmware/etherboot/Makefile
++++ xen-4.1.1-testing/tools/firmware/etherboot/Makefile
@@ -35,11 +35,13 @@ eb-roms.h: Config
mv -f $@.new $@
++++++ xen-destdir.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/docs/Makefile
+Index: xen-4.1.1-testing/docs/Makefile
===================================================================
---- xen-4.1.0-testing.orig/docs/Makefile
-+++ xen-4.1.0-testing/docs/Makefile
+--- xen-4.1.1-testing.orig/docs/Makefile
++++ xen-4.1.1-testing/docs/Makefile
@@ -90,7 +90,8 @@ install: all
$(INSTALL_DIR) $(DESTDIR)$(MANDIR)
cp -dR man1 $(DESTDIR)$(MANDIR)
@@ -22,10 +22,10 @@
+ ln -sf $*.html html.done/$*/index.html
+ rm -rf html/
+
-Index: xen-4.1.0-testing/tools/security/Makefile
+Index: xen-4.1.1-testing/tools/security/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/security/Makefile
-+++ xen-4.1.0-testing/tools/security/Makefile
+--- xen-4.1.1-testing.orig/tools/security/Makefile
++++ xen-4.1.1-testing/tools/security/Makefile
@@ -60,8 +60,8 @@ install: all $(ACM_CONFIG_FILE)
$(INSTALL_DATA) $(ACM_INST_HTML) $(DESTDIR)$(ACM_SECGEN_HTMLDIR)
$(INSTALL_DIR) $(DESTDIR)$(ACM_SECGEN_CGIDIR)
@@ -37,10 +37,10 @@
else
.PHONY: all
all:
-Index: xen-4.1.0-testing/tools/pygrub/Makefile
+Index: xen-4.1.1-testing/tools/pygrub/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/pygrub/Makefile
-+++ xen-4.1.0-testing/tools/pygrub/Makefile
+--- xen-4.1.1-testing.orig/tools/pygrub/Makefile
++++ xen-4.1.1-testing/tools/pygrub/Makefile
@@ -11,7 +11,7 @@ build:
.PHONY: install
install: all
@@ -50,10 +50,10 @@
$(INSTALL_PYTHON_PROG) src/pygrub $(DESTDIR)/$(BINDIR)/pygrub
$(INSTALL_DIR) $(DESTDIR)/var/run/xend/boot
-Index: xen-4.1.0-testing/tools/python/Makefile
+Index: xen-4.1.1-testing/tools/python/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/python/Makefile
-+++ xen-4.1.0-testing/tools/python/Makefile
+--- xen-4.1.1-testing.orig/tools/python/Makefile
++++ xen-4.1.1-testing/tools/python/Makefile
@@ -65,7 +65,7 @@ refresh-po: $(POTFILE)
.PHONY: install
install: install-messages install-dtd
@@ -63,10 +63,10 @@
install-dtd: all
$(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)/xen
-Index: xen-4.1.0-testing/tools/xenstore/Makefile
+Index: xen-4.1.1-testing/tools/xenstore/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/xenstore/Makefile
-+++ xen-4.1.0-testing/tools/xenstore/Makefile
+--- xen-4.1.1-testing.orig/tools/xenstore/Makefile
++++ xen-4.1.1-testing/tools/xenstore/Makefile
@@ -10,6 +10,7 @@ CFLAGS += $(CFLAGS_libxenctrl)
CLIENTS := xenstore-exists xenstore-list xenstore-read xenstore-rm xenstore-chmod
@@ -121,10 +121,10 @@
$(INSTALL_DIR) $(DESTDIR)$(LIBDIR)
$(INSTALL_PROG) libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)
ln -sf libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)/libxenstore.so.$(MAJOR)
-Index: xen-4.1.0-testing/tools/hotplug/Linux/Makefile
+Index: xen-4.1.1-testing/tools/hotplug/Linux/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/Makefile
-+++ xen-4.1.0-testing/tools/hotplug/Linux/Makefile
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/Makefile
++++ xen-4.1.1-testing/tools/hotplug/Linux/Makefile
@@ -41,18 +41,6 @@ endif
UDEV_RULES_DIR = $(CONFIG_DIR)/udev
UDEV_RULES = xen-backend.rules xend.rules
++++++ xen-disable-qemu-monitor.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -5,10 +5,10 @@
commands that can read/write dom0's state.
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/monitor.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/monitor.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/monitor.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/monitor.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/monitor.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/monitor.c
@@ -1497,6 +1497,7 @@ static const term_cmd_t term_cmds[] = {
"device|all", "commit changes to the disk images (if -snapshot is used) or backing files" },
{ "info", "s?", do_info,
++++++ xen-domUloader.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/DevController.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/DevController.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/server/DevController.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/DevController.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/server/DevController.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/DevController.py
@@ -592,6 +592,31 @@ class DevController:
return (Missing, None)
@@ -34,10 +34,10 @@
def backendPath(self, backdom, devid):
"""Construct backend path given the backend domain and device id.
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendBootloader.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendBootloader.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendBootloader.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendBootloader.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendBootloader.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendBootloader.py
@@ -12,7 +12,7 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
@@ -75,10 +75,10 @@
log.error(msg)
raise VmError(msg)
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -2332,6 +2332,10 @@ class XendDomainInfo:
deviceClass, config = self.info['devices'].get(dev_uuid)
self._waitForDevice(deviceClass, config['devid'])
++++++ xen-fixme-doc.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/docs/man/xmdomain.cfg.pod.5
+Index: xen-4.1.1-testing/docs/man/xmdomain.cfg.pod.5
===================================================================
---- xen-4.1.0-testing.orig/docs/man/xmdomain.cfg.pod.5
-+++ xen-4.1.0-testing/docs/man/xmdomain.cfg.pod.5
+--- xen-4.1.1-testing.orig/docs/man/xmdomain.cfg.pod.5
++++ xen-4.1.1-testing/docs/man/xmdomain.cfg.pod.5
@@ -335,16 +335,10 @@ at hda1, which is the root filesystem.
=item I<NFS Root>
@@ -19,10 +19,10 @@
=back
=head1 SEE ALSO
-Index: xen-4.1.0-testing/docs/man/xm.pod.1
+Index: xen-4.1.1-testing/docs/man/xm.pod.1
===================================================================
---- xen-4.1.0-testing.orig/docs/man/xm.pod.1
-+++ xen-4.1.0-testing/docs/man/xm.pod.1
+--- xen-4.1.1-testing.orig/docs/man/xm.pod.1
++++ xen-4.1.1-testing/docs/man/xm.pod.1
@@ -295,7 +295,8 @@ scheduling by the Xen hypervisor.
=item B
++++++ xen-hvm-default-bridge.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/net.h
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/net.h
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/net.h
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/net.h
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/net.h
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/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.1.0-testing/tools/ioemu-qemu-xen/net.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/net.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/net.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/net.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/net.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/net.c
@@ -1759,9 +1759,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.1.0-testing/tools/python/xen/xend/image.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/image.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/image.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/image.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/image.py
++++ xen-4.1.1-testing/tools/python/xen/xend/image.py
@@ -912,11 +912,13 @@ class HVMImageHandler(ImageHandler):
mac = devinfo.get('mac')
if mac is None:
@@ -51,10 +51,10 @@
vifname = devinfo.get('vifname')
if vifname:
vifname = "tap-" + vifname
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/i386-dm/qemu-ifup-Linux
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/i386-dm/qemu-ifup-Linux
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/i386-dm/qemu-ifup-Linux
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/i386-dm/qemu-ifup-Linux
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/i386-dm/qemu-ifup-Linux
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/i386-dm/qemu-ifup-Linux
@@ -1,36 +1,22 @@
#!/bin/sh
++++++ xen-hvm-default-pae.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,9 +1,9 @@
PAE must be on for 64-on-64 to work at all.
-Index: xen-4.1.0-testing/tools/python/xen/xend/image.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/image.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/image.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/image.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/image.py
++++ xen-4.1.1-testing/tools/python/xen/xend/image.py
@@ -1030,7 +1030,7 @@ class X86_HVM_ImageHandler(HVMImageHandl
def configure(self, vmConfig):
++++++ xen-ioemu-hvm-pv-support.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/hw/xen_platform.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_platform.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/hw/xen_platform.c
@@ -30,6 +30,8 @@
#include "qemu-xen.h"
#include "net.h"
++++++ xen-max-free-mem.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendNode.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendNode.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendNode.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendNode.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendNode.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendNode.py
@@ -949,11 +949,35 @@ class XendNode:
info['cpu_mhz'] = info['cpu_khz'] / 1000
@@ -51,10 +51,10 @@
]
if show_numa != 0:
-Index: xen-4.1.0-testing/tools/python/xen/xend/balloon.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/balloon.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/balloon.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/balloon.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/balloon.py
++++ xen-4.1.1-testing/tools/python/xen/xend/balloon.py
@@ -43,6 +43,8 @@ SLEEP_TIME_GROWTH = 0.1
# label actually shown in the PROC_XEN_BALLOON file.
#labels = { 'current' : 'Current allocation',
@@ -88,10 +88,10 @@
def free(need_mem, dominfo):
"""Balloon out memory from the privileged domain so that there is the
specified required amount (in KiB) free.
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -1459,6 +1459,27 @@ class XendDomainInfo:
pci_conf = self.info['devices'][dev_uuid][1]
return map(pci_dict_to_bdf_str, pci_conf['devs'])
@@ -120,10 +120,10 @@
def setMemoryTarget(self, target):
"""Set the memory target of this domain.
@param target: In MiB.
-Index: xen-4.1.0-testing/tools/python/xen/xend/server/SrvDomain.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/server/SrvDomain.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/server/SrvDomain.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/server/SrvDomain.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/server/SrvDomain.py
++++ xen-4.1.1-testing/tools/python/xen/xend/server/SrvDomain.py
@@ -187,7 +187,7 @@ class SrvDomain(SrvDir):
++++++ xen-minimum-restart-time.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,9 +1,9 @@
References: bnc#661298
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendConstants.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendConstants.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendConstants.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendConstants.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendConstants.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendConstants.py
@@ -92,7 +92,7 @@ DOM_STATES_OLD = [
SHUTDOWN_TIMEOUT = (60.0 * 5)
++++++ xen-no-dummy-nfs-ip.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xm/create.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/create.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xm/create.py
-+++ xen-4.1.0-testing/tools/python/xen/xm/create.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/create.py
++++ xen-4.1.1-testing/tools/python/xen/xm/create.py
@@ -1337,9 +1337,8 @@ def preprocess_access_control(vals):
def preprocess_ip(vals):
++++++ xen-paths.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xm/create.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/create.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xm/create.py
-+++ xen-4.1.0-testing/tools/python/xen/xm/create.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/create.py
++++ xen-4.1.1-testing/tools/python/xen/xm/create.py
@@ -73,7 +73,7 @@ gopts.opt('quiet', short='q',
use="Quiet.")
@@ -11,10 +11,10 @@
use="Search path for configuration scripts. "
"The value of PATH is a colon-separated directory list.")
-Index: xen-4.1.0-testing/docs/man/xm.pod.1
+Index: xen-4.1.1-testing/docs/man/xm.pod.1
===================================================================
---- xen-4.1.0-testing.orig/docs/man/xm.pod.1
-+++ xen-4.1.0-testing/docs/man/xm.pod.1
+--- xen-4.1.1-testing.orig/docs/man/xm.pod.1
++++ xen-4.1.1-testing/docs/man/xm.pod.1
@@ -75,7 +75,7 @@ in the config file. See L
format, and possible options used in either the configfile or for I<vars>.
@@ -33,10 +33,10 @@
soon as it is run.
=item I<without config file>
-Index: xen-4.1.0-testing/docs/man/xmdomain.cfg.pod.5
+Index: xen-4.1.1-testing/docs/man/xmdomain.cfg.pod.5
===================================================================
---- xen-4.1.0-testing.orig/docs/man/xmdomain.cfg.pod.5
-+++ xen-4.1.0-testing/docs/man/xmdomain.cfg.pod.5
+--- xen-4.1.1-testing.orig/docs/man/xmdomain.cfg.pod.5
++++ xen-4.1.1-testing/docs/man/xmdomain.cfg.pod.5
@@ -4,9 +4,9 @@ xmdomain.cfg - xm domain config file for
=head1 SYNOPSIS
++++++ xen-qemu-iscsi-fix.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+Index: xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
===================================================================
---- xen-4.1.0-testing.orig/tools/ioemu-qemu-xen/xenstore.c
-+++ xen-4.1.0-testing/tools/ioemu-qemu-xen/xenstore.c
+--- xen-4.1.1-testing.orig/tools/ioemu-qemu-xen/xenstore.c
++++ xen-4.1.1-testing/tools/ioemu-qemu-xen/xenstore.c
@@ -449,7 +449,7 @@ void xenstore_parse_domain_config(int hv
char *buf = NULL;
char *fpath = NULL, *bpath = NULL, *btype = NULL,
++++++ xen-rpmoptflags.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/blktap/drivers/Makefile
+Index: xen-4.1.1-testing/tools/blktap/drivers/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/drivers/Makefile
-+++ xen-4.1.0-testing/tools/blktap/drivers/Makefile
+--- xen-4.1.1-testing.orig/tools/blktap/drivers/Makefile
++++ xen-4.1.1-testing/tools/blktap/drivers/Makefile
@@ -6,7 +6,6 @@ QCOW_UTIL = img2qcow qcow2raw qcow-cr
LIBAIO_DIR = ../../libaio/src
MEMSHR_DIR = ../../memshr
@@ -10,10 +10,10 @@
CFLAGS += -Wno-unused
CFLAGS += -I../lib
CFLAGS += $(CFLAGS_libxenctrl)
-Index: xen-4.1.0-testing/Config.mk
+Index: xen-4.1.1-testing/Config.mk
===================================================================
---- xen-4.1.0-testing.orig/Config.mk
-+++ xen-4.1.0-testing/Config.mk
+--- xen-4.1.1-testing.orig/Config.mk
++++ xen-4.1.1-testing/Config.mk
@@ -14,7 +14,7 @@ SHELL ?= /bin/sh
# Tools to run on system hosting the build
++++++ xen-unstable.xentrace.__insert_record-dst-type.patch ++++++
xentrace: Remove unneeded cast when assigning pointer value to dst
(xen-unstable changeset: 23310:b7ca55907bd3)
Remove unneeded cast when assigning pointer value to dst.
Both arrays are uint32_t and memcpy takes a void pointer.
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -484,7 +484,7 @@ static inline void __insert_record(struc
const void *extra_data)
{
struct t_rec *rec;
- unsigned char *dst;
+ uint32_t *dst;
unsigned int extra_word = extra / sizeof(u32);
unsigned int local_rec_size = calc_rec_size(cycles, extra);
uint32_t next;
@@ -509,13 +509,13 @@ static inline void __insert_record(struc
rec->event = event;
rec->extra_u32 = extra_word;
- dst = (unsigned char *)rec->u.nocycles.extra_u32;
+ dst = rec->u.nocycles.extra_u32;
if ( (rec->cycles_included = cycles) != 0 )
{
u64 tsc = (u64)get_cycles();
rec->u.cycles.cycles_lo = (uint32_t)tsc;
rec->u.cycles.cycles_hi = (uint32_t)(tsc >> 32);
- dst = (unsigned char *)rec->u.cycles.extra_u32;
+ dst = rec->u.cycles.extra_u32;
}
if ( extra_data && extra )
++++++ xen-unstable.xentrace.comments.patch ++++++
xentrace: update comments
(xen-unstable changeset 23094:d09e8885bc82)
Fix a typo, remove redundant comment.
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -197,12 +197,11 @@ static int alloc_trace_bufs(unsigned int
t_info->tbuf_size = pages;
/*
- * Now share the pages to xentrace can map them, and write them in
+ * Now share the pages so xentrace can map them, and write them in
* the global t_info structure.
*/
for_each_online_cpu(cpu)
{
- /* Share pages so that xentrace can map them. */
void *rawbuf = per_cpu(t_bufs, cpu);
struct page_info *p = virt_to_page(rawbuf);
uint32_t mfn = virt_to_mfn(rawbuf);
++++++ xen-unstable.xentrace.data_size__read_mostly.patch ++++++
xentrace: Mark data_size __read_mostly because it's only written once
(xen-unstable changeset: 23309:0ddcc8063690)
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -55,7 +55,7 @@ static unsigned int t_info_pages;
static DEFINE_PER_CPU_READ_MOSTLY(struct t_buf *, t_bufs);
static DEFINE_PER_CPU_READ_MOSTLY(unsigned char *, t_data);
static DEFINE_PER_CPU_READ_MOSTLY(spinlock_t, t_lock);
-static u32 data_size;
+static u32 data_size __read_mostly;
/* High water mark for trace buffers; */
/* Send virtual interrupt when buffer level reaches this point */
++++++ xen-unstable.xentrace.dynamic_tbuf.patch ++++++
xentrace: dynamic tracebuffer allocation
(xen-unstable changeset 23050:4ebba54b666f)
Allocate tracebuffers dynamically, based on the requested buffer size.
Calculate t_info_size from requested t_buf size.
Fix allocation failure path, free pages outside the spinlock.
Remove casts for rawbuf, it can be a void pointer since no math is done.
Signed-off-by: Olaf Hering
---
v3:
add comments to calculate_tbuf_size for side effects and max value
v2:
if per_cpu allocation fails, free also t_info to allow a retry with a
smaller tbuf_size
xen/common/trace.c | 249 ++++++++++++++++++++++-------------------------------
1 file changed, 104 insertions(+), 145 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -42,14 +42,14 @@ CHECK_t_buf;
#define compat_t_rec t_rec
#endif
-/* opt_tbuf_size: trace buffer size (in pages) */
-static unsigned int opt_tbuf_size = 0;
+/* opt_tbuf_size: trace buffer size (in pages) for each cpu */
+static unsigned int opt_tbuf_size;
integer_param("tbuf_size", opt_tbuf_size);
/* Pointers to the meta-data objects for all system trace buffers */
static struct t_info *t_info;
-#define T_INFO_PAGES 2 /* Size fixed at 2 pages for now. */
-#define T_INFO_SIZE ((T_INFO_PAGES)*(PAGE_SIZE))
+static unsigned int t_info_pages;
+
static DEFINE_PER_CPU_READ_MOSTLY(struct t_buf *, t_bufs);
static DEFINE_PER_CPU_READ_MOSTLY(unsigned char *, t_data);
static DEFINE_PER_CPU_READ_MOSTLY(spinlock_t, t_lock);
@@ -78,6 +78,21 @@ static u32 tb_event_mask = TRC_ALL;
* i.e., sizeof(_type) * ans >= _x. */
#define fit_to_type(_type, _x) (((_x)+sizeof(_type)-1) / sizeof(_type))
+static int cpu_callback(
+ struct notifier_block *nfb, unsigned long action, void *hcpu)
+{
+ unsigned int cpu = (unsigned long)hcpu;
+
+ if ( action == CPU_UP_PREPARE )
+ spin_lock_init(&per_cpu(t_lock, cpu));
+
+ return NOTIFY_DONE;
+}
+
+static struct notifier_block cpu_nfb = {
+ .notifier_call = cpu_callback
+};
+
static void calc_tinfo_first_offset(void)
{
int offset_in_bytes = offsetof(struct t_info, mfn_offset[NR_CPUS]);
@@ -85,20 +100,34 @@ static void calc_tinfo_first_offset(void
}
/**
- * check_tbuf_size - check to make sure that the proposed size will fit
+ * calculate_tbuf_size - check to make sure that the proposed size will fit
* in the currently sized struct t_info and allows prod and cons to
* reach double the value without overflow.
+ * Initialize t_info_pages based on number of trace pages.
*/
-static int check_tbuf_size(u32 pages)
+static int calculate_tbuf_size(unsigned int pages)
{
struct t_buf dummy;
typeof(dummy.prod) size;
-
- size = ((typeof(dummy.prod))pages) * PAGE_SIZE;
-
- return (size / PAGE_SIZE != pages)
- || (size + size < size)
- || (num_online_cpus() * pages + t_info_first_offset > T_INFO_SIZE / sizeof(uint32_t));
+
+ /* force maximum value for an unsigned type */
+ size = -1;
+
+ /* max size holds up to n pages */
+ size /= PAGE_SIZE;
+ if ( pages > size )
+ {
+ gdprintk(XENLOG_INFO, "%s: requested number of %u pages reduced to %u\n",
+ __func__, pages, (unsigned int)size);
+ pages = size;
+ }
+
+ t_info_pages = num_online_cpus() * pages + t_info_first_offset;
+ t_info_pages *= sizeof(uint32_t);
+ t_info_pages /= PAGE_SIZE;
+ if ( t_info_pages % PAGE_SIZE )
+ t_info_pages++;
+ return pages;
}
/**
@@ -111,47 +140,28 @@ static int check_tbuf_size(u32 pages)
* This function may also be called later when enabling trace buffers
* via the SET_SIZE hypercall.
*/
-static int alloc_trace_bufs(void)
+static int alloc_trace_bufs(unsigned int pages)
{
- int i, cpu, order;
- unsigned long nr_pages;
+ int i, cpu, order;
/* Start after a fixed-size array of NR_CPUS */
uint32_t *t_info_mfn_list;
int offset;
- if ( opt_tbuf_size == 0 )
- return -EINVAL;
+ if ( t_info )
+ return -EBUSY;
- if ( check_tbuf_size(opt_tbuf_size) )
- {
- printk("Xen trace buffers: tb size %d too large. "
- "Tracing disabled.\n",
- opt_tbuf_size);
+ if ( pages == 0 )
return -EINVAL;
- }
- /* t_info size is fixed for now. Currently this works great, so there
- * seems to be no need to make it dynamic. */
- t_info = alloc_xenheap_pages(get_order_from_pages(T_INFO_PAGES), 0);
- if ( t_info == NULL )
- {
- printk("Xen trace buffers: t_info allocation failed! "
- "Tracing disabled.\n");
- return -ENOMEM;
- }
-
- for ( i = 0; i < T_INFO_PAGES; i++ )
- share_xen_page_with_privileged_guests(
- virt_to_page(t_info) + i, XENSHARE_readonly);
-
- t_info_mfn_list = (uint32_t *)t_info;
- offset = t_info_first_offset;
+ /* Calculate offset in u32 of first mfn */
+ calc_tinfo_first_offset();
- t_info->tbuf_size = opt_tbuf_size;
- printk(XENLOG_INFO "tbuf_size %d\n", t_info->tbuf_size);
+ pages = calculate_tbuf_size(pages);
+ order = get_order_from_pages(pages);
- nr_pages = opt_tbuf_size;
- order = get_order_from_pages(nr_pages);
+ t_info = alloc_xenheap_pages(get_order_from_pages(t_info_pages), 0);
+ if ( t_info == NULL )
+ goto out_dealloc;
/*
* First, allocate buffers for all of the cpus. If any
@@ -159,27 +169,29 @@ static int alloc_trace_bufs(void)
*/
for_each_online_cpu(cpu)
{
- int flags;
- char *rawbuf;
+ void *rawbuf;
struct t_buf *buf;
if ( (rawbuf = alloc_xenheap_pages(
order, MEMF_bits(32 + PAGE_SHIFT))) == NULL )
{
- printk("Xen trace buffers: memory allocation failed\n");
- opt_tbuf_size = 0;
+ printk("Xen trace buffers: memory allocation failed on cpu %d\n", cpu);
goto out_dealloc;
}
- spin_lock_irqsave(&per_cpu(t_lock, cpu), flags);
-
- per_cpu(t_bufs, cpu) = buf = (struct t_buf *)rawbuf;
+ per_cpu(t_bufs, cpu) = buf = rawbuf;
buf->cons = buf->prod = 0;
per_cpu(t_data, cpu) = (unsigned char *)(buf + 1);
+ }
- spin_unlock_irqrestore(&per_cpu(t_lock, cpu), flags);
+ offset = t_info_first_offset;
+ t_info_mfn_list = (uint32_t *)t_info;
- }
+ for(i = 0; i < t_info_pages; i++)
+ share_xen_page_with_privileged_guests(
+ virt_to_page(t_info) + i, XENSHARE_readonly);
+
+ t_info->tbuf_size = pages;
/*
* Now share the pages to xentrace can map them, and write them in
@@ -188,89 +200,75 @@ static int alloc_trace_bufs(void)
for_each_online_cpu(cpu)
{
/* Share pages so that xentrace can map them. */
- char *rawbuf;
+ void *rawbuf = per_cpu(t_bufs, cpu);
+ struct page_info *p = virt_to_page(rawbuf);
+ uint32_t mfn = virt_to_mfn(rawbuf);
- if ( (rawbuf = (char *)per_cpu(t_bufs, cpu)) )
+ for ( i = 0; i < pages; i++ )
{
- struct page_info *p = virt_to_page(rawbuf);
- uint32_t mfn = virt_to_mfn(rawbuf);
+ share_xen_page_with_privileged_guests(p + i, XENSHARE_writable);
- for ( i = 0; i < nr_pages; i++ )
- {
- share_xen_page_with_privileged_guests(
- p + i, XENSHARE_writable);
-
- t_info_mfn_list[offset + i]=mfn + i;
- }
- /* Write list first, then write per-cpu offset. */
- wmb();
- t_info->mfn_offset[cpu]=offset;
- printk(XENLOG_INFO "p%d mfn %"PRIx32" offset %d\n",
- cpu, mfn, offset);
- offset+=i;
+ t_info_mfn_list[offset + i]=mfn + i;
}
+ t_info->mfn_offset[cpu]=offset;
+ printk(XENLOG_INFO "p%d mfn %"PRIx32" offset %d\n",
+ cpu, mfn, offset);
+ offset+=i;
+
+ spin_lock_init(&per_cpu(t_lock, cpu));
}
- data_size = (opt_tbuf_size * PAGE_SIZE - sizeof(struct t_buf));
+ data_size = (pages * PAGE_SIZE - sizeof(struct t_buf));
t_buf_highwater = data_size >> 1; /* 50% high water */
+ opt_tbuf_size = pages;
+
+ register_cpu_notifier(&cpu_nfb);
+
+ printk("Xen trace buffers: initialised\n");
+ wmb(); /* above must be visible before tb_init_done flag set */
+ tb_init_done = 1;
return 0;
+
out_dealloc:
for_each_online_cpu(cpu)
{
- int flags;
- char * rawbuf;
-
- spin_lock_irqsave(&per_cpu(t_lock, cpu), flags);
- if ( (rawbuf = (char *)per_cpu(t_bufs, cpu)) )
+ void *rawbuf = per_cpu(t_bufs, cpu);
+ per_cpu(t_bufs, cpu) = NULL;
+ printk("Xen trace buffers: cpu %d p %p\n", cpu, rawbuf);
+ if ( rawbuf )
{
- per_cpu(t_bufs, cpu) = NULL;
ASSERT(!(virt_to_page(rawbuf)->count_info & PGC_allocated));
free_xenheap_pages(rawbuf, order);
}
- spin_unlock_irqrestore(&per_cpu(t_lock, cpu), flags);
}
-
+ free_xenheap_pages(t_info, get_order_from_pages(t_info_pages));
+ t_info = NULL;
+ printk("Xen trace buffers: allocation failed! Tracing disabled.\n");
return -ENOMEM;
}
/**
- * tb_set_size - handle the logic involved with dynamically
- * allocating and deallocating tbufs
+ * tb_set_size - handle the logic involved with dynamically allocating tbufs
*
* This function is called when the SET_SIZE hypercall is done.
*/
-static int tb_set_size(int size)
+static int tb_set_size(unsigned int pages)
{
/*
* Setting size is a one-shot operation. It can be done either at
* boot time or via control tools, but not by both. Once buffers
* are created they cannot be destroyed.
*/
- int ret = 0;
-
- if ( opt_tbuf_size != 0 )
+ if ( opt_tbuf_size && pages != opt_tbuf_size )
{
- if ( size != opt_tbuf_size )
- gdprintk(XENLOG_INFO, "tb_set_size from %d to %d not implemented\n",
- opt_tbuf_size, size);
+ gdprintk(XENLOG_INFO, "tb_set_size from %d to %d not implemented\n",
+ opt_tbuf_size, pages);
return -EINVAL;
}
- if ( size <= 0 )
- return -EINVAL;
-
- opt_tbuf_size = size;
-
- if ( (ret = alloc_trace_bufs()) != 0 )
- {
- opt_tbuf_size = 0;
- return ret;
- }
-
- printk("Xen trace buffers: initialized\n");
- return 0;
+ return alloc_trace_bufs(pages);
}
int trace_will_trace_event(u32 event)
@@ -299,21 +297,6 @@ int trace_will_trace_event(u32 event)
return 1;
}
-static int cpu_callback(
- struct notifier_block *nfb, unsigned long action, void *hcpu)
-{
- unsigned int cpu = (unsigned long)hcpu;
-
- if ( action == CPU_UP_PREPARE )
- spin_lock_init(&per_cpu(t_lock, cpu));
-
- return NOTIFY_DONE;
-}
-
-static struct notifier_block cpu_nfb = {
- .notifier_call = cpu_callback
-};
-
/**
* init_trace_bufs - performs initialization of the per-cpu trace buffers.
*
@@ -323,37 +306,13 @@ static struct notifier_block cpu_nfb = {
*/
void __init init_trace_bufs(void)
{
- int i;
-
- /* Calculate offset in u32 of first mfn */
- calc_tinfo_first_offset();
-
- /* Per-cpu t_lock initialisation. */
- for_each_online_cpu ( i )
- spin_lock_init(&per_cpu(t_lock, i));
- register_cpu_notifier(&cpu_nfb);
-
- if ( opt_tbuf_size == 0 )
- {
- printk("Xen trace buffers: disabled\n");
- goto fail;
- }
-
- if ( alloc_trace_bufs() != 0 )
+ if ( opt_tbuf_size && alloc_trace_bufs(opt_tbuf_size) )
{
- dprintk(XENLOG_INFO, "Xen trace buffers: "
- "allocation size %d failed, disabling\n",
- opt_tbuf_size);
- goto fail;
+ gdprintk(XENLOG_INFO, "Xen trace buffers: "
+ "allocation size %d failed, disabling\n",
+ opt_tbuf_size);
+ opt_tbuf_size = 0;
}
-
- printk("Xen trace buffers: initialised\n");
- wmb(); /* above must be visible before tb_init_done flag set */
- tb_init_done = 1;
- return;
-
- fail:
- opt_tbuf_size = 0;
}
/**
@@ -372,7 +331,7 @@ int tb_control(xen_sysctl_tbuf_op_t *tbc
case XEN_SYSCTL_TBUFOP_get_info:
tbc->evt_mask = tb_event_mask;
tbc->buffer_mfn = t_info ? virt_to_mfn(t_info) : 0;
- tbc->size = T_INFO_PAGES * PAGE_SIZE;
+ tbc->size = t_info_pages * PAGE_SIZE;
break;
case XEN_SYSCTL_TBUFOP_set_cpu_mask:
rc = xenctl_cpumap_to_cpumask(&tb_cpu_mask, &tbc->cpu_mask);
++++++ xen-unstable.xentrace.empty_t_info_pages.patch ++++++
xentrace: fix t_info_pages calculation for the default case
(xen-unstable changeset 23091:67632e5cf652)
The default tracebuffer size of 32 pages was not tested with the previous patch.
As a result, t_info_pages will become zero and alloc_xenheap_pages() fails.
Catch this case and allocate at least one page.
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -33,6 +33,8 @@
#include
#include
+#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
+
#ifdef CONFIG_COMPAT
#include
#define xen_t_buf t_buf
@@ -109,6 +111,7 @@ static int calculate_tbuf_size(unsigned
{
struct t_buf dummy;
typeof(dummy.prod) size;
+ unsigned int t_info_words, t_info_bytes;
/* force maximum value for an unsigned type */
size = -1;
@@ -122,11 +125,9 @@ static int calculate_tbuf_size(unsigned
pages = size;
}
- t_info_pages = num_online_cpus() * pages + t_info_first_offset;
- t_info_pages *= sizeof(uint32_t);
- t_info_pages /= PAGE_SIZE;
- if ( t_info_pages % PAGE_SIZE )
- t_info_pages++;
+ t_info_words = num_online_cpus() * pages + t_info_first_offset;
+ t_info_bytes = t_info_words * sizeof(uint32_t);
+ t_info_pages = PFN_UP(t_info_bytes);
return pages;
}
++++++ xen-unstable.xentrace.no_gdprintk.patch ++++++
xentrace: remove gdprintk usage since they are not in guest context
(xen-unstable changeset 23093:4b784605b089)
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -120,7 +120,7 @@ static int calculate_tbuf_size(unsigned
size /= PAGE_SIZE;
if ( pages > size )
{
- gdprintk(XENLOG_INFO, "%s: requested number of %u pages reduced to %u\n",
+ printk(XENLOG_INFO "%s: requested number of %u pages reduced to %u\n",
__func__, pages, (unsigned int)size);
pages = size;
}
@@ -266,7 +266,7 @@ static int tb_set_size(unsigned int page
*/
if ( opt_tbuf_size && pages != opt_tbuf_size )
{
- gdprintk(XENLOG_INFO, "tb_set_size from %d to %d not implemented\n",
+ printk(XENLOG_INFO "tb_set_size from %d to %d not implemented\n",
opt_tbuf_size, pages);
return -EINVAL;
}
@@ -311,7 +311,7 @@ void __init init_trace_bufs(void)
{
if ( opt_tbuf_size && alloc_trace_bufs(opt_tbuf_size) )
{
- gdprintk(XENLOG_INFO, "Xen trace buffers: "
+ printk(XENLOG_INFO "Xen trace buffers: "
"allocation size %d failed, disabling\n",
opt_tbuf_size);
opt_tbuf_size = 0;
++++++ xen-unstable.xentrace.printk_prefix.patch ++++++
xentrace: use consistent printk prefix
(xen-unstable changeset 23095:941119d58655)
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -120,16 +120,18 @@ static int calculate_tbuf_size(unsigned
size /= PAGE_SIZE;
if ( pages > size )
{
- printk(XENLOG_INFO "%s: requested number of %u pages reduced to %u\n",
- __func__, pages, (unsigned int)size);
+ printk(XENLOG_INFO "xentrace: requested number of %u pages "
+ "reduced to %u\n",
+ pages, (unsigned int)size);
pages = size;
}
t_info_words = num_online_cpus() * pages + t_info_first_offset;
t_info_bytes = t_info_words * sizeof(uint32_t);
t_info_pages = PFN_UP(t_info_bytes);
- printk(XENLOG_INFO "xentrace: requesting %u t_info pages for %u trace pages on %u cpus\n",
- t_info_pages, pages, num_online_cpus());
+ printk(XENLOG_INFO "xentrace: requesting %u t_info pages "
+ "for %u trace pages on %u cpus\n",
+ t_info_pages, pages, num_online_cpus());
return pages;
}
@@ -178,7 +180,8 @@ static int alloc_trace_bufs(unsigned int
if ( (rawbuf = alloc_xenheap_pages(
order, MEMF_bits(32 + PAGE_SHIFT))) == NULL )
{
- printk("Xen trace buffers: memory allocation failed on cpu %d\n", cpu);
+ printk(XENLOG_INFO "xentrace: memory allocation failed "
+ "on cpu %d\n", cpu);
goto out_dealloc;
}
@@ -213,7 +216,7 @@ static int alloc_trace_bufs(unsigned int
t_info_mfn_list[offset + i]=mfn + i;
}
t_info->mfn_offset[cpu]=offset;
- printk(XENLOG_INFO "p%d mfn %"PRIx32" offset %d\n",
+ printk(XENLOG_INFO "xentrace: p%d mfn %"PRIx32" offset %d\n",
cpu, mfn, offset);
offset+=i;
@@ -226,7 +229,7 @@ static int alloc_trace_bufs(unsigned int
register_cpu_notifier(&cpu_nfb);
- printk("Xen trace buffers: initialised\n");
+ printk("xentrace: initialised\n");
wmb(); /* above must be visible before tb_init_done flag set */
tb_init_done = 1;
@@ -237,7 +240,7 @@ out_dealloc:
{
void *rawbuf = per_cpu(t_bufs, cpu);
per_cpu(t_bufs, cpu) = NULL;
- printk("Xen trace buffers: cpu %d p %p\n", cpu, rawbuf);
+ printk(XENLOG_DEBUG "xentrace: cpu %d p %p\n", cpu, rawbuf);
if ( rawbuf )
{
ASSERT(!(virt_to_page(rawbuf)->count_info & PGC_allocated));
@@ -246,7 +249,7 @@ out_dealloc:
}
free_xenheap_pages(t_info, get_order_from_pages(t_info_pages));
t_info = NULL;
- printk("Xen trace buffers: allocation failed! Tracing disabled.\n");
+ printk(XENLOG_WARNING "xentrace: allocation failed! Tracing disabled.\n");
return -ENOMEM;
}
@@ -265,8 +268,9 @@ static int tb_set_size(unsigned int page
*/
if ( opt_tbuf_size && pages != opt_tbuf_size )
{
- printk(XENLOG_INFO "tb_set_size from %d to %d not implemented\n",
- opt_tbuf_size, pages);
+ printk(XENLOG_INFO "xentrace: tb_set_size from %d to %d "
+ "not implemented\n",
+ opt_tbuf_size, pages);
return -EINVAL;
}
@@ -310,9 +314,8 @@ void __init init_trace_bufs(void)
{
if ( opt_tbuf_size && alloc_trace_bufs(opt_tbuf_size) )
{
- printk(XENLOG_INFO "Xen trace buffers: "
- "allocation size %d failed, disabling\n",
- opt_tbuf_size);
+ printk(XENLOG_INFO "xentrace: allocation size %d failed, disabling\n",
+ opt_tbuf_size);
opt_tbuf_size = 0;
}
}
++++++ xen-unstable.xentrace.register_cpu_notifier-boot_time.patch ++++++
xentrace: Move register_cpu_notifier() call into boot-time init.
(xen-unstable changeset 23173:94cef9aaf0cd)
We can't do it lazily from alloc_trace_bufs() as that gets called
later if tracing is enabled later by dom0.
Signed-off-by: Keir Fraser
---
xen/common/trace.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -226,8 +226,6 @@ static int alloc_trace_bufs(unsigned int
t_buf_highwater = data_size >> 1; /* 50% high water */
opt_tbuf_size = pages;
- register_cpu_notifier(&cpu_nfb);
-
printk("xentrace: initialised\n");
wmb(); /* above must be visible before tb_init_done flag set */
tb_init_done = 1;
@@ -310,6 +308,8 @@ int trace_will_trace_event(u32 event)
*/
void __init init_trace_bufs(void)
{
+ register_cpu_notifier(&cpu_nfb);
+
if ( opt_tbuf_size && alloc_trace_bufs(opt_tbuf_size) )
{
printk(XENLOG_INFO "xentrace: allocation size %d failed, disabling\n",
++++++ xen-unstable.xentrace.remove_debug_printk.patch ++++++
xentrace: remove unneeded debug printk
(xen-unstable changeset 23129:219ba19aedeb)
The pointer value in case of an allocation failure is rather uninteresting.
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 1 -
1 file changed, 1 deletion(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -240,7 +240,6 @@ out_dealloc:
{
void *rawbuf = per_cpu(t_bufs, cpu);
per_cpu(t_bufs, cpu) = NULL;
- printk(XENLOG_DEBUG "xentrace: cpu %d p %p\n", cpu, rawbuf);
if ( rawbuf )
{
ASSERT(!(virt_to_page(rawbuf)->count_info & PGC_allocated));
++++++ xen-unstable.xentrace.t_info_first_offset.patch ++++++
xentrace: Move the global variable t_info_first_offset into calculate_tbuf_size()
(xen-unstable changeset 23308:fb5313e64335)
Move the global variable t_info_first_offset into
calculate_tbuf_size() because it is only used there. Change the type
from u32 to uint32_t to match type in other places.
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -56,7 +56,6 @@ static DEFINE_PER_CPU_READ_MOSTLY(struct
static DEFINE_PER_CPU_READ_MOSTLY(unsigned char *, t_data);
static DEFINE_PER_CPU_READ_MOSTLY(spinlock_t, t_lock);
static u32 data_size;
-static u32 t_info_first_offset __read_mostly;
/* High water mark for trace buffers; */
/* Send virtual interrupt when buffer level reaches this point */
@@ -95,10 +94,10 @@ static struct notifier_block cpu_nfb = {
.notifier_call = cpu_callback
};
-static void calc_tinfo_first_offset(void)
+static uint32_t calc_tinfo_first_offset(void)
{
int offset_in_bytes = offsetof(struct t_info, mfn_offset[NR_CPUS]);
- t_info_first_offset = fit_to_type(uint32_t, offset_in_bytes);
+ return fit_to_type(uint32_t, offset_in_bytes);
}
/**
@@ -108,7 +107,7 @@ static void calc_tinfo_first_offset(void
* The t_info layout is fixed and cant be changed without breaking xentrace.
* Initialize t_info_pages based on number of trace pages.
*/
-static int calculate_tbuf_size(unsigned int pages)
+static int calculate_tbuf_size(unsigned int pages, uint32_t t_info_first_offset)
{
struct t_buf dummy_size;
typeof(dummy_size.prod) max_size;
@@ -157,6 +156,7 @@ static int alloc_trace_bufs(unsigned int
int i, cpu, order;
/* Start after a fixed-size array of NR_CPUS */
uint32_t *t_info_mfn_list;
+ uint32_t t_info_first_offset;
int offset;
if ( t_info )
@@ -166,9 +166,9 @@ static int alloc_trace_bufs(unsigned int
return -EINVAL;
/* Calculate offset in u32 of first mfn */
- calc_tinfo_first_offset();
+ t_info_first_offset = calc_tinfo_first_offset();
- pages = calculate_tbuf_size(pages);
+ pages = calculate_tbuf_size(pages, t_info_first_offset);
order = get_order_from_pages(pages);
t_info = alloc_xenheap_pages(get_order_from_pages(t_info_pages), 0);
++++++ xen-unstable.xentrace.t_info_page-overflow.patch ++++++
xentrace: correct overflow check for number of per-cpu trace pages
(xen-unstable changeset 23239:51d89366c859)
The calculated number of per-cpu trace pages is stored in t_info and
shared with tools like xentrace. Since its an u16 the value may overflow
because the current check is based on u32.
Using the u16 means each cpu could in theory use up to 256MB as trace
buffer. However such a large allocation will currently fail on x86 due
to the MAX_ORDER limit.
Check both max theoretical number of pages per cpu and max number of
pages reachable by struct t_buf->prod/cons variables with requested
number of pages.
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -105,25 +105,33 @@ static void calc_tinfo_first_offset(void
* calculate_tbuf_size - check to make sure that the proposed size will fit
* in the currently sized struct t_info and allows prod and cons to
* reach double the value without overflow.
+ * The t_info layout is fixed and cant be changed without breaking xentrace.
* Initialize t_info_pages based on number of trace pages.
*/
static int calculate_tbuf_size(unsigned int pages)
{
- struct t_buf dummy;
- typeof(dummy.prod) size;
+ struct t_buf dummy_size;
+ typeof(dummy_size.prod) max_size;
+ struct t_info dummy_pages;
+ typeof(dummy_pages.tbuf_size) max_pages;
unsigned int t_info_words;
/* force maximum value for an unsigned type */
- size = -1;
+ max_size = -1;
+ max_pages = -1;
/* max size holds up to n pages */
- size /= PAGE_SIZE;
- if ( pages > size )
+ max_size /= PAGE_SIZE;
+
+ if ( max_size < max_pages )
+ max_pages = max_size;
+
+ if ( pages > max_pages )
{
printk(XENLOG_INFO "xentrace: requested number of %u pages "
"reduced to %u\n",
- pages, (unsigned int)size);
- pages = size;
+ pages, max_pages);
+ pages = max_pages;
}
t_info_words = num_online_cpus() * pages * sizeof(uint32_t);
++++++ xen-unstable.xentrace.t_info_pages-formula.patch ++++++
xentrace: correct formula to calculate t_info_pages
(xen-unstable changeset 23128:4a335f1000ea)
The current formula to calculate t_info_pages, based on the initial
code, is slightly incorrect. It may allocate more than needed.
Each cpu has some pages/mfns stored as uint32_t.
That list is stored with an offset at tinfo.
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -111,7 +111,7 @@ static int calculate_tbuf_size(unsigned
{
struct t_buf dummy;
typeof(dummy.prod) size;
- unsigned int t_info_words, t_info_bytes;
+ unsigned int t_info_words;
/* force maximum value for an unsigned type */
size = -1;
@@ -126,9 +126,8 @@ static int calculate_tbuf_size(unsigned
pages = size;
}
- t_info_words = num_online_cpus() * pages + t_info_first_offset;
- t_info_bytes = t_info_words * sizeof(uint32_t);
- t_info_pages = PFN_UP(t_info_bytes);
+ t_info_words = num_online_cpus() * pages * sizeof(uint32_t);
+ t_info_pages = PFN_UP(t_info_first_offset + t_info_words);
printk(XENLOG_INFO "xentrace: requesting %u t_info pages "
"for %u trace pages on %u cpus\n",
t_info_pages, pages, num_online_cpus());
++++++ xen-unstable.xentrace.verbose.patch ++++++
xentrace: print calculated numbers in calculate_tbuf_size()
(xen-unstable changeset 23092:45dafa422812)
Print number of pages to allocate for per-cpu tracebuffer and metadata
to ease debugging when allocation fails.
Signed-off-by: Olaf Hering
---
xen/common/trace.c | 2 ++
1 file changed, 2 insertions(+)
Index: xen-4.1.1-testing/xen/common/trace.c
===================================================================
--- xen-4.1.1-testing.orig/xen/common/trace.c
+++ xen-4.1.1-testing/xen/common/trace.c
@@ -128,6 +128,8 @@ static int calculate_tbuf_size(unsigned
t_info_words = num_online_cpus() * pages + t_info_first_offset;
t_info_bytes = t_info_words * sizeof(uint32_t);
t_info_pages = PFN_UP(t_info_bytes);
+ printk(XENLOG_INFO "xentrace: requesting %u t_info pages for %u trace pages on %u cpus\n",
+ t_info_pages, pages, num_online_cpus());
return pages;
}
++++++ xen-warnings-unused.diff ++++++
++++ 660 lines (skipped)
++++ between xen/xen-warnings-unused.diff
++++ and /mounts/work_src_done/STABLE/xen/xen-warnings-unused.diff
++++++ xen-warnings.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/misc/miniterm/miniterm.c
+Index: xen-4.1.1-testing/tools/misc/miniterm/miniterm.c
===================================================================
---- xen-4.1.0-testing.orig/tools/misc/miniterm/miniterm.c
-+++ xen-4.1.0-testing/tools/misc/miniterm/miniterm.c
+--- xen-4.1.1-testing.orig/tools/misc/miniterm/miniterm.c
++++ xen-4.1.1-testing/tools/misc/miniterm/miniterm.c
@@ -157,7 +157,7 @@ int main(int argc, char **argv)
case 0:
close(1); /* stdout not needed */
@@ -35,10 +35,10 @@
break;
}
-Index: xen-4.1.0-testing/tools/libxc/xc_dom_elfloader.c
+Index: xen-4.1.1-testing/tools/libxc/xc_dom_elfloader.c
===================================================================
---- xen-4.1.0-testing.orig/tools/libxc/xc_dom_elfloader.c
-+++ xen-4.1.0-testing/tools/libxc/xc_dom_elfloader.c
+--- xen-4.1.1-testing.orig/tools/libxc/xc_dom_elfloader.c
++++ xen-4.1.1-testing/tools/libxc/xc_dom_elfloader.c
@@ -228,8 +228,9 @@ static int xc_dom_load_elf_symtab(struct
if ( load )
@@ -50,10 +50,10 @@
elf_section_start(elf, shdr2),
size);
}
-Index: xen-4.1.0-testing/tools/xenstore/Makefile
+Index: xen-4.1.1-testing/tools/xenstore/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/xenstore/Makefile
-+++ xen-4.1.0-testing/tools/xenstore/Makefile
+--- xen-4.1.1-testing.orig/tools/xenstore/Makefile
++++ xen-4.1.1-testing/tools/xenstore/Makefile
@@ -4,7 +4,7 @@ include $(XEN_ROOT)/tools/Rules.mk
MAJOR = 3.0
MINOR = 0
@@ -63,10 +63,10 @@
CFLAGS += -I.
CFLAGS += $(CFLAGS_libxenctrl)
-Index: xen-4.1.0-testing/tools/xenstore/xenstored_core.c
+Index: xen-4.1.1-testing/tools/xenstore/xenstored_core.c
===================================================================
---- xen-4.1.0-testing.orig/tools/xenstore/xenstored_core.c
-+++ xen-4.1.0-testing/tools/xenstore/xenstored_core.c
+--- xen-4.1.1-testing.orig/tools/xenstore/xenstored_core.c
++++ xen-4.1.1-testing/tools/xenstore/xenstored_core.c
@@ -77,8 +77,8 @@ static void check_store(void);
int quota_nb_entry_per_domain = 1000;
@@ -109,10 +109,10 @@
break;
case 'T':
tracefile = optarg;
-Index: xen-4.1.0-testing/tools/xenstore/xenstored_domain.c
+Index: xen-4.1.1-testing/tools/xenstore/xenstored_domain.c
===================================================================
---- xen-4.1.0-testing.orig/tools/xenstore/xenstored_domain.c
-+++ xen-4.1.0-testing/tools/xenstore/xenstored_domain.c
+--- xen-4.1.1-testing.orig/tools/xenstore/xenstored_domain.c
++++ xen-4.1.1-testing/tools/xenstore/xenstored_domain.c
@@ -213,7 +213,7 @@ void handle_event(void)
{
evtchn_port_t port;
@@ -131,10 +131,10 @@
return -1;
dom0 = new_domain(NULL, 0, port);
-Index: xen-4.1.0-testing/tools/xenstore/xenstored_transaction.c
+Index: xen-4.1.1-testing/tools/xenstore/xenstored_transaction.c
===================================================================
---- xen-4.1.0-testing.orig/tools/xenstore/xenstored_transaction.c
-+++ xen-4.1.0-testing/tools/xenstore/xenstored_transaction.c
+--- xen-4.1.1-testing.orig/tools/xenstore/xenstored_transaction.c
++++ xen-4.1.1-testing/tools/xenstore/xenstored_transaction.c
@@ -82,7 +82,7 @@ struct transaction
struct list_head changed_domains;
};
@@ -144,10 +144,10 @@
static unsigned int generation;
/* Return tdb context to use for this connection. */
-Index: xen-4.1.0-testing/tools/xenstore/xenstore_client.c
+Index: xen-4.1.1-testing/tools/xenstore/xenstore_client.c
===================================================================
---- xen-4.1.0-testing.orig/tools/xenstore/xenstore_client.c
-+++ xen-4.1.0-testing/tools/xenstore/xenstore_client.c
+--- xen-4.1.1-testing.orig/tools/xenstore/xenstore_client.c
++++ xen-4.1.1-testing/tools/xenstore/xenstore_client.c
@@ -255,7 +255,7 @@ do_chmod(char *path, struct xs_permissio
char **xsval = xs_directory(xsh, xth, path, &xsval_n);
@@ -157,10 +157,10 @@
for (i = 0; i < xsval_n; i++) {
snprintf(buf, MAX_PATH_LEN, "%s/%s", path, xsval[i]);
-Index: xen-4.1.0-testing/tools/libxen/src/xen_common.c
+Index: xen-4.1.1-testing/tools/libxen/src/xen_common.c
===================================================================
---- xen-4.1.0-testing.orig/tools/libxen/src/xen_common.c
-+++ xen-4.1.0-testing/tools/libxen/src/xen_common.c
+--- xen-4.1.1-testing.orig/tools/libxen/src/xen_common.c
++++ xen-4.1.1-testing/tools/libxen/src/xen_common.c
@@ -1057,6 +1057,8 @@ static size_t size_of_member(const abstr
default:
assert(false);
@@ -179,10 +179,10 @@
}
-Index: xen-4.1.0-testing/tools/blktap2/drivers/block-remus.c
+Index: xen-4.1.1-testing/tools/blktap2/drivers/block-remus.c
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap2/drivers/block-remus.c
-+++ xen-4.1.0-testing/tools/blktap2/drivers/block-remus.c
+--- xen-4.1.1-testing.orig/tools/blktap2/drivers/block-remus.c
++++ xen-4.1.1-testing/tools/blktap2/drivers/block-remus.c
@@ -1579,7 +1579,7 @@ static int tdremus_open(td_driver_t *dri
td_flag_t flags)
{
@@ -192,10 +192,10 @@
RPRINTF("opening %s\n", name);
-Index: xen-4.1.0-testing/tools/blktap/lib/blktaplib.h
+Index: xen-4.1.1-testing/tools/blktap/lib/blktaplib.h
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap/lib/blktaplib.h
-+++ xen-4.1.0-testing/tools/blktap/lib/blktaplib.h
+--- xen-4.1.1-testing.orig/tools/blktap/lib/blktaplib.h
++++ xen-4.1.1-testing/tools/blktap/lib/blktaplib.h
@@ -196,6 +196,7 @@ typedef struct msg_pid {
} msg_pid_t;
@@ -204,10 +204,10 @@
#define WRITE 1
/*Control Messages between manager and tapdev*/
-Index: xen-4.1.0-testing/tools/blktap2/include/blktaplib.h
+Index: xen-4.1.1-testing/tools/blktap2/include/blktaplib.h
===================================================================
---- xen-4.1.0-testing.orig/tools/blktap2/include/blktaplib.h
-+++ xen-4.1.0-testing/tools/blktap2/include/blktaplib.h
+--- xen-4.1.1-testing.orig/tools/blktap2/include/blktaplib.h
++++ xen-4.1.1-testing/tools/blktap2/include/blktaplib.h
@@ -190,6 +190,7 @@ typedef struct msg_lock {
} msg_lock_t;
@@ -216,22 +216,3 @@
#define WRITE 1
/*Control Messages between manager and tapdev*/
-Index: xen-4.1.0-testing/xen/arch/x86/io_apic.c
-===================================================================
---- xen-4.1.0-testing.orig/xen/arch/x86/io_apic.c
-+++ xen-4.1.0-testing/xen/arch/x86/io_apic.c
-@@ -227,12 +227,13 @@ int restore_IO_APIC_setup(struct IO_APIC
- if (!ioapic_entries[apic])
- return -ENOMEM;
-
-- for (pin = 0; pin < nr_ioapic_registers[apic]; pin++)
-+ for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {
- entry = ioapic_entries[apic][pin];
- spin_lock_irqsave(&ioapic_lock, flags);
- __io_apic_write(apic, 0x11+2*pin, *(((int *)&entry)+1));
- __io_apic_write(apic, 0x10+2*pin, *(((int *)&entry)+0));
- spin_unlock_irqrestore(&ioapic_lock, flags);
-+ }
- }
-
- return 0;
++++++ xen-xm-top-needs-root.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,10 +1,10 @@
From: Charles Coffing
Upstream: no
-Index: xen-4.1.0-testing/tools/python/xen/xm/main.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/main.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xm/main.py
-+++ xen-4.1.0-testing/tools/python/xen/xm/main.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/main.py
++++ xen-4.1.1-testing/tools/python/xen/xm/main.py
@@ -2201,6 +2201,10 @@ def xm_debug_keys(args):
def xm_top(args):
arg_check(args, "top", 0)
++++++ xen-xmexample-vti.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/examples/Makefile
+Index: xen-4.1.1-testing/tools/examples/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/examples/Makefile
-+++ xen-4.1.0-testing/tools/examples/Makefile
+--- xen-4.1.1-testing.orig/tools/examples/Makefile
++++ xen-4.1.1-testing/tools/examples/Makefile
@@ -18,7 +18,6 @@ XEN_CONFIGS += xmexample.hvm
XEN_CONFIGS += xmexample.hvm-stubdom
XEN_CONFIGS += xmexample.pv-grub
++++++ xen-xmexample.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,9 +1,9 @@
Change various example paths in the config files to match SUSE.
-Index: xen-4.1.0-testing/tools/examples/xmexample1
+Index: xen-4.1.1-testing/tools/examples/xmexample1
===================================================================
---- xen-4.1.0-testing.orig/tools/examples/xmexample1
-+++ xen-4.1.0-testing/tools/examples/xmexample1
+--- xen-4.1.1-testing.orig/tools/examples/xmexample1
++++ xen-4.1.1-testing/tools/examples/xmexample1
@@ -7,11 +7,13 @@
#============================================================================
@@ -43,10 +43,10 @@
#----------------------------------------------------------------------------
# Configure the behaviour when a domain exits. There are three 'reasons'
-Index: xen-4.1.0-testing/tools/examples/xmexample2
+Index: xen-4.1.1-testing/tools/examples/xmexample2
===================================================================
---- xen-4.1.0-testing.orig/tools/examples/xmexample2
-+++ xen-4.1.0-testing/tools/examples/xmexample2
+--- xen-4.1.1-testing.orig/tools/examples/xmexample2
++++ xen-4.1.1-testing/tools/examples/xmexample2
@@ -35,11 +35,13 @@ xm_vars.var('vmid',
xm_vars.check()
@@ -86,10 +86,10 @@
#----------------------------------------------------------------------------
# Configure the behaviour when a domain exits. There are three 'reasons'
-Index: xen-4.1.0-testing/tools/examples/xmexample3
+Index: xen-4.1.1-testing/tools/examples/xmexample3
===================================================================
---- xen-4.1.0-testing.orig/tools/examples/xmexample3
-+++ xen-4.1.0-testing/tools/examples/xmexample3
+--- xen-4.1.1-testing.orig/tools/examples/xmexample3
++++ xen-4.1.1-testing/tools/examples/xmexample3
@@ -35,11 +35,13 @@ xm_vars.var('vmid',
xm_vars.check()
@@ -108,10 +108,10 @@
# The domain build function. Default is 'linux'.
#builder='linux'
-Index: xen-4.1.0-testing/tools/examples/xmexample.hvm
+Index: xen-4.1.1-testing/tools/examples/xmexample.hvm
===================================================================
---- xen-4.1.0-testing.orig/tools/examples/xmexample.hvm
-+++ xen-4.1.0-testing/tools/examples/xmexample.hvm
+--- xen-4.1.1-testing.orig/tools/examples/xmexample.hvm
++++ xen-4.1.1-testing/tools/examples/xmexample.hvm
@@ -78,7 +78,7 @@ vif = [ 'type=ioemu, bridge=xenbr0' ]
# and MODE is r for read-only, w for read-write.
@@ -121,10 +121,10 @@
#----------------------------------------------------------------------------
# Configure the behaviour when a domain exits. There are three 'reasons'
-Index: xen-4.1.0-testing/docs/man/xmdomain.cfg.pod.5
+Index: xen-4.1.1-testing/docs/man/xmdomain.cfg.pod.5
===================================================================
---- xen-4.1.0-testing.orig/docs/man/xmdomain.cfg.pod.5
-+++ xen-4.1.0-testing/docs/man/xmdomain.cfg.pod.5
+--- xen-4.1.1-testing.orig/docs/man/xmdomain.cfg.pod.5
++++ xen-4.1.1-testing/docs/man/xmdomain.cfg.pod.5
@@ -38,13 +38,13 @@ file.
The kernel image for the domain. The format of the parameter is the
@@ -160,10 +160,10 @@
at hda1, which is the root filesystem.
=item I<NFS Root>
-Index: xen-4.1.0-testing/docs/man/xm.pod.1
+Index: xen-4.1.1-testing/docs/man/xm.pod.1
===================================================================
---- xen-4.1.0-testing.orig/docs/man/xm.pod.1
-+++ xen-4.1.0-testing/docs/man/xm.pod.1
+--- xen-4.1.1-testing.orig/docs/man/xm.pod.1
++++ xen-4.1.1-testing/docs/man/xm.pod.1
@@ -161,8 +161,8 @@ soon as it is run.
=item I<without config file>
++++++ xen.sles11sp1.bug684297.xen_oldmem_pfn_is_ram.patch ++++++
Use new Xen HVMOP_get_mem_type hvmop hypercall option and new Linux kernel
register_oldmem_pfn_is_ram interface.
Signed-off-by: Olaf Hering
---
unmodified_drivers/linux-2.6/platform-pci/platform-pci.c | 31 +++++++++++++++
1 file changed, 31 insertions(+)
Index: xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
===================================================================
--- xen-4.1.1-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+++ xen-4.1.1-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
@@ -30,6 +30,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -359,6 +360,32 @@ static int check_platform_magic(struct d
return -ENODEV;
}
+#if defined(HAVE_OLDMEM_PFN_IS_RAM) && defined(HVMOP_get_mem_type)
+static int xen_oldmem_pfn_is_ram(unsigned long pfn)
+{
+ struct xen_hvm_get_mem_type a;
+ int ram;
+
+ a.domid = DOMID_SELF;
+ a.pfn = pfn;
+ if (HYPERVISOR_hvm_op(HVMOP_get_mem_type, &a))
+ return -ENXIO;
+
+ switch (a.mem_type) {
+ case HVMMEM_mmio_dm:
+ ram = 0;
+ break;
+ case HVMMEM_ram_rw:
+ case HVMMEM_ram_ro:
+ default:
+ ram = 1;
+ break;
+ }
+
+ return ram;
+}
+#endif
+
static int __devinit platform_pci_init(struct pci_dev *pdev,
const struct pci_device_id *ent)
{
@@ -427,6 +454,10 @@ static int __devinit platform_pci_init(s
if ((ret = xen_panic_handler_init()))
goto out;
+#if defined(HAVE_OLDMEM_PFN_IS_RAM) && defined(HVMOP_get_mem_type)
+ register_oldmem_pfn_is_ram(&xen_oldmem_pfn_is_ram);
+#endif
+
out:
if (ret) {
pci_release_region(pdev, 0);
++++++ xenalyze.gcc46.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -18,10 +18,10 @@
xenalyze.hg/xenalyze.c | 21 ---------------------
1 file changed, 21 deletions(-)
-Index: xen-4.1.0-testing/xenalyze.hg/xenalyze.c
+Index: xen-4.1.1-testing/xenalyze.hg/xenalyze.c
===================================================================
---- xen-4.1.0-testing.orig/xenalyze.hg/xenalyze.c
-+++ xen-4.1.0-testing/xenalyze.hg/xenalyze.c
+--- xen-4.1.1-testing.orig/xenalyze.hg/xenalyze.c
++++ xen-4.1.1-testing/xenalyze.hg/xenalyze.c
@@ -2016,8 +2016,6 @@ float weighted_percentile(float * A, /*
float X, t1;
unsigned long long t2;
++++++ xenapi-console-protocol.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -3934,6 +3934,14 @@ class XendDomainInfo:
if not config.has_key('backend'):
config['backend'] = "00000000-0000-0000-0000-000000000000"
++++++ xenconsole-no-multiple-connections.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/console/client/main.c
+Index: xen-4.1.1-testing/tools/console/client/main.c
===================================================================
---- xen-4.1.0-testing.orig/tools/console/client/main.c
-+++ xen-4.1.0-testing/tools/console/client/main.c
+--- xen-4.1.1-testing.orig/tools/console/client/main.c
++++ xen-4.1.1-testing/tools/console/client/main.c
@@ -96,6 +96,7 @@ static int get_pty_fd(struct xs_handle *
* Assumes there is already a watch set in the store for this path. */
{
++++++ xend-config-enable-dump-comment.patch ++++++
bnc#684305
---
tools/examples/xend-config.sxp | 3 +++
1 file changed, 3 insertions(+)
Index: xen-4.1.1-testing/tools/examples/xend-config.sxp
===================================================================
--- xen-4.1.1-testing.orig/tools/examples/xend-config.sxp
+++ xen-4.1.1-testing/tools/examples/xend-config.sxp
@@ -250,6 +250,9 @@
(dom0-cpus 0)
# Whether to enable core-dumps when domains crash.
+# This setting overrides the per-domain dump value 'on_crash' and causes a
+# core dump on all crashed domains. For finer grain control, it is best to
+# disable this setting (which is default) and use the per-domain controls.
#(enable-dump no)
# The tool used for initiating virtual TPM migration
++++++ xend-config.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/init.d/sysconfig.xendomains
+Index: xen-4.1.1-testing/tools/hotplug/Linux/init.d/sysconfig.xendomains
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/init.d/sysconfig.xendomains
-+++ xen-4.1.0-testing/tools/hotplug/Linux/init.d/sysconfig.xendomains
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/init.d/sysconfig.xendomains
++++ xen-4.1.1-testing/tools/hotplug/Linux/init.d/sysconfig.xendomains
@@ -1,4 +1,4 @@
-## Path: System/xen
+## Path: System/Virtualization
@@ -27,10 +27,10 @@
## Type: integer
## Default: 300
-Index: xen-4.1.0-testing/tools/examples/xend-config.sxp
+Index: xen-4.1.1-testing/tools/examples/xend-config.sxp
===================================================================
---- xen-4.1.0-testing.orig/tools/examples/xend-config.sxp
-+++ xen-4.1.0-testing/tools/examples/xend-config.sxp
+--- xen-4.1.1-testing.orig/tools/examples/xend-config.sxp
++++ xen-4.1.1-testing/tools/examples/xend-config.sxp
@@ -58,11 +58,12 @@
++++++ xend-core-dump-loc.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -2303,7 +2303,7 @@ class XendDomainInfo:
# To prohibit directory traversal
based_name = os.path.basename(self.info['name_label'])
++++++ xend-devid-or-name.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -11,10 +11,10 @@
Signed-off-by: Jim Fehlig
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -1203,6 +1203,9 @@ class XendDomainInfo:
except ValueError:
pass
++++++ xend-disable-internal-logrotate.patch ++++++
Disable internal logging and enable the logrotate.conf from the xen package.
This allows larger xend.log files
---
tools/python/xen/xend/XendLogging.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: xen-4.1.1-testing/tools/python/xen/xend/XendLogging.py
===================================================================
--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendLogging.py
+++ xen-4.1.1-testing/tools/python/xen/xend/XendLogging.py
@@ -76,7 +76,7 @@ if 'TRACE' not in logging.__dict__:
log = logging.getLogger("xend")
-MAX_BYTES = 1 << 20 # 1MB
+MAX_BYTES = 0
BACKUP_COUNT = 5
STDERR_FORMAT = "[%(name)s] %(levelname)s (%(module)s:%(lineno)d) %(message)s"
++++++ xend-domain-lock.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -8,11 +8,11 @@
tools/python/xen/xend/XendOptions.py | 29 +++++++++++
7 files changed, 290 insertions(+)
-Index: xen-4.1.0-testing/tools/examples/xend-config.sxp
+Index: xen-4.1.1-testing/tools/examples/xend-config.sxp
===================================================================
---- xen-4.1.0-testing.orig/tools/examples/xend-config.sxp
-+++ xen-4.1.0-testing/tools/examples/xend-config.sxp
-@@ -321,6 +321,65 @@
+--- xen-4.1.1-testing.orig/tools/examples/xend-config.sxp
++++ xen-4.1.1-testing/tools/examples/xend-config.sxp
+@@ -324,6 +324,65 @@
# device assignment could really work properly even after we do this.
#(pci-passthrough-strict-check yes)
@@ -78,10 +78,10 @@
# If we have a very big scsi device configuration, start of xend is slow,
# because xend scans all the device paths to build its internal PSCSI device
# list. If we need only a few devices for assigning to a guest, we can reduce
-Index: xen-4.1.0-testing/tools/hotplug/Linux/Makefile
+Index: xen-4.1.1-testing/tools/hotplug/Linux/Makefile
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/Makefile
-+++ xen-4.1.0-testing/tools/hotplug/Linux/Makefile
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/Makefile
++++ xen-4.1.1-testing/tools/hotplug/Linux/Makefile
@@ -22,6 +22,7 @@ XEN_SCRIPTS += vtpm vtpm-delete
XEN_SCRIPTS += xen-hotplug-cleanup
XEN_SCRIPTS += external-device-migrate
@@ -90,10 +90,10 @@
XEN_SCRIPT_DATA = xen-script-common.sh locking.sh logging.sh
XEN_SCRIPT_DATA += xen-hotplug-common.sh xen-network-common.sh vif-common.sh
XEN_SCRIPT_DATA += block-common.sh vtpm-common.sh vtpm-hotplug-common.sh
-Index: xen-4.1.0-testing/tools/hotplug/Linux/domain-lock
+Index: xen-4.1.1-testing/tools/hotplug/Linux/domain-lock
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/hotplug/Linux/domain-lock
++++ xen-4.1.1-testing/tools/hotplug/Linux/domain-lock
@@ -0,0 +1,83 @@
+#!/bin/bash
+
@@ -178,10 +178,10 @@
+ get_status $vm_path
+ ;;
+esac
-Index: xen-4.1.0-testing/tools/hotplug/Linux/vm-monitor
+Index: xen-4.1.1-testing/tools/hotplug/Linux/vm-monitor
===================================================================
--- /dev/null
-+++ xen-4.1.0-testing/tools/hotplug/Linux/vm-monitor
++++ xen-4.1.1-testing/tools/hotplug/Linux/vm-monitor
@@ -0,0 +1,41 @@
+#!/bin/bash
+
@@ -224,10 +224,10 @@
+elif [ $0 = "$basedir/vm-monitor" ]; then
+ monitor $*
+fi
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendCheckpoint.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendCheckpoint.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendCheckpoint.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendCheckpoint.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendCheckpoint.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendCheckpoint.py
@@ -133,6 +133,8 @@ def save(fd, dominfo, network, live, dst
dominfo.shutdown('suspend')
dominfo.waitForSuspend()
@@ -245,10 +245,10 @@
return dominfo
except Exception, exn:
dominfo.destroy()
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -470,6 +470,7 @@ class XendDomainInfo:
if self._stateGet() in (XEN_API_VM_POWER_STATE_HALTED, XEN_API_VM_POWER_STATE_SUSPENDED, XEN_API_VM_POWER_STATE_CRASHED):
@@ -344,10 +344,10 @@
def __str__(self):
return '<domain id=%s name=%s memory=%s state=%s>' % \
(str(self.domid), self.info['name_label'],
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendOptions.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendOptions.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendOptions.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendOptions.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendOptions.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendOptions.py
@@ -154,6 +154,17 @@ class XendOptions:
use loose check automatically if necessary."""
pci_dev_assign_strict_check_default = True
++++++ xend-sysconfig.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/hotplug/Linux/init.d/sysconfig.xencommons
+Index: xen-4.1.1-testing/tools/hotplug/Linux/init.d/sysconfig.xencommons
===================================================================
---- xen-4.1.0-testing.orig/tools/hotplug/Linux/init.d/sysconfig.xencommons
-+++ xen-4.1.0-testing/tools/hotplug/Linux/init.d/sysconfig.xencommons
+--- xen-4.1.1-testing.orig/tools/hotplug/Linux/init.d/sysconfig.xencommons
++++ xen-4.1.1-testing/tools/hotplug/Linux/init.d/sysconfig.xencommons
@@ -1,11 +1,31 @@
+## Path: System/Virtualization
+## Type: string(none,guest,hv,all)
++++++ xenpaging.autostart.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,14 +1,21 @@
-Subject: xenpaging: start xenpaging via config option
+xenpaging: start xenpaging via config option
Start xenpaging via config option.
-TODO: add config option for pagefile directory
TODO: add libxl support
TODO: parse config values like 42K, 42M, 42G, 42%
Signed-off-by: Olaf Hering
---
+v4:
+ add config option for pagefile directory
+ add config option to enable debug
+ add config option to set polic mru_size
+ fail if chdir fails
+ force self.xenpaging* variables to be strings because a xm new may turn some
+ of them into type int and later os.execve fails with a TypeError
+
v3:
decouple create/destroycreateXenPaging from _create/_removeDevices
init xenpaging variable to 0 if xenpaging is not in config file to
@@ -18,80 +25,105 @@
unlink logfile instead of truncating it.
allows hardlinking for further inspection
- tools/examples/xmexample.hvm | 3 +
- tools/python/README.XendConfig | 1
- tools/python/README.sxpcfg | 1
- tools/python/xen/xend/XendConfig.py | 3 +
+---
+ tools/examples/xmexample.hvm | 12 ++++
+ tools/python/README.XendConfig | 4 +
+ tools/python/README.sxpcfg | 4 +
+ tools/python/xen/xend/XendConfig.py | 12 ++++
tools/python/xen/xend/XendDomainInfo.py | 12 ++++
- tools/python/xen/xend/image.py | 84 ++++++++++++++++++++++++++++++++
- tools/python/xen/xm/create.py | 5 +
- tools/python/xen/xm/xenapi_create.py | 1
- 8 files changed, 110 insertions(+)
+ tools/python/xen/xend/image.py | 87 ++++++++++++++++++++++++++++++++
+ tools/python/xen/xm/create.py | 20 +++++++
+ tools/python/xen/xm/xenapi_create.py | 4 +
+ 8 files changed, 155 insertions(+)
-Index: xen-4.0.2-testing/tools/examples/xmexample.hvm
+Index: xen-4.1.1-testing/tools/examples/xmexample.hvm
===================================================================
---- xen-4.0.2-testing.orig/tools/examples/xmexample.hvm
-+++ xen-4.0.2-testing/tools/examples/xmexample.hvm
-@@ -127,6 +127,9 @@ disk = [ 'file:/var/lib/xen/images/disk.
+--- xen-4.1.1-testing.orig/tools/examples/xmexample.hvm
++++ xen-4.1.1-testing/tools/examples/xmexample.hvm
+@@ -127,6 +127,18 @@ disk = [ 'file:/var/lib/xen/images/disk.
# Device Model to be used
device_model = 'qemu-dm'
-+# xenpaging, number of pages
-+xenpaging = 42
++# number of guest pages to page-out, or -1 for entire guest memory range
++xenpaging=42
++
++# directory to store guest page file
++#xenpaging_workdir="/var/lib/xen/xenpaging"
++
++# enable debug output in pager
++#xenpaging_debug=0
++
++# number of paged-in pages to keep in memory
++#xenpaging_policy_mru_size=1024
+
#-----------------------------------------------------------------------------
# boot on floppy (a), hard disk (c), Network (n) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
-Index: xen-4.0.2-testing/tools/python/README.XendConfig
+Index: xen-4.1.1-testing/tools/python/README.XendConfig
===================================================================
---- xen-4.0.2-testing.orig/tools/python/README.XendConfig
-+++ xen-4.0.2-testing/tools/python/README.XendConfig
-@@ -120,6 +120,7 @@ otherConfig
+--- xen-4.1.1-testing.orig/tools/python/README.XendConfig
++++ xen-4.1.1-testing/tools/python/README.XendConfig
+@@ -120,6 +120,10 @@ otherConfig
image.vncdisplay
image.vncunused
image.hvm.device_model
+ image.hvm.xenpaging
++ image.hvm.xenpaging_workdir
++ image.hvm.xenpaging_debug
++ image.hvm.xenpaging_policy_mru_size
image.hvm.display
image.hvm.xauthority
image.hvm.vncconsole
-Index: xen-4.0.2-testing/tools/python/README.sxpcfg
+Index: xen-4.1.1-testing/tools/python/README.sxpcfg
===================================================================
---- xen-4.0.2-testing.orig/tools/python/README.sxpcfg
-+++ xen-4.0.2-testing/tools/python/README.sxpcfg
-@@ -51,6 +51,7 @@ image
+--- xen-4.1.1-testing.orig/tools/python/README.sxpcfg
++++ xen-4.1.1-testing/tools/python/README.sxpcfg
+@@ -51,6 +51,10 @@ image
- vncunused
(HVM)
- device_model
+ - xenpaging
++ - xenpaging_workdir
++ - xenpaging_debug
++ - xenpaging_policy_mru_size
- display
- xauthority
- vncconsole
-Index: xen-4.0.2-testing/tools/python/xen/xend/XendConfig.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendConfig.py
===================================================================
---- xen-4.0.2-testing.orig/tools/python/xen/xend/XendConfig.py
-+++ xen-4.0.2-testing/tools/python/xen/xend/XendConfig.py
-@@ -145,6 +145,7 @@ XENAPI_PLATFORM_CFG_TYPES = {
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendConfig.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendConfig.py
+@@ -147,6 +147,10 @@ XENAPI_PLATFORM_CFG_TYPES = {
'apic': int,
'boot': str,
'device_model': str,
+ 'xenpaging': str,
++ 'xenpaging_workdir': str,
++ 'xenpaging_debug': str,
++ 'xenpaging_policy_mru_size': str,
'loader': str,
'display' : str,
'fda': str,
-@@ -508,6 +509,8 @@ class XendConfig(dict):
+@@ -514,6 +518,14 @@ class XendConfig(dict):
self['platform']['nomigrate'] = 0
if self.is_hvm():
+ if 'xenpaging' not in self['platform']:
+ self['platform']['xenpaging'] = "0"
++ if 'xenpaging_workdir' not in self['platform']:
++ self['platform']['xenpaging_workdir'] = "/var/lib/xen/xenpaging"
++ if 'xenpaging_debug' not in self['platform']:
++ self['platform']['xenpaging_debug'] = "0"
++ if 'xenpaging_policy_mru_size' not in self['platform']:
++ self['platform']['xenpaging_policy_mru_size'] = "0"
if 'timer_mode' not in self['platform']:
self['platform']['timer_mode'] = 1
if 'extid' in self['platform'] and int(self['platform']['extid']) == 1:
-Index: xen-4.0.2-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-4.0.2-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.0.2-testing/tools/python/xen/xend/XendDomainInfo.py
-@@ -2293,6 +2293,8 @@ class XendDomainInfo:
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomainInfo.py
+@@ -2277,6 +2277,8 @@ class XendDomainInfo:
self.info['name_label'], self.domid, self.info['uuid'],
new_name, new_uuid)
self._unwatchVm()
@@ -100,7 +132,7 @@
self._releaseDevices()
# Remove existing vm node in xenstore
self._removeVm()
-@@ -2954,6 +2956,9 @@ class XendDomainInfo:
+@@ -2948,6 +2950,9 @@ class XendDomainInfo:
self._createDevices()
@@ -110,7 +142,7 @@
self.image.cleanupTmpImages()
self.info['start_time'] = time.time()
-@@ -2978,6 +2983,8 @@ class XendDomainInfo:
+@@ -2972,6 +2977,8 @@ class XendDomainInfo:
self.refresh_shutdown_lock.acquire()
try:
self.unwatchShutdown()
@@ -119,7 +151,7 @@
self._releaseDevices()
bootloader_tidy(self)
-@@ -3062,6 +3069,7 @@ class XendDomainInfo:
+@@ -3056,6 +3063,7 @@ class XendDomainInfo:
self.image = image.create(self, self.info)
if self.image:
self._createDevices(True)
@@ -127,7 +159,7 @@
self._storeDomDetails()
self._registerWatches()
self.refreshShutdown()
-@@ -3202,6 +3210,8 @@ class XendDomainInfo:
+@@ -3196,6 +3204,8 @@ class XendDomainInfo:
# could also fetch a parsed note from xenstore
fast = self.info.get_notes().get('SUSPEND_CANCEL') and 1 or 0
if not fast:
@@ -136,7 +168,7 @@
self._releaseDevices()
self.testDeviceComplete()
self.testvifsComplete()
-@@ -3217,6 +3227,8 @@ class XendDomainInfo:
+@@ -3211,6 +3221,8 @@ class XendDomainInfo:
self._storeDomDetails()
self._createDevices()
@@ -145,30 +177,29 @@
log.debug("XendDomainInfo.resumeDomain: devices created")
xc.domain_resume(self.domid, fast)
-Index: xen-4.0.2-testing/tools/python/xen/xend/image.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/image.py
===================================================================
---- xen-4.0.2-testing.orig/tools/python/xen/xend/image.py
-+++ xen-4.0.2-testing/tools/python/xen/xend/image.py
-@@ -122,12 +122,14 @@ class ImageHandler:
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/image.py
++++ xen-4.1.1-testing/tools/python/xen/xend/image.py
+@@ -122,6 +122,11 @@ class ImageHandler:
self.vm.permissionsVm("image/cmdline", { 'dom': self.vm.getDomid(), 'read': True } )
self.device_model = vmConfig['platform'].get('device_model')
-+ self.xenpaging = vmConfig['platform'].get('xenpaging')
++ self.xenpaging = str(vmConfig['platform'].get('xenpaging'))
++ self.xenpaging_workdir = str(vmConfig['platform'].get('xenpaging_workdir'))
++ self.xenpaging_debug = str(vmConfig['platform'].get('xenpaging_debug'))
++ self.xenpaging_policy_mru_size = str(vmConfig['platform'].get('xenpaging_policy_mru_size'))
++ self.xenpaging_pid = None
self.display = vmConfig['platform'].get('display')
self.xauthority = vmConfig['platform'].get('xauthority')
- self.vncconsole = int(vmConfig['platform'].get('vncconsole', 0))
- self.dmargs = self.parseDeviceModelArgs(vmConfig)
- self.pid = None
-+ self.xenpaging_pid = None
- rtc_timeoffset = int(vmConfig['platform'].get('rtc_timeoffset', 0))
- if int(vmConfig['platform'].get('localtime', 0)):
- if time.localtime(time.time())[8]:
-@@ -392,6 +394,88 @@ class ImageHandler:
+@@ -392,6 +397,88 @@ class ImageHandler:
sentinel_fifos_inuse[sentinel_path_fifo] = 1
self.sentinel_path_fifo = sentinel_path_fifo
+ def createXenPaging(self):
++ if not self.vm.info.is_hvm():
++ return
+ if self.xenpaging == "0":
+ return
+ if self.xenpaging_pid:
@@ -178,6 +209,10 @@
+ args = args + ([ "%d" % self.vm.getDomid()])
+ args = args + ([ "%s" % self.xenpaging])
+ env = dict(os.environ)
++ if not self.xenpaging_debug == "0":
++ env['XENPAGING_DEBUG'] = self.xenpaging_debug
++ if not self.xenpaging_policy_mru_size == "0":
++ env['XENPAGING_POLICY_MRU_SIZE'] = self.xenpaging_policy_mru_size
+ self.xenpaging_logfile = "/var/log/xen/xenpaging-%s.log" % str(self.vm.info['name_label'])
+ logfile_mode = os.O_WRONLY|os.O_CREAT|os.O_APPEND|os.O_TRUNC
+ null = os.open("/dev/null", os.O_RDONLY)
@@ -191,25 +226,19 @@
+ xenpaging_pid = os.fork()
+ if xenpaging_pid == 0: #child
+ try:
-+ xenpaging_dir = "/var/lib/xen/xenpaging"
+ osdep.postfork(contract)
+ os.dup2(null, 0)
+ os.dup2(logfd, 1)
+ os.dup2(logfd, 2)
-+ try:
-+ os.chdir(xenpaging_dir)
-+ except:
-+ log.warn("chdir %s failed" % xenpaging_dir)
++ os.chdir(self.xenpaging_workdir)
+ try:
+ log.info("starting %s" % args)
+ os.execve(xenpaging_bin, args, env)
+ except Exception, e:
-+ print >>sys.stderr, (
-+ 'failed to execute xenpaging: %s: %s' %
-+ xenpaging_bin, utils.exception_string(e))
++ log.warn('failed to execute xenpaging: %s' % utils.exception_string(e))
+ os._exit(126)
-+ except Exception, e:
-+ log.warn("staring xenpaging in %s failed" % xenpaging_dir)
++ except:
++ log.warn("starting xenpaging in %s failed" % self.xenpaging_workdir)
+ os._exit(127)
+ else:
+ osdep.postfork(contract, abandon=True)
@@ -253,11 +282,11 @@
def createDeviceModel(self, restore = False):
if self.device_model is None:
return
-Index: xen-4.0.2-testing/tools/python/xen/xm/create.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/create.py
===================================================================
---- xen-4.0.2-testing.orig/tools/python/xen/xm/create.py
-+++ xen-4.0.2-testing/tools/python/xen/xm/create.py
-@@ -495,6 +495,10 @@ gopts.var('nfs_root', val="PATH",
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/create.py
++++ xen-4.1.1-testing/tools/python/xen/xm/create.py
+@@ -495,6 +495,22 @@ gopts.var('nfs_root', val="PATH",
fn=set_value, default=None,
use="Set the path of the root NFS directory.")
@@ -265,26 +294,44 @@
+ fn=set_value, default='0',
+ use="Number of pages to swap.")
+
++gopts.var('xenpaging_workdir', val='PATH',
++ fn=set_value, default='/var/lib/xen/xenpaging',
++ use="Number of pages to swap.")
++
++gopts.var('xenpaging_debug', val='NUM',
++ fn=set_value, default='0',
++ use="Number of pages to swap.")
++
++gopts.var('xenpaging_policy_mru_size', val='NUM',
++ fn=set_value, default='0',
++ use="Number of pages to swap.")
++
gopts.var('device_model', val='FILE',
fn=set_value, default=None,
use="Path to device model program.")
-@@ -1080,6 +1084,7 @@ def configure_hvm(config_image, vals):
+@@ -1080,6 +1096,10 @@ def configure_hvm(config_image, vals):
args = [ 'acpi', 'apic',
'boot',
'cpuid', 'cpuid_check',
+ 'xenpaging',
++ 'xenpaging_workdir',
++ 'xenpaging_debug',
++ 'xenpaging_policy_mru_size',
'device_model', 'display',
'fda', 'fdb',
'gfx_passthru', 'guest_os_type',
-Index: xen-4.0.2-testing/tools/python/xen/xm/xenapi_create.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/xenapi_create.py
===================================================================
---- xen-4.0.2-testing.orig/tools/python/xen/xm/xenapi_create.py
-+++ xen-4.0.2-testing/tools/python/xen/xm/xenapi_create.py
-@@ -1085,6 +1085,7 @@ class sxp2xml:
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/xenapi_create.py
++++ xen-4.1.1-testing/tools/python/xen/xm/xenapi_create.py
+@@ -1085,6 +1085,10 @@ class sxp2xml:
'acpi',
'apic',
'boot',
+ 'xenpaging',
++ 'xenpaging_workdir',
++ 'xenpaging_debug',
++ 'xenpaging_policy_mru_size',
'device_model',
'loader',
'fda',
++++++ xenpaging.catch-xc_mem_paging_resume-error.patch ++++++
xenpaging: catch xc_mem_paging_resume errors
In the unlikely event that xc_mem_paging_resume() fails, do not overwrite the
error with the return value from xc_evtchn_notify()
Signed-off-by: Olaf Hering
---
tools/xenpaging/xenpaging.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
Index: xen-4.1.1-testing/tools/xenpaging/xenpaging.c
===================================================================
--- xen-4.1.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.1.1-testing/tools/xenpaging/xenpaging.c
@@ -405,8 +405,9 @@ static int xenpaging_resume_page(xenpagi
/* Tell Xen page is ready */
ret = xc_mem_paging_resume(paging->xc_handle, paging->mem_event.domain_id,
rsp->gfn);
- ret = xc_evtchn_notify(paging->mem_event.xce_handle,
- paging->mem_event.port);
+ if ( ret == 0 )
+ ret = xc_evtchn_notify(paging->mem_event.xce_handle,
+ paging->mem_event.port);
out:
return ret;
++++++ xenpaging.guest_remove_page.slow_path.patch ++++++
xenpaging: correct dropping pages to avoid full ring buffer
Doing a one-way channel from Xen to xenpaging is not possible with the
current ring buffer implementation. xenpaging uses the mem_event ring
buffer, which expects request/response pairs to make progress. The
previous patch, which tried to establish a one-way communication from
Xen to xenpaging, stalled the guest once the buffer was filled up with
requests. Correct page-dropping by taking the slow path and let
p2m_mem_paging_resume() consume the response from xenpaging. This makes
room for yet another request/response pair and avoids hanging guests.
Signed-off-by: Olaf Hering
---
tools/xenpaging/xenpaging.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
Index: xen-4.1.1-testing/tools/xenpaging/xenpaging.c
===================================================================
--- xen-4.1.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.1.1-testing/tools/xenpaging/xenpaging.c
@@ -653,19 +653,19 @@ int main(int argc, char *argv[])
ERROR("Error populating page");
goto out;
}
+ }
- /* Prepare the response */
- rsp.gfn = req.gfn;
- rsp.p2mt = req.p2mt;
- rsp.vcpu_id = req.vcpu_id;
- rsp.flags = req.flags;
+ /* Prepare the response */
+ rsp.gfn = req.gfn;
+ rsp.p2mt = req.p2mt;
+ rsp.vcpu_id = req.vcpu_id;
+ rsp.flags = req.flags;
- rc = xenpaging_resume_page(paging, &rsp, 1);
- if ( rc != 0 )
- {
- ERROR("Error resuming page");
- goto out;
- }
+ rc = xenpaging_resume_page(paging, &rsp, 1);
+ if ( rc != 0 )
+ {
+ ERROR("Error resuming page");
+ goto out;
}
/* Evict a new page to replace the one we just paged in */
++++++ xenpaging.mem_event-no-p2mt.patch ++++++
xenpaging: do not bounce p2mt to xenpaging
Do not bounce p2mt to xenpaging because p2m_mem_paging_populate and
p2m_mem_paging_resume dont make use of p2mt. Only pages of type
p2m_ram_rw will be paged-out, and during page-in this type has to be
restored.
Signed-off-by: Olaf Hering
---
tools/xenpaging/xenpaging.c | 4 ----
xen/arch/x86/mm/p2m.c | 1 -
2 files changed, 5 deletions(-)
Index: xen-4.1.1-testing/tools/xenpaging/xenpaging.c
===================================================================
--- xen-4.1.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.1.1-testing/tools/xenpaging/xenpaging.c
@@ -657,7 +657,6 @@ int main(int argc, char *argv[])
/* Prepare the response */
rsp.gfn = req.gfn;
- rsp.p2mt = req.p2mt;
rsp.vcpu_id = req.vcpu_id;
rsp.flags = req.flags;
@@ -674,10 +673,8 @@ int main(int argc, char *argv[])
else
{
DPRINTF("page already populated (domain = %d; vcpu = %d;"
- " p2mt = %x;"
" gfn = %"PRIx64"; paused = %d)\n",
paging->mem_event.domain_id, req.vcpu_id,
- req.p2mt,
req.gfn, req.flags & MEM_EVENT_FLAG_VCPU_PAUSED);
/* Tell Xen to resume the vcpu */
@@ -686,7 +683,6 @@ int main(int argc, char *argv[])
{
/* Prepare the response */
rsp.gfn = req.gfn;
- rsp.p2mt = req.p2mt;
rsp.vcpu_id = req.vcpu_id;
rsp.flags = req.flags;
Index: xen-4.1.1-testing/xen/arch/x86/mm/p2m.c
===================================================================
--- xen-4.1.1-testing.orig/xen/arch/x86/mm/p2m.c
+++ xen-4.1.1-testing/xen/arch/x86/mm/p2m.c
@@ -2975,7 +2975,6 @@ void p2m_mem_paging_populate(struct p2m_
/* Send request to pager */
req.gfn = gfn;
- req.p2mt = p2mt;
req.vcpu_id = v->vcpu_id;
mem_event_put_request(d, &req);
++++++ xenpaging.no-srand.patch ++++++
xenpaging: remove srand call
The policy uses now a linear algorithm instead of a random one.
Remove the call to srand().
Signed-off-by: Olaf Hering
---
tools/xenpaging/xenpaging.c | 3 ---
1 file changed, 3 deletions(-)
Index: xen-4.1.1-testing/tools/xenpaging/xenpaging.c
===================================================================
--- xen-4.1.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.1.1-testing/tools/xenpaging/xenpaging.c
@@ -544,9 +544,6 @@ int main(int argc, char *argv[])
domain_id = atoi(argv[1]);
num_pages = atoi(argv[2]);
- /* Seed random-number generator */
- srand(time(NULL));
-
/* Initialise domain paging */
paging = xenpaging_init(domain_id);
if ( paging == NULL )
++++++ xenpaging.return-void.patch ++++++
xenpaging: remove return values from functions that can not fail
get_request() and put_response() can not fail, remove return value
and update calling functions.
Signed-off-by: Olaf Hering
---
tools/xenpaging/xenpaging.c | 19 ++++---------------
1 file changed, 4 insertions(+), 15 deletions(-)
Index: xen-4.1.1-testing/tools/xenpaging/xenpaging.c
===================================================================
--- xen-4.1.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.1.1-testing/tools/xenpaging/xenpaging.c
@@ -297,7 +297,7 @@ static int xenpaging_teardown(xenpaging_
return -1;
}
-static int get_request(mem_event_t *mem_event, mem_event_request_t *req)
+static void get_request(mem_event_t *mem_event, mem_event_request_t *req)
{
mem_event_back_ring_t *back_ring;
RING_IDX req_cons;
@@ -316,11 +316,9 @@ static int get_request(mem_event_t *mem_
back_ring->sring->req_event = req_cons + 1;
mem_event_ring_unlock(mem_event);
-
- return 0;
}
-static int put_response(mem_event_t *mem_event, mem_event_response_t *rsp)
+static void put_response(mem_event_t *mem_event, mem_event_response_t *rsp)
{
mem_event_back_ring_t *back_ring;
RING_IDX rsp_prod;
@@ -339,8 +337,6 @@ static int put_response(mem_event_t *mem
RING_PUSH_RESPONSES(back_ring);
mem_event_ring_unlock(mem_event);
-
- return 0;
}
static int xenpaging_evict_page(xenpaging_t *paging,
@@ -400,9 +396,7 @@ static int xenpaging_resume_page(xenpagi
int ret;
/* Put the page info on the ring */
- ret = put_response(&paging->mem_event, rsp);
- if ( ret != 0 )
- goto out;
+ put_response(&paging->mem_event, rsp);
/* Notify policy of page being paged in */
if ( notify_policy )
@@ -612,12 +606,7 @@ int main(int argc, char *argv[])
while ( RING_HAS_UNCONSUMED_REQUESTS(&paging->mem_event.back_ring) )
{
- rc = get_request(&paging->mem_event, &req);
- if ( rc != 0 )
- {
- ERROR("Error getting request");
- goto out;
- }
+ get_request(&paging->mem_event, &req);
/* Check if the page has already been paged in */
if ( test_and_clear_bit(req.gfn, paging->bitmap) )
++++++ xenpaging.xenpaging_populate_page-gfn.patch ++++++
xenpaging: pass integer to xenpaging_populate_page
Pass gfn as integer to xenpaging_populate_page(). xc_map_foreign_pages()
takes a pointer to a list of gfns, but its a const pointer. So writing
the value back to the caller is not needed.
Signed-off-by: Olaf Hering
---
tools/xenpaging/xenpaging.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
Index: xen-4.1.1-testing/tools/xenpaging/xenpaging.c
===================================================================
--- xen-4.1.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.1.1-testing/tools/xenpaging/xenpaging.c
@@ -413,28 +413,24 @@ static int xenpaging_resume_page(xenpagi
return ret;
}
-static int xenpaging_populate_page(xenpaging_t *paging,
- uint64_t *gfn, int fd, int i)
+static int xenpaging_populate_page(xenpaging_t *paging, xen_pfn_t gfn, int fd, int i)
{
xc_interface *xch = paging->xc_handle;
- unsigned long _gfn;
void *page;
int ret;
unsigned char oom = 0;
- _gfn = *gfn;
- DPRINTF("populate_page < gfn %lx pageslot %d\n", _gfn, i);
+ DPRINTF("populate_page < gfn %"PRI_xen_pfn" pageslot %d\n", gfn, i);
do
{
/* Tell Xen to allocate a page for the domain */
- ret = xc_mem_paging_prep(xch, paging->mem_event.domain_id,
- _gfn);
+ ret = xc_mem_paging_prep(xch, paging->mem_event.domain_id, gfn);
if ( ret != 0 )
{
if ( errno == ENOMEM )
{
if ( oom++ == 0 )
- DPRINTF("ENOMEM while preparing gfn %lx\n", _gfn);
+ DPRINTF("ENOMEM while preparing gfn %"PRI_xen_pfn"\n", gfn);
sleep(1);
continue;
}
@@ -447,8 +443,7 @@ static int xenpaging_populate_page(xenpa
/* Map page */
ret = -EFAULT;
page = xc_map_foreign_pages(xch, paging->mem_event.domain_id,
- PROT_READ | PROT_WRITE, &_gfn, 1);
- *gfn = _gfn;
+ PROT_READ | PROT_WRITE, &gfn, 1);
if ( page == NULL )
{
ERROR("Error mapping page: page is null");
@@ -634,7 +629,7 @@ int main(int argc, char *argv[])
else
{
/* Populate the page */
- rc = xenpaging_populate_page(paging, &req.gfn, fd, i);
+ rc = xenpaging_populate_page(paging, req.gfn, fd, i);
if ( rc != 0 )
{
ERROR("Error populating page");
++++++ xm-create-xflag.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xm/create.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/create.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xm/create.py
-+++ xen-4.1.0-testing/tools/python/xen/xm/create.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/create.py
++++ xen-4.1.1-testing/tools/python/xen/xm/create.py
@@ -36,7 +36,7 @@ from xen.xend.server.DevConstants import
from xen.util import blkif
from xen.util import vscsi_util
@@ -33,10 +33,10 @@
if opts.vals.dryrun or opts.vals.xmldryrun:
return
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendAPIConstants.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendAPIConstants.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendAPIConstants.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendAPIConstants.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendAPIConstants.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendAPIConstants.py
@@ -45,8 +45,10 @@ XEN_API_ON_NORMAL_EXIT = [
XEN_API_ON_CRASH_BEHAVIOUR = [
'destroy',
++++++ xm-save-check-file.patch ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendAPI.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendAPI.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendAPI.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendAPI.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendAPI.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendAPI.py
@@ -1959,10 +1959,10 @@ class XendAPI(object):
bool(live), port, node, ssl, bool(chs))
return xen_api_success_void()
@@ -15,10 +15,10 @@
return xen_api_success_void()
def VM_restore(self, _, src, paused):
-Index: xen-4.1.0-testing/tools/python/xen/xend/XendDomain.py
+Index: xen-4.1.1-testing/tools/python/xen/xend/XendDomain.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xend/XendDomain.py
-+++ xen-4.1.0-testing/tools/python/xen/xend/XendDomain.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xend/XendDomain.py
++++ xen-4.1.1-testing/tools/python/xen/xend/XendDomain.py
@@ -1505,7 +1505,7 @@ class XendDomain:
pass
sock.close()
@@ -38,10 +38,10 @@
if dominfo.getDomid() == DOM0_ID:
raise XendError("Cannot save privileged domain %s" % str(domid))
if dominfo._stateGet() != DOM_STATE_RUNNING:
-Index: xen-4.1.0-testing/tools/python/xen/xm/main.py
+Index: xen-4.1.1-testing/tools/python/xen/xm/main.py
===================================================================
---- xen-4.1.0-testing.orig/tools/python/xen/xm/main.py
-+++ xen-4.1.0-testing/tools/python/xen/xm/main.py
+--- xen-4.1.1-testing.orig/tools/python/xen/xm/main.py
++++ xen-4.1.1-testing/tools/python/xen/xm/main.py
@@ -121,7 +121,7 @@ SUBCOMMAND_HELP = {
'reset' : ('<Domain>', 'Reset a domain.'),
'restore' : ('<CheckpointFile> [-p]',
++++++ xm-test-cleanup.diff ++++++
--- /var/tmp/diff_new_pack.PsGhnK/_old 2011-06-01 09:27:33.000000000 +0200
+++ /var/tmp/diff_new_pack.PsGhnK/_new 2011-06-01 09:27:33.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-4.1.0-testing/tools/xm-test/tests/save/01_save_basic_pos.py
+Index: xen-4.1.1-testing/tools/xm-test/tests/save/01_save_basic_pos.py
===================================================================
---- xen-4.1.0-testing.orig/tools/xm-test/tests/save/01_save_basic_pos.py
-+++ xen-4.1.0-testing/tools/xm-test/tests/save/01_save_basic_pos.py
+--- xen-4.1.1-testing.orig/tools/xm-test/tests/save/01_save_basic_pos.py
++++ xen-4.1.1-testing/tools/xm-test/tests/save/01_save_basic_pos.py
@@ -35,3 +35,9 @@ if s != 0:
# Make sure it's gone
if isDomainRunning(domain.getName()):
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org