[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH 2/2] hw/arm/smmuv3: fix eventq recording and IRQ t
From: |
Peter Maydell |
Subject: |
Re: [Qemu-arm] [PATCH 2/2] hw/arm/smmuv3: fix eventq recording and IRQ triggerring |
Date: |
Tue, 25 Sep 2018 11:25:55 +0100 |
On 21 September 2018 at 08:01, Eric Auger <address@hidden> wrote:
> The event queue management is broken today. Event records
> are not properly written as EVT_SET_* macro was not updating
> the actual event record. Also the event queue interrupt
> is not correctly triggered.
>
> Fixes: bb981004eaf4 ("hw/arm/smmuv3: Event queue recording helper")
> Signed-off-by: Eric Auger <address@hidden>
> ---
> hw/arm/smmuv3-internal.h | 26 +++++++++++++-------------
> hw/arm/smmuv3.c | 2 +-
> 2 files changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h
> index bab25d640e..19540f8f41 100644
> --- a/hw/arm/smmuv3-internal.h
> +++ b/hw/arm/smmuv3-internal.h
> @@ -442,17 +442,17 @@ typedef struct SMMUEventInfo {
>
> #define EVT_Q_OVERFLOW (1 << 31)
>
> -#define EVT_SET_TYPE(x, v) deposit32((x)->word[0], 0 , 8 , v)
> -#define EVT_SET_SSV(x, v) deposit32((x)->word[0], 11, 1 , v)
> -#define EVT_SET_SSID(x, v) deposit32((x)->word[0], 12, 20, v)
> -#define EVT_SET_SID(x, v) ((x)->word[1] = v)
> -#define EVT_SET_STAG(x, v) deposit32((x)->word[2], 0 , 16, v)
> -#define EVT_SET_STALL(x, v) deposit32((x)->word[2], 31, 1 , v)
> -#define EVT_SET_PNU(x, v) deposit32((x)->word[3], 1 , 1 , v)
> -#define EVT_SET_IND(x, v) deposit32((x)->word[3], 2 , 1 , v)
> -#define EVT_SET_RNW(x, v) deposit32((x)->word[3], 3 , 1 , v)
> -#define EVT_SET_S2(x, v) deposit32((x)->word[3], 7 , 1 , v)
> -#define EVT_SET_CLASS(x, v) deposit32((x)->word[3], 8 , 2 , v)
> +#define EVT_SET_TYPE(x, v) ((x)->word[0] = deposit32((x)->word[0], 0 , 8 ,
> v))
> +#define EVT_SET_SSV(x, v) ((x)->word[0] = deposit32((x)->word[0], 11, 1 ,
> v))
> +#define EVT_SET_SSID(x, v) ((x)->word[0] = deposit32((x)->word[0], 12, 20,
> v))
> +#define EVT_SET_SID(x, v) ((x)->word[1] = v)
> +#define EVT_SET_STAG(x, v) ((x)->word[2] = deposit32((x)->word[2], 0 , 16,
> v))
> +#define EVT_SET_STALL(x, v) ((x)->word[2] = deposit32((x)->word[2], 31, 1 ,
> v))
> +#define EVT_SET_PNU(x, v) ((x)->word[3] = deposit32((x)->word[3], 1 , 1 ,
> v))
> +#define EVT_SET_IND(x, v) ((x)->word[3] = deposit32((x)->word[3], 2 , 1 ,
> v))
> +#define EVT_SET_RNW(x, v) ((x)->word[3] = deposit32((x)->word[3], 3 , 1 ,
> v))
> +#define EVT_SET_S2(x, v) ((x)->word[3] = deposit32((x)->word[3], 7 , 1 ,
> v))
> +#define EVT_SET_CLASS(x, v) ((x)->word[3] = deposit32((x)->word[3], 8 , 2 ,
> v))
Oops. I'm a bit embarrassed I didn't notice that in code review...
thanks
-- PMM
[Qemu-arm] [PATCH 2/2] hw/arm/smmuv3: fix eventq recording and IRQ triggerring, Eric Auger, 2018/09/21
- Re: [Qemu-arm] [PATCH 2/2] hw/arm/smmuv3: fix eventq recording and IRQ triggerring,
Peter Maydell <=
Re: [Qemu-arm] [PATCH 0/2] ARM SMMUv3: Fix event queue handling and memory region names, Peter Maydell, 2018/09/25