Skip to contentSkip to conversation

drm/ttm: Make sure BOs being swapped out are cacheable

PATCH In review Michel Dänzer 6 participants 12 messages Jan 25, 2017 – Jan 27, 2017

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 drm/ttm: Make sure BOs being swapped out are cacheable

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

	BUG_ON(ttm->caching_state != tt_cached);

in ttm_tt_swapout.

---
 drivers/gpu/drm/ttm/ttm_bo.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/ttm/ttm_bo.c +2 -2
index d5063618efa7..86e3b233b722 100644
@@ -1670,7 +1670,6 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
 	struct ttm_buffer_object *bo;
 	int ret = -EBUSY;
 	int put_count;
-	uint32_t swap_placement = (TTM_PL_FLAG_CACHED | TTM_PL_FLAG_SYSTEM);
 
 	spin_lock(&glob->lru_lock);
 	list_for_each_entry(bo, &glob->swap_lru, swap) {
@@ -1701,7 +1700,8 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
 	 * Move to system cached
 	 */
 
-	if ((bo->mem.placement & swap_placement) != swap_placement) {
+	if (bo->mem.mem_type != TTM_PL_SYSTEM ||
+	    bo->ttm->caching_state != tt_cached) {
 		struct ttm_mem_reg evict_mem;
 
 		evict_mem = bo->mem;
Signature · 1 line
2.11.0
Reviewed-by on v1 1/1
#1 lore raw
Quoted 6 lines · Michel Dänzer

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

Quoted 6 lines
	BUG_ON(ttm->caching_state != tt_cached);

in ttm_tt_swapout.

Quoted 26 lines
---
 drivers/gpu/drm/ttm/ttm_bo.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/ttm/ttm_bo.c +2 -2
index d5063618efa7..86e3b233b722 100644
@@ -1670,7 +1670,6 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
 	struct ttm_buffer_object *bo;
 	int ret = -EBUSY;
 	int put_count;
-	uint32_t swap_placement = (TTM_PL_FLAG_CACHED | TTM_PL_FLAG_SYSTEM);
 
 	spin_lock(&glob->lru_lock);
 	list_for_each_entry(bo, &glob->swap_lru, swap) {
@@ -1701,7 +1700,8 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
 	 * Move to system cached
 	 */
 
-	if ((bo->mem.placement & swap_placement) != swap_placement) {
+	if (bo->mem.mem_type != TTM_PL_SYSTEM ||
+	    bo->ttm->caching_state != tt_cached) {
 		struct ttm_mem_reg evict_mem;
 
 		evict_mem = bo->mem;
Reviewed-by
#2 lore raw

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 7 lines · Michel Dänzer
Quoted 6 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

Quoted 7 lines
Quoted 6 lines
	BUG_ON(ttm->caching_state != tt_cached);

in ttm_tt_swapout.

Quoted 21 lines
Quoted 21 lines
---
  drivers/gpu/drm/ttm/ttm_bo.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/ttm/ttm_bo.c +0 -1
index d5063618efa7..86e3b233b722 100644
@@ -1670,7 +1670,6 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
  	struct ttm_buffer_object *bo;
  	int ret = -EBUSY;
  	int put_count;
-	uint32_t swap_placement = (TTM_PL_FLAG_CACHED | TTM_PL_FLAG_SYSTEM);
 
  	spin_lock(&glob->lru_lock);
  	list_for_each_entry(bo, &glob->swap_lru, swap) {
@@ -1701,7 +1700,8 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
  	 * Move to system cached
  	 */
 
Quoted 7 lines

drivers/gpu/drm/ttm/ttm_bo.c static int ttm_bo_swapout(struct ttm_mem_shrink *shrink) · line 1707

Quoted 6 lines
drivers/gpu/drm/ttm/ttm_bo.c +2 -1
-	if ((bo->mem.placement & swap_placement) != swap_placement) {
+	if (bo->mem.mem_type != TTM_PL_SYSTEM ||
+	    bo->ttm->caching_state != tt_cached) {
  		struct ttm_mem_reg evict_mem;
 
  		evict_mem = bo->mem;

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reviewed-by
#3 lore raw
Quoted 10 lines · Christian König

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 9 lines · Michel Dänzer
Quoted 8 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

	BUG_ON(ttm->caching_state != tt_cached);
Quoted 7 lines
Quoted 5 lines
Quoted 4 lines

in ttm_tt_swapout.

Quoted 18 lines
Quoted 18 lines
Quoted 18 lines

---
 drivers/gpu/drm/ttm/ttm_bo.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/ttm/ttm_bo.c +0 -1
index d5063618efa7..86e3b233b722 100644
@@ -1670,7 +1670,6 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
 	struct ttm_buffer_object *bo;
 	int ret = -EBUSY;
 	int put_count;
-	uint32_t swap_placement = (TTM_PL_FLAG_CACHED | TTM_PL_FLAG_SYSTEM);
 	spin_lock(&glob->lru_lock);
 	list_for_each_entry(bo, &glob->swap_lru, swap) {
@@ -1701,7 +1700,8 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
Quoted 9 lines
Quoted 8 lines

drivers/gpu/drm/ttm/ttm_bo.c static int ttm_bo_swapout(struct ttm_mem_shrink *shrink) · line 1707

Quoted 7 lines
drivers/gpu/drm/ttm/ttm_bo.c +2 -1
 	 * Move to system cached
 	 */
-	if ((bo->mem.placement & swap_placement) != swap_placement) {
+	if (bo->mem.mem_type != TTM_PL_SYSTEM ||
+	    bo->ttm->caching_state != tt_cached) {
 		struct ttm_mem_reg evict_mem;
 		evict_mem = bo->mem;

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

#4 lore raw
Quoted 13 lines · Sinclair Yeh
Quoted 12 lines · Christian König

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 11 lines · Michel Dänzer
Quoted 10 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

	BUG_ON(ttm->caching_state != tt_cached);

in ttm_tt_swapout.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
Quoted 2 lines

Thanks for the reviews! Via which tree should we merge this?

Signature · 6 lines
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
#5 lore raw
Quoted 12 lines · Michel Dänzer
Quoted 11 lines · Sinclair Yeh
Quoted 10 lines · Christian König

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 9 lines · Michel Dänzer
Quoted 8 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

	BUG_ON(ttm->caching_state != tt_cached);
Quoted 10 lines
Quoted 7 lines
Quoted 6 lines
Quoted 5 lines
Quoted 4 lines

in ttm_tt_swapout.

Thanks for the reviews! Via which tree should we merge this?

I don't maintain a TTM tree any longer. Let's check with Daniel if he can merge it through drm-misc.

/Thomas

#6 lore raw
Quoted 17 lines · Thomas Hellstrom
Quoted 16 lines · Michel Dänzer
Quoted 15 lines · Sinclair Yeh
Quoted 14 lines · Christian König

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 13 lines · Michel Dänzer
Quoted 12 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

	BUG_ON(ttm->caching_state != tt_cached);

in ttm_tt_swapout.

Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
Quoted 2 lines
Quoted 1 line

Thanks for the reviews! Via which tree should we merge this?

I don't maintain a TTM tree any longer. Let's check with Daniel if he can merge it through drm-misc.

I'm trying very hard not to get volunteered for ttm maintainer :-) Nominally Alex&Christian have drm-misc commit rights, but they haven't used them yet. But I think merging through drm-misc would make sense, there's regular pull request trains for both -next and -fixes. Or merge through the amd tree with Dave's ack, but I'd really like to get amd folks into the drm-misc group ...
-Daniel

Signature · 7 lines
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
#7 lore raw

Am 27.01.2017 um 08:30 schrieb Daniel Vetter:

Quoted 19 lines · Thomas Hellstrom
Quoted 18 lines · Michel Dänzer
Quoted 17 lines · Sinclair Yeh
Quoted 16 lines · Christian König
Quoted 15 lines

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 14 lines · Michel Dänzer
Quoted 6 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

Quoted 6 lines
	BUG_ON(ttm->caching_state != tt_cached);

in ttm_tt_swapout.

Quoted 8 lines
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
Quoted 1 line

Thanks for the reviews! Via which tree should we merge this?

I don't maintain a TTM tree any longer. Let's check with Daniel if he can merge it through drm-misc.

I'm trying very hard not to get volunteered for ttm maintainer :-)

Yeah, ok I volunteer. Wanted to take that over for a while anyway.

Quoted 3 lines

Nominally Alex&Christian have drm-misc commit rights, but they haven't used them yet. But I think merging through drm-misc would make sense, there's regular pull request trains for both -next and -fixes.

Completely agree on merging it through drm-misc. Going to give my push rights a try today.

Quoted 2 lines

Or merge through the amd tree with Dave's ack, but I'd really like to get amd folks into the drm-misc group ...

I've got a few more already reviewed TTM changes which are currently waiting to be pushed upstream where amdgpu has dependencies on.

Going to sync with Alex so he sends his pull requests with those changes to Dave after the merge of the depending changes.

If you want to object that just merging through the AMD tree would be simpler, I agree but I actually want to do this exercise at least once :)

Regards,
Christian.

Quoted 1 line

-Daniel

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

#8 lore raw
Quoted 22 lines · Christian König

Am 27.01.2017 um 08:30 schrieb Daniel Vetter:

Quoted 21 lines · Thomas Hellstrom
Quoted 20 lines · Michel Dänzer
Quoted 19 lines · Sinclair Yeh
Quoted 18 lines · Christian König
Quoted 8 lines

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 7 lines · Michel Dänzer
Quoted 6 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

Quoted 8 lines
Quoted 7 lines
Quoted 6 lines
	BUG_ON(ttm->caching_state != tt_cached);

in ttm_tt_swapout.

Quoted 8 lines
Quoted 6 lines
Quoted 5 lines
Quoted 3 lines

Thanks for the reviews! Via which tree should we merge this?

I don't maintain a TTM tree any longer. Let's check with Daniel if he can merge it through drm-misc.

I'm trying very hard not to get volunteered for ttm maintainer :-)

Yeah, ok I volunteer. Wanted to take that over for a while anyway.

I guess you didn't use the dim magic to push it? The test integration tree isn't rebuild ... Quickstart for the tooling:

https://01.org/linuxgraphics/gfx-docs/maintainer-tools/dim.html

-Daniel

Signature · 7 lines
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
#9 lore raw

Am 27.01.2017 um 15:12 schrieb Daniel Vetter:

Quoted 26 lines · Christian König
Quoted 25 lines

Am 27.01.2017 um 08:30 schrieb Daniel Vetter:

Quoted 24 lines · Thomas Hellstrom
Quoted 23 lines · Michel Dänzer
Quoted 22 lines · Sinclair Yeh
Quoted 11 lines · Christian König
Quoted 10 lines

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 9 lines · Michel Dänzer
Quoted 8 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

	BUG_ON(ttm->caching_state != tt_cached);
Quoted 7 lines
Quoted 6 lines
Quoted 5 lines
Quoted 4 lines

in ttm_tt_swapout.

Thanks for the reviews! Via which tree should we merge this?

Quoted 6 lines
Quoted 4 lines
Quoted 3 lines
Quoted 2 lines

I don't maintain a TTM tree any longer. Let's check with Daniel if he can merge it through drm-misc.

I'm trying very hard not to get volunteered for ttm maintainer :-)

Yeah, ok I volunteer. Wanted to take that over for a while anyway.

I guess you didn't use the dim magic to push it? The test integration tree isn't rebuild ... Quickstart for the tooling:

Autsch! Do I have to use that or can I just go with my usual tool set?

Would probably be a pain to set this up everywhere here.

Christian.

Quoted 4 lines

https://01.org/linuxgraphics/gfx-docs/maintainer-tools/dim.html

-Daniel

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

#10 lore raw
Quoted 29 lines · Christian König

Am 27.01.2017 um 15:12 schrieb Daniel Vetter:

Quoted 28 lines · Christian König
Quoted 27 lines

Am 27.01.2017 um 08:30 schrieb Daniel Vetter:

Quoted 26 lines · Thomas Hellstrom
Quoted 25 lines · Michel Dänzer
Quoted 12 lines · Sinclair Yeh
Quoted 11 lines · Christian König
Quoted 10 lines

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 9 lines · Michel Dänzer
Quoted 8 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

	BUG_ON(ttm->caching_state != tt_cached);
Quoted 10 lines
Quoted 7 lines
Quoted 6 lines
Quoted 5 lines
Quoted 4 lines

in ttm_tt_swapout.

Thanks for the reviews! Via which tree should we merge this?

I don't maintain a TTM tree any longer. Let's check with Daniel if he can merge it through drm-misc.

Quoted 8 lines
Quoted 4 lines
Quoted 2 lines
Quoted 1 line

I'm trying very hard not to get volunteered for ttm maintainer :-)

Yeah, ok I volunteer. Wanted to take that over for a while anyway.

I guess you didn't use the dim magic to push it? The test integration tree isn't rebuild ... Quickstart for the tooling:

Autsch! Do I have to use that or can I just go with my usual tool set?

Would probably be a pain to set this up everywhere here.

We use it both for convience (e.g. it auto-adds the sob if need, and the patchwork link by default), and to catch mistakes (e.g. it checks that you're not pushing patches outside of the scope of drm-misc or i915 to the wrong tree). For drm-misc specifically there's also the 3 defconfigs you're supposed to build test before pushing (unfornately not scripted since distros can't even agree on what cross-compiler prefixes work for a given platform). And since 1 month ago we have an arm-soc ttm-based driver, so doing that for ttm patches is kinda a good idea too :-)

But right now the main thing is this integration tree magic to regenerate drm-tip, and that's also what intel CI and kernelci from collabora beat on. Long term I'd love to push all this onto the server-side (github makes scipting a lot of this dead easy). But we're still stuck with patches scribbled on stones with emailed patches and all that, so client-side scripts are kinda needed.
-Daniel

Signature · 7 lines
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
#11 lore raw
In reply to Christian König
Quoted 58 lines · Christian König

Am 27.01.2017 um 08:30 schrieb Daniel Vetter:

Quoted 33 lines · Thomas Hellstrom
Quoted 31 lines · Michel Dänzer
Quoted 29 lines · Sinclair Yeh
Quoted 26 lines · Christian König
Quoted 14 lines

Am 25.01.2017 um 10:25 schrieb Thomas Hellstrom:

Quoted 12 lines · Michel Dänzer
Quoted 10 lines

From: Michel Dänzer <[email protected]>

The current caching state may not be tt_cached, even though the placement contains TTM_PL_FLAG_CACHED, because placement can contain multiple caching flags. Trying to swap out such a BO would trip up the

        BUG_ON(ttm->caching_state != tt_cached);
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines

in ttm_tt_swapout.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

Thanks for the reviews! Via which tree should we merge this?

I don't maintain a TTM tree any longer. Let's check with Daniel if he can merge it through drm-misc.

I'm trying very hard not to get volunteered for ttm maintainer :-)

Yeah, ok I volunteer. Wanted to take that over for a while anyway.

Quoted 3 lines

Nominally Alex&Christian have drm-misc commit rights, but they haven't used them yet. But I think merging through drm-misc would make sense, there's regular pull request trains for both -next and -fixes.

Completely agree on merging it through drm-misc. Going to give my push rights a try today.

Quoted 3 lines

Or merge through the amd tree with Dave's ack, but I'd really like to get amd folks
into the drm-misc group ...

Quoted 8 lines

I've got a few more already reviewed TTM changes which are currently waiting to be pushed upstream where amdgpu has dependencies on.

Going to sync with Alex so he sends his pull requests with those changes to Dave after the merge of the depending changes.

If you want to object that just merging through the AMD tree would be simpler, I agree but I actually want to do this exercise at least once :)

I was thinking of including this in my -fixes pull next week, but I don't have a strong preference either way. The other ttm changes are pretty intertwined with amdgpu changes so I think it would be easier to take them in via the amdgpu tree. In the future we can adjust that.

Alex
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel