]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Fix the MP IPI code to differentiate between bitmapped IPIs and function IPIs.
authorAdrian Chadd <adrian@FreeBSD.org>
Sun, 31 May 2009 08:11:39 +0000 (08:11 +0000)
committerAdrian Chadd <adrian@FreeBSD.org>
Sun, 31 May 2009 08:11:39 +0000 (08:11 +0000)
commitc22ca7f04f3b454d4abe1fea8359a22429a66bf6
tree84dce0959dd8bd40665e80650616662de09d997c
parent23ca223bfae5aebb52c5ff32dee39bb37df912b2
Fix the MP IPI code to differentiate between bitmapped IPIs and function IPIs.

This attempts to fix the IPI handling code to correctly differentiate
between bitmapped IPIs and function IPIs. The Xen IPIs were on low numbers
which clashed with the bitmapped IPIs.

This commit bumps those IPI numbers up to 240 and above (just like in the i386
code) and fiddles with the ipi_vectors[] logic to call the correct function.

This still isn't "right". Specifically, the IPI code may work fine for TLB
shootdown events but the rendezvous/lazypmap IPIs are thrown by calling ipi_*()
routines which don't set the call_func stuff (function id, addr1, addr2) that
the TLB shootdown events are. So the Xen SMP support is still broken.

PR: 135069
sys/i386/include/apicvar.h
sys/i386/xen/mp_machdep.c