[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PULL 20/29] xics: Implement H_XIRR_X
From: |
Alexander Graf |
Subject: |
[Qemu-ppc] [PULL 20/29] xics: Implement H_XIRR_X |
Date: |
Fri, 25 Oct 2013 23:27:45 +0200 |
From: Benjamin Herrenschmidt <address@hidden>
This implements H_XIRR_X hypercall in addition to H_XIRR as
it is mandatory for PAPR+ and there is no way for the guest to
detect whether it is supported or not so just add it.
As the Partition Adjunct Option is not supported at the moment,
the CPPR parameter of the hypercall is ignored.
Signed-off-by: Benjamin Herrenschmidt <address@hidden>
Signed-off-by: Alexey Kardashevskiy <address@hidden>
Signed-off-by: Alexander Graf <address@hidden>
---
hw/intc/xics.c | 14 ++++++++++++++
include/hw/ppc/spapr.h | 1 +
2 files changed, 15 insertions(+)
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index eb93276..a333305 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -27,6 +27,7 @@
#include "hw/hw.h"
#include "trace.h"
+#include "qemu/timer.h"
#include "hw/ppc/spapr.h"
#include "hw/ppc/xics.h"
#include "qemu/error-report.h"
@@ -679,6 +680,18 @@ static target_ulong h_xirr(PowerPCCPU *cpu,
sPAPREnvironment *spapr,
return H_SUCCESS;
}
+static target_ulong h_xirr_x(PowerPCCPU *cpu, sPAPREnvironment *spapr,
+ target_ulong opcode, target_ulong *args)
+{
+ CPUState *cs = CPU(cpu);
+ ICPState *ss = &spapr->icp->ss[cs->cpu_index];
+ uint32_t xirr = icp_accept(ss);
+
+ args[0] = xirr;
+ args[1] = cpu_get_real_ticks();
+ return H_SUCCESS;
+}
+
static target_ulong h_eoi(PowerPCCPU *cpu, sPAPREnvironment *spapr,
target_ulong opcode, target_ulong *args)
{
@@ -853,6 +866,7 @@ static void xics_realize(DeviceState *dev, Error **errp)
spapr_register_hypercall(H_CPPR, h_cppr);
spapr_register_hypercall(H_IPI, h_ipi);
spapr_register_hypercall(H_XIRR, h_xirr);
+ spapr_register_hypercall(H_XIRR_X, h_xirr_x);
spapr_register_hypercall(H_EOI, h_eoi);
spapr_register_hypercall(H_IPOLL, h_ipoll);
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 6407c8a..5ae0b58 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -283,6 +283,7 @@ typedef struct sPAPREnvironment {
#define H_GET_EM_PARMS 0x2B8
#define H_SET_MPP 0x2D0
#define H_GET_MPP 0x2D4
+#define H_XIRR_X 0x2FC
#define H_SET_MODE 0x31C
#define MAX_HCALL_OPCODE H_SET_MODE
--
1.8.1.4
- [Qemu-ppc] [PULL 00/29] ppc patch queue 2013-10-25, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 07/29] spapr: Add ibm, purr property on power7 and newer, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 02/29] pseries: Fix loading of little endian kernels, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 04/29] target-ppc: Little Endian Correction to Load/Store Vector Element, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 03/29] ppc: Add CFAR, DAR and DSISR to the dictionary of printable registers, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 19/29] xics: Implement H_IPOLL, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 11/29] spapr: move cpu_setup after kvmppc_set_papr, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 20/29] xics: Implement H_XIRR_X,
Alexander Graf <=
- [Qemu-ppc] [PULL 10/29] xics: move reset and cpu_setup, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 05/29] PPC: Fix L2CR write accesses, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 08/29] spapr-rtas: fix h_rtas parameters reading, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 15/29] xics: add missing const specifiers to TypeInfo, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 12/29] xics: replace fprintf with error_report, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 21/29] xics-kvm: enable irqfd for MSI, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 22/29] spapr-pci: enable irqfd for INTx, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 09/29] target-ppc: Add helper for KVM_PPC_RTAS_DEFINE_TOKEN, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 13/29] xics: add pre_save/post_load dispatchers, Alexander Graf, 2013/10/25
- [Qemu-ppc] [PULL 14/29] xics: convert init() to realize(), Alexander Graf, 2013/10/25