On 23.08.2013, at 14:03, Alexey Kardashevskiy wrote: > From: Benjamin Herrenschmidt <b...@kernel.crashing.org> > > 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 <b...@kernel.crashing.org> > Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru> > --- > hw/intc/xics.c | 14 ++++++++++++++ > include/hw/ppc/spapr.h | 3 ++- > 2 files changed, 16 insertions(+), 1 deletion(-) > > diff --git a/hw/intc/xics.c b/hw/intc/xics.c > index 2e6111d..b7f849a 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;
Let's be consistent in coding style and use &...ss[cs->cpu_index];. The rest looks good :). Alex > + 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 9fc1972..a84b8ff 100644 > --- a/include/hw/ppc/spapr.h > +++ b/include/hw/ppc/spapr.h > @@ -267,7 +267,8 @@ typedef struct sPAPREnvironment { > #define H_GET_EM_PARMS 0x2B8 > #define H_SET_MPP 0x2D0 > #define H_GET_MPP 0x2D4 > -#define MAX_HCALL_OPCODE H_GET_MPP > +#define H_XIRR_X 0x2FC > +#define MAX_HCALL_OPCODE H_XIRR_X > > /* The hcalls above are standardized in PAPR and implemented by pHyp > * as well. > -- > 1.8.4.rc4 >