qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] [PATCH v3] xics: Implement H_XIRR_X


From: Alexander Graf
Subject: Re: [Qemu-ppc] [PATCH v3] xics: Implement H_XIRR_X
Date: Tue, 27 Aug 2013 11:35:18 +0200

On 23.08.2013, at 14:03, Alexey Kardashevskiy wrote:

> 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>
> ---
> 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
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]