The series is Reviewed-by: Philip Yang <Philip.Yang@xxxxxxx> On 2018-12-17 9:12 p.m., Zeng, Oak wrote: > Different ASIC has different SDMA queues so different > SDMA doorbell range. Introduce an extra parameter > to sdma_doorbell_range function and set sdma doorbell > range correctly. > > Change-Id: I9b8d75b04f5a47ef1c6fd7cc1caaefd98dd2ff2b > Signed-off-by: Oak Zeng <Oak.Zeng@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 +- > drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 3 ++- > 5 files changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index bcef6ea..5a7907b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -634,7 +634,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); > + bool use_doorbell, int doorbell_index, int doorbell_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/nbio_v6_1.c b/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c > index 6f9c549..1eeb318 100644 > --- a/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c > +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c > @@ -71,7 +71,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) > + bool use_doorbell, int doorbell_index, int doorbell_size) > { > u32 reg = instance == 0 ? SOC15_REG_OFFSET(NBIO, 0, mmBIF_SDMA0_DOORBELL_RANGE) : > SOC15_REG_OFFSET(NBIO, 0, mmBIF_SDMA1_DOORBELL_RANGE); > @@ -80,7 +80,7 @@ static void nbio_v6_1_sdma_doorbell_range(struct amdgpu_device *adev, int instan > > 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, 2); > + doorbell_range = REG_SET_FIELD(doorbell_range, BIF_SDMA0_DOORBELL_RANGE, SIZE, doorbell_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 df34dc7..d80413d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c > @@ -69,7 +69,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) > + bool use_doorbell, int doorbell_index, int doorbell_size) > { > u32 reg = instance == 0 ? SOC15_REG_OFFSET(NBIO, 0, mmBIF_SDMA0_DOORBELL_RANGE) : > SOC15_REG_OFFSET(NBIO, 0, mmBIF_SDMA1_DOORBELL_RANGE); > @@ -78,7 +78,7 @@ static void nbio_v7_0_sdma_doorbell_range(struct amdgpu_device *adev, int instan > > 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, 2); > + doorbell_range = REG_SET_FIELD(doorbell_range, BIF_SDMA0_DOORBELL_RANGE, SIZE, doorbell_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 f8cee95..27976b3 100644 > --- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c > +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c > @@ -67,7 +67,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) > + bool use_doorbell, int doorbell_index, int doorbell_size) > { > u32 reg = instance == 0 ? SOC15_REG_OFFSET(NBIO, 0, mmBIF_SDMA0_DOORBELL_RANGE) : > SOC15_REG_OFFSET(NBIO, 0, mmBIF_SDMA1_DOORBELL_RANGE); > @@ -76,7 +76,7 @@ static void nbio_v7_4_sdma_doorbell_range(struct amdgpu_device *adev, int instan > > 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, 2); > + doorbell_range = REG_SET_FIELD(doorbell_range, BIF_SDMA0_DOORBELL_RANGE, SIZE, doorbell_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 42b419d..96b160d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c > @@ -834,7 +834,8 @@ static void sdma_v4_0_gfx_resume(struct amdgpu_device *adev, unsigned int i) > WREG32_SDMA(i, mmSDMA0_GFX_DOORBELL, doorbell); > WREG32_SDMA(i, mmSDMA0_GFX_DOORBELL_OFFSET, doorbell_offset); > adev->nbio_funcs->sdma_doorbell_range(adev, i, ring->use_doorbell, > - ring->doorbell_index); > + ring->doorbell_index, > + adev->doorbell_index.sdma_doorbell_range); > > sdma_v4_0_ring_set_wptr(ring); > > _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx