[PATCH 17/17] drm/amdgpu: move vram usage by vbios to mman (v2)
Christian König
ckoenig.leichtzumerken at gmail.com
Fri Jul 31 06:45:07 UTC 2020
Am 30.07.20 um 22:04 schrieb Alex Deucher:
> It's related to the memory manager so move it there.
>
> v2: inline the structure
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
Reviewed-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 12 -----------
> drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 4 ++--
> .../gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 4 ++--
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 20 +++++++++----------
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 6 ++++++
> drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 6 +++---
> 6 files changed, 23 insertions(+), 29 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 44fd0ef7394f..81f6412eb54f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -649,16 +649,6 @@ struct amdgpu_atcs {
> struct amdgpu_atcs_functions functions;
> };
>
> -/*
> - * Firmware VRAM reservation
> - */
> -struct amdgpu_fw_vram_usage {
> - u64 start_offset;
> - u64 size;
> - struct amdgpu_bo *reserved_bo;
> - void *va;
> -};
> -
> /*
> * CGS
> */
> @@ -942,8 +932,6 @@ struct amdgpu_device {
> struct delayed_work delayed_init_work;
>
> struct amdgpu_virt virt;
> - /* firmware VRAM reservation */
> - struct amdgpu_fw_vram_usage fw_vram_usage;
>
> /* link all shadow bo */
> struct list_head shadow_list;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
> index 29f767e026e4..e33f63712b46 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
> @@ -1786,9 +1786,9 @@ static int amdgpu_atombios_allocate_fb_scratch(struct amdgpu_device *adev)
> (uint32_t)(ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION <<
> ATOM_VRAM_OPERATION_FLAGS_SHIFT)) {
> /* Firmware request VRAM reservation for SR-IOV */
> - adev->fw_vram_usage.start_offset = (start_addr &
> + adev->mman.fw_vram_usage_start_offset = (start_addr &
> (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
> - adev->fw_vram_usage.size = size << 10;
> + adev->mman.fw_vram_usage_size = size << 10;
> /* Use the default scratch size */
> usage_bytes = 0;
> } else {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
> index 1279053324f9..17c010d0431f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
> @@ -89,9 +89,9 @@ int amdgpu_atomfirmware_allocate_fb_scratch(struct amdgpu_device *adev)
> (uint32_t)(ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION <<
> ATOM_VRAM_OPERATION_FLAGS_SHIFT)) {
> /* Firmware request VRAM reservation for SR-IOV */
> - adev->fw_vram_usage.start_offset = (start_addr &
> + adev->mman.fw_vram_usage_start_offset = (start_addr &
> (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
> - adev->fw_vram_usage.size = size << 10;
> + adev->mman.fw_vram_usage_size = size << 10;
> /* Use the default scratch size */
> usage_bytes = 0;
> } else {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index ea9b5b39f640..c7421aa32946 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1766,8 +1766,8 @@ static struct ttm_bo_driver amdgpu_bo_driver = {
> */
> static void amdgpu_ttm_fw_reserve_vram_fini(struct amdgpu_device *adev)
> {
> - amdgpu_bo_free_kernel(&adev->fw_vram_usage.reserved_bo,
> - NULL, &adev->fw_vram_usage.va);
> + amdgpu_bo_free_kernel(&adev->mman.fw_vram_usage_reserved_bo,
> + NULL, &adev->mman.fw_vram_usage_va);
> }
>
> /**
> @@ -1781,19 +1781,19 @@ static int amdgpu_ttm_fw_reserve_vram_init(struct amdgpu_device *adev)
> {
> uint64_t vram_size = adev->gmc.visible_vram_size;
>
> - adev->fw_vram_usage.va = NULL;
> - adev->fw_vram_usage.reserved_bo = NULL;
> + adev->mman.fw_vram_usage_va = NULL;
> + adev->mman.fw_vram_usage_reserved_bo = NULL;
>
> - if (adev->fw_vram_usage.size == 0 ||
> - adev->fw_vram_usage.size > vram_size)
> + if (adev->mman.fw_vram_usage_size == 0 ||
> + adev->mman.fw_vram_usage_size > vram_size)
> return 0;
>
> return amdgpu_bo_create_kernel_at(adev,
> - adev->fw_vram_usage.start_offset,
> - adev->fw_vram_usage.size,
> + adev->mman.fw_vram_usage_start_offset,
> + adev->mman.fw_vram_usage_size,
> AMDGPU_GEM_DOMAIN_VRAM,
> - &adev->fw_vram_usage.reserved_bo,
> - &adev->fw_vram_usage.va);
> + &adev->mman.fw_vram_usage_reserved_bo,
> + &adev->mman.fw_vram_usage_va);
> }
>
> /*
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> index 6d7b83d967ce..de37ceff0e56 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> @@ -70,6 +70,12 @@ struct amdgpu_mman {
> uint8_t *discovery_bin;
> uint32_t discovery_tmr_size;
> struct amdgpu_bo *discovery_memory;
> +
> + /* firmware VRAM reservation */
> + u64 fw_vram_usage_start_offset;
> + u64 fw_vram_usage_size;
> + struct amdgpu_bo *fw_vram_usage_reserved_bo;
> + void *fw_vram_usage_va;
> };
>
> struct amdgpu_copy_mem {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> index 5cae39d35c04..1e211544f2dc 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> @@ -401,7 +401,7 @@ static void amdgpu_virt_add_bad_page(struct amdgpu_device *adev,
> if (bp_block_size) {
> bp_cnt = bp_block_size / sizeof(uint64_t);
> for (bp_idx = 0; bp_idx < bp_cnt; bp_idx++) {
> - retired_page = *(uint64_t *)(adev->fw_vram_usage.va +
> + retired_page = *(uint64_t *)(adev->mman.fw_vram_usage_va +
> bp_block_offset + bp_idx * sizeof(uint64_t));
> bp.retired_page = retired_page;
>
> @@ -428,10 +428,10 @@ void amdgpu_virt_init_data_exchange(struct amdgpu_device *adev)
> adev->virt.fw_reserve.p_pf2vf = NULL;
> adev->virt.fw_reserve.p_vf2pf = NULL;
>
> - if (adev->fw_vram_usage.va != NULL) {
> + if (adev->mman.fw_vram_usage_va != NULL) {
> adev->virt.fw_reserve.p_pf2vf =
> (struct amd_sriov_msg_pf2vf_info_header *)(
> - adev->fw_vram_usage.va + AMDGIM_DATAEXCHANGE_OFFSET);
> + adev->mman.fw_vram_usage_va + AMDGIM_DATAEXCHANGE_OFFSET);
> AMDGPU_FW_VRAM_PF2VF_READ(adev, header.size, &pf2vf_size);
> AMDGPU_FW_VRAM_PF2VF_READ(adev, checksum, &checksum);
> AMDGPU_FW_VRAM_PF2VF_READ(adev, feature_flags, &adev->virt.gim_feature);
More information about the amd-gfx
mailing list