|
@@ -19,6 +19,8 @@
|
|
|
#include <asm/types.h>
|
|
|
#include <asm/percpu.h>
|
|
|
#include <asm/uv/uv_mmrs.h>
|
|
|
+#include <asm/irq_vectors.h>
|
|
|
+#include <asm/io_apic.h>
|
|
|
|
|
|
|
|
|
/*
|
|
@@ -435,9 +437,14 @@ static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value)
|
|
|
static inline void uv_hub_send_ipi(int pnode, int apicid, int vector)
|
|
|
{
|
|
|
unsigned long val;
|
|
|
+ unsigned long dmode = dest_Fixed;
|
|
|
+
|
|
|
+ if (vector == NMI_VECTOR)
|
|
|
+ dmode = dest_NMI;
|
|
|
|
|
|
val = (1UL << UVH_IPI_INT_SEND_SHFT) |
|
|
|
((apicid) << UVH_IPI_INT_APIC_ID_SHFT) |
|
|
|
+ (dmode << UVH_IPI_INT_DELIVERY_MODE_SHFT) |
|
|
|
(vector << UVH_IPI_INT_VECTOR_SHFT);
|
|
|
uv_write_global_mmr64(pnode, UVH_IPI_INT, val);
|
|
|
}
|