Re: [PATCH] drm/amdgpu: Add memory vendor information

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

 





On 8/11/2023 12:36 PM, Chen, Guchun wrote:
[Public]

-----Original Message-----
From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Lijo
Lazar
Sent: Friday, August 11, 2023 12:12 PM
To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Zhang, Hawking
<Hawking.Zhang@xxxxxxx>
Subject: [PATCH] drm/amdgpu: Add memory vendor information

For ASICs with GC v9.4.3, determine the vendor information from scratch
register.

Signed-off-by: Lijo Lazar <lijo.lazar@xxxxxxx>
Reviewed-by: Hawking Zhang <Hawking.Zhang@xxxxxxx>
---
  drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 26 ++++++++++++++++++-------
-
  1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index 880460cd3239..f9a5a2c0573e 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -1998,6 +1998,19 @@ static int gmc_v9_0_init_mem_ranges(struct
amdgpu_device *adev)
       return 0;
  }

+static void gmc_v9_4_3_init_vram_info(struct amdgpu_device *adev) {
+     static const u32 regBIF_BIOS_SCRATCH_4 = 0x50;

Any reason to use a static variable here?


It's only done to initialize once and keep it shared even if multiple devices use the code path - that will remain true for any reg address I guess.

Thanks,
Lijo

Regards,
Guchun

+     u32 vram_info;
+
+     if (!amdgpu_sriov_vf(adev)) {
+             vram_info = RREG32(regBIF_BIOS_SCRATCH_4);
+             adev->gmc.vram_vendor = vram_info & 0xF;
+     }
+     adev->gmc.vram_type = AMDGPU_VRAM_TYPE_HBM;
+     adev->gmc.vram_width = 128 * 64;
+}
+
  static int gmc_v9_0_sw_init(void *handle)  {
       int r, vram_width = 0, vram_type = 0, vram_vendor = 0,
dma_addr_bits; @@ -2010,15 +2023,12 @@ static int
gmc_v9_0_sw_init(void *handle)

       spin_lock_init(&adev->gmc.invalidate_lock);

-     if (!(adev->bios) || adev->gmc.is_app_apu) {
+     if (adev->ip_versions[GC_HWIP][0] == IP_VERSION(9, 4, 3)) {
+             gmc_v9_4_3_init_vram_info(adev);
+     } else if (!adev->bios) {
               if (adev->flags & AMD_IS_APU) {
-                     if (adev->gmc.is_app_apu) {
-                             adev->gmc.vram_type =
AMDGPU_VRAM_TYPE_HBM;
-                             adev->gmc.vram_width = 128 * 64;
-                     } else {
-                             adev->gmc.vram_type =
AMDGPU_VRAM_TYPE_DDR4;
-                             adev->gmc.vram_width = 64 * 64;
-                     }
+                     adev->gmc.vram_type =
AMDGPU_VRAM_TYPE_DDR4;
+                     adev->gmc.vram_width = 64 * 64;
               } else {
                       adev->gmc.vram_type = AMDGPU_VRAM_TYPE_HBM;
                       adev->gmc.vram_width = 128 * 64;
--
2.25.1




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

  Powered by Linux