[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3] xics: Implement H_XIRR_X
From: |
Alexander Graf |
Subject: |
Re: [Qemu-devel] [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
>
- Re: [Qemu-devel] [PATCH v3 4/8] xics: minor changes and cleanups, (continued)
- [Qemu-devel] [PATCH v3 5/8] xics: split to xics and xics-common, Alexey Kardashevskiy, 2013/08/19
- [Qemu-devel] [PATCH v3 6/8] xics-kvm: Support for in-kernel XICS interrupt controller, Alexey Kardashevskiy, 2013/08/19
- Re: [Qemu-devel] [PATCH v3 0/8] xics: reworks and in-kernel support, Andreas Färber, 2013/08/23
- [Qemu-devel] [PATCH v3] xics: Add H_IPOLL implementation, Alexey Kardashevskiy, 2013/08/23
- [Qemu-devel] [PATCH v3] xics: Implement H_XIRR_X, Alexey Kardashevskiy, 2013/08/23
- Re: [Qemu-devel] [PATCH v3] xics: Implement H_XIRR_X,
Alexander Graf <=