Re: [PATCH 7/8] drm/amdgpu: Use asic specific doorbell index instead of macro definition

2018-11-27 Thread Alex Deucher
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

2018-11-26 Thread Oak Zeng
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