powerpc: Define differences between doorbells on book3e and book3s
There are a few key differences between doorbells on server compared with embedded that we care about on Linux, namely: - We have a new msgsndp instruction for directed privileged doorbells. msgsnd is used for directed hypervisor doorbells. - The tag we use in the instruction is the Thread Identification Register of the recipient thread (since server doorbells can only occur between threads within a single core), and is only 7 bits wide. - A new message type is introduced for server doorbells (none of the existing book3e message types are currently supported on book3s). Signed-off-by: Ian Munsie <imunsie@au1.ibm.com> Tested-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:

committed by
Benjamin Herrenschmidt

parent
41c7b401b9
commit
42d02b81f2
@@ -21,7 +21,7 @@
|
||||
#ifdef CONFIG_SMP
|
||||
void doorbell_setup_this_cpu(void)
|
||||
{
|
||||
unsigned long tag = mfspr(SPRN_PIR) & 0x3fff;
|
||||
unsigned long tag = mfspr(SPRN_DOORBELL_CPUTAG) & PPC_DBELL_TAG_MASK;
|
||||
|
||||
smp_muxed_ipi_set_data(smp_processor_id(), tag);
|
||||
}
|
||||
@@ -30,7 +30,7 @@ void doorbell_cause_ipi(int cpu, unsigned long data)
|
||||
{
|
||||
/* Order previous accesses vs. msgsnd, which is treated as a store */
|
||||
mb();
|
||||
ppc_msgsnd(PPC_DBELL, 0, data);
|
||||
ppc_msgsnd(PPC_DBELL_MSGTYPE, 0, data);
|
||||
}
|
||||
|
||||
void doorbell_exception(struct pt_regs *regs)
|
||||
|
Reference in New Issue
Block a user