On Wed, Jul 24, 2024 at 2:47 PM Michael Chen <michael.chen@xxxxxxx> wrote: > > MES firmware requires larger log buffer for gfx12. Allocate > proper buffer respectively for gfx11 and gfx12. > > Signed-off-by: Michael Chen <michael.chen@xxxxxxx> Acked-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > 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 >