From: Nirmoy <nirmodas@amd.com>
To: "Christian König" <christian.koenig@amd.com>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Nirmoy Das" <nirmoy.aiemd@gmail.com>,
dri-devel@lists.freedesktop.org
Cc: thellstrom@vmware.com, airlied@linux.ie, kenny.ho@amd.com,
amd-gfx@lists.freedesktop.org, nirmoy.das@amd.com,
linux-graphics-maintainer@vmware.com, bskeggs@redhat.com,
nouveau@lists.freedesktop.org, alexander.deucher@amd.com,
sean@poorly.run, kraxel@redhat.com
Subject: Re: [PATCH 8/8] drm/ttm: do not keep GPU dependent addresses
Date: Tue, 18 Feb 2020 18:13:15 +0100 [thread overview]
Message-ID: <edc985f1-8856-4d1a-8960-efe4d21b960d@amd.com> (raw)
In-Reply-To: <9db59846-90b4-2b9a-8200-69297112693a@amd.com>
On 2/18/20 1:44 PM, Christian König wrote:
> Am 18.02.20 um 13:40 schrieb Thomas Zimmermann:
>> Hi
>>
>> Am 17.02.20 um 16:04 schrieb Nirmoy Das:
>>> GPU address handling is device specific and should be handle by its
>>> device
>>> driver.
>>>
>>> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
>>> ---
>>> drivers/gpu/drm/ttm/ttm_bo.c | 7 -------
>>> include/drm/ttm/ttm_bo_api.h | 2 --
>>> include/drm/ttm/ttm_bo_driver.h | 1 -
>>> 3 files changed, 10 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c
>>> b/drivers/gpu/drm/ttm/ttm_bo.c
>>> index 151edfd8de77..d5885cd609a3 100644
>>> --- a/drivers/gpu/drm/ttm/ttm_bo.c
>>> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
>>> @@ -85,7 +85,6 @@ static void ttm_mem_type_debug(struct
>>> ttm_bo_device *bdev, struct drm_printer *p
>>> drm_printf(p, " has_type: %d\n", man->has_type);
>>> drm_printf(p, " use_type: %d\n", man->use_type);
>>> drm_printf(p, " flags: 0x%08X\n", man->flags);
>>> - drm_printf(p, " gpu_offset: 0x%08llX\n", man->gpu_offset);
>>> drm_printf(p, " size: %llu\n", man->size);
>>> drm_printf(p, " available_caching: 0x%08X\n",
>>> man->available_caching);
>>> drm_printf(p, " default_caching: 0x%08X\n",
>>> man->default_caching);
>>> @@ -345,12 +344,6 @@ static int ttm_bo_handle_move_mem(struct
>>> ttm_buffer_object *bo,
>>> moved:
>>> bo->evicted = false;
>>> - if (bo->mem.mm_node)
>>> - bo->offset = (bo->mem.start << PAGE_SHIFT) +
>>> - bdev->man[bo->mem.mem_type].gpu_offset;
>>> - else
>>> - bo->offset = 0;
>>> -
>> After moving this into users, the else branch has been lost. Is
>> 'bo->mem.mm_node' always true?
>
> At least for the amdgpu and radeon use cases, yes.
>
> But that is a rather good question I mean for it is illegal to get the
> GPU BO address if it is inaccessible (e.g. in the system domain).
>
> Could be that some driver relied on the behavior to get 0 for the
> system domain here.
I wonder how to verify that ?
If I understand correctly:
1 qxl uses bo->offset only in qxl_bo_physical_address() which is not in
system domain.
2 unfortunately I can't say the same for bochs but it works with this
patch series so I think bochs is fine as well.
3 vmwgfx uses bo->offset only when bo->mem.mem_type == TTM_PL_VRAM so
vmwgfx should be fine.
4 amdgpu and radeon runs with 'bo->mem.mm_node' always true
I am not sure about nouveau as bo->offset is being used in many places.
I could probably mirror the removed logic to nouveau as
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c
b/drivers/gpu/drm/nouveau/nouveau_bo.c
index f8015e0318d7..5a6a2af91318 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -1317,6 +1317,10 @@ nouveau_bo_move_ntfy(struct ttm_buffer_object
*bo, bool evict,
list_for_each_entry(vma, &nvbo->vma_list, head) {
nouveau_vma_map(vma, mem);
}
+ if (bo->mem.mm_node)
+ nvbo->offset = (new_reg->start << PAGE_SHIFT);
+ else
+ nvbo->offset = 0;
} else {
list_for_each_entry(vma, &nvbo->vma_list, head) {
WARN_ON(ttm_bo_wait(bo, false, false));
Regards,
Nirmoy
>
> Regards,
> Christian.
>
>>
>> Best regards
>> Thomas
>>
>>> ctx->bytes_moved += bo->num_pages << PAGE_SHIFT;
>>> return 0;
>>> diff --git a/include/drm/ttm/ttm_bo_api.h
>>> b/include/drm/ttm/ttm_bo_api.h
>>> index b9bc1b00142e..d6f39ee5bf5d 100644
>>> --- a/include/drm/ttm/ttm_bo_api.h
>>> +++ b/include/drm/ttm/ttm_bo_api.h
>>> @@ -213,8 +213,6 @@ struct ttm_buffer_object {
>>> * either of these locks held.
>>> */
>>> - uint64_t offset; /* GPU address space is independent of CPU
>>> word size */
>>> -
>>> struct sg_table *sg;
>>> };
>>> diff --git a/include/drm/ttm/ttm_bo_driver.h
>>> b/include/drm/ttm/ttm_bo_driver.h
>>> index c9e0fd09f4b2..c8ce6c181abe 100644
>>> --- a/include/drm/ttm/ttm_bo_driver.h
>>> +++ b/include/drm/ttm/ttm_bo_driver.h
>>> @@ -177,7 +177,6 @@ struct ttm_mem_type_manager {
>>> bool has_type;
>>> bool use_type;
>>> uint32_t flags;
>>> - uint64_t gpu_offset; /* GPU address space is independent of CPU
>>> word size */
>>> uint64_t size;
>>> uint32_t available_caching;
>>> uint32_t default_caching;
>>>
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-02-18 17:10 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-17 15:04 [PATCH 0/8] do not store GPU address in TTM Nirmoy Das
2020-02-17 15:04 ` [PATCH 1/8] drm/amdgpu: move ttm bo->offset to amdgpu_bo Nirmoy Das
2020-02-17 15:04 ` [PATCH 2/8] drm/radeon: don't use ttm bo->offset Nirmoy Das
2020-02-17 15:04 ` [PATCH 3/8] drm/vmwgfx: " Nirmoy Das
2020-02-17 15:04 ` [PATCH 4/8] drm/nouveau: " Nirmoy Das
2020-02-17 15:57 ` Alex Deucher
2020-02-17 16:04 ` Nirmoy
2020-02-17 15:04 ` [PATCH 5/8] drm/qxl: " Nirmoy Das
2020-02-17 15:04 ` [PATCH 6/8] drm/vram-helper: " Nirmoy Das
2020-02-24 8:01 ` Gerd Hoffmann
2020-02-24 9:52 ` Nirmoy
2020-02-17 15:04 ` [PATCH 7/8] drm/bochs: use drm_gem_vram_offset to get bo offset Nirmoy Das
2020-02-17 15:06 ` Christian König
2020-02-24 8:01 ` Gerd Hoffmann
2020-02-17 15:04 ` [PATCH 8/8] drm/ttm: do not keep GPU dependent addresses Nirmoy Das
2020-02-18 12:40 ` Thomas Zimmermann
2020-02-18 12:44 ` Christian König
2020-02-18 17:13 ` Nirmoy [this message]
2020-02-18 17:23 ` Christian König
2020-02-18 18:16 ` Thomas Zimmermann
2020-02-18 18:23 ` Christian König
2020-02-18 18:28 ` Thomas Zimmermann
2020-02-18 18:37 ` Christian König
2020-02-18 19:06 ` [Nouveau] " Daniel Vetter
2020-02-19 12:47 ` Nirmoy
2020-02-18 18:30 ` Nirmoy
2020-02-24 8:04 ` Gerd Hoffmann
2020-02-24 9:59 ` Nirmoy
2020-02-18 12:42 ` [PATCH 0/8] do not store GPU address in TTM Thomas Zimmermann
2020-02-18 15:57 ` Nirmoy
-- strict thread matches above, loose matches on Subject: below --
2020-02-19 13:53 [PATCH v3 " Nirmoy Das
2020-02-19 13:53 ` [PATCH 8/8] drm/ttm: do not keep GPU dependent addresses Nirmoy Das
2020-03-05 13:29 [PATCH v4 0/8] do not store GPU address in TTM Nirmoy Das
2020-03-05 13:29 ` [PATCH 8/8] drm/ttm: do not keep GPU dependent addresses Nirmoy Das
2020-03-05 13:34 ` Christian König
2020-04-01 18:42 [PATCH v5 0/8] do not store GPU address in TTM Nirmoy Das
2020-04-01 18:42 ` [PATCH 8/8] drm/ttm: do not keep GPU dependent addresses Nirmoy Das
2020-06-24 18:26 [RESEND] [PATCH v6 0/8] do not store GPU address in TTM Nirmoy Das
2020-06-24 18:26 ` [PATCH 8/8] drm/ttm: do not keep GPU dependent addresses Nirmoy Das
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=edc985f1-8856-4d1a-8960-efe4d21b960d@amd.com \
--to=nirmodas@amd.com \
--cc=airlied@linux.ie \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=bskeggs@redhat.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=kenny.ho@amd.com \
--cc=kraxel@redhat.com \
--cc=linux-graphics-maintainer@vmware.com \
--cc=nirmoy.aiemd@gmail.com \
--cc=nirmoy.das@amd.com \
--cc=nouveau@lists.freedesktop.org \
--cc=sean@poorly.run \
--cc=thellstrom@vmware.com \
--cc=tzimmermann@suse.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox