Source-Changes archive

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

CVS commit: [jym-xensuspend] src/sys/arch

Module Name:    src
Committed By:   jym
Date:           Sun Nov  1 21:43:29 UTC 2009

Modified Files:
        src/sys/arch/x86/include [jym-xensuspend]: cpu.h pmap.h
        src/sys/arch/x86/x86 [jym-xensuspend]: pmap.c
        src/sys/arch/xen/include [jym-xensuspend]: evtchn.h granttables.h
            hypervisor.h xen.h xenbus.h xenpmap.h
        src/sys/arch/xen/include/amd64 [jym-xensuspend]: hypercalls.h
        src/sys/arch/xen/include/i386 [jym-xensuspend]: hypercalls.h
        src/sys/arch/xen/x86 [jym-xensuspend]: cpu.c hypervisor_machdep.c
            mainbus.c x86_xpmap.c
        src/sys/arch/xen/xen [jym-xensuspend]: 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 [jym-xensuspend]: xenbus_comms.c xenbus_comms.h

Log Message:
- Upgrade suspend/resume code to comply with Xen2 removal.
- Add support for PAE domUs suspend/resume.
- Fix an issue regarding initialization of the xbd ring I/O that could end
badly during resume, with invalid block operations submitted to dom0 backend.

NetBSD supports PAE under x86_32 by considering the L2 page as being
4 pages long instead of 1.

Xen validates the page types during resume. Sadly, the hypervisor handles
alternative recursive mappings (== PG/PD entries pointing to pages other
than self) inadequately, which could lead to incorrect page pinning.

As a result, the important change with this patch is to clear these alternative
mappings during suspend, and reset them back to their former self upon
resume. For PAE, approx. all 4 PDIR_SLOT_PTEs could be considered as
alternative recursive mappings.

See comments in pmap.c for further details.

Now, let the testing and bug hunting begin.

To generate a diff of this commit:
cvs rdiff -u -r1.10.2.3 -r1.10.2.4 src/sys/arch/x86/include/cpu.h
cvs rdiff -u -r1.21.2.5 -r1.21.2.6 src/sys/arch/x86/include/pmap.h
cvs rdiff -u -r1.77.2.6 -r1.77.2.7 src/sys/arch/x86/x86/pmap.c
cvs rdiff -u -r1.17.8.2 -r1.17.8.3 src/sys/arch/xen/include/evtchn.h
cvs rdiff -u -r1.6.6.2 -r1.6.6.3 src/sys/arch/xen/include/granttables.h
cvs rdiff -u -r1.29.4.2 -r1.29.4.3 src/sys/arch/xen/include/hypervisor.h
cvs rdiff -u -r1.30.8.3 -r1.30.8.4 src/sys/arch/xen/include/xen.h
cvs rdiff -u -r1.11.6.2 -r1.11.6.3 src/sys/arch/xen/include/xenbus.h
cvs rdiff -u -r1.21.8.4 -r1.21.8.5 src/sys/arch/xen/include/xenpmap.h
cvs rdiff -u -r1.5.4.2 -r1.5.4.3 src/sys/arch/xen/include/amd64/hypercalls.h
cvs rdiff -u -r1.8.4.2 -r1.8.4.3 src/sys/arch/xen/include/i386/hypercalls.h
cvs rdiff -u -r1.31.2.4 -r1.31.2.5 src/sys/arch/xen/x86/cpu.c
cvs rdiff -u -r1.11.8.3 -r1.11.8.4 src/sys/arch/xen/x86/hypervisor_machdep.c
cvs rdiff -u -r1.7.2.2 -r1.7.2.3 src/sys/arch/xen/x86/mainbus.c
cvs rdiff -u -r1.12.4.6 -r1.12.4.7 src/sys/arch/xen/x86/x86_xpmap.c
cvs rdiff -u -r1.49.2.3 -r1.49.2.4 src/sys/arch/xen/xen/clock.c
cvs rdiff -u -r1.42.2.4 -r1.42.2.5 src/sys/arch/xen/xen/evtchn.c
cvs rdiff -u -r1.43.2.3 -r1.43.2.4 src/sys/arch/xen/xen/hypervisor.c
cvs rdiff -u -r1.33.2.4 -r1.33.2.5 src/sys/arch/xen/xen/if_xennet_xenbus.c
cvs rdiff -u -r1.5.8.2 -r1.5.8.3 src/sys/arch/xen/xen/shutdown_xenbus.c
cvs rdiff -u -r1.38.2.5 -r1.38.2.6 src/sys/arch/xen/xen/xbd_xenbus.c
cvs rdiff -u -r1.4.12.5 -r1.4.12.6 src/sys/arch/xen/xen/xen_machdep.c
cvs rdiff -u -r1.31.2.5 -r1.31.2.6 src/sys/arch/xen/xen/xencons.c
cvs rdiff -u -r1.13.2.3 -r1.13.2.4 src/sys/arch/xen/xen/xengnt.c
cvs rdiff -u -r1.12.2.2 -r1.12.2.3 src/sys/arch/xen/xenbus/xenbus_comms.c
cvs rdiff -u -r1.5.8.2 -r1.5.8.3 src/sys/arch/xen/xenbus/xenbus_comms.h
cvs rdiff -u -r1.27.2.3 -r1.27.2.4 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