[CFR] Xen IPI patch

Justin T. Gibbs gibbs at FreeBSD.org
Tue Sep 3 03:49:49 UTC 2013


In my continuing effort to get all of Roger's Xen enhancements into
FreeBSD, I'm just about finished reviewing the next patch in his
series.  The current status of the patch can be found here:

	http://people.freebsd.org/~gibbs/xen_ipi.diff

The main, and late breaking, wrinkle for this patch is the newly
committed PCID support form AMD64.  I've done my best to translate
the updated assembly IPI handlers into the C equivalents needed for
Xen.  But, I'm by no means an x86 assembly expert, and my current
Xen installation doesn't advertise PCID, so all of the new branches
I've added have yet to be tested.  I also wonder if PVHVM guests
are supposed to perform the PCID work natively or use some other
Hypervisor functionality.

Other things I'm not happy about with the patch:
	- hvm.c wants to use invltlb_globpcid(), but it is private
	  to pmap.c.  I've moved it to cpufunc.h to be next to
	  invltlb(), but the definition of CR4_PGE (from specialreg.h)
	  isn't visible in all of the contexts that include cpufunc.h.
	  So I hackishly define it if necessary.  Ick.

	- With the divergence of IPI handling between i386 and
	  amd64, x86/xen/hvm.c is growing too many ifdefs.  Should
	  we delegate the definitions of the ipi functions to
	  amd64/xen/hvm.c and i386/xen/hvm.c?

	- There's too much code duplication in xen_invlrng()
	  and some of the logic in the other handlers can probably
	  be tightened up.

Unfortunately, I'm out of time for tonight.  Hopefully the list
will have some great suggestions/fixes/improvements for this patch
before I pick it up again tomorrow.

Thanks,
Justin




More information about the freebsd-xen mailing list