All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/amdkfd: Contain MMHUB number in the implementation
@ 2019-12-03  4:42 Yong Zhao
  2019-12-03  4:42 ` [PATCH 2/2] drm/amdkfd: Add Arcturus specific set_vm_context_page_table_base() Yong Zhao
  2019-12-03 12:11 ` [PATCH 1/2] drm/amdkfd: Contain MMHUB number in the implementation Christian König
  0 siblings, 2 replies; 5+ messages in thread
From: Yong Zhao @ 2019-12-03  4:42 UTC (permalink / raw
  To: amd-gfx; +Cc: Yong Zhao

Adjust the exposed function prototype so that the caller does not need
to know the MMHUB number.

Change-Id: I4420d1715984f703954f074682b075fc59e2a330
Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c |  6 ++----
 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h             |  8 --------
 drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c           | 13 +++++++++++--
 drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h           |  2 ++
 4 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
index 47c853ef1051..6f1a4676ddde 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
@@ -40,7 +40,7 @@
 #include "soc15d.h"
 #include "mmhub_v1_0.h"
 #include "gfxhub_v1_0.h"
-#include "gmc_v9_0.h"
+#include "mmhub_v9_4.h"
 
 
 enum hqd_dequeue_request_type {
@@ -774,9 +774,7 @@ void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmi
 	 * on GFX8 and older.
 	 */
 	if (adev->asic_type == CHIP_ARCTURUS) {
-		/* Two MMHUBs */
-		mmhub_v9_4_setup_vm_pt_regs(adev, 0, vmid, page_table_base);
-		mmhub_v9_4_setup_vm_pt_regs(adev, 1, vmid, page_table_base);
+		mmhub_v9_4_setup_vm_pt_regs(adev, vmid, page_table_base);
 	} else
 		mmhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
 
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
index 971c0840358f..49e8be761214 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
@@ -36,12 +36,4 @@
 
 extern const struct amd_ip_funcs gmc_v9_0_ip_funcs;
 extern const struct amdgpu_ip_block_version gmc_v9_0_ip_block;
-
-/* amdgpu_amdkfd*.c */
-void gfxhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
-				uint64_t value);
-void mmhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
-				uint64_t value);
-void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, int hubid,
-				uint32_t vmid, uint64_t value);
 #endif
diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
index 8599bfdb9a9e..0b621bf8bbd0 100644
--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
+++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
@@ -54,7 +54,7 @@ u64 mmhub_v9_4_get_fb_location(struct amdgpu_device *adev)
 	return base;
 }
 
-void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, int hubid,
+static void mmhub_v9_4_setup_hubid_vm_pt_regs(struct amdgpu_device *adev, int hubid,
 				uint32_t vmid, uint64_t value)
 {
 	/* two registers distance between mmVML2VC0_VM_CONTEXT0_* to
@@ -80,7 +80,7 @@ static void mmhub_v9_4_init_gart_aperture_regs(struct amdgpu_device *adev,
 {
 	uint64_t pt_base = amdgpu_gmc_pd_addr(adev->gart.bo);
 
-	mmhub_v9_4_setup_vm_pt_regs(adev, hubid, 0, pt_base);
+	mmhub_v9_4_setup_hubid_vm_pt_regs(adev, hubid, 0, pt_base);
 
 	WREG32_SOC15_OFFSET(MMHUB, 0,
 			    mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32,
@@ -101,6 +101,15 @@ static void mmhub_v9_4_init_gart_aperture_regs(struct amdgpu_device *adev,
 			    (u32)(adev->gmc.gart_end >> 44));
 }
 
+void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
+				uint64_t page_table_base)
+{
+	int i;
+	for (i = 0; i < MMHUB_NUM_INSTANCES; i++) {
+		mmhub_v9_4_setup_hubid_vm_pt_regs(adev, i, vmid, page_table_base);
+	}
+}
+
 static void mmhub_v9_4_init_system_aperture_regs(struct amdgpu_device *adev,
 					         int hubid)
 {
diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h
index 354a4b7e875b..1b979773776c 100644
--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h
+++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h
@@ -34,5 +34,7 @@ void mmhub_v9_4_init(struct amdgpu_device *adev);
 int mmhub_v9_4_set_clockgating(struct amdgpu_device *adev,
 			       enum amd_clockgating_state state);
 void mmhub_v9_4_get_clockgating(struct amdgpu_device *adev, u32 *flags);
+void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
+				uint64_t page_table_base);
 
 #endif
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* [PATCH 2/2] drm/amdkfd: Add Arcturus specific set_vm_context_page_table_base()
  2019-12-03  4:42 [PATCH 1/2] drm/amdkfd: Contain MMHUB number in the implementation Yong Zhao
@ 2019-12-03  4:42 ` Yong Zhao
  2019-12-13  0:25   ` Felix Kuehling
  2019-12-03 12:11 ` [PATCH 1/2] drm/amdkfd: Contain MMHUB number in the implementation Christian König
  1 sibling, 1 reply; 5+ messages in thread
From: Yong Zhao @ 2019-12-03  4:42 UTC (permalink / raw
  To: amd-gfx; +Cc: Yong Zhao

Since Arcturus has it own function pointer, we can move Arcturus
specific logic to there rather than leaving it entangled with
other GFX9 chips.

Change-Id: I7df7c004a0c8ac0616ded0e65144670df50f92a7
Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
---
 .../drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c   | 20 ++++++++++++++++++-
 .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 14 +++----------
 .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h |  2 --
 3 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
index b6713e0ed1b2..3c119407dc34 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
@@ -46,6 +46,8 @@
 #include "soc15.h"
 #include "soc15d.h"
 #include "amdgpu_amdkfd_gfx_v9.h"
+#include "gfxhub_v1_0.h"
+#include "mmhub_v9_4.h"
 
 #define HQD_N_REGS 56
 #define DUMP_REG(addr) do {				\
@@ -258,6 +260,22 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
 	return 0;
 }
 
+static void kgd_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
+		uint64_t page_table_base)
+{
+	struct amdgpu_device *adev = get_amdgpu_device(kgd);
+
+	if (!amdgpu_amdkfd_is_kfd_vmid(adev, vmid)) {
+		pr_err("trying to set page table base for wrong VMID %u\n",
+		       vmid);
+		return;
+	}
+
+	mmhub_v9_4_setup_vm_pt_regs(adev, vmid, page_table_base);
+
+	gfxhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
+}
+
 const struct kfd2kgd_calls arcturus_kfd2kgd = {
 	.program_sh_mem_settings = kgd_gfx_v9_program_sh_mem_settings,
 	.set_pasid_vmid_mapping = kgd_gfx_v9_set_pasid_vmid_mapping,
@@ -277,7 +295,7 @@ const struct kfd2kgd_calls arcturus_kfd2kgd = {
 	.get_atc_vmid_pasid_mapping_info =
 			kgd_gfx_v9_get_atc_vmid_pasid_mapping_info,
 	.get_tile_config = kgd_gfx_v9_get_tile_config,
-	.set_vm_context_page_table_base = kgd_gfx_v9_set_vm_context_page_table_base,
+	.set_vm_context_page_table_base = kgd_set_vm_context_page_table_base,
 	.invalidate_tlbs = kgd_gfx_v9_invalidate_tlbs,
 	.invalidate_tlbs_vmid = kgd_gfx_v9_invalidate_tlbs_vmid,
 	.get_hive_id = amdgpu_amdkfd_get_hive_id,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
index 6f1a4676ddde..e7861f0ef415 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
@@ -40,7 +40,6 @@
 #include "soc15d.h"
 #include "mmhub_v1_0.h"
 #include "gfxhub_v1_0.h"
-#include "mmhub_v9_4.h"
 
 
 enum hqd_dequeue_request_type {
@@ -758,8 +757,8 @@ uint32_t kgd_gfx_v9_address_watch_get_offset(struct kgd_dev *kgd,
 	return 0;
 }
 
-void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
-		uint64_t page_table_base)
+static void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd,
+			uint32_t vmid, uint64_t page_table_base)
 {
 	struct amdgpu_device *adev = get_amdgpu_device(kgd);
 
@@ -769,14 +768,7 @@ void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmi
 		return;
 	}
 
-	/* TODO: take advantage of per-process address space size. For
-	 * now, all processes share the same address space size, like
-	 * on GFX8 and older.
-	 */
-	if (adev->asic_type == CHIP_ARCTURUS) {
-		mmhub_v9_4_setup_vm_pt_regs(adev, vmid, page_table_base);
-	} else
-		mmhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
+	mmhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
 
 	gfxhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
 }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
index d9e9ad22b2bd..02b1426d17d1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
@@ -57,8 +57,6 @@ uint32_t kgd_gfx_v9_address_watch_get_offset(struct kgd_dev *kgd,
 
 bool kgd_gfx_v9_get_atc_vmid_pasid_mapping_info(struct kgd_dev *kgd,
 					uint8_t vmid, uint16_t *p_pasid);
-void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
-		uint64_t page_table_base);
 int kgd_gfx_v9_invalidate_tlbs(struct kgd_dev *kgd, uint16_t pasid);
 int kgd_gfx_v9_invalidate_tlbs_vmid(struct kgd_dev *kgd, uint16_t vmid);
 int kgd_gfx_v9_get_tile_config(struct kgd_dev *kgd,
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 1/2] drm/amdkfd: Contain MMHUB number in the implementation
  2019-12-03  4:42 [PATCH 1/2] drm/amdkfd: Contain MMHUB number in the implementation Yong Zhao
  2019-12-03  4:42 ` [PATCH 2/2] drm/amdkfd: Add Arcturus specific set_vm_context_page_table_base() Yong Zhao
@ 2019-12-03 12:11 ` Christian König
  1 sibling, 0 replies; 5+ messages in thread
From: Christian König @ 2019-12-03 12:11 UTC (permalink / raw
  To: Yong Zhao, amd-gfx

Am 03.12.19 um 05:42 schrieb Yong Zhao:
> Adjust the exposed function prototype so that the caller does not need
> to know the MMHUB number.
>
> Change-Id: I4420d1715984f703954f074682b075fc59e2a330
> Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c |  6 ++----
>   drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h             |  8 --------
>   drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c           | 13 +++++++++++--
>   drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h           |  2 ++
>   4 files changed, 15 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
> index 47c853ef1051..6f1a4676ddde 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
> @@ -40,7 +40,7 @@
>   #include "soc15d.h"
>   #include "mmhub_v1_0.h"
>   #include "gfxhub_v1_0.h"
> -#include "gmc_v9_0.h"
> +#include "mmhub_v9_4.h"
>   
>   
>   enum hqd_dequeue_request_type {
> @@ -774,9 +774,7 @@ void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmi
>   	 * on GFX8 and older.
>   	 */
>   	if (adev->asic_type == CHIP_ARCTURUS) {
> -		/* Two MMHUBs */
> -		mmhub_v9_4_setup_vm_pt_regs(adev, 0, vmid, page_table_base);
> -		mmhub_v9_4_setup_vm_pt_regs(adev, 1, vmid, page_table_base);
> +		mmhub_v9_4_setup_vm_pt_regs(adev, vmid, page_table_base);
>   	} else
>   		mmhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
> index 971c0840358f..49e8be761214 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h
> @@ -36,12 +36,4 @@
>   
>   extern const struct amd_ip_funcs gmc_v9_0_ip_funcs;
>   extern const struct amdgpu_ip_block_version gmc_v9_0_ip_block;
> -
> -/* amdgpu_amdkfd*.c */
> -void gfxhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
> -				uint64_t value);
> -void mmhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
> -				uint64_t value);
> -void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, int hubid,
> -				uint32_t vmid, uint64_t value);
>   #endif
> diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
> index 8599bfdb9a9e..0b621bf8bbd0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c
> @@ -54,7 +54,7 @@ u64 mmhub_v9_4_get_fb_location(struct amdgpu_device *adev)
>   	return base;
>   }
>   
> -void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, int hubid,
> +static void mmhub_v9_4_setup_hubid_vm_pt_regs(struct amdgpu_device *adev, int hubid,
>   				uint32_t vmid, uint64_t value)
>   {
>   	/* two registers distance between mmVML2VC0_VM_CONTEXT0_* to
> @@ -80,7 +80,7 @@ static void mmhub_v9_4_init_gart_aperture_regs(struct amdgpu_device *adev,
>   {
>   	uint64_t pt_base = amdgpu_gmc_pd_addr(adev->gart.bo);
>   
> -	mmhub_v9_4_setup_vm_pt_regs(adev, hubid, 0, pt_base);
> +	mmhub_v9_4_setup_hubid_vm_pt_regs(adev, hubid, 0, pt_base);
>   
>   	WREG32_SOC15_OFFSET(MMHUB, 0,
>   			    mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32,
> @@ -101,6 +101,15 @@ static void mmhub_v9_4_init_gart_aperture_regs(struct amdgpu_device *adev,
>   			    (u32)(adev->gmc.gart_end >> 44));
>   }
>   
> +void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
> +				uint64_t page_table_base)
> +{
> +	int i;

You should add an empty line between declaration and code.

> +	for (i = 0; i < MMHUB_NUM_INSTANCES; i++) {
> +		mmhub_v9_4_setup_hubid_vm_pt_regs(adev, i, vmid, page_table_base);
> +	}

Please don't add {} for single line statements.

Regards,
Christian.

> +}
> +
>   static void mmhub_v9_4_init_system_aperture_regs(struct amdgpu_device *adev,
>   					         int hubid)
>   {
> diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h
> index 354a4b7e875b..1b979773776c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h
> +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.h
> @@ -34,5 +34,7 @@ void mmhub_v9_4_init(struct amdgpu_device *adev);
>   int mmhub_v9_4_set_clockgating(struct amdgpu_device *adev,
>   			       enum amd_clockgating_state state);
>   void mmhub_v9_4_get_clockgating(struct amdgpu_device *adev, u32 *flags);
> +void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,
> +				uint64_t page_table_base);
>   
>   #endif

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 2/2] drm/amdkfd: Add Arcturus specific set_vm_context_page_table_base()
  2019-12-03  4:42 ` [PATCH 2/2] drm/amdkfd: Add Arcturus specific set_vm_context_page_table_base() Yong Zhao
@ 2019-12-13  0:25   ` Felix Kuehling
  2019-12-13  0:34     ` Yong Zhao
  0 siblings, 1 reply; 5+ messages in thread
From: Felix Kuehling @ 2019-12-13  0:25 UTC (permalink / raw
  To: Yong Zhao, amd-gfx

I agree with Christian's comments on patch 1. With those fixed, the 
series is

Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>

Regards,
   Felix

On 2019-12-02 20:42, Yong Zhao wrote:
> Since Arcturus has it own function pointer, we can move Arcturus
> specific logic to there rather than leaving it entangled with
> other GFX9 chips.
>
> Change-Id: I7df7c004a0c8ac0616ded0e65144670df50f92a7
> Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
> ---
>   .../drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c   | 20 ++++++++++++++++++-
>   .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 14 +++----------
>   .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h |  2 --
>   3 files changed, 22 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
> index b6713e0ed1b2..3c119407dc34 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
> @@ -46,6 +46,8 @@
>   #include "soc15.h"
>   #include "soc15d.h"
>   #include "amdgpu_amdkfd_gfx_v9.h"
> +#include "gfxhub_v1_0.h"
> +#include "mmhub_v9_4.h"
>   
>   #define HQD_N_REGS 56
>   #define DUMP_REG(addr) do {				\
> @@ -258,6 +260,22 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
>   	return 0;
>   }
>   
> +static void kgd_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
> +		uint64_t page_table_base)
> +{
> +	struct amdgpu_device *adev = get_amdgpu_device(kgd);
> +
> +	if (!amdgpu_amdkfd_is_kfd_vmid(adev, vmid)) {
> +		pr_err("trying to set page table base for wrong VMID %u\n",
> +		       vmid);
> +		return;
> +	}
> +
> +	mmhub_v9_4_setup_vm_pt_regs(adev, vmid, page_table_base);
> +
> +	gfxhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
> +}
> +
>   const struct kfd2kgd_calls arcturus_kfd2kgd = {
>   	.program_sh_mem_settings = kgd_gfx_v9_program_sh_mem_settings,
>   	.set_pasid_vmid_mapping = kgd_gfx_v9_set_pasid_vmid_mapping,
> @@ -277,7 +295,7 @@ const struct kfd2kgd_calls arcturus_kfd2kgd = {
>   	.get_atc_vmid_pasid_mapping_info =
>   			kgd_gfx_v9_get_atc_vmid_pasid_mapping_info,
>   	.get_tile_config = kgd_gfx_v9_get_tile_config,
> -	.set_vm_context_page_table_base = kgd_gfx_v9_set_vm_context_page_table_base,
> +	.set_vm_context_page_table_base = kgd_set_vm_context_page_table_base,
>   	.invalidate_tlbs = kgd_gfx_v9_invalidate_tlbs,
>   	.invalidate_tlbs_vmid = kgd_gfx_v9_invalidate_tlbs_vmid,
>   	.get_hive_id = amdgpu_amdkfd_get_hive_id,
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
> index 6f1a4676ddde..e7861f0ef415 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
> @@ -40,7 +40,6 @@
>   #include "soc15d.h"
>   #include "mmhub_v1_0.h"
>   #include "gfxhub_v1_0.h"
> -#include "mmhub_v9_4.h"
>   
>   
>   enum hqd_dequeue_request_type {
> @@ -758,8 +757,8 @@ uint32_t kgd_gfx_v9_address_watch_get_offset(struct kgd_dev *kgd,
>   	return 0;
>   }
>   
> -void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
> -		uint64_t page_table_base)
> +static void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd,
> +			uint32_t vmid, uint64_t page_table_base)
>   {
>   	struct amdgpu_device *adev = get_amdgpu_device(kgd);
>   
> @@ -769,14 +768,7 @@ void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmi
>   		return;
>   	}
>   
> -	/* TODO: take advantage of per-process address space size. For
> -	 * now, all processes share the same address space size, like
> -	 * on GFX8 and older.
> -	 */
> -	if (adev->asic_type == CHIP_ARCTURUS) {
> -		mmhub_v9_4_setup_vm_pt_regs(adev, vmid, page_table_base);
> -	} else
> -		mmhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
> +	mmhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
>   
>   	gfxhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
>   }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
> index d9e9ad22b2bd..02b1426d17d1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
> @@ -57,8 +57,6 @@ uint32_t kgd_gfx_v9_address_watch_get_offset(struct kgd_dev *kgd,
>   
>   bool kgd_gfx_v9_get_atc_vmid_pasid_mapping_info(struct kgd_dev *kgd,
>   					uint8_t vmid, uint16_t *p_pasid);
> -void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
> -		uint64_t page_table_base);
>   int kgd_gfx_v9_invalidate_tlbs(struct kgd_dev *kgd, uint16_t pasid);
>   int kgd_gfx_v9_invalidate_tlbs_vmid(struct kgd_dev *kgd, uint16_t vmid);
>   int kgd_gfx_v9_get_tile_config(struct kgd_dev *kgd,
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 2/2] drm/amdkfd: Add Arcturus specific set_vm_context_page_table_base()
  2019-12-13  0:25   ` Felix Kuehling
@ 2019-12-13  0:34     ` Yong Zhao
  0 siblings, 0 replies; 5+ messages in thread
From: Yong Zhao @ 2019-12-13  0:34 UTC (permalink / raw
  To: Felix Kuehling, amd-gfx

The first one was already fixed and pushed a week ago.

Regards,

Yong

On 2019-12-12 7:25 p.m., Felix Kuehling wrote:
> I agree with Christian's comments on patch 1. With those fixed, the 
> series is
>
> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
>
> Regards,
>   Felix
>
> On 2019-12-02 20:42, Yong Zhao wrote:
>> Since Arcturus has it own function pointer, we can move Arcturus
>> specific logic to there rather than leaving it entangled with
>> other GFX9 chips.
>>
>> Change-Id: I7df7c004a0c8ac0616ded0e65144670df50f92a7
>> Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
>> ---
>>   .../drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c   | 20 ++++++++++++++++++-
>>   .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 14 +++----------
>>   .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h |  2 --
>>   3 files changed, 22 insertions(+), 14 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
>> index b6713e0ed1b2..3c119407dc34 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
>> @@ -46,6 +46,8 @@
>>   #include "soc15.h"
>>   #include "soc15d.h"
>>   #include "amdgpu_amdkfd_gfx_v9.h"
>> +#include "gfxhub_v1_0.h"
>> +#include "mmhub_v9_4.h"
>>     #define HQD_N_REGS 56
>>   #define DUMP_REG(addr) do {                \
>> @@ -258,6 +260,22 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev 
>> *kgd, void *mqd,
>>       return 0;
>>   }
>>   +static void kgd_set_vm_context_page_table_base(struct kgd_dev 
>> *kgd, uint32_t vmid,
>> +        uint64_t page_table_base)
>> +{
>> +    struct amdgpu_device *adev = get_amdgpu_device(kgd);
>> +
>> +    if (!amdgpu_amdkfd_is_kfd_vmid(adev, vmid)) {
>> +        pr_err("trying to set page table base for wrong VMID %u\n",
>> +               vmid);
>> +        return;
>> +    }
>> +
>> +    mmhub_v9_4_setup_vm_pt_regs(adev, vmid, page_table_base);
>> +
>> +    gfxhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
>> +}
>> +
>>   const struct kfd2kgd_calls arcturus_kfd2kgd = {
>>       .program_sh_mem_settings = kgd_gfx_v9_program_sh_mem_settings,
>>       .set_pasid_vmid_mapping = kgd_gfx_v9_set_pasid_vmid_mapping,
>> @@ -277,7 +295,7 @@ const struct kfd2kgd_calls arcturus_kfd2kgd = {
>>       .get_atc_vmid_pasid_mapping_info =
>>               kgd_gfx_v9_get_atc_vmid_pasid_mapping_info,
>>       .get_tile_config = kgd_gfx_v9_get_tile_config,
>> -    .set_vm_context_page_table_base = 
>> kgd_gfx_v9_set_vm_context_page_table_base,
>> +    .set_vm_context_page_table_base = 
>> kgd_set_vm_context_page_table_base,
>>       .invalidate_tlbs = kgd_gfx_v9_invalidate_tlbs,
>>       .invalidate_tlbs_vmid = kgd_gfx_v9_invalidate_tlbs_vmid,
>>       .get_hive_id = amdgpu_amdkfd_get_hive_id,
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
>> index 6f1a4676ddde..e7861f0ef415 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
>> @@ -40,7 +40,6 @@
>>   #include "soc15d.h"
>>   #include "mmhub_v1_0.h"
>>   #include "gfxhub_v1_0.h"
>> -#include "mmhub_v9_4.h"
>>       enum hqd_dequeue_request_type {
>> @@ -758,8 +757,8 @@ uint32_t 
>> kgd_gfx_v9_address_watch_get_offset(struct kgd_dev *kgd,
>>       return 0;
>>   }
>>   -void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev 
>> *kgd, uint32_t vmid,
>> -        uint64_t page_table_base)
>> +static void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev 
>> *kgd,
>> +            uint32_t vmid, uint64_t page_table_base)
>>   {
>>       struct amdgpu_device *adev = get_amdgpu_device(kgd);
>>   @@ -769,14 +768,7 @@ void 
>> kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, 
>> uint32_t vmi
>>           return;
>>       }
>>   -    /* TODO: take advantage of per-process address space size. For
>> -     * now, all processes share the same address space size, like
>> -     * on GFX8 and older.
>> -     */
>> -    if (adev->asic_type == CHIP_ARCTURUS) {
>> -        mmhub_v9_4_setup_vm_pt_regs(adev, vmid, page_table_base);
>> -    } else
>> -        mmhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
>> +    mmhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
>>         gfxhub_v1_0_setup_vm_pt_regs(adev, vmid, page_table_base);
>>   }
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
>> index d9e9ad22b2bd..02b1426d17d1 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h
>> @@ -57,8 +57,6 @@ uint32_t kgd_gfx_v9_address_watch_get_offset(struct 
>> kgd_dev *kgd,
>>     bool kgd_gfx_v9_get_atc_vmid_pasid_mapping_info(struct kgd_dev *kgd,
>>                       uint8_t vmid, uint16_t *p_pasid);
>> -void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, 
>> uint32_t vmid,
>> -        uint64_t page_table_base);
>>   int kgd_gfx_v9_invalidate_tlbs(struct kgd_dev *kgd, uint16_t pasid);
>>   int kgd_gfx_v9_invalidate_tlbs_vmid(struct kgd_dev *kgd, uint16_t 
>> vmid);
>>   int kgd_gfx_v9_get_tile_config(struct kgd_dev *kgd,
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

end of thread, other threads:[~2019-12-13  0:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-03  4:42 [PATCH 1/2] drm/amdkfd: Contain MMHUB number in the implementation Yong Zhao
2019-12-03  4:42 ` [PATCH 2/2] drm/amdkfd: Add Arcturus specific set_vm_context_page_table_base() Yong Zhao
2019-12-13  0:25   ` Felix Kuehling
2019-12-13  0:34     ` Yong Zhao
2019-12-03 12:11 ` [PATCH 1/2] drm/amdkfd: Contain MMHUB number in the implementation Christian König

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.