qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] hw/arm/smmuv3: Support 16K translation granule
@ 2021-03-31  6:47 Kunkun Jiang
  2021-04-07  8:41 ` Auger Eric
  0 siblings, 1 reply; 3+ messages in thread
From: Kunkun Jiang @ 2021-03-31  6:47 UTC (permalink / raw)
  To: Eric Auger, Peter Maydell, open list:ARM SMMU,
	open list:All patches CC here, shameerali.kolothum.thodi
  Cc: Zenghui Yu, wanghaibin.wang, Keqian Zhu, Peter Xu, jasonwang

The driver can query some bits in SMMUv3 IDR5 to learn which
translation granules are supported. Arm recommends that SMMUv3
implementations support at least 4K and 64K granules. But in
the vSMMUv3, there seems to be no reason not to support 16K
translation granule. In addition, if 16K is not supported,
vSVA will failed to be enabled in the future for 16K guest
kernel. So it'd better to support it.

Signed-off-by: Kunkun Jiang <jiangkunkun@huawei.com>
---
 hw/arm/smmuv3.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
index 3b87324ce2..0a483b0bab 100644
--- a/hw/arm/smmuv3.c
+++ b/hw/arm/smmuv3.c
@@ -259,8 +259,9 @@ static void smmuv3_init_regs(SMMUv3State *s)
     s->idr[3] = FIELD_DP32(s->idr[3], IDR3, RIL, 1);
     s->idr[3] = FIELD_DP32(s->idr[3], IDR3, HAD, 1);
 
-   /* 4K and 64K granule support */
+    /* 4K, 16K and 64K granule support */
     s->idr[5] = FIELD_DP32(s->idr[5], IDR5, GRAN4K, 1);
+    s->idr[5] = FIELD_DP32(s->idr[5], IDR5, GRAN16K, 1);
     s->idr[5] = FIELD_DP32(s->idr[5], IDR5, GRAN64K, 1);
     s->idr[5] = FIELD_DP32(s->idr[5], IDR5, OAS, SMMU_IDR5_OAS); /* 44 bits */
 
@@ -503,7 +504,8 @@ static int decode_cd(SMMUTransCfg *cfg, CD *cd, SMMUEventInfo *event)
 
         tg = CD_TG(cd, i);
         tt->granule_sz = tg2granule(tg, i);
-        if ((tt->granule_sz != 12 && tt->granule_sz != 16) || CD_ENDI(cd)) {
+        if ((tt->granule_sz != 12 && tt->granule_sz != 14 &&
+             tt->granule_sz != 16) || CD_ENDI(cd)) {
             goto bad_cd;
         }
 
-- 
2.19.1



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] hw/arm/smmuv3: Support 16K translation granule
  2021-03-31  6:47 [PATCH] hw/arm/smmuv3: Support 16K translation granule Kunkun Jiang
@ 2021-04-07  8:41 ` Auger Eric
  2021-04-19 14:15   ` Peter Maydell
  0 siblings, 1 reply; 3+ messages in thread
From: Auger Eric @ 2021-04-07  8:41 UTC (permalink / raw)
  To: Kunkun Jiang, Peter Maydell, open list:ARM SMMU,
	open list:All patches CC here, shameerali.kolothum.thodi
  Cc: Zenghui Yu, wanghaibin.wang, Keqian Zhu, Peter Xu

Hi Kunkun,

On 3/31/21 8:47 AM, Kunkun Jiang wrote:
> The driver can query some bits in SMMUv3 IDR5 to learn which
> translation granules are supported. Arm recommends that SMMUv3
> implementations support at least 4K and 64K granules. But in
> the vSMMUv3, there seems to be no reason not to support 16K
> translation granule. In addition, if 16K is not supported,
> vSVA will failed to be enabled in the future for 16K guest
> kernel. So it'd better to support it.
> 
> Signed-off-by: Kunkun Jiang <jiangkunkun@huawei.com>

Looks good to me.
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>

Thanks

Eric
> ---
>  hw/arm/smmuv3.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
> index 3b87324ce2..0a483b0bab 100644
> --- a/hw/arm/smmuv3.c
> +++ b/hw/arm/smmuv3.c
> @@ -259,8 +259,9 @@ static void smmuv3_init_regs(SMMUv3State *s)
>      s->idr[3] = FIELD_DP32(s->idr[3], IDR3, RIL, 1);
>      s->idr[3] = FIELD_DP32(s->idr[3], IDR3, HAD, 1);
>  
> -   /* 4K and 64K granule support */
> +    /* 4K, 16K and 64K granule support */
>      s->idr[5] = FIELD_DP32(s->idr[5], IDR5, GRAN4K, 1);
> +    s->idr[5] = FIELD_DP32(s->idr[5], IDR5, GRAN16K, 1);
>      s->idr[5] = FIELD_DP32(s->idr[5], IDR5, GRAN64K, 1);
>      s->idr[5] = FIELD_DP32(s->idr[5], IDR5, OAS, SMMU_IDR5_OAS); /* 44 bits */
>  
> @@ -503,7 +504,8 @@ static int decode_cd(SMMUTransCfg *cfg, CD *cd, SMMUEventInfo *event)
>  
>          tg = CD_TG(cd, i);
>          tt->granule_sz = tg2granule(tg, i);
> -        if ((tt->granule_sz != 12 && tt->granule_sz != 16) || CD_ENDI(cd)) {
> +        if ((tt->granule_sz != 12 && tt->granule_sz != 14 &&
> +             tt->granule_sz != 16) || CD_ENDI(cd)) {
>              goto bad_cd;
>          }
>  
> 



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] hw/arm/smmuv3: Support 16K translation granule
  2021-04-07  8:41 ` Auger Eric
@ 2021-04-19 14:15   ` Peter Maydell
  0 siblings, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2021-04-19 14:15 UTC (permalink / raw)
  To: Auger Eric
  Cc: Kunkun Jiang, open list:All patches CC here, Peter Xu,
	open list:ARM SMMU, Shameerali Kolothum Thodi, Zenghui Yu,
	wanghaibin.wang, Keqian Zhu

On Wed, 7 Apr 2021 at 09:41, Auger Eric <eric.auger@redhat.com> wrote:
>
> Hi Kunkun,
>
> On 3/31/21 8:47 AM, Kunkun Jiang wrote:
> > The driver can query some bits in SMMUv3 IDR5 to learn which
> > translation granules are supported. Arm recommends that SMMUv3
> > implementations support at least 4K and 64K granules. But in
> > the vSMMUv3, there seems to be no reason not to support 16K
> > translation granule. In addition, if 16K is not supported,
> > vSVA will failed to be enabled in the future for 16K guest
> > kernel. So it'd better to support it.
> >
> > Signed-off-by: Kunkun Jiang <jiangkunkun@huawei.com>
>
> Looks good to me.
> Reviewed-by: Eric Auger <eric.auger@redhat.com>
> Tested-by: Eric Auger <eric.auger@redhat.com>



Applied to target-arm.next (for 6.1), thanks.

-- PMM


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-04-19 14:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-31  6:47 [PATCH] hw/arm/smmuv3: Support 16K translation granule Kunkun Jiang
2021-04-07  8:41 ` Auger Eric
2021-04-19 14:15   ` Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).