On Wed, Oct 15, 2025 at 6:06 PM Ellen Pan <[email protected]> wrote: > > - This change prepares the later patches to intro _v2 suffix to SRIOV > critical regions > > Signed-off-by: Ellen Pan <[email protected]>
Reviewed-by: Alex Deucher <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 20 ++++----- > drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h | 50 +++++++++++++++------ > 2 files changed, 46 insertions(+), 24 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c > index f96beb96c75c..8cd02eb605c5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c > @@ -686,7 +686,7 @@ void amdgpu_virt_init_data_exchange(struct amdgpu_device > *adev) > /* got through this logic in early init stage to get > necessary flags, e.g. rlcg_acc related*/ > adev->virt.fw_reserve.p_pf2vf = > (struct amd_sriov_msg_pf2vf_info_header *) > - (adev->bios + (AMD_SRIOV_MSG_PF2VF_OFFSET_KB << 10)); > + (adev->bios + (AMD_SRIOV_MSG_PF2VF_OFFSET_KB_V1 << > 10)); > > amdgpu_virt_read_pf2vf_data(adev); > } > @@ -703,21 +703,21 @@ void amdgpu_virt_exchange_data(struct amdgpu_device > *adev) > if (adev->mman.fw_vram_usage_va) { > adev->virt.fw_reserve.p_pf2vf = > (struct amd_sriov_msg_pf2vf_info_header *) > - (adev->mman.fw_vram_usage_va + > (AMD_SRIOV_MSG_PF2VF_OFFSET_KB << 10)); > + (adev->mman.fw_vram_usage_va + > (AMD_SRIOV_MSG_PF2VF_OFFSET_KB_V1 << 10)); > adev->virt.fw_reserve.p_vf2pf = > (struct amd_sriov_msg_vf2pf_info_header *) > - (adev->mman.fw_vram_usage_va + > (AMD_SRIOV_MSG_VF2PF_OFFSET_KB << 10)); > + (adev->mman.fw_vram_usage_va + > (AMD_SRIOV_MSG_VF2PF_OFFSET_KB_V1 << 10)); > adev->virt.fw_reserve.ras_telemetry = > - (adev->mman.fw_vram_usage_va + > (AMD_SRIOV_MSG_RAS_TELEMETRY_OFFSET_KB << 10)); > + (adev->mman.fw_vram_usage_va + > (AMD_SRIOV_MSG_RAS_TELEMETRY_OFFSET_KB_V1 << 10)); > } else if (adev->mman.drv_vram_usage_va) { > adev->virt.fw_reserve.p_pf2vf = > (struct amd_sriov_msg_pf2vf_info_header *) > - (adev->mman.drv_vram_usage_va + > (AMD_SRIOV_MSG_PF2VF_OFFSET_KB << 10)); > + (adev->mman.drv_vram_usage_va + > (AMD_SRIOV_MSG_PF2VF_OFFSET_KB_V1 << 10)); > adev->virt.fw_reserve.p_vf2pf = > (struct amd_sriov_msg_vf2pf_info_header *) > - (adev->mman.drv_vram_usage_va + > (AMD_SRIOV_MSG_VF2PF_OFFSET_KB << 10)); > + (adev->mman.drv_vram_usage_va + > (AMD_SRIOV_MSG_VF2PF_OFFSET_KB_V1 << 10)); > adev->virt.fw_reserve.ras_telemetry = > - (adev->mman.drv_vram_usage_va + > (AMD_SRIOV_MSG_RAS_TELEMETRY_OFFSET_KB << 10)); > + (adev->mman.drv_vram_usage_va + > (AMD_SRIOV_MSG_RAS_TELEMETRY_OFFSET_KB_V1 << 10)); > } > > amdgpu_virt_read_pf2vf_data(adev); > @@ -1304,7 +1304,7 @@ static int amdgpu_virt_cache_host_error_counts(struct > amdgpu_device *adev, > checksum = host_telemetry->header.checksum; > used_size = host_telemetry->header.used_size; > > - if (used_size > (AMD_SRIOV_RAS_TELEMETRY_SIZE_KB << 10)) > + if (used_size > (AMD_SRIOV_MSG_RAS_TELEMETRY_SIZE_KB_V1 << 10)) > return 0; > > tmp = kmemdup(&host_telemetry->body.error_count, used_size, > GFP_KERNEL); > @@ -1383,7 +1383,7 @@ amdgpu_virt_write_cpers_to_ring(struct amdgpu_device > *adev, > checksum = host_telemetry->header.checksum; > used_size = host_telemetry->header.used_size; > > - if (used_size > (AMD_SRIOV_RAS_TELEMETRY_SIZE_KB << 10)) > + if (used_size > (AMD_SRIOV_MSG_RAS_TELEMETRY_SIZE_KB_V1 << 10)) > return -EINVAL; > > cper_dump = kmemdup(&host_telemetry->body.cper_dump, used_size, > GFP_KERNEL); > @@ -1515,7 +1515,7 @@ static int amdgpu_virt_cache_chk_criti_hit(struct > amdgpu_device *adev, > checksum = host_telemetry->header.checksum; > used_size = host_telemetry->header.used_size; > > - if (used_size > (AMD_SRIOV_RAS_TELEMETRY_SIZE_KB << 10)) > + if (used_size > (AMD_SRIOV_MSG_RAS_TELEMETRY_SIZE_KB_V1 << 10)) > return 0; > > tmp = kmemdup(&host_telemetry->body.chk_criti, used_size, GFP_KERNEL); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h > b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h > index 3a79ed7d8031..7509756b9ac5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h > @@ -23,26 +23,48 @@ > #ifndef AMDGV_SRIOV_MSG__H_ > #define AMDGV_SRIOV_MSG__H_ > > -/* unit in kilobytes */ > -#define AMD_SRIOV_MSG_VBIOS_OFFSET 0 > -#define AMD_SRIOV_MSG_VBIOS_SIZE_KB 64 > -#define AMD_SRIOV_MSG_DATAEXCHANGE_OFFSET_KB AMD_SRIOV_MSG_VBIOS_SIZE_KB > -#define AMD_SRIOV_MSG_DATAEXCHANGE_SIZE_KB 4 > -#define AMD_SRIOV_MSG_TMR_OFFSET_KB 2048 > -#define AMD_SRIOV_MSG_BAD_PAGE_SIZE_KB 2 > -#define AMD_SRIOV_RAS_TELEMETRY_SIZE_KB 64 > +#define AMD_SRIOV_MSG_SIZE_KB 1 > + > /* > - * layout > + * layout v1 > * 0 64KB 65KB 66KB 68KB > 132KB > * | VBIOS | PF2VF | VF2PF | Bad Page | RAS Telemetry Region > | ... > * | 64KB | 1KB | 1KB | 2KB | 64KB > | ... > */ > > -#define AMD_SRIOV_MSG_SIZE_KB 1 > -#define AMD_SRIOV_MSG_PF2VF_OFFSET_KB > AMD_SRIOV_MSG_DATAEXCHANGE_OFFSET_KB > -#define AMD_SRIOV_MSG_VF2PF_OFFSET_KB > (AMD_SRIOV_MSG_PF2VF_OFFSET_KB + AMD_SRIOV_MSG_SIZE_KB) > -#define AMD_SRIOV_MSG_BAD_PAGE_OFFSET_KB > (AMD_SRIOV_MSG_VF2PF_OFFSET_KB + AMD_SRIOV_MSG_SIZE_KB) > -#define AMD_SRIOV_MSG_RAS_TELEMETRY_OFFSET_KB > (AMD_SRIOV_MSG_BAD_PAGE_OFFSET_KB + AMD_SRIOV_MSG_BAD_PAGE_SIZE_KB) > +/* > + * layout v2 (offsets are dynamically allocated and the offsets below are > examples) > + * 0 1KB 64KB 65KB 66KB 68KB > 132KB > + * | INITD_H | VBIOS | PF2VF | VF2PF | Bad Page | RAS > Telemetry Region | ... > + * | 1KB | 64KB | 1KB | 1KB | 2KB | 64KB > | ... > + * > + * Note: PF2VF + VF2PF + Bad Page = DataExchange region (allocated > contiguously) > + */ > + > +/* v1 layout sizes */ > +#define AMD_SRIOV_MSG_VBIOS_SIZE_KB_V1 64 > +#define AMD_SRIOV_MSG_PF2VF_SIZE_KB_V1 1 > +#define AMD_SRIOV_MSG_VF2PF_SIZE_KB_V1 1 > +#define AMD_SRIOV_MSG_BAD_PAGE_SIZE_KB_V1 2 > +#define AMD_SRIOV_MSG_RAS_TELEMETRY_SIZE_KB_V1 64 > +#define AMD_SRIOV_MSG_DATAEXCHANGE_SIZE_KB_V1 \ > + (AMD_SRIOV_MSG_PF2VF_SIZE_KB_V1 + AMD_SRIOV_MSG_VF2PF_SIZE_KB_V1 + \ > + AMD_SRIOV_MSG_BAD_PAGE_SIZE_KB_V1) > + > +/* v1 offsets */ > +#define AMD_SRIOV_MSG_VBIOS_OFFSET_V1 0 > +#define AMD_SRIOV_MSG_DATAEXCHANGE_OFFSET_KB_V1 > AMD_SRIOV_MSG_VBIOS_SIZE_KB_V1 > +#define AMD_SRIOV_MSG_TMR_OFFSET_KB 2048 > +#define AMD_SRIOV_MSG_PF2VF_OFFSET_KB_V1 > AMD_SRIOV_MSG_DATAEXCHANGE_OFFSET_KB_V1 > +#define AMD_SRIOV_MSG_VF2PF_OFFSET_KB_V1 \ > + (AMD_SRIOV_MSG_PF2VF_OFFSET_KB_V1 + AMD_SRIOV_MSG_SIZE_KB) > +#define AMD_SRIOV_MSG_BAD_PAGE_OFFSET_KB_V1 \ > + (AMD_SRIOV_MSG_VF2PF_OFFSET_KB_V1 + AMD_SRIOV_MSG_SIZE_KB) > +#define AMD_SRIOV_MSG_RAS_TELEMETRY_OFFSET_KB_V1 \ > + (AMD_SRIOV_MSG_BAD_PAGE_OFFSET_KB_V1 + > AMD_SRIOV_MSG_BAD_PAGE_SIZE_KB_V1) > +#define AMD_SRIOV_MSG_INIT_DATA_TOT_SIZE_KB_V1 \ > + (AMD_SRIOV_MSG_VBIOS_SIZE_KB_V1 + > AMD_SRIOV_MSG_DATAEXCHANGE_SIZE_KB_V1 + \ > + AMD_SRIOV_MSG_RAS_TELEMETRY_SIZE_KB_V1) > > /* > * PF2VF history log: > -- > 2.34.1 >
