[PATCH] drm/amdgpu: increase mes log buffer size for gfx12
Alex Deucher
alexdeucher at gmail.com
Thu Jul 25 19:50:26 UTC 2024
On Wed, Jul 24, 2024 at 2:47 PM Michael Chen <michael.chen at amd.com> wrote:
>
> MES firmware requires larger log buffer for gfx12. Allocate
> proper buffer respectively for gfx11 and gfx12.
>
> Signed-off-by: Michael Chen <michael.chen at amd.com>
Acked-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 6 +++---
> drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h | 6 +++---
> drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 2 ++
> drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 8 ++++++--
> drivers/gpu/drm/amd/include/mes_v11_api_def.h | 3 +++
> drivers/gpu/drm/amd/include/mes_v12_api_def.h | 3 +++
> 6 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> index e499d6ba306b..dac88d2dd70d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> @@ -103,7 +103,7 @@ static int amdgpu_mes_event_log_init(struct amdgpu_device *adev)
> if (!amdgpu_mes_log_enable)
> return 0;
>
> - r = amdgpu_bo_create_kernel(adev, AMDGPU_MES_LOG_BUFFER_SIZE, PAGE_SIZE,
> + r = amdgpu_bo_create_kernel(adev, adev->mes.event_log_size, PAGE_SIZE,
> AMDGPU_GEM_DOMAIN_GTT,
> &adev->mes.event_log_gpu_obj,
> &adev->mes.event_log_gpu_addr,
> @@ -113,7 +113,7 @@ static int amdgpu_mes_event_log_init(struct amdgpu_device *adev)
> return r;
> }
>
> - memset(adev->mes.event_log_cpu_addr, 0, PAGE_SIZE);
> + memset(adev->mes.event_log_cpu_addr, 0, adev->mes.event_log_size);
>
> return 0;
>
> @@ -1573,7 +1573,7 @@ static int amdgpu_debugfs_mes_event_log_show(struct seq_file *m, void *unused)
> uint32_t *mem = (uint32_t *)(adev->mes.event_log_cpu_addr);
>
> seq_hex_dump(m, "", DUMP_PREFIX_OFFSET, 32, 4,
> - mem, AMDGPU_MES_LOG_BUFFER_SIZE, false);
> + mem, adev->mes.event_log_size, false);
>
> return 0;
> }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> index e11051271f71..2d659c612f03 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> @@ -52,7 +52,6 @@ enum amdgpu_mes_priority_level {
>
> #define AMDGPU_MES_PROC_CTX_SIZE 0x1000 /* one page area */
> #define AMDGPU_MES_GANG_CTX_SIZE 0x1000 /* one page area */
> -#define AMDGPU_MES_LOG_BUFFER_SIZE 0x4000 /* Maximu log buffer size for MES */
>
> struct amdgpu_mes_funcs;
>
> @@ -135,8 +134,9 @@ struct amdgpu_mes {
> unsigned long *doorbell_bitmap;
>
> /* MES event log buffer */
> - struct amdgpu_bo *event_log_gpu_obj;
> - uint64_t event_log_gpu_addr;
> + uint32_t event_log_size;
> + struct amdgpu_bo *event_log_gpu_obj;
> + uint64_t event_log_gpu_addr;
> void *event_log_cpu_addr;
>
> /* ip specific functions */
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> index 68c74adf79f1..1a5ad5be33bf 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> @@ -1173,6 +1173,8 @@ static int mes_v11_0_sw_init(void *handle)
> adev->mes.kiq_hw_init = &mes_v11_0_kiq_hw_init;
> adev->mes.kiq_hw_fini = &mes_v11_0_kiq_hw_fini;
>
> + adev->mes.event_log_size = AMDGPU_MES_LOG_BUFFER_SIZE;
> +
> r = amdgpu_mes_init(adev);
> if (r)
> return r;
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c b/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
> index 48e01206bcc4..249e5a66205c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
> @@ -561,8 +561,10 @@ static int mes_v12_0_set_hw_resources(struct amdgpu_mes *mes)
> mes_set_hw_res_pkt.oversubscription_timer = 50;
> mes_set_hw_res_pkt.unmapped_doorbell_handling = 1;
>
> - mes_set_hw_res_pkt.enable_mes_event_int_logging = 0;
> - mes_set_hw_res_pkt.event_intr_history_gpu_mc_ptr = mes->event_log_gpu_addr;
> + if (amdgpu_mes_log_enable) {
> + mes_set_hw_res_pkt.enable_mes_event_int_logging = 1;
> + mes_set_hw_res_pkt.event_intr_history_gpu_mc_ptr = mes->event_log_gpu_addr;
> + }
>
> return mes_v12_0_submit_pkt_and_poll_completion(mes,
> &mes_set_hw_res_pkt, sizeof(mes_set_hw_res_pkt),
> @@ -1247,6 +1249,8 @@ static int mes_v12_0_sw_init(void *handle)
> adev->mes.kiq_hw_init = &mes_v12_0_kiq_hw_init;
> adev->mes.kiq_hw_fini = &mes_v12_0_kiq_hw_fini;
>
> + adev->mes.event_log_size = AMDGPU_MES_LOG_BUFFER_SIZE;
> +
> r = amdgpu_mes_init(adev);
> if (r)
> return r;
> diff --git a/drivers/gpu/drm/amd/include/mes_v11_api_def.h b/drivers/gpu/drm/amd/include/mes_v11_api_def.h
> index b72d5d362251..21ceafce1f9b 100644
> --- a/drivers/gpu/drm/amd/include/mes_v11_api_def.h
> +++ b/drivers/gpu/drm/amd/include/mes_v11_api_def.h
> @@ -28,6 +28,9 @@
>
> #define MES_API_VERSION 1
>
> +/* Maximum log buffer size for MES. Needs to be updated if MES expands MES_EVT_INTR_HIST_LOG */
> +#define AMDGPU_MES_LOG_BUFFER_SIZE 0x4000
> +
> /* Driver submits one API(cmd) as a single Frame and this command size is same
> * for all API to ease the debugging and parsing of ring buffer.
> */
> diff --git a/drivers/gpu/drm/amd/include/mes_v12_api_def.h b/drivers/gpu/drm/amd/include/mes_v12_api_def.h
> index ffd67c6ed9b3..4cf2c9f30b3d 100644
> --- a/drivers/gpu/drm/amd/include/mes_v12_api_def.h
> +++ b/drivers/gpu/drm/amd/include/mes_v12_api_def.h
> @@ -28,6 +28,9 @@
>
> #define MES_API_VERSION 0x14
>
> +/* Maximum log buffer size for MES. Needs to be updated if MES expands MES_EVT_INTR_HIST_LOG_12 */
> +#define AMDGPU_MES_LOG_BUFFER_SIZE 0xC000
> +
> /* Driver submits one API(cmd) as a single Frame and this command size is same for all API
> * to ease the debugging and parsing of ring buffer.
> */
> --
> 2.34.1
>
More information about the amd-gfx
mailing list