[Public] > -----Original Message----- > From: Lazar, Lijo <lijo.la...@amd.com> > Sent: Tuesday, February 25, 2025 1:46 AM > To: amd-gfx@lists.freedesktop.org > Cc: Zhang, Hawking <hawking.zh...@amd.com>; Deucher, Alexander > <alexander.deuc...@amd.com>; Kim, Jonathan <jonathan....@amd.com> > Subject: [PATCH v3 4/4] drm/amdgpu: Calculate IP specific xgmi bandwidth > > Use IP version specific xgmi speed/width for bandwidth calculation. > > Signed-off-by: Lijo Lazar <lijo.la...@amd.com>
This patch is: Reviewed-by: Jonathan Kim <jonathan....@amd.com> > --- > v2: > Move XGMI info init to early init phase (Jon) > v3: > Rebase on top of drm/amdgpu: simplify xgmi peer info calls > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++ > drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 4 +++- > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index b2e9e116be44..df7cb692d8c0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -2757,6 +2757,9 @@ static int amdgpu_device_ip_early_init(struct > amdgpu_device *adev) > if (!total) > return -ENODEV; > > + if (adev->gmc.xgmi.supported) > + amdgpu_xgmi_early_init(adev); > + > ip_block = amdgpu_device_ip_get_ip_block(adev, > AMD_IP_BLOCK_TYPE_GFX); > if (ip_block->status.valid != false) > amdgpu_amdkfd_device_probe(adev); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > index 45566c320615..0cc42a43408e 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > @@ -843,7 +843,9 @@ int amdgpu_xgmi_get_bandwidth(struct amdgpu_device > *adev, struct amdgpu_device * > { > bool peer_mode = bw_mode == AMDGPU_XGMI_BW_MODE_PER_PEER; > int unit_scale = bw_unit == AMDGPU_XGMI_BW_UNIT_MBYTES ? 1000 : > 1; > - int speed = 25, num_lanes = 16, num_links = !peer_mode ? 1 : -1; > + int num_lanes = adev->gmc.xgmi.max_width; > + int speed = adev->gmc.xgmi.max_speed; > + int num_links = !peer_mode ? 1 : -1; > > if (!(min_bw && max_bw)) > return -EINVAL; > -- > 2.25.1