Module Name: src Committed By: jym Date: Tue Sep 20 00:12:25 UTC 2011
Modified Files: src/sys/arch/x86/include: cpu.h pmap.h src/sys/arch/x86/x86: pmap.c src/sys/arch/xen/include: evtchn.h granttables.h hypervisor.h shutdown_xenbus.h xen.h xenbus.h src/sys/arch/xen/x86: cpu.c hypervisor_machdep.c mainbus.c x86_xpmap.c xen_pmap.c src/sys/arch/xen/xen: balloon.c clock.c evtchn.c hypervisor.c if_xennet_xenbus.c shutdown_xenbus.c xbd_xenbus.c xen_machdep.c xencons.c xengnt.c src/sys/arch/xen/xenbus: xenbus_comms.c xenbus_comms.h xenbus_probe.c Log Message: Merge jym-xensuspend branch in -current. ok bouyer@. Goal: save/restore support in NetBSD domUs, for i386, i386 PAE and amd64. Executive summary: - split all Xen drivers (xenbus(4), grant tables, xbd(4), xennet(4)) in two parts: suspend and resume, and hook them to pmf(9). - modify pmap so that Xen hypervisor does not cry out loud in case it finds "unexpected" recursive memory mappings - provide a sysctl(7), machdep.xen.suspend, to command suspend from userland via powerd(8). Note: a suspend can only be handled correctly when dom0 requested it, so provide a mechanism that will prevent kernel to blindly validate user's commands The code is still in experimental state, use at your own risk: restore can corrupt backend communications rings; this can completely thrash dom0 as it will loop at a high interrupt level trying to honor all domU requests. XXX PAE suspend does not work in amd64 currently, due to (yet again!) page validation issues with hypervisor. Will fix. XXX secondary CPUs are not suspended, I will write the handlers in sync with cherry's Xen MP work. Tested under i386 and amd64, bear in mind ring corruption though. No build break expected, GENERICs and XEN* kernels should be fine. ./build.sh distribution still running. In any case: sorry if it does break for you, contact me directly for reports. To generate a diff of this commit: cvs rdiff -u -r1.37 -r1.38 src/sys/arch/x86/include/cpu.h cvs rdiff -u -r1.41 -r1.42 src/sys/arch/x86/include/pmap.h cvs rdiff -u -r1.129 -r1.130 src/sys/arch/x86/x86/pmap.c cvs rdiff -u -r1.19 -r1.20 src/sys/arch/xen/include/evtchn.h cvs rdiff -u -r1.7 -r1.8 src/sys/arch/xen/include/granttables.h cvs rdiff -u -r1.32 -r1.33 src/sys/arch/xen/include/hypervisor.h cvs rdiff -u -r1.3 -r1.4 src/sys/arch/xen/include/shutdown_xenbus.h cvs rdiff -u -r1.34 -r1.35 src/sys/arch/xen/include/xen.h cvs rdiff -u -r1.11 -r1.12 src/sys/arch/xen/include/xenbus.h cvs rdiff -u -r1.64 -r1.65 src/sys/arch/xen/x86/cpu.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/xen/x86/hypervisor_machdep.c cvs rdiff -u -r1.14 -r1.15 src/sys/arch/xen/x86/mainbus.c cvs rdiff -u -r1.33 -r1.34 src/sys/arch/xen/x86/x86_xpmap.c cvs rdiff -u -r1.4 -r1.5 src/sys/arch/xen/x86/xen_pmap.c cvs rdiff -u -r1.10 -r1.11 src/sys/arch/xen/xen/balloon.c cvs rdiff -u -r1.55 -r1.56 src/sys/arch/xen/xen/clock.c cvs rdiff -u -r1.53 -r1.54 src/sys/arch/xen/xen/evtchn.c cvs rdiff -u -r1.56 -r1.57 src/sys/arch/xen/xen/hypervisor.c cvs rdiff -u -r1.51 -r1.52 src/sys/arch/xen/xen/if_xennet_xenbus.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/xen/xen/shutdown_xenbus.c cvs rdiff -u -r1.47 -r1.48 src/sys/arch/xen/xen/xbd_xenbus.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/xen/xen/xen_machdep.c cvs rdiff -u -r1.37 -r1.38 src/sys/arch/xen/xen/xencons.c cvs rdiff -u -r1.19 -r1.20 src/sys/arch/xen/xen/xengnt.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/xen/xenbus/xenbus_comms.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/xen/xenbus/xenbus_comms.h cvs rdiff -u -r1.33 -r1.34 src/sys/arch/xen/xenbus/xenbus_probe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.