Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys/arch



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.




Home | Main Index | Thread Index | Old Index