powerpc/smp: Support more IPI messages
This patch increases the number of demuxed messages for a controller with a single ipi to 8 for 64-bit systems. This is required because we want to use the IPI mechanism to send messages from a CPU running in KVM real mode in a guest to a CPU in the host to take some action. Currently, we only support 4 messages and all 4 are already taken. Define a fifth message PPC_MSG_RM_HOST_ACTION for this purpose. Signed-off-by: Suresh Warrier <warrier@linux.vnet.ibm.com> Acked-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
d3695aa4f4
commit
bd7f561f76
@ -114,6 +114,9 @@ extern int cpu_to_core_id(int cpu);
|
||||
#define PPC_MSG_TICK_BROADCAST 2
|
||||
#define PPC_MSG_DEBUGGER_BREAK 3
|
||||
|
||||
/* This is only used by the powernv kernel */
|
||||
#define PPC_MSG_RM_HOST_ACTION 4
|
||||
|
||||
/* for irq controllers that have dedicated ipis per message (4) */
|
||||
extern int smp_request_message_ipi(int virq, int message);
|
||||
extern const char *smp_ipi_name[];
|
||||
|
@ -206,7 +206,7 @@ int smp_request_message_ipi(int virq, int msg)
|
||||
|
||||
#ifdef CONFIG_PPC_SMP_MUXED_IPI
|
||||
struct cpu_messages {
|
||||
int messages; /* current messages */
|
||||
long messages; /* current messages */
|
||||
unsigned long data; /* data for cause ipi */
|
||||
};
|
||||
static DEFINE_PER_CPU_SHARED_ALIGNED(struct cpu_messages, ipi_message);
|
||||
@ -236,15 +236,15 @@ void smp_muxed_ipi_message_pass(int cpu, int msg)
|
||||
}
|
||||
|
||||
#ifdef __BIG_ENDIAN__
|
||||
#define IPI_MESSAGE(A) (1 << (24 - 8 * (A)))
|
||||
#define IPI_MESSAGE(A) (1uL << ((BITS_PER_LONG - 8) - 8 * (A)))
|
||||
#else
|
||||
#define IPI_MESSAGE(A) (1 << (8 * (A)))
|
||||
#define IPI_MESSAGE(A) (1uL << (8 * (A)))
|
||||
#endif
|
||||
|
||||
irqreturn_t smp_ipi_demux(void)
|
||||
{
|
||||
struct cpu_messages *info = this_cpu_ptr(&ipi_message);
|
||||
unsigned int all;
|
||||
unsigned long all;
|
||||
|
||||
mb(); /* order any irq clear */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user