Re: [PATCH 17/17] drm/amdgpu: move vram usage by vbios to mman

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 29.07.20 um 19:34 schrieb Alex Deucher:
It's related to the memory manager so move it there.

Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu.h           | 12 -----------
  drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c  |  4 ++--
  .../gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c  |  4 ++--
  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c       | 20 +++++++++----------
  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h       | 13 ++++++++++++
  drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c      |  6 +++---
  6 files changed, 30 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 44fd0ef7394f..81f6412eb54f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -649,16 +649,6 @@ struct amdgpu_atcs {
  	struct amdgpu_atcs_functions functions;
  };
-/*
- * Firmware VRAM reservation
- */
-struct amdgpu_fw_vram_usage {
-	u64 start_offset;
-	u64 size;
-	struct amdgpu_bo *reserved_bo;
-	void *va;
-};
-
  /*
   * CGS
   */
@@ -942,8 +932,6 @@ struct amdgpu_device {
  	struct delayed_work     delayed_init_work;
struct amdgpu_virt virt;
-	/* firmware VRAM reservation */
-	struct amdgpu_fw_vram_usage fw_vram_usage;
/* link all shadow bo */
  	struct list_head                shadow_list;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
index 29f767e026e4..681f2ef739b1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
@@ -1786,9 +1786,9 @@ static int amdgpu_atombios_allocate_fb_scratch(struct amdgpu_device *adev)
  			(uint32_t)(ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION <<
  			ATOM_VRAM_OPERATION_FLAGS_SHIFT)) {
  			/* Firmware request VRAM reservation for SR-IOV */
-			adev->fw_vram_usage.start_offset = (start_addr &
+			adev->mman.fw_vram_usage.start_offset = (start_addr &
  				(~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
-			adev->fw_vram_usage.size = size << 10;
+			adev->mman.fw_vram_usage.size = size << 10;
  			/* Use the default scratch size */
  			usage_bytes = 0;
  		} else {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
index 1279053324f9..07a835d42b72 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
@@ -89,9 +89,9 @@ int amdgpu_atomfirmware_allocate_fb_scratch(struct amdgpu_device *adev)
  			(uint32_t)(ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION <<
  			ATOM_VRAM_OPERATION_FLAGS_SHIFT)) {
  			/* Firmware request VRAM reservation for SR-IOV */
-			adev->fw_vram_usage.start_offset = (start_addr &
+			adev->mman.fw_vram_usage.start_offset = (start_addr &
  				(~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
-			adev->fw_vram_usage.size = size << 10;
+			adev->mman.fw_vram_usage.size = size << 10;
  			/* Use the default scratch size */
  			usage_bytes = 0;
  		} else {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index ea9b5b39f640..f81a33f79517 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1766,8 +1766,8 @@ static struct ttm_bo_driver amdgpu_bo_driver = {
   */
  static void amdgpu_ttm_fw_reserve_vram_fini(struct amdgpu_device *adev)
  {
-	amdgpu_bo_free_kernel(&adev->fw_vram_usage.reserved_bo,
-		NULL, &adev->fw_vram_usage.va);
+	amdgpu_bo_free_kernel(&adev->mman.fw_vram_usage.reserved_bo,
+		NULL, &adev->mman.fw_vram_usage.va);
  }
/**
@@ -1781,19 +1781,19 @@ static int amdgpu_ttm_fw_reserve_vram_init(struct amdgpu_device *adev)
  {
  	uint64_t vram_size = adev->gmc.visible_vram_size;
- adev->fw_vram_usage.va = NULL;
-	adev->fw_vram_usage.reserved_bo = NULL;
+	adev->mman.fw_vram_usage.va = NULL;
+	adev->mman.fw_vram_usage.reserved_bo = NULL;
- if (adev->fw_vram_usage.size == 0 ||
-	    adev->fw_vram_usage.size > vram_size)
+	if (adev->mman.fw_vram_usage.size == 0 ||
+	    adev->mman.fw_vram_usage.size > vram_size)
  		return 0;
return amdgpu_bo_create_kernel_at(adev,
-					  adev->fw_vram_usage.start_offset,
-					  adev->fw_vram_usage.size,
+					  adev->mman.fw_vram_usage.start_offset,
+					  adev->mman.fw_vram_usage.size,
  					  AMDGPU_GEM_DOMAIN_VRAM,
-					  &adev->fw_vram_usage.reserved_bo,
-					  &adev->fw_vram_usage.va);
+					  &adev->mman.fw_vram_usage.reserved_bo,
+					  &adev->mman.fw_vram_usage.va);
  }
/*
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
index 6d7b83d967ce..95a513f7785f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
@@ -41,6 +41,16 @@
#define AMDGPU_POISON 0xd0bed0be +/*
+ * Firmware VRAM reservation
+ */
+struct amdgpu_fw_vram_usage {
+	u64 start_offset;
+	u64 size;
+	struct amdgpu_bo *reserved_bo;
+	void *va;
+};
+

Maybe we should even inline the structure while doing so. I don't see the need for a separate struct here.

Christian.

  struct amdgpu_mman {
  	struct ttm_bo_device		bdev;
  	bool				mem_global_referenced;
@@ -70,6 +80,9 @@ struct amdgpu_mman {
  	uint8_t				*discovery_bin;
  	uint32_t			discovery_tmr_size;
  	struct amdgpu_bo		*discovery_memory;
+
+	/* firmware VRAM reservation */
+	struct amdgpu_fw_vram_usage fw_vram_usage;
  };
struct amdgpu_copy_mem {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
index 5cae39d35c04..816e086f00d2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
@@ -401,7 +401,7 @@ static void amdgpu_virt_add_bad_page(struct amdgpu_device *adev,
  	if (bp_block_size) {
  		bp_cnt = bp_block_size / sizeof(uint64_t);
  		for (bp_idx = 0; bp_idx < bp_cnt; bp_idx++) {
-			retired_page = *(uint64_t *)(adev->fw_vram_usage.va +
+			retired_page = *(uint64_t *)(adev->mman.fw_vram_usage.va +
  					bp_block_offset + bp_idx * sizeof(uint64_t));
  			bp.retired_page = retired_page;
@@ -428,10 +428,10 @@ void amdgpu_virt_init_data_exchange(struct amdgpu_device *adev)
  	adev->virt.fw_reserve.p_pf2vf = NULL;
  	adev->virt.fw_reserve.p_vf2pf = NULL;
- if (adev->fw_vram_usage.va != NULL) {
+	if (adev->mman.fw_vram_usage.va != NULL) {
  		adev->virt.fw_reserve.p_pf2vf =
  			(struct amd_sriov_msg_pf2vf_info_header *)(
-			adev->fw_vram_usage.va + AMDGIM_DATAEXCHANGE_OFFSET);
+			adev->mman.fw_vram_usage.va + AMDGIM_DATAEXCHANGE_OFFSET);
  		AMDGPU_FW_VRAM_PF2VF_READ(adev, header.size, &pf2vf_size);
  		AMDGPU_FW_VRAM_PF2VF_READ(adev, checksum, &checksum);
  		AMDGPU_FW_VRAM_PF2VF_READ(adev, feature_flags, &adev->virt.gim_feature);

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



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux