All of lore.kernel.org
 help / color / mirror / Atom feed
* [Patch v3] drm/amdgpu: add vram check function for GMC
@ 2022-01-14  9:23 Xiaojian Du
  2022-01-14 16:59 ` Alex Deucher
  2022-01-17  2:22 ` Huang Rui
  0 siblings, 2 replies; 3+ messages in thread
From: Xiaojian Du @ 2022-01-14  9:23 UTC (permalink / raw)
  To: amd-gfx; +Cc: Alexander.Deucher, Felix.Kuehling, ray.huang, Xiaojian Du

This will add vram check function for GMC block.
It will write pattern data to the vram and then read back from the vram,
so that to verify the work status of vram.
This patch  will cover gmc v6/7/8/9/10.

Signed-off-by: Xiaojian Du <Xiaojian.Du@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 46 +++++++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h |  1 +
 drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c  |  5 +++
 drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c   |  5 ++-
 drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c   |  5 ++-
 drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c   |  5 ++-
 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c   |  7 +++-
 7 files changed, 70 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
index 83f26bca7dac..96cabf3ed29e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
@@ -833,3 +833,49 @@ void amdgpu_gmc_get_reserved_allocation(struct amdgpu_device *adev)
 		break;
 	}
 }
+
+int amdgpu_gmc_vram_checking(struct amdgpu_device *adev)
+{
+	struct amdgpu_bo	*vram_bo;
+	uint64_t	vram_gpu;
+	void	*vram_ptr;
+
+	int ret, size = 0x100000;
+	uint8_t cptr[10];
+
+	ret = amdgpu_bo_create_kernel(adev, size, PAGE_SIZE,
+				AMDGPU_GEM_DOMAIN_VRAM,
+				&vram_bo,
+				&vram_gpu,
+				&vram_ptr);
+	if (ret)
+		return ret;
+
+	memset(vram_ptr, 0x86, size);
+	memset(cptr, 0x86, 10);
+
+	/**
+	* Check the start, the mid, and the end of the memory if the content of
+	* each byte is the pattern "0x86". If yes, we suppose the vram bo is
+	* workable.
+	*
+	* Note: If check the each byte of whole 1M bo, it will cost too many
+	* seconds, so here, we just pick up three parts for emulation.
+	*/
+	ret = memcmp(vram_ptr, cptr, 10);
+	if (ret)
+		return ret;
+
+	ret = memcmp(vram_ptr + (size / 2), cptr, 10);
+	if (ret)
+		return ret;
+
+	ret = memcmp(vram_ptr + size - 10, cptr, 10);
+	if (ret)
+		return ret;
+
+	amdgpu_bo_free_kernel(&vram_bo, &vram_gpu,
+			&vram_ptr);
+
+	return 0;
+}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
index 82ec665b366c..f06af61378ef 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
@@ -343,4 +343,5 @@ void amdgpu_gmc_init_pdb0(struct amdgpu_device *adev);
 uint64_t amdgpu_gmc_vram_mc2pa(struct amdgpu_device *adev, uint64_t mc_addr);
 uint64_t amdgpu_gmc_vram_pa(struct amdgpu_device *adev, struct amdgpu_bo *bo);
 uint64_t amdgpu_gmc_vram_cpu_pa(struct amdgpu_device *adev, struct amdgpu_bo *bo);
+int amdgpu_gmc_vram_checking(struct amdgpu_device *adev);
 #endif
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
index 3915ba837596..41b11c1f8db0 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
@@ -1048,6 +1048,11 @@ static int gmc_v10_0_hw_init(void *handle)
 	if (r)
 		return r;
 
+	if (amdgpu_emu_mode == 1) {
+		r = amdgpu_gmc_vram_checking(adev);
+		if (r)
+			return r;
+	}
 	if (adev->umc.funcs && adev->umc.funcs->init_registers)
 		adev->umc.funcs->init_registers(adev);
 
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
index 0fe714f54cca..dec5539fe779 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
@@ -923,7 +923,10 @@ static int gmc_v6_0_hw_init(void *handle)
 	if (r)
 		return r;
 
-	return r;
+	if (amdgpu_emu_mode == 1)
+		return amdgpu_gmc_vram_checking(adev);
+	else
+		return r;
 }
 
 static int gmc_v6_0_hw_fini(void *handle)
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
index 0a50fdaced7e..b249aa9b3724 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
@@ -1112,7 +1112,10 @@ static int gmc_v7_0_hw_init(void *handle)
 	if (r)
 		return r;
 
-	return r;
+	if (amdgpu_emu_mode == 1)
+		return amdgpu_gmc_vram_checking(adev);
+	else
+		return r;
 }
 
 static int gmc_v7_0_hw_fini(void *handle)
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
index 9a3fc0926903..78ce7828b348 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
@@ -1241,7 +1241,10 @@ static int gmc_v8_0_hw_init(void *handle)
 	if (r)
 		return r;
 
-	return r;
+	if (amdgpu_emu_mode == 1)
+		return amdgpu_gmc_vram_checking(adev);
+	else
+		return r;
 }
 
 static int gmc_v8_0_hw_fini(void *handle)
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index ce7d438eeabe..ebbd212ed795 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -1771,8 +1771,13 @@ static int gmc_v9_0_hw_init(void *handle)
 		adev->umc.funcs->init_registers(adev);
 
 	r = gmc_v9_0_gart_enable(adev);
+	if (r)
+		return r;
 
-	return r;
+	if (amdgpu_emu_mode == 1)
+		return amdgpu_gmc_vram_checking(adev);
+	else
+		return r;
 }
 
 /**
-- 
2.25.1


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

* Re: [Patch v3] drm/amdgpu: add vram check function for GMC
  2022-01-14  9:23 [Patch v3] drm/amdgpu: add vram check function for GMC Xiaojian Du
@ 2022-01-14 16:59 ` Alex Deucher
  2022-01-17  2:22 ` Huang Rui
  1 sibling, 0 replies; 3+ messages in thread
From: Alex Deucher @ 2022-01-14 16:59 UTC (permalink / raw)
  To: Xiaojian Du; +Cc: Deucher, Alexander, Kuehling, Felix, Huang Rui, amd-gfx list

On Fri, Jan 14, 2022 at 4:24 AM Xiaojian Du <Xiaojian.Du@amd.com> wrote:
>
> This will add vram check function for GMC block.
> It will write pattern data to the vram and then read back from the vram,
> so that to verify the work status of vram.
> This patch  will cover gmc v6/7/8/9/10.
>
> Signed-off-by: Xiaojian Du <Xiaojian.Du@amd.com>

Acked-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 46 +++++++++++++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h |  1 +
>  drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c  |  5 +++
>  drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c   |  5 ++-
>  drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c   |  5 ++-
>  drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c   |  5 ++-
>  drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c   |  7 +++-
>  7 files changed, 70 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> index 83f26bca7dac..96cabf3ed29e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> @@ -833,3 +833,49 @@ void amdgpu_gmc_get_reserved_allocation(struct amdgpu_device *adev)
>                 break;
>         }
>  }
> +
> +int amdgpu_gmc_vram_checking(struct amdgpu_device *adev)
> +{
> +       struct amdgpu_bo        *vram_bo;
> +       uint64_t        vram_gpu;
> +       void    *vram_ptr;
> +
> +       int ret, size = 0x100000;
> +       uint8_t cptr[10];
> +
> +       ret = amdgpu_bo_create_kernel(adev, size, PAGE_SIZE,
> +                               AMDGPU_GEM_DOMAIN_VRAM,
> +                               &vram_bo,
> +                               &vram_gpu,
> +                               &vram_ptr);
> +       if (ret)
> +               return ret;
> +
> +       memset(vram_ptr, 0x86, size);
> +       memset(cptr, 0x86, 10);
> +
> +       /**
> +       * Check the start, the mid, and the end of the memory if the content of
> +       * each byte is the pattern "0x86". If yes, we suppose the vram bo is
> +       * workable.
> +       *
> +       * Note: If check the each byte of whole 1M bo, it will cost too many
> +       * seconds, so here, we just pick up three parts for emulation.
> +       */
> +       ret = memcmp(vram_ptr, cptr, 10);
> +       if (ret)
> +               return ret;
> +
> +       ret = memcmp(vram_ptr + (size / 2), cptr, 10);
> +       if (ret)
> +               return ret;
> +
> +       ret = memcmp(vram_ptr + size - 10, cptr, 10);
> +       if (ret)
> +               return ret;
> +
> +       amdgpu_bo_free_kernel(&vram_bo, &vram_gpu,
> +                       &vram_ptr);
> +
> +       return 0;
> +}
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
> index 82ec665b366c..f06af61378ef 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
> @@ -343,4 +343,5 @@ void amdgpu_gmc_init_pdb0(struct amdgpu_device *adev);
>  uint64_t amdgpu_gmc_vram_mc2pa(struct amdgpu_device *adev, uint64_t mc_addr);
>  uint64_t amdgpu_gmc_vram_pa(struct amdgpu_device *adev, struct amdgpu_bo *bo);
>  uint64_t amdgpu_gmc_vram_cpu_pa(struct amdgpu_device *adev, struct amdgpu_bo *bo);
> +int amdgpu_gmc_vram_checking(struct amdgpu_device *adev);
>  #endif
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> index 3915ba837596..41b11c1f8db0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> @@ -1048,6 +1048,11 @@ static int gmc_v10_0_hw_init(void *handle)
>         if (r)
>                 return r;
>
> +       if (amdgpu_emu_mode == 1) {
> +               r = amdgpu_gmc_vram_checking(adev);
> +               if (r)
> +                       return r;
> +       }
>         if (adev->umc.funcs && adev->umc.funcs->init_registers)
>                 adev->umc.funcs->init_registers(adev);
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
> index 0fe714f54cca..dec5539fe779 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
> @@ -923,7 +923,10 @@ static int gmc_v6_0_hw_init(void *handle)
>         if (r)
>                 return r;
>
> -       return r;
> +       if (amdgpu_emu_mode == 1)
> +               return amdgpu_gmc_vram_checking(adev);
> +       else
> +               return r;
>  }
>
>  static int gmc_v6_0_hw_fini(void *handle)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
> index 0a50fdaced7e..b249aa9b3724 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
> @@ -1112,7 +1112,10 @@ static int gmc_v7_0_hw_init(void *handle)
>         if (r)
>                 return r;
>
> -       return r;
> +       if (amdgpu_emu_mode == 1)
> +               return amdgpu_gmc_vram_checking(adev);
> +       else
> +               return r;
>  }
>
>  static int gmc_v7_0_hw_fini(void *handle)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> index 9a3fc0926903..78ce7828b348 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> @@ -1241,7 +1241,10 @@ static int gmc_v8_0_hw_init(void *handle)
>         if (r)
>                 return r;
>
> -       return r;
> +       if (amdgpu_emu_mode == 1)
> +               return amdgpu_gmc_vram_checking(adev);
> +       else
> +               return r;
>  }
>
>  static int gmc_v8_0_hw_fini(void *handle)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> index ce7d438eeabe..ebbd212ed795 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> @@ -1771,8 +1771,13 @@ static int gmc_v9_0_hw_init(void *handle)
>                 adev->umc.funcs->init_registers(adev);
>
>         r = gmc_v9_0_gart_enable(adev);
> +       if (r)
> +               return r;
>
> -       return r;
> +       if (amdgpu_emu_mode == 1)
> +               return amdgpu_gmc_vram_checking(adev);
> +       else
> +               return r;
>  }
>
>  /**
> --
> 2.25.1
>

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

* Re: [Patch v3] drm/amdgpu: add vram check function for GMC
  2022-01-14  9:23 [Patch v3] drm/amdgpu: add vram check function for GMC Xiaojian Du
  2022-01-14 16:59 ` Alex Deucher
@ 2022-01-17  2:22 ` Huang Rui
  1 sibling, 0 replies; 3+ messages in thread
From: Huang Rui @ 2022-01-17  2:22 UTC (permalink / raw)
  To: Du, Xiaojian; +Cc: Deucher, Alexander, Kuehling, Felix, amd-gfx

On Fri, Jan 14, 2022 at 05:23:38PM +0800, Du, Xiaojian wrote:
> This will add vram check function for GMC block.
> It will write pattern data to the vram and then read back from the vram,
> so that to verify the work status of vram.
> This patch  will cover gmc v6/7/8/9/10.
> 
> Signed-off-by: Xiaojian Du <Xiaojian.Du@amd.com>

Reviewed-by: Huang Rui <ray.huang@amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 46 +++++++++++++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h |  1 +
>  drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c  |  5 +++
>  drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c   |  5 ++-
>  drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c   |  5 ++-
>  drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c   |  5 ++-
>  drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c   |  7 +++-
>  7 files changed, 70 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> index 83f26bca7dac..96cabf3ed29e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> @@ -833,3 +833,49 @@ void amdgpu_gmc_get_reserved_allocation(struct amdgpu_device *adev)
>  		break;
>  	}
>  }
> +
> +int amdgpu_gmc_vram_checking(struct amdgpu_device *adev)
> +{
> +	struct amdgpu_bo	*vram_bo;
> +	uint64_t	vram_gpu;
> +	void	*vram_ptr;
> +
> +	int ret, size = 0x100000;
> +	uint8_t cptr[10];
> +
> +	ret = amdgpu_bo_create_kernel(adev, size, PAGE_SIZE,
> +				AMDGPU_GEM_DOMAIN_VRAM,
> +				&vram_bo,
> +				&vram_gpu,
> +				&vram_ptr);
> +	if (ret)
> +		return ret;
> +
> +	memset(vram_ptr, 0x86, size);
> +	memset(cptr, 0x86, 10);
> +
> +	/**
> +	* Check the start, the mid, and the end of the memory if the content of
> +	* each byte is the pattern "0x86". If yes, we suppose the vram bo is
> +	* workable.
> +	*
> +	* Note: If check the each byte of whole 1M bo, it will cost too many
> +	* seconds, so here, we just pick up three parts for emulation.
> +	*/
> +	ret = memcmp(vram_ptr, cptr, 10);
> +	if (ret)
> +		return ret;
> +
> +	ret = memcmp(vram_ptr + (size / 2), cptr, 10);
> +	if (ret)
> +		return ret;
> +
> +	ret = memcmp(vram_ptr + size - 10, cptr, 10);
> +	if (ret)
> +		return ret;
> +
> +	amdgpu_bo_free_kernel(&vram_bo, &vram_gpu,
> +			&vram_ptr);
> +
> +	return 0;
> +}
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
> index 82ec665b366c..f06af61378ef 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
> @@ -343,4 +343,5 @@ void amdgpu_gmc_init_pdb0(struct amdgpu_device *adev);
>  uint64_t amdgpu_gmc_vram_mc2pa(struct amdgpu_device *adev, uint64_t mc_addr);
>  uint64_t amdgpu_gmc_vram_pa(struct amdgpu_device *adev, struct amdgpu_bo *bo);
>  uint64_t amdgpu_gmc_vram_cpu_pa(struct amdgpu_device *adev, struct amdgpu_bo *bo);
> +int amdgpu_gmc_vram_checking(struct amdgpu_device *adev);
>  #endif
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> index 3915ba837596..41b11c1f8db0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> @@ -1048,6 +1048,11 @@ static int gmc_v10_0_hw_init(void *handle)
>  	if (r)
>  		return r;
>  
> +	if (amdgpu_emu_mode == 1) {
> +		r = amdgpu_gmc_vram_checking(adev);
> +		if (r)
> +			return r;
> +	}
>  	if (adev->umc.funcs && adev->umc.funcs->init_registers)
>  		adev->umc.funcs->init_registers(adev);
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
> index 0fe714f54cca..dec5539fe779 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
> @@ -923,7 +923,10 @@ static int gmc_v6_0_hw_init(void *handle)
>  	if (r)
>  		return r;
>  
> -	return r;
> +	if (amdgpu_emu_mode == 1)
> +		return amdgpu_gmc_vram_checking(adev);
> +	else
> +		return r;
>  }
>  
>  static int gmc_v6_0_hw_fini(void *handle)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
> index 0a50fdaced7e..b249aa9b3724 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
> @@ -1112,7 +1112,10 @@ static int gmc_v7_0_hw_init(void *handle)
>  	if (r)
>  		return r;
>  
> -	return r;
> +	if (amdgpu_emu_mode == 1)
> +		return amdgpu_gmc_vram_checking(adev);
> +	else
> +		return r;
>  }
>  
>  static int gmc_v7_0_hw_fini(void *handle)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> index 9a3fc0926903..78ce7828b348 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> @@ -1241,7 +1241,10 @@ static int gmc_v8_0_hw_init(void *handle)
>  	if (r)
>  		return r;
>  
> -	return r;
> +	if (amdgpu_emu_mode == 1)
> +		return amdgpu_gmc_vram_checking(adev);
> +	else
> +		return r;
>  }
>  
>  static int gmc_v8_0_hw_fini(void *handle)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> index ce7d438eeabe..ebbd212ed795 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> @@ -1771,8 +1771,13 @@ static int gmc_v9_0_hw_init(void *handle)
>  		adev->umc.funcs->init_registers(adev);
>  
>  	r = gmc_v9_0_gart_enable(adev);
> +	if (r)
> +		return r;
>  
> -	return r;
> +	if (amdgpu_emu_mode == 1)
> +		return amdgpu_gmc_vram_checking(adev);
> +	else
> +		return r;
>  }
>  
>  /**
> -- 
> 2.25.1
> 

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

end of thread, other threads:[~2022-01-17  2:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-14  9:23 [Patch v3] drm/amdgpu: add vram check function for GMC Xiaojian Du
2022-01-14 16:59 ` Alex Deucher
2022-01-17  2:22 ` Huang Rui

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.