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 May 31 20:15:37 UTC 2009

Modified Files:
        src/sys/arch/x86/include [jym-xensuspend]: pmap.h
        src/sys/arch/x86/x86 [jym-xensuspend]: pmap.c
        src/sys/arch/xen/include [jym-xensuspend]: xenbus.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]: x86_xpmap.c xen_bus_dma.c
        src/sys/arch/xen/xen [jym-xensuspend]: evtchn.c if_xennet_xenbus.c
            xbd_xenbus.c xen_machdep.c xencons.c xennetback_xenbus.c
        src/sys/arch/xen/xenbus [jym-xensuspend]: xenbus_probe.c

Log Message:
Modifications for the Xen suspend/migrate/resume branch:

- introduce xenbus_device_{suspend,resume}() functions. These are routines
used to suspend/resume MI parts of the Xenbus device interfaces, like updating
frontend/backend devices' paths found in XenStore.

- introduce HYPERVISOR_sysctl(), an hypercall used only by Xentools to obtain
information from hypervisor (listing VMs, printing console, etc.). I use it
to query xenconsole from ddb(), as a last resort in case of a panic() in
dom0 (xm being not available). Currently unused in the branch; could be, if
requested.

- disable the rwlock(9) used to protect code that could use transient MFNs.
It could trigger nasty context switches in place it should not to.

- fix some bugs in the xennet/xbd suspend/resume pmf(9) handlers.

- following XenSource's design, talk_to_otherend() is now called
watch_otherend(), and free_otherend_details() is used by Xenbus device
suspend/resume routines.

- some slight modifications in pmap regarding APDP. Introduce an inline
function (pmap_unmap_apdp_pde()) that clears APDP entry for the current pmap.

- similarly, implement pmap_unmap_all_apdp_pdes() that iterates through all
pmaps and tears down APDP, as Xen does not handle them properly.

TODO/XXX:

- pmap_unmap_apdp_pde() does not handle APDP shadow entry of PAE. It will,
once I figure out how PAE uses it.

- revisit the pmap locking issue regarding transient MFNs. As NetBSD does not
use kernel preemption and MP for Xen, this could be skipped momentarily. See
http://mail-index.netbsd.org/port-xen/2009/04/27/msg004903.html for details.

- fix a bug regarding grant tables which could technically DoS a dom0 if
ridiculously high consumer/producer indexes are passed down in the ring during
a resume.

All in all, once the grant table index issue and APDP PAE are fixed, next step
is to torture test this branch.

Tested under i386 PAE and non-PAE, Xen3 dom0 and domU. amd64 is only compile
tested.


To generate a diff of this commit:
cvs rdiff -u -r1.21.2.1 -r1.21.2.2 src/sys/arch/x86/include/pmap.h
cvs rdiff -u -r1.77.2.2 -r1.77.2.3 src/sys/arch/x86/x86/pmap.c
cvs rdiff -u -r1.11 -r1.11.6.1 src/sys/arch/xen/include/xenbus.h
cvs rdiff -u -r1.5 -r1.5.4.1 src/sys/arch/xen/include/amd64/hypercalls.h
cvs rdiff -u -r1.8 -r1.8.4.1 src/sys/arch/xen/include/i386/hypercalls.h
cvs rdiff -u -r1.12.4.2 -r1.12.4.3 src/sys/arch/xen/x86/x86_xpmap.c
cvs rdiff -u -r1.14.2.1 -r1.14.2.2 src/sys/arch/xen/x86/xen_bus_dma.c
cvs rdiff -u -r1.42.2.2 -r1.42.2.3 src/sys/arch/xen/xen/evtchn.c
cvs rdiff -u -r1.33.2.2 -r1.33.2.3 src/sys/arch/xen/xen/if_xennet_xenbus.c
cvs rdiff -u -r1.38.2.2 -r1.38.2.3 src/sys/arch/xen/xen/xbd_xenbus.c
cvs rdiff -u -r1.4.12.2 -r1.4.12.3 src/sys/arch/xen/xen/xen_machdep.c
cvs rdiff -u -r1.31.2.1 -r1.31.2.2 src/sys/arch/xen/xen/xencons.c
cvs rdiff -u -r1.27.2.2 -r1.27.2.3 src/sys/arch/xen/xen/xennetback_xenbus.c
cvs rdiff -u -r1.27.2.1 -r1.27.2.2 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