The headline should start with "drm/amdgpu". This change is not KFD 
specific.

I think Alex should review this change.

Regards,
   Felix

On 2019-02-05 3:31 p.m., Zhao, Yong wrote:
> Indicate that the doorbell offset and range is in dwords.
>
> Change-Id: Ib0f2564ffa7b1940ffb8725cdc03f662184f5436
> Signed-off-by: Yong Zhao <[email protected]>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu.h          | 2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_doorbell.h | 3 ++-
>   drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c       | 6 +++---
>   drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c       | 6 +++---
>   drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c       | 6 +++---
>   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c       | 3 ++-
>   drivers/gpu/drm/amd/amdgpu/soc15.c           | 2 +-
>   drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c | 6 +++++-
>   drivers/gpu/drm/amd/amdgpu/vega20_reg_init.c | 6 +++++-
>   9 files changed, 25 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index d67f8b1dfe80..6230425f3f3d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -642,7 +642,7 @@ struct amdgpu_nbio_funcs {
>       void (*hdp_flush)(struct amdgpu_device *adev, struct amdgpu_ring *ring);
>       u32 (*get_memsize)(struct amdgpu_device *adev);
>       void (*sdma_doorbell_range)(struct amdgpu_device *adev, int instance,
> -                     bool use_doorbell, int doorbell_index, int 
> doorbell_size);
> +                     bool use_doorbell, int index_in_dw, int range_dw_size);
>       void (*enable_doorbell_aperture)(struct amdgpu_device *adev,
>                                        bool enable);
>       void (*enable_doorbell_selfring_aperture)(struct amdgpu_device *adev,
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_doorbell.h 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_doorbell.h
> index 1cfec06f81d4..5c8d04c353d0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_doorbell.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_doorbell.h
> @@ -39,6 +39,7 @@ struct amdgpu_doorbell {
>    * can be 64-bit, so the index defined is in qword.
>    */
>   struct amdgpu_doorbell_index {
> +     uint32_t entry_dw_size;
>       uint32_t kiq;
>       uint32_t mec_ring0;
>       uint32_t mec_ring1;
> @@ -73,7 +74,7 @@ struct amdgpu_doorbell_index {
>       };
>       uint32_t max_assignment;
>       /* Per engine SDMA doorbell size in dword */
> -     uint32_t sdma_doorbell_range;
> +     uint32_t dw_range_per_sdma_eng;
>   };
>   
>   typedef enum _AMDGPU_DOORBELL_ASSIGNMENT
> diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c 
> b/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c
> index cc967dbfd631..64bc41afd71e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c
> +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c
> @@ -68,7 +68,7 @@ static u32 nbio_v6_1_get_memsize(struct amdgpu_device *adev)
>   }
>   
>   static void nbio_v6_1_sdma_doorbell_range(struct amdgpu_device *adev, int 
> instance,
> -                     bool use_doorbell, int doorbell_index, int 
> doorbell_size)
> +                     bool use_doorbell, int index_in_dw, int range_dw_size)
>   {
>       u32 reg = instance == 0 ? SOC15_REG_OFFSET(NBIO, 0, 
> mmBIF_SDMA0_DOORBELL_RANGE) :
>                       SOC15_REG_OFFSET(NBIO, 0, mmBIF_SDMA1_DOORBELL_RANGE);
> @@ -76,8 +76,8 @@ static void nbio_v6_1_sdma_doorbell_range(struct 
> amdgpu_device *adev, int instan
>       u32 doorbell_range = RREG32(reg);
>   
>       if (use_doorbell) {
> -             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, OFFSET, doorbell_index);
> -             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, SIZE, doorbell_size);
> +             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, OFFSET, index_in_dw);
> +             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, SIZE, range_dw_size);
>       } else
>               doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, SIZE, 0);
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c 
> b/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c
> index 1cdb98ad2db3..28cc96b7a292 100644
> --- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c
> @@ -67,7 +67,7 @@ static u32 nbio_v7_0_get_memsize(struct amdgpu_device *adev)
>   }
>   
>   static void nbio_v7_0_sdma_doorbell_range(struct amdgpu_device *adev, int 
> instance,
> -                     bool use_doorbell, int doorbell_index, int 
> doorbell_size)
> +                     bool use_doorbell, int index_in_dw, int range_dw_size)
>   {
>       u32 reg = instance == 0 ? SOC15_REG_OFFSET(NBIO, 0, 
> mmBIF_SDMA0_DOORBELL_RANGE) :
>                       SOC15_REG_OFFSET(NBIO, 0, mmBIF_SDMA1_DOORBELL_RANGE);
> @@ -75,8 +75,8 @@ static void nbio_v7_0_sdma_doorbell_range(struct 
> amdgpu_device *adev, int instan
>       u32 doorbell_range = RREG32(reg);
>   
>       if (use_doorbell) {
> -             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, OFFSET, doorbell_index);
> -             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, SIZE, doorbell_size);
> +             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, OFFSET, index_in_dw);
> +             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, SIZE, range_dw_size);
>       } else
>               doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, SIZE, 0);
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c 
> b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
> index 221f26e50322..9ae8cd4dc702 100644
> --- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
> +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
> @@ -65,7 +65,7 @@ static u32 nbio_v7_4_get_memsize(struct amdgpu_device *adev)
>   }
>   
>   static void nbio_v7_4_sdma_doorbell_range(struct amdgpu_device *adev, int 
> instance,
> -                     bool use_doorbell, int doorbell_index, int 
> doorbell_size)
> +                     bool use_doorbell, int index_in_dw, int range_dw_size)
>   {
>       u32 reg = instance == 0 ? SOC15_REG_OFFSET(NBIO, 0, 
> mmBIF_SDMA0_DOORBELL_RANGE) :
>                       SOC15_REG_OFFSET(NBIO, 0, mmBIF_SDMA1_DOORBELL_RANGE);
> @@ -73,8 +73,8 @@ static void nbio_v7_4_sdma_doorbell_range(struct 
> amdgpu_device *adev, int instan
>       u32 doorbell_range = RREG32(reg);
>   
>       if (use_doorbell) {
> -             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, OFFSET, doorbell_index);
> -             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, SIZE, doorbell_size);
> +             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, OFFSET, index_in_dw);
> +             doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, SIZE, range_dw_size);
>       } else
>               doorbell_range = REG_SET_FIELD(doorbell_range, 
> BIF_SDMA0_DOORBELL_RANGE, SIZE, 0);
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c 
> b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> index 127b85983e8f..e65e9bc52bd4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> @@ -1520,7 +1520,8 @@ static int sdma_v4_0_sw_init(void *handle)
>                               ring->use_doorbell?"true":"false");
>   
>               /* doorbell size is 2 dwords, get DWORD offset */
> -             ring->doorbell_index = adev->doorbell_index.sdma_engine[i] << 1;
> +             ring->doorbell_index = adev->doorbell_index.sdma_engine[i]
> +                             * adev->doorbell_index.entry_dw_size;
>   
>               sprintf(ring->name, "sdma%d", i);
>               r = amdgpu_ring_init(adev, ring, 1024,
> diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c 
> b/drivers/gpu/drm/amd/amdgpu/soc15.c
> index 99ebcf29dcb0..aad72ac80361 100644
> --- a/drivers/gpu/drm/amd/amdgpu/soc15.c
> +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
> @@ -980,7 +980,7 @@ static void soc15_doorbell_range_init(struct 
> amdgpu_device *adev)
>               ring = &adev->sdma.instance[i].ring;
>               adev->nbio_funcs->sdma_doorbell_range(adev, i,
>                       ring->use_doorbell, ring->doorbell_index,
> -                     adev->doorbell_index.sdma_doorbell_range);
> +                     adev->doorbell_index.dw_range_per_sdma_eng);
>       }
>   
>       adev->nbio_funcs->ih_doorbell_range(adev, adev->irq.ih.use_doorbell,
> diff --git a/drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c 
> b/drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c
> index 4b5d60ea3e78..d2409df2dde9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c
> +++ b/drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c
> @@ -58,6 +58,7 @@ int vega10_reg_base_init(struct amdgpu_device *adev)
>   
>   void vega10_doorbell_index_init(struct amdgpu_device *adev)
>   {
> +     adev->doorbell_index.entry_dw_size = 2;
>       adev->doorbell_index.kiq = AMDGPU_DOORBELL64_KIQ;
>       adev->doorbell_index.mec_ring0 = AMDGPU_DOORBELL64_MEC_RING0;
>       adev->doorbell_index.mec_ring1 = AMDGPU_DOORBELL64_MEC_RING1;
> @@ -83,6 +84,9 @@ void vega10_doorbell_index_init(struct amdgpu_device *adev)
>       adev->doorbell_index.uvd_vce.vce_ring6_7 = 
> AMDGPU_DOORBELL64_VCE_RING6_7;
>       /* In unit of dword doorbell */
>       adev->doorbell_index.max_assignment = AMDGPU_DOORBELL64_MAX_ASSIGNMENT 
> << 1;
> -     adev->doorbell_index.sdma_doorbell_range = 4;
> +     adev->doorbell_index.dw_range_per_sdma_eng =
> +                     (adev->doorbell_index.sdma_engine[1]
> +                     - adev->doorbell_index.sdma_engine[0])
> +                     * adev->doorbell_index.entry_dw_size;
>   }
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/vega20_reg_init.c 
> b/drivers/gpu/drm/amd/amdgpu/vega20_reg_init.c
> index 53716c593b2b..b28c5999d8f0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/vega20_reg_init.c
> +++ b/drivers/gpu/drm/amd/amdgpu/vega20_reg_init.c
> @@ -56,6 +56,7 @@ int vega20_reg_base_init(struct amdgpu_device *adev)
>   
>   void vega20_doorbell_index_init(struct amdgpu_device *adev)
>   {
> +     adev->doorbell_index.entry_dw_size = 2;
>       adev->doorbell_index.kiq = AMDGPU_VEGA20_DOORBELL_KIQ;
>       adev->doorbell_index.mec_ring0 = AMDGPU_VEGA20_DOORBELL_MEC_RING0;
>       adev->doorbell_index.mec_ring1 = AMDGPU_VEGA20_DOORBELL_MEC_RING1;
> @@ -86,6 +87,9 @@ void vega20_doorbell_index_init(struct amdgpu_device *adev)
>       adev->doorbell_index.uvd_vce.vce_ring4_5 = 
> AMDGPU_VEGA20_DOORBELL64_VCE_RING4_5;
>       adev->doorbell_index.uvd_vce.vce_ring6_7 = 
> AMDGPU_VEGA20_DOORBELL64_VCE_RING6_7;
>       adev->doorbell_index.max_assignment = 
> AMDGPU_VEGA20_DOORBELL_MAX_ASSIGNMENT << 1;
> -     adev->doorbell_index.sdma_doorbell_range = 20;
> +     adev->doorbell_index.dw_range_per_sdma_eng =
> +                     (adev->doorbell_index.sdma_engine[1]
> +                     - adev->doorbell_index.sdma_engine[0])
> +                     * adev->doorbell_index.entry_dw_size;
>   }
>   
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to