[PATCH 2/2] drm/amdgpu/atom: make amdgpu_atomfirmware_allocate_fb parsing consistent
Alex Deucher
alexdeucher at gmail.com
Fri Jan 5 14:03:13 UTC 2024
Ping on this series?
Alex
On Thu, Dec 14, 2023 at 7:55 AM Alex Deucher <alexander.deucher at amd.com> wrote:
>
> For 2.1, ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION is SR-IOV only.
> For 2.2, return usage_bytes properly for the non-SR-IOV case.
>
> Fixes: 4864f2ee9ee2 ("drm/amdgpu: add vram reservation based on vram_usagebyfirmware_v2_2")
> Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1215802
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> .../gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 55 ++++++++++---------
> 1 file changed, 30 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
> index d8393e3f2778..b1c1fafa2d8a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
> @@ -115,18 +115,21 @@ static int amdgpu_atomfirmware_allocate_fb_v2_1(struct amdgpu_device *adev,
> fw_size,
> drv_size);
>
> - if ((start_addr & ATOM_VRAM_OPERATION_FLAGS_MASK) ==
> - (u32)(ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION <<
> - ATOM_VRAM_OPERATION_FLAGS_SHIFT)) {
> - /* Firmware request VRAM reservation for SR-IOV */
> - adev->mman.fw_vram_usage_start_offset = (start_addr &
> - (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
> - adev->mman.fw_vram_usage_size = fw_size << 10;
> - /* Use the default scratch size */
> - *usage_bytes = 0;
> + if (amdgpu_sriov_vf(adev)) {
> + if ((start_addr & ATOM_VRAM_OPERATION_FLAGS_MASK) ==
> + (u32)(ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION <<
> + ATOM_VRAM_OPERATION_FLAGS_SHIFT)) {
> + /* Firmware request VRAM reservation for SR-IOV */
> + adev->mman.fw_vram_usage_start_offset = (start_addr &
> + (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
> + adev->mman.fw_vram_usage_size = fw_size << 10;
> + /* Use the default scratch size */
> + *usage_bytes = 0;
> + }
> } else {
> *usage_bytes = drv_size << 10;
> }
> +
> return 0;
> }
>
> @@ -147,25 +150,27 @@ static int amdgpu_atomfirmware_allocate_fb_v2_2(struct amdgpu_device *adev,
> drv_start_addr,
> drv_size);
>
> - if (amdgpu_sriov_vf(adev) &&
> - ((fw_start_addr & (ATOM_VRAM_BLOCK_NEEDS_NO_RESERVATION <<
> - ATOM_VRAM_OPERATION_FLAGS_SHIFT)) == 0)) {
> - /* Firmware request VRAM reservation for SR-IOV */
> - adev->mman.fw_vram_usage_start_offset = (fw_start_addr &
> - (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
> - adev->mman.fw_vram_usage_size = fw_size << 10;
> - }
> + if (amdgpu_sriov_vf(adev)) {
> + if ((fw_start_addr & (ATOM_VRAM_BLOCK_NEEDS_NO_RESERVATION <<
> + ATOM_VRAM_OPERATION_FLAGS_SHIFT)) == 0) {
> + /* Firmware request VRAM reservation for SR-IOV */
> + adev->mman.fw_vram_usage_start_offset = (fw_start_addr &
> + (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
> + adev->mman.fw_vram_usage_size = fw_size << 10;
> + }
>
> - if (amdgpu_sriov_vf(adev) &&
> - ((drv_start_addr & (ATOM_VRAM_BLOCK_NEEDS_NO_RESERVATION <<
> - ATOM_VRAM_OPERATION_FLAGS_SHIFT)) == 0)) {
> - /* driver request VRAM reservation for SR-IOV */
> - adev->mman.drv_vram_usage_start_offset = (drv_start_addr &
> - (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
> - adev->mman.drv_vram_usage_size = drv_size << 10;
> + if ((drv_start_addr & (ATOM_VRAM_BLOCK_NEEDS_NO_RESERVATION <<
> + ATOM_VRAM_OPERATION_FLAGS_SHIFT)) == 0) {
> + /* driver request VRAM reservation for SR-IOV */
> + adev->mman.drv_vram_usage_start_offset = (drv_start_addr &
> + (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
> + adev->mman.drv_vram_usage_size = drv_size << 10;
> + }
> + *usage_bytes = 0;
> + } else {
> + *usage_bytes = drv_size << 10;
> }
>
> - *usage_bytes = 0;
> return 0;
> }
>
> --
> 2.42.0
>
More information about the amd-gfx
mailing list