|
|
|
|
|
|
|
|
|
|
xen-ppc-devel
Re: [XenPPC] [PATCH] Enable SMP and IPIs
On Oct 24, 2006, at 9:29 AM, Michal Ostrowski wrote:
On Tue, 2006-10-24 at 00:22 -0400, Amos Waterland wrote:
This patch enables SMP and IPIs. It works reliably on JS20 and JS21
blades. It is not quite ready for submission, but I would greatly
appreciate any comments.
Note that the flurry of IPIs generated by domain creation seems to
be a
waste of time. Xen on x86 doesn't actually to do anything in
response
to them, so I have made Xen on PPC properly deliver the event
check but
then do nothing as well. Comments?
The important thing this patch is missing is the ability to invoke
functions on a remote CPU, and I have left it out because I am not
yet
happy with the convention, which is to grab a lock, put the target
address in a single global shared variable, invoke a memory
barrier, and
send the IPI. I am hoping to avoid a lock around that operation by
making a per-IPI-destination-CPU structure with lock, address, and
ack
fields. Comments?
The strategy I decided upon to use in rhype was to maintain an
array of
function "records" (fn ptr + arg data), and a bit-map per-cpu
identifying which ones were active. If I want to run something on
another CPU, I find and fill in and empty function record for the
target
CPU and then set the bit in the bitmap. The receiver CPU checks to
see
if there is work to be done and if so, runs the specified function.
This mechanism makes the caller responsible for providing for managing
return values/ACKs.
I hope to use this to drive RCU activity as well, so it is not tied
down
to an actual IPI vector occurring. In fact, I have not yet has a need
to actually depend on an IPI from the mpic.
Ahh yes.. the hi frequency periodic timer on a hypervisor that does
not interrupts. :-P
How would you take an IPI anyway?!
I guess you would use it to interrupt an LPAR?
-JX
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|
|
|
|
|