|
@@ -159,6 +159,27 @@ static void icp_native_cause_ipi(int cpu, unsigned long data)
|
|
icp_native_set_qirr(cpu, IPI_PRIORITY);
|
|
icp_native_set_qirr(cpu, IPI_PRIORITY);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
|
|
|
|
+void icp_native_cause_ipi_rm(int cpu)
|
|
|
|
+{
|
|
|
|
+ /*
|
|
|
|
+ * Currently not used to send IPIs to another CPU
|
|
|
|
+ * on the same core. Only caller is KVM real mode.
|
|
|
|
+ * Need the physical address of the XICS to be
|
|
|
|
+ * previously saved in kvm_hstate in the paca.
|
|
|
|
+ */
|
|
|
|
+ unsigned long xics_phys;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Just like the cause_ipi functions, it is required to
|
|
|
|
+ * include a full barrier (out8 includes a sync) before
|
|
|
|
+ * causing the IPI.
|
|
|
|
+ */
|
|
|
|
+ xics_phys = paca[cpu].kvm_hstate.xics_phys;
|
|
|
|
+ out_rm8((u8 *)(xics_phys + XICS_MFRR), IPI_PRIORITY);
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Called when an interrupt is received on an off-line CPU to
|
|
* Called when an interrupt is received on an off-line CPU to
|
|
* clear the interrupt, so that the CPU can go back to nap mode.
|
|
* clear the interrupt, so that the CPU can go back to nap mode.
|