From: Nirmoy <nirmodas@amd.com>
To: "Christian König" <christian.koenig@amd.com>,
"Nirmoy Das" <nirmoy.das@amd.com>,
amd-gfx@lists.freedesktop.org
Cc: andrey.grodzovsky@amd.com, lijo.lazar@amd.com
Subject: Re: [PATCH v3 1/3] drm/amdgpu: do not pass ttm_resource_manager to gtt_mgr
Date: Fri, 22 Oct 2021 11:47:50 +0200 [thread overview]
Message-ID: <2d0cdcd7-bb4d-049e-7e32-bb692121a708@amd.com> (raw)
In-Reply-To: <3c9138cd-3635-29fb-f4c5-19eccb2b1410@amd.com>
On 10/22/21 11:44 AM, Christian König wrote:
> Am 22.10.21 um 11:32 schrieb Nirmoy Das:
>> Do not allow exported amdgpu_gtt_mgr_*() to accept
>> any ttm_resource_manager pointer. Also there is no need
>> to force other module to call a ttm function just to
>> eventually call gtt_mgr functions.
>>
>> v3: upcast mgr from ttm resopurce manager instead of
>> getting it from adev.
>> v2: pass adev's gtt_mgr instead of adev
>>
>> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 ++--
>> drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 23 ++++++++++-----------
>> drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 4 ++--
>> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 4 ++--
>> 4 files changed, 17 insertions(+), 18 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> index 41ce86244144..2b53d86aebac 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> @@ -4287,7 +4287,7 @@ static int amdgpu_device_reset_sriov(struct
>> amdgpu_device *adev,
>>
>> amdgpu_virt_init_data_exchange(adev);
>> /* we need recover gart prior to run SMC/CP/SDMA resume */
>> - amdgpu_gtt_mgr_recover(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT));
>> + amdgpu_gtt_mgr_recover(&adev->mman.gtt_mgr);
>>
>> r = amdgpu_device_fw_loading(adev);
>> if (r)
>> @@ -4604,7 +4604,7 @@ int amdgpu_do_asic_reset(struct list_head
>> *device_list_handle,
>> amdgpu_inc_vram_lost(tmp_adev);
>> }
>>
>> - r =
>> amdgpu_gtt_mgr_recover(ttm_manager_type(&tmp_adev->mman.bdev,
>> TTM_PL_TT));
>> + r = amdgpu_gtt_mgr_recover(&tmp_adev->mman.gtt_mgr);
>> if (r)
>> goto out;
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
>> index c18f16b3be9c..62e14efa61fe 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
>> @@ -77,10 +77,8 @@ static ssize_t
>> amdgpu_mem_info_gtt_used_show(struct device *dev,
>> {
>> struct drm_device *ddev = dev_get_drvdata(dev);
>> struct amdgpu_device *adev = drm_to_adev(ddev);
>> - struct ttm_resource_manager *man;
>>
>> - man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
>> - return sysfs_emit(buf, "%llu\n", amdgpu_gtt_mgr_usage(man));
>> + return sysfs_emit(buf, "%llu\n",
>> amdgpu_gtt_mgr_usage(&adev->mman.gtt_mgr));
>> }
>>
>> static DEVICE_ATTR(mem_info_gtt_total, S_IRUGO,
>> @@ -206,14 +204,15 @@ static void amdgpu_gtt_mgr_del(struct
>> ttm_resource_manager *man,
>> /**
>> * amdgpu_gtt_mgr_usage - return usage of GTT domain
>> *
>> - * @man: TTM memory type manager
>> + * @mgr: amdgpu_gtt_mgr pointer
>> *
>> * Return how many bytes are used in the GTT domain
>> */
>> -uint64_t amdgpu_gtt_mgr_usage(struct ttm_resource_manager *man)
>> +uint64_t amdgpu_gtt_mgr_usage(struct amdgpu_gtt_mgr *mgr)
>> {
>> - struct amdgpu_gtt_mgr *mgr = to_gtt_mgr(man);
>> - s64 result = man->size - atomic64_read(&mgr->available);
>> + s64 result;
>> +
>> + result = mgr->manager.size - atomic64_read(&mgr->available);
>>
>> return (result > 0 ? result : 0) * PAGE_SIZE;
>> }
>> @@ -221,16 +220,15 @@ uint64_t amdgpu_gtt_mgr_usage(struct
>> ttm_resource_manager *man)
>> /**
>> * amdgpu_gtt_mgr_recover - re-init gart
>> *
>> - * @man: TTM memory type manager
>> + * @mgr: amdgpu_gtt_mgr pointer
>> *
>> * Re-init the gart for each known BO in the GTT.
>> */
>> -int amdgpu_gtt_mgr_recover(struct ttm_resource_manager *man)
>> +int amdgpu_gtt_mgr_recover(struct amdgpu_gtt_mgr *mgr)
>> {
>> - struct amdgpu_gtt_mgr *mgr = to_gtt_mgr(man);
>> - struct amdgpu_device *adev;
>> struct amdgpu_gtt_node *node;
>> struct drm_mm_node *mm_node;
>> + struct amdgpu_device *adev;
>> int r = 0;
>>
>> adev = container_of(mgr, typeof(*adev), mman.gtt_mgr);
>> @@ -260,6 +258,7 @@ static void amdgpu_gtt_mgr_debug(struct
>> ttm_resource_manager *man,
>> struct drm_printer *printer)
>> {
>> struct amdgpu_gtt_mgr *mgr = to_gtt_mgr(man);
>> + struct amdgpu_device *adev = container_of(mgr, typeof(*adev),
>> mman.gtt_mgr);
>
> I think that variable is now unused, isn't it?
>
> Apart from that looks good to me now.
Yes it is. I will remove it. Strangely GCC didn't complain.
Nirmoy
>
> Christian.
>
>>
>> spin_lock(&mgr->lock);
>> drm_mm_print(&mgr->mm, printer);
>> @@ -267,7 +266,7 @@ static void amdgpu_gtt_mgr_debug(struct
>> ttm_resource_manager *man,
>>
>> drm_printf(printer, "man size:%llu pages, gtt available:%lld
>> pages, usage:%lluMB\n",
>> man->size, (u64)atomic64_read(&mgr->available),
>> - amdgpu_gtt_mgr_usage(man) >> 20);
>> + amdgpu_gtt_mgr_usage(mgr) >> 20);
>> }
>>
>> static const struct ttm_resource_manager_func amdgpu_gtt_mgr_func = {
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> index d2955ea4a62b..603ce32db5c5 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> @@ -678,7 +678,7 @@ int amdgpu_info_ioctl(struct drm_device *dev,
>> void *data, struct drm_file *filp)
>> ui64 =
>> amdgpu_vram_mgr_vis_usage(ttm_manager_type(&adev->mman.bdev,
>> TTM_PL_VRAM));
>> return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;
>> case AMDGPU_INFO_GTT_USAGE:
>> - ui64 =
>> amdgpu_gtt_mgr_usage(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT));
>> + ui64 = amdgpu_gtt_mgr_usage(&adev->mman.gtt_mgr);
>> return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;
>> case AMDGPU_INFO_GDS_CONFIG: {
>> struct drm_amdgpu_info_gds gds_info;
>> @@ -738,7 +738,7 @@ int amdgpu_info_ioctl(struct drm_device *dev,
>> void *data, struct drm_file *filp)
>> mem.gtt.usable_heap_size = mem.gtt.total_heap_size -
>> atomic64_read(&adev->gart_pin_size);
>> mem.gtt.heap_usage =
>> - amdgpu_gtt_mgr_usage(gtt_man);
>> + amdgpu_gtt_mgr_usage(&adev->mman.gtt_mgr);
>> mem.gtt.max_allocation = mem.gtt.usable_heap_size * 3 / 4;
>>
>> return copy_to_user(out, &mem,
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
>> index 91a087f9dc7c..af1c4e414979 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
>> @@ -114,8 +114,8 @@ int amdgpu_vram_mgr_init(struct amdgpu_device
>> *adev);
>> void amdgpu_vram_mgr_fini(struct amdgpu_device *adev);
>>
>> bool amdgpu_gtt_mgr_has_gart_addr(struct ttm_resource *mem);
>> -uint64_t amdgpu_gtt_mgr_usage(struct ttm_resource_manager *man);
>> -int amdgpu_gtt_mgr_recover(struct ttm_resource_manager *man);
>> +uint64_t amdgpu_gtt_mgr_usage(struct amdgpu_gtt_mgr *mgr);
>> +int amdgpu_gtt_mgr_recover(struct amdgpu_gtt_mgr *mgr);
>>
>> uint64_t amdgpu_preempt_mgr_usage(struct ttm_resource_manager *man);
>>
>> --
>> 2.32.0
>>
>
prev parent reply other threads:[~2021-10-22 9:48 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-22 9:32 [PATCH v3 1/3] drm/amdgpu: do not pass ttm_resource_manager to gtt_mgr Nirmoy Das
2021-10-22 9:32 ` [PATCH v2 2/3] drm/amdgpu: do not pass ttm_resource_manager to vram_mgr Nirmoy Das
2021-10-22 9:46 ` Christian König
2021-10-22 9:32 ` [PATCH v3 3/3] drm/amdgpu: recover gart table at resume Nirmoy Das
2021-10-22 9:50 ` Christian König
2021-10-22 9:44 ` [PATCH v3 1/3] drm/amdgpu: do not pass ttm_resource_manager to gtt_mgr Christian König
2021-10-22 9:47 ` Nirmoy [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2d0cdcd7-bb4d-049e-7e32-bb692121a708@amd.com \
--to=nirmodas@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=andrey.grodzovsky@amd.com \
--cc=christian.koenig@amd.com \
--cc=lijo.lazar@amd.com \
--cc=nirmoy.das@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.