K 10 svn:author V 3 avg K 8 svn:date V 27 2011-05-09T07:14:16.567988Z K 7 svn:log V 1251 re-implement smp rendezvous code - create one rendezvous (outgoing) mailbox per each cpu where a cpu would place its rendezvous request directed to other cpus - create a cpu mask for each cpu where other cpus can set a bit to indicate that they send a rendezvous request to the cpu in question - send an ipi only for a first rv request, piggyback subsequent requests if a target cpu is still processing previous incoming requests - many-to-many rv requests can be sent now, there is no locking, the only limitation is that a cpu can have only a single outgoing request at a time - to avoid deadlocks, when a cpu waits for its requested to be completed by target cpus, it also checks for and processes incoming requests - to avoid deadlock with cpu stopping logic, cpus also check for stop requests while waiting - there can be only one cpu asking other cpus to stop; this is implemented via a handrolled spin mutex analogue; similar to the above, to avoid deadlocks a cpu spinning for this lock also checks for an incoming stop request - implement tlb shootdowns via smp rendezvous mechanism, no special ipis are needed now, amd64 only (see if the code can be further simplified) - thus the smp_ipi_mtx is not needed any longer END