[RFC 6/8] drm/nouveau: override the WPR2 heap size when SRIOV is supported on Ada
Danilo Krummrich
dakr at kernel.org
Fri Jan 17 15:19:50 UTC 2025
On Fri, Nov 22, 2024 at 04:57:10AM -0800, Zhi Wang wrote:
> To support the maximum vGPUs on the device that support SRIOV, a larger
> WPR2 heap size is required. On Ada with SRIOV supported, the size should
> be set to at least 549MB. By setting the WPR2 heap size up to 549MB, the
> scrubber ucode image is required to scrub the FB memory before any other
> ucode image is executed.
>
> Override the default WPR2 heap size on Ada when SRIOV is supported. Set
> the WPR2 heap size up to 576MB when SRIOV is supported on Ada.
Might be worth to also add a brief note about this in the code.
>
> Cc: Milos Tijanic <mtijanic at nvidia.com>
> Signed-off-by: Zhi Wang <zhiw at nvidia.com>
> ---
> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c
> index 3ba67eab08d7..1e403dbd7323 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c
> @@ -20,6 +20,7 @@
> * OTHER DEALINGS IN THE SOFTWARE.
> */
>
> +#include <core/pci.h>
> #include <engine/sec2.h>
> #include "priv.h"
>
> @@ -58,9 +59,18 @@ ad102_execute_scrubber(struct nvkm_gsp *gsp)
> static int
> ad102_gsp_init_fw_heap(struct nvkm_gsp *gsp)
> {
> + struct nvkm_subdev *subdev = &gsp->subdev;
> + struct nvkm_device *device = subdev->device;
> + struct nvkm_device_pci *device_pci = container_of(device,
> + typeof(*device_pci), device);
> + int num_vfs;
> int ret;
>
> - nvkm_gsp_init_fw_heap(gsp, 0);
> + num_vfs = pci_sriov_get_totalvfs(device_pci->pdev);
> + if (!num_vfs)
> + nvkm_gsp_init_fw_heap(gsp, 0);
> + else
> + nvkm_gsp_init_fw_heap(gsp, 576 * SZ_1M);
>
> if (gsp->fb.wpr2.heap.size <= SZ_256M)
> return 0;
> --
> 2.34.1
>
More information about the Nouveau
mailing list