Re: [PATCH 7/8] drm/amdgpu: Use asic specific doorbell index instead of macro definition
On Mon, Nov 26, 2018 at 12:29 PM Oak Zeng wrote: > > Change-Id: I84475efcfb482c474fccb133010abb5df5f4 > Signed-off-by: Oak Zeng > Suggested-by: Felix Kuehling > Suggested-by: Alex Deucher With a patch description added: Reviewed-by: Alex Deucher > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 27 --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c| 2 +- > drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 2 +- > drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 10 +- > drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 8 > drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 2 +- > drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 25 + > drivers/gpu/drm/amd/amdgpu/tonga_ih.c | 2 +- > drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/vce_v4_0.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 2 +- > 12 files changed, 36 insertions(+), 54 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c > index 1c1fed6..d693b804 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c > @@ -181,25 +181,14 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device > *adev) > * process in case of 64-bit doorbells so we > * can use each doorbell assignment twice. > */ > - if (adev->asic_type == CHIP_VEGA10) { > - gpu_resources.sdma_doorbell[0][i] = > - AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE0 > + (i >> 1); > - gpu_resources.sdma_doorbell[0][i+1] = > - AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE0 > + 0x200 + (i >> 1); > - gpu_resources.sdma_doorbell[1][i] = > - AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE1 > + (i >> 1); > - gpu_resources.sdma_doorbell[1][i+1] = > - AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE1 > + 0x200 + (i >> 1); > - } else { > - gpu_resources.sdma_doorbell[0][i] = > - AMDGPU_DOORBELL64_sDMA_ENGINE0 + (i > >> 1); > - gpu_resources.sdma_doorbell[0][i+1] = > - AMDGPU_DOORBELL64_sDMA_ENGINE0 + > 0x200 + (i >> 1); > - gpu_resources.sdma_doorbell[1][i] = > - AMDGPU_DOORBELL64_sDMA_ENGINE1 + (i > >> 1); > - gpu_resources.sdma_doorbell[1][i+1] = > - AMDGPU_DOORBELL64_sDMA_ENGINE1 + > 0x200 + (i >> 1); > - } > + gpu_resources.sdma_doorbell[0][i] = > + adev->doorbell_index.sdma_engine0 + (i >> 1); > + gpu_resources.sdma_doorbell[0][i+1] = > + adev->doorbell_index.sdma_engine0 + 0x200 + > (i >> 1); > + gpu_resources.sdma_doorbell[1][i] = > + adev->doorbell_index.sdma_engine1 + (i >> 1); > + gpu_resources.sdma_doorbell[1][i+1] = > + adev->doorbell_index.sdma_engine1 + 0x200 + > (i >> 1); > } > /* Doorbells 0x0e0-0ff and 0x2e0-2ff are reserved for > * SDMA, IH and VCN. So don't use them for the CP. > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index a8b1c9c..fdbc2c2 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -532,7 +532,7 @@ static int amdgpu_device_doorbell_init(struct > amdgpu_device *adev) > adev->doorbell.size = pci_resource_len(adev->pdev, 2); > > adev->doorbell.num_doorbells = min_t(u32, adev->doorbell.size / > sizeof(u32), > - > AMDGPU_DOORBELL_MAX_ASSIGNMENT+1); > + > adev->doorbell_index.max_assignment+1); > if (adev->doorbell.num_doorbells == 0) > return -EINVAL; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > index 6a70c0b..97a60da 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > @@ -250,7 +250,7 @@ int amdgpu_gfx_kiq_init_ring(struct amdgpu_device *adev, > ring->adev = NULL; > ring->ring_obj = NULL; > ring->use_doorbell = true; > - ring->doorbell_index = AMDGPU_DOORBELL_KIQ; > + ring->doorbell_index =
[PATCH 7/8] drm/amdgpu: Use asic specific doorbell index instead of macro definition
Change-Id: I84475efcfb482c474fccb133010abb5df5f4 Signed-off-by: Oak Zeng Suggested-by: Felix Kuehling Suggested-by: Alex Deucher --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 27 --- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c| 2 +- drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 10 +- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 8 drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 25 + drivers/gpu/drm/amd/amdgpu/tonga_ih.c | 2 +- drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c | 4 ++-- drivers/gpu/drm/amd/amdgpu/vce_v4_0.c | 4 ++-- drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 2 +- 12 files changed, 36 insertions(+), 54 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c index 1c1fed6..d693b804 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c @@ -181,25 +181,14 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev) * process in case of 64-bit doorbells so we * can use each doorbell assignment twice. */ - if (adev->asic_type == CHIP_VEGA10) { - gpu_resources.sdma_doorbell[0][i] = - AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE0 + (i >> 1); - gpu_resources.sdma_doorbell[0][i+1] = - AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE0 + 0x200 + (i >> 1); - gpu_resources.sdma_doorbell[1][i] = - AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE1 + (i >> 1); - gpu_resources.sdma_doorbell[1][i+1] = - AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE1 + 0x200 + (i >> 1); - } else { - gpu_resources.sdma_doorbell[0][i] = - AMDGPU_DOORBELL64_sDMA_ENGINE0 + (i >> 1); - gpu_resources.sdma_doorbell[0][i+1] = - AMDGPU_DOORBELL64_sDMA_ENGINE0 + 0x200 + (i >> 1); - gpu_resources.sdma_doorbell[1][i] = - AMDGPU_DOORBELL64_sDMA_ENGINE1 + (i >> 1); - gpu_resources.sdma_doorbell[1][i+1] = - AMDGPU_DOORBELL64_sDMA_ENGINE1 + 0x200 + (i >> 1); - } + gpu_resources.sdma_doorbell[0][i] = + adev->doorbell_index.sdma_engine0 + (i >> 1); + gpu_resources.sdma_doorbell[0][i+1] = + adev->doorbell_index.sdma_engine0 + 0x200 + (i >> 1); + gpu_resources.sdma_doorbell[1][i] = + adev->doorbell_index.sdma_engine1 + (i >> 1); + gpu_resources.sdma_doorbell[1][i+1] = + adev->doorbell_index.sdma_engine1 + 0x200 + (i >> 1); } /* Doorbells 0x0e0-0ff and 0x2e0-2ff are reserved for * SDMA, IH and VCN. So don't use them for the CP. diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index a8b1c9c..fdbc2c2 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -532,7 +532,7 @@ static int amdgpu_device_doorbell_init(struct amdgpu_device *adev) adev->doorbell.size = pci_resource_len(adev->pdev, 2); adev->doorbell.num_doorbells = min_t(u32, adev->doorbell.size / sizeof(u32), -AMDGPU_DOORBELL_MAX_ASSIGNMENT+1); + adev->doorbell_index.max_assignment+1); if (adev->doorbell.num_doorbells == 0) return -EINVAL; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c index 6a70c0b..97a60da 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c @@ -250,7 +250,7 @@ int amdgpu_gfx_kiq_init_ring(struct amdgpu_device *adev, ring->adev = NULL; ring->ring_obj = NULL; ring->use_doorbell = true; - ring->doorbell_index = AMDGPU_DOORBELL_KIQ; + ring->doorbell_index = adev->doorbell_index.kiq; r = amdgpu_gfx_kiq_acquire(adev, ring); if (r) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c index f467b9b..3a9fb60 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c @@ -4363,7