Re: [RFC 5/8] drm/nouveau: support WPR2 heap size override

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

 



On Fri, Nov 22, 2024 at 04:57:09AM -0800, Zhi Wang wrote:
> To support the maximum vGPUs on the device that support SRIOV, a larger
> WPR2 heap size is required.
> 
> Support WPR2 heap size override when initializing the WPR2 heap memory
> layout. If zero, use the default WRP2 heap size.
> 
> No functional change is intended.
> 
> Signed-off-by: Zhi Wang <zhiw@xxxxxxxxxx>
> ---
>  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c | 2 +-
>  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h  | 2 +-
>  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c  | 7 ++++---
>  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c | 2 +-
>  4 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c
> index 596ccd758e66..3ba67eab08d7 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c
> @@ -60,7 +60,7 @@ ad102_gsp_init_fw_heap(struct nvkm_gsp *gsp)
>  {
>  	int ret;
>  
> -	nvkm_gsp_init_fw_heap(gsp);
> +	nvkm_gsp_init_fw_heap(gsp, 0);
>  
>  	if (gsp->fb.wpr2.heap.size <= SZ_256M)
>  		return 0;
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h
> index fe56ced9b369..fe2ad4753d5e 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h
> @@ -63,7 +63,7 @@ int ga102_gsp_booter_ctor(struct nvkm_gsp *, const char *, const struct firmware
>  int ga102_gsp_reset(struct nvkm_gsp *);
>  
>  void r535_gsp_dtor(struct nvkm_gsp *);
> -void nvkm_gsp_init_fw_heap(struct nvkm_gsp *gsp);
> +void nvkm_gsp_init_fw_heap(struct nvkm_gsp *gsp, u64 wpr2_heap_size);
>  int r535_gsp_oneinit(struct nvkm_gsp *);
>  int r535_gsp_init(struct nvkm_gsp *);
>  int r535_gsp_fini(struct nvkm_gsp *, bool suspend);
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
> index d5d6d0df863e..5a47201bf0c4 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
> @@ -2519,7 +2519,7 @@ r535_gsp_dtor(struct nvkm_gsp *gsp)
>  	nvkm_gsp_mem_dtor(gsp, &gsp->logrm);
>  }
>  
> -void nvkm_gsp_init_fw_heap(struct nvkm_gsp *gsp)
> +void nvkm_gsp_init_fw_heap(struct nvkm_gsp *gsp, u64 wpr2_heap_size)
>  {
>  	/* Calculate FB layout. */
>  	gsp->fb.wpr2.frts.size = 0x100000;
> @@ -2533,7 +2533,7 @@ void nvkm_gsp_init_fw_heap(struct nvkm_gsp *gsp)
>  	gsp->fb.wpr2.elf.addr = ALIGN_DOWN(gsp->fb.wpr2.boot.addr - gsp->fb.wpr2.elf.size,
>  					   0x10000);
>  
> -	{
> +	if (!wpr2_heap_size) {
>  		u32 fb_size_gb = DIV_ROUND_UP_ULL(gsp->fb.size, 1 << 30);
>  
>  		gsp->fb.wpr2.heap.size =
> @@ -2543,7 +2543,8 @@ void nvkm_gsp_init_fw_heap(struct nvkm_gsp *gsp)
>  			ALIGN(GSP_FW_HEAP_PARAM_CLIENT_ALLOC_SIZE, 1 << 20);
>  
>  		gsp->fb.wpr2.heap.size = max(gsp->fb.wpr2.heap.size, gsp->func->wpr_heap.min_size);
> -	}
> +	} else
> +		gsp->fb.wpr2.heap.size = wpr2_heap_size;

If the if block has braces, the else block should have them too. checkpatch.pl
should also tell you when using --strict.

>  
>  	gsp->fb.wpr2.heap.addr = ALIGN_DOWN(gsp->fb.wpr2.elf.addr - gsp->fb.wpr2.heap.size,
>  					    0x100000);
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c
> index e279a322704a..eb6081946c13 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c
> @@ -79,7 +79,7 @@ tu102_gsp_booter_ctor(struct nvkm_gsp *gsp, const char *name, const struct firmw
>  int
>  tu102_gsp_init_fw_heap(struct nvkm_gsp *gsp)
>  {
> -	nvkm_gsp_init_fw_heap(gsp);
> +	nvkm_gsp_init_fw_heap(gsp, 0);
>  
>  	return 0;
>  }
> -- 
> 2.34.1
> 



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux