diff --git a/hv_apic.patch b/hv_apic.patch new file mode 100644 index 0000000..a3f670a --- /dev/null +++ b/hv_apic.patch @@ -0,0 +1,149 @@ +Cleanup some APIC handling code in the HyperV shim. + +Signed-off-by: K. Y. Srinivasan + +Index: xen-4.0.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c +=================================================================== +--- xen-4.0.1-testing.orig/xen/arch/x86/hvm/hyperv/hv_intercept.c 2010-10-04 14:04:46.000000000 -0600 ++++ xen-4.0.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c 2010-10-04 18:30:42.000000000 -0600 +@@ -252,71 +252,6 @@ hv_get_max_vcpus_supported(void) + + + static inline void +-hv_read_icr(u64 *icr_content) +-{ +- unsigned long icr_low, icr_high; +- +- icr_low = vlapic_mmio_handler.read_handler(current, +- (vlapic_base_address(vcpu_vlapic(current)) + APIC_ICR), 4, &icr_low); +- icr_high = vlapic_mmio_handler.read_handler(current, +- (vlapic_base_address(vcpu_vlapic(current)) + APIC_ICR2), 4, &icr_high); +- *icr_content = (((u64)icr_high<< 32) | icr_low); +- +-} +- +-static inline void +-hv_read_tpr(u64 *tpr_content) +-{ +- +- vlapic_mmio_handler.read_handler(current, +- (vlapic_base_address(vcpu_vlapic(current)) + APIC_TASKPRI), +- 4, (unsigned long *)&tpr_content); +-} +- +-static inline void +-hv_write_eoi(u64 msr_content) +-{ +- u32 eoi = (u32)msr_content; +- +- vlapic_mmio_handler.write_handler(current, +- (vlapic_base_address(vcpu_vlapic(current)) + APIC_EOI), 4, eoi); +- +-} +- +-static inline void +-hv_write_icr(u64 msr_content) +-{ +- u32 icr_low, icr_high; +- icr_low = (u32)msr_content; +- icr_high = (u32)(msr_content >> 32); +- +- if (icr_high != 0) +- { +- vlapic_mmio_handler.write_handler(current, +- (vlapic_base_address(vcpu_vlapic(current)) + APIC_ICR2), 4, +- icr_high); +- } +- if (icr_low != 0) +- { +- vlapic_mmio_handler.write_handler(current, +- (vlapic_base_address(vcpu_vlapic(current)) + APIC_ICR), 4, +- icr_low); +- } +- +-} +- +-static inline void +-hv_write_tpr(u64 msr_content) +-{ +- u32 tpr = (u32)msr_content; +- +- +- vlapic_mmio_handler.write_handler(current, +- (vlapic_base_address(vcpu_vlapic(current)) + APIC_TASKPRI), 4, tpr); +- +-} +- +-static inline void + hv_hypercall_page_initialize(void *hypercall_page) + { + char *p; +@@ -810,21 +745,14 @@ hyperv_do_rd_msr(uint32_t idx, struct cp + regs->edx = (u32)(0x0); + break; + case HV_MSR_ICR: +- if (!hv_privilege_check(curp, HV_ACCESS_APIC_MSRS)) { +- goto msr_read_error; +- } +- hv_read_icr(&msr_content); ++ regs->eax = vlapic_get_reg(vcpu_vlapic(current), APIC_ICR); ++ regs->edx = vlapic_get_reg(vcpu_vlapic(current), APIC_ICR2); + #ifdef HV_STATS + cur_vcpu->stats.num_icr_reads++; + #endif +- regs->eax = (u32)(msr_content & 0xFFFFFFFF); +- regs->edx = (u32)(msr_content >> 32); + break; + case HV_MSR_TPR: +- if (!hv_privilege_check(curp, HV_ACCESS_APIC_MSRS)) { +- goto msr_read_error; +- } +- hv_read_tpr(&msr_content); ++ msr_content = vlapic_get_reg(vcpu_vlapic(current), APIC_TASKPRI); + #ifdef HV_STATS + cur_vcpu->stats.num_tpr_reads++; + #endif +@@ -922,28 +850,30 @@ hyperv_do_wr_msr(uint32_t idx, struct cp + goto msr_write_error; + + case HV_MSR_EOI: +- if (!hv_privilege_check(curp, HV_ACCESS_APIC_MSRS)) { +- goto msr_write_error; +- } +- hv_write_eoi(msr_content); ++ vlapic_EOI_set(vcpu_vlapic(current)); + #ifdef HV_STATS + cur_vcpu->stats.num_eoi_writes++; + #endif + break; +- case HV_MSR_ICR: +- if (!hv_privilege_check(curp, HV_ACCESS_APIC_MSRS)) { +- goto msr_write_error; +- } +- hv_write_icr(msr_content); ++ case HV_MSR_ICR: { ++ u32 eax = (u32)msr_content; ++ u32 edx = (u32)(msr_content >> 32); ++ struct vlapic *vlapic = vcpu_vlapic(current); ++ eax &= ~(1 << 12); ++ edx &= 0xff000000; ++ vlapic_set_reg(vlapic, APIC_ICR2, edx); ++ if ( vlapic_ipi(vlapic, eax, edx) == X86EMUL_OKAY ) ++ vlapic_set_reg(vlapic, APIC_ICR, eax); ++ break; ++ } ++ + #ifdef HV_STATS + cur_vcpu->stats.num_icr_writes++; + #endif + break; + case HV_MSR_TPR: +- if (!hv_privilege_check(curp, HV_ACCESS_APIC_MSRS)) { +- goto msr_write_error; +- } +- hv_write_tpr(msr_content); ++ vlapic_set_reg(vcpu_vlapic(current), APIC_TASKPRI, ++ (uint8_t)msr_content); + #ifdef HV_STATS + cur_vcpu->stats.num_tpr_writes++; + #endif diff --git a/xen.changes b/xen.changes index 3aa1633..703954c 100644 --- a/xen.changes +++ b/xen.changes @@ -1,3 +1,35 @@ +------------------------------------------------------------------- +Wed Oct 27 20:08:51 CEST 2010 - ohering@suse.de + +- fate#310510 - fix xenpaging + xenpaging.doc.patch +- add /var/lib/xen/xenpaging directory + +------------------------------------------------------------------- +Wed Oct 27 18:04:30 CEST 2010 - ohering@suse.de + +- fate#310510 - fix xenpaging + xenpaging.memory_op.patch, correct delay handling in retry loop + +------------------------------------------------------------------- +Wed Oct 27 08:50:17 MDT 2010 - ksrinivasan@novell.com + +- Some cleanup in the APIC handling code in the HyperV shim. + hv_apic.patch + +------------------------------------------------------------------- +Wed Oct 27 03:56:38 EDT 2010 - cyliu@novell.com + +- bnc#640370 - VM graphic console in VNC is corrupted + xenfb_32bpp.patch + +------------------------------------------------------------------- +Fri Oct 22 13:34:54 CEST 2010 - ohering@suse.de + +- fate#310510 - fix xenpaging + xenpaging.autostart_delay.patch + delay start of xenpaging 7 seconds for smooth BIOS startup + ------------------------------------------------------------------- Wed Oct 20 15:50:01 CEST 2010 - ohering@suse.de diff --git a/xen.spec b/xen.spec index 3d9b854..c41657b 100644 --- a/xen.spec +++ b/xen.spec @@ -25,35 +25,35 @@ ExclusiveArch: %ix86 x86_64 %define changeset 21326 %define xen_build_dir xen-4.0.1-testing %define with_kmp 1 -BuildRequires: LibVNCServer-devel -BuildRequires: SDL-devel -BuildRequires: automake -BuildRequires: bin86 -BuildRequires: curl-devel -BuildRequires: dev86 -BuildRequires: graphviz -BuildRequires: latex2html -BuildRequires: libjpeg-devel -BuildRequires: libxml2-devel -BuildRequires: ncurses-devel -BuildRequires: openssl -BuildRequires: openssl-devel -BuildRequires: pciutils-devel -BuildRequires: python-devel -BuildRequires: texinfo -BuildRequires: transfig +BuildRequires: LibVNCServer-devel +BuildRequires: SDL-devel +BuildRequires: automake +BuildRequires: bin86 +BuildRequires: curl-devel +BuildRequires: dev86 +BuildRequires: graphviz +BuildRequires: latex2html +BuildRequires: libjpeg-devel +BuildRequires: libxml2-devel +BuildRequires: ncurses-devel +BuildRequires: openssl +BuildRequires: openssl-devel +BuildRequires: pciutils-devel +BuildRequires: python-devel +BuildRequires: texinfo +BuildRequires: transfig %if %suse_version <= 1110 -BuildRequires: pmtools +BuildRequires: pmtools %else -BuildRequires: acpica +BuildRequires: acpica %endif %if %suse_version >= 1030 -BuildRequires: texlive -BuildRequires: texlive-latex +BuildRequires: texlive +BuildRequires: texlive-latex %else -BuildRequires: te_ams -BuildRequires: te_latex -BuildRequires: tetex +BuildRequires: te_ams +BuildRequires: te_latex +BuildRequires: tetex %endif %ifarch x86_64 BuildRequires: glibc-32bit glibc-devel-32bit @@ -229,6 +229,7 @@ Patch433: multi-xvdp.patch Patch434: check_device_status.patch Patch435: change_home_server.patch Patch436: altgr_2.patch +Patch437: xenfb_32bpp.patch # Jim's domain lock patch Patch450: xend-domain-lock.patch # Hypervisor and PV driver Patches @@ -252,26 +253,28 @@ Patch700: hv_tools.patch Patch701: hv_xen_base.patch Patch702: hv_xen_extension.patch Patch703: hv_win7_eoi_bug.patch +Patch704: hv_apic.patch # Build patch Patch999: tmp_build.patch # FATE 310510 -Patch10001: xenpaging.tools_xenpaging_cleanup.patch -Patch10002: xenpaging.pageout_policy.patch -Patch10003: xenpaging.xs_daemon_close.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.memory_op.patch -Patch10015: xenpaging.populate_only_if_paged.patch -Patch10017: xenpaging.autostart.patch -Patch10018: xenpaging.signal_handling.patch -Patch10019: xenpaging.MRU_SIZE.patch -Patch10020: xenpaging.get_paged_frame.patch -Patch10021: xenpaging.mem_event_check_ring-free_requests.patch -Patch10022: xenpaging.blacklist.patch -Patch10023: xenpaging.autostart_delay.patch -Patch10024: xenpaging.makefile.patch +Patch10001: xenpaging.tools_xenpaging_cleanup.patch +Patch10002: xenpaging.pageout_policy.patch +Patch10003: xenpaging.xs_daemon_close.patch +Patch10004: xenpaging.get_paged_frame.patch +Patch10005: 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.memory_op.patch +Patch10015: xenpaging.populate_only_if_paged.patch +Patch10017: xenpaging.autostart.patch +Patch10018: xenpaging.signal_handling.patch +Patch10019: xenpaging.MRU_SIZE.patch +Patch10021: xenpaging.mem_event_check_ring-free_requests.patch +Patch10022: xenpaging.blacklist.patch +Patch10023: xenpaging.autostart_delay.patch +Patch10040: xenpaging.doc.patch Url: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ BuildRoot: %{_tmppath}/%{name}-%{version}-build #%define pysite %(python -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib()") @@ -726,6 +729,7 @@ Authors: %patch434 -p1 %patch435 -p1 %patch436 -p1 +%patch437 -p1 %patch450 -p1 %patch500 -p1 %patch501 -p1 @@ -746,10 +750,13 @@ Authors: %patch701 -p1 %patch702 -p1 %patch703 -p1 +%patch704 -p1 %patch999 -p1 %patch10001 -p1 %patch10002 -p1 %patch10003 -p1 +%patch10004 -p1 +%patch10005 -p1 %patch10010 -p1 %patch10011 -p1 %patch10012 -p1 @@ -759,11 +766,11 @@ Authors: %patch10017 -p1 %patch10018 -p1 %patch10019 -p1 -%patch10020 -p1 %patch10021 -p1 %patch10022 -p1 %patch10023 -p1 -%patch10024 -p1 +%patch10040 -p1 + %build XEN_EXTRAVERSION=%version-%release @@ -859,7 +866,7 @@ for name in COPYING %SOURCE2 %SOURCE3 %SOURCE4; do install -m 644 $name $RPM_BUILD_ROOT/%{_defaultdocdir}/xen/ done mkdir -p $RPM_BUILD_ROOT/%{_defaultdocdir}/xen/misc -for name in vtpm.txt crashdb.txt sedf_scheduler_mini-HOWTO.txt; do +for name in vtpm.txt crashdb.txt sedf_scheduler_mini-HOWTO.txt xenpaging.txt; do install -m 644 docs/misc/$name $RPM_BUILD_ROOT/%{_defaultdocdir}/xen/misc/ done # init scripts @@ -902,6 +909,7 @@ mkdir -p $RPM_BUILD_ROOT/var/lib/xen/dump mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xend-db/domain mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xend-db/migrate mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xend-db/vnet +mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xenpaging mkdir -p $RPM_BUILD_ROOT/var/log/xen ln -s /var/lib/xen/images $RPM_BUILD_ROOT/etc/xen/images # Bootloader @@ -1017,6 +1025,7 @@ rm -rf $RPM_BUILD_ROOT/%{_libdir}/debug %dir %attr(700,root,root) /var/lib/xen/images %dir %attr(700,root,root) /var/lib/xen/save %dir %attr(700,root,root) /var/lib/xen/dump +%dir %attr(700,root,root) /var/lib/xen/xenpaging %dir /var/lib/xen/xend-db %dir /var/lib/xen/xend-db/domain %dir /var/lib/xen/xend-db/migrate diff --git a/xenfb_32bpp.patch b/xenfb_32bpp.patch new file mode 100644 index 0000000..d4c1a79 --- /dev/null +++ b/xenfb_32bpp.patch @@ -0,0 +1,41 @@ +Fix problem that press CTRL+ALT+2 and then CTRL+ALT+1 back to VM graphic console, screen cannot be restored. +xenfb_guest_copy only handles xenfb->depth=8 and 24 cases, because it assumes in xenfb->depth=16 or 32 cases, +buffer is shared, like in xenfb_update ==> qemu_create_displaysurface_from() does. But as the mentioned bug, +it didn't enter the xenfb_update do_resize hunk, buffer is not shared. +To solve that problem, either make it enter the xenfb_update do_resize hunk, or change xenfb_guest_copy(), let +it handle all cases. This patch is to let xenfb_guest_copy handle xenfb->depth=32 case. + +diff -r e4f337bb97f7 tools/ioemu-qemu-xen/hw/xenfb.c +--- a/tools/ioemu-qemu-xen/hw/xenfb.c Wed Oct 20 19:39:28 2010 +0800 ++++ b/tools/ioemu-qemu-xen/hw/xenfb.c Wed Oct 20 21:42:37 2010 +0800 +@@ -612,6 +612,12 @@ + uint8_t *data = ds_get_data(xenfb->c.ds); + + if (!is_buffer_shared(xenfb->c.ds->surface)) { ++ if (xenfb->depth == bpp) { ++ for (line = y; line < (y+h); line++) { ++ memcpy (data + (line * linesize) + (x * bpp / 8), xenfb->pixels + xenfb->offset + (line * xenfb->row_stride) + (x * xenfb->depth / 8), w * xenfb->depth / 8); ++ } ++ } ++ else{ + switch (xenfb->depth) { + case 8: + if (bpp == 16) { +@@ -631,9 +637,17 @@ + oops = 1; + } + break; ++ case 32: ++ if (bpp == 16) { ++ BLT(uint32_t, uint16_t, 8, 8, 8, 5, 6, 5); ++ } else { ++ oops = 1; ++ } ++ break; + default: + oops = 1; + } ++ } + } + if (oops) /* should not happen */ + xen_be_printf(&xenfb->c.xendev, 0, "%s: oops: convert %d -> %d bpp?\n", diff --git a/xenpaging.autostart_delay.patch b/xenpaging.autostart_delay.patch index 9ef1074..d9c8835 100644 --- a/xenpaging.autostart_delay.patch +++ b/xenpaging.autostart_delay.patch @@ -24,7 +24,7 @@ Signed-off-by: Olaf Hering + if self.xenpaging_delay == None: + log.warn("XXX creating /local/domain/0/xenpaging/%s" % self.vm.info['name_label']) + xstransact.Mkdir("/local/domain/0/xenpaging/%s" % self.vm.info['name_label']) -+ xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay', '0.0')) ++ xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay', '7.0')) + xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay_inc', '0.1')) + xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay_use', '5')) + xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay_used', '0')) diff --git a/xenpaging.doc.patch b/xenpaging.doc.patch new file mode 100644 index 0000000..91354f3 --- /dev/null +++ b/xenpaging.doc.patch @@ -0,0 +1,61 @@ +Subject: xenpaging: (sparse) documenation + +Write up some sparse documentation about xenpaging usage. + +Signed-off-by: Olaf Hering + +--- + docs/misc/xenpaging.txt | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +--- /dev/null ++++ xen-4.0.1-testing/docs/misc/xenpaging.txt +@@ -0,0 +1,48 @@ ++Warning: ++ ++The xenpaging code is new and not fully debugged. ++Usage of xenpaging can crash Xen or cause severe data corruption in the ++guest memory and its filesystems! ++ ++Description: ++ ++xenpaging writes memory pages of a given guest to a file and moves the ++pages back to the pool of available memory. Once the guests wants to ++access the paged-out memory, the page is read from disk and placed into ++memory. This allows the sum of all running guests to use more memory ++than physically available on the host. ++ ++Usage: ++ ++Once the guest is running, run xenpaging with the guest_id and the ++number of pages to page-out: ++ ++ chdir /var/lib/xen/xenpaging ++ xenpaging ++ ++To obtain the guest_id, run 'xm list'. ++xenpaging will write the pagefile to the current directory. ++Example with 128MB pagefile on guest 1: ++ ++ xenpaging 1 32768 ++ ++Caution: stopping xenpaging manually will cause the guest to stall or ++crash because the paged-out memory is not written back into the guest! ++ ++After a reboot of a guest, its guest_id changes, the current xenpaging ++binary has no target anymore. To automate restarting of xenpaging after ++guest reboot, specify the number if pages in the guest configuration ++file /etc/xen/vm/: ++ ++xenpaging=32768 ++ ++Redo the guest with 'xm create /etc/xen/vm/' to activate the ++changes. ++ ++ ++Todo: ++- implement stopping of xenpaging ++- implement/test live migration ++ ++ ++# vim: tw=72 diff --git a/xenpaging.get_paged_frame.patch b/xenpaging.get_paged_frame.patch index 6d9d6f3..4aedc49 100644 --- a/xenpaging.get_paged_frame.patch +++ b/xenpaging.get_paged_frame.patch @@ -5,6 +5,8 @@ If it is, request a page-in and return GNTST_eagain to the caller to indicate a retry of the hypercall is required. This fixes granttable errors when xenpaging is enabled in the guest. +(xen-unstable changeset: 22209:50c1cc209f8f) + Signed-off-by: Olaf Hering Already-Acked-by: Patrick Colp Already-Acked-by: Keir Fraser diff --git a/xenpaging.makefile.patch b/xenpaging.makefile.patch index 3086f0d..da51159 100644 --- a/xenpaging.makefile.patch +++ b/xenpaging.makefile.patch @@ -1,5 +1,9 @@ -Index: xen-4.0.1-testing/tools/xenpaging/Makefile -=================================================================== +(xen-unstable changeset: 21972:d3de6f484610) + +--- + tools/xenpaging/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + --- xen-4.0.1-testing.orig/tools/xenpaging/Makefile +++ xen-4.0.1-testing/tools/xenpaging/Makefile @@ -27,7 +27,7 @@ IBINS = xenpaging diff --git a/xenpaging.memory_op.patch b/xenpaging.memory_op.patch index bc55800..a8eec85 100644 --- a/xenpaging.memory_op.patch +++ b/xenpaging.memory_op.patch @@ -42,12 +42,12 @@ Signed-off-by: Olaf Hering tools/firmware/hvmloader/hvmloader.c | 9 +++- tools/firmware/hvmloader/util.c | 26 +++++++++++- tools/include/Makefile | 1 - tools/ioemu-qemu-xen/hw/vga.c | 5 +- - tools/libxc/xc_domain.c | 71 +++++++++++++++++++++-------------- + tools/ioemu-qemu-xen/hw/vga.c | 5 +- + tools/libxc/xc_domain.c | 73 ++++++++++++++++++++++------------- xen/arch/x86/mm.c | 26 ++++++++++-- xen/arch/x86/mm/p2m.c | 7 +++ - xen/common/memory.c | 25 +++++++++++- - 8 files changed, 131 insertions(+), 39 deletions(-) + xen/common/memory.c | 25 +++++++++++ + 8 files changed, 133 insertions(+), 39 deletions(-) --- xen-4.0.1-testing.orig/tools/firmware/hvmloader/hvmloader.c +++ xen-4.0.1-testing/tools/firmware/hvmloader/hvmloader.c @@ -182,7 +182,7 @@ Signed-off-by: Olaf Hering } --- xen-4.0.1-testing.orig/tools/libxc/xc_domain.c +++ xen-4.0.1-testing/tools/libxc/xc_domain.c -@@ -536,6 +536,44 @@ int xc_domain_get_tsc_info(int xc_handle +@@ -536,6 +536,46 @@ int xc_domain_get_tsc_info(int xc_handle return rc; } @@ -208,18 +208,20 @@ Signed-off-by: Olaf Hering + + if ( err > count || err < 0 || delay > 1000 * 1000) + { -+ fprintf(stderr, "%s: %d err %x count %lx start %lx delay %lu/%lu\n",__func__,cmd,err,count,start,delay,delay/666); ++ fprintf(stderr, "%s: %d err %x count %lx start %lx delay %lu/%lu\n",__func__,cmd,err,count,start,delay,delay/(1<<15)); + err = -1; + break; + } + + if ( err ) ++ { + delay = 0; ++ start += err; ++ count -= err; ++ } + -+ start += err; -+ count -= err; + usleep(delay); -+ delay += 666; /* 1500 iterations, 12 seconds */ ++ delay += 1 << 15; /* 31 iterations, 15 seconds */ + } + + return err; @@ -227,7 +229,7 @@ Signed-off-by: Olaf Hering int xc_domain_memory_increase_reservation(int xc_handle, uint32_t domid, -@@ -546,26 +584,18 @@ int xc_domain_memory_increase_reservatio +@@ -546,26 +586,18 @@ int xc_domain_memory_increase_reservatio { int err; struct xen_memory_reservation reservation = { @@ -256,7 +258,7 @@ Signed-off-by: Olaf Hering } return err; -@@ -579,14 +609,11 @@ int xc_domain_memory_decrease_reservatio +@@ -579,14 +611,11 @@ int xc_domain_memory_decrease_reservatio { int err; struct xen_memory_reservation reservation = { @@ -271,7 +273,7 @@ Signed-off-by: Olaf Hering if ( extent_start == NULL ) { DPRINTF("decrease_reservation extent_start is NULL!\n"); -@@ -594,16 +621,12 @@ int xc_domain_memory_decrease_reservatio +@@ -594,16 +623,12 @@ int xc_domain_memory_decrease_reservatio return -1; } @@ -290,7 +292,7 @@ Signed-off-by: Olaf Hering } return err; -@@ -618,23 +641,17 @@ int xc_domain_memory_populate_physmap(in +@@ -618,23 +643,17 @@ int xc_domain_memory_populate_physmap(in { int err; struct xen_memory_reservation reservation = { diff --git a/xenpaging.pageout_policy.patch b/xenpaging.pageout_policy.patch index 8937ce7..47e51b3 100644 --- a/xenpaging.pageout_policy.patch +++ b/xenpaging.pageout_policy.patch @@ -5,6 +5,7 @@ Up to now the code called the opposite function, which clears the (xenpaging internal) reference bit, instead of setting it and marking the page as gone. +(xen-unstable changeset: 22064:1bd1ba6f1aa4) Signed-off-by: Olaf Hering Already-Acked-by: Patrick Colp diff --git a/xenpaging.tools_xenpaging_cleanup.patch b/xenpaging.tools_xenpaging_cleanup.patch index 49105ef..36fc987 100644 --- a/xenpaging.tools_xenpaging_cleanup.patch +++ b/xenpaging.tools_xenpaging_cleanup.patch @@ -3,6 +3,7 @@ Subject: xenpaging: Fix-up xenpaging tool code. This isn't directly related to EPT checking, but does some general fix-ups to the xenpaging code (adds some extra frees, etc.) +(xen-unstable changeset: 21890:3263d0ff9476) Already-Signed-off-by: Patrick Colp Signed-off-by: Olaf Hering diff --git a/xenpaging.xs_daemon_close.patch b/xenpaging.xs_daemon_close.patch index 86748d9..972e4aa 100644 --- a/xenpaging.xs_daemon_close.patch +++ b/xenpaging.xs_daemon_close.patch @@ -1,4 +1,4 @@ -Subject: xenpaging: fix fd leak in xenstore +Subject: xenpaging/xenstore: fix fd leak in xenstore Missing from commit 'libxl: Backported stuff from unstable' Without this change, xs_daemon_open/xs_daemon_close will leak filedescriptors.