* [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool.
@ 2015-07-08 18:16 j.glisse
2015-07-08 18:16 ` [PATCH 2/2] drm/ttm: improve uncached page deallocation j.glisse
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: j.glisse @ 2015-07-08 18:16 UTC (permalink / raw)
To: dri-devel
Cc: Jérôme Glisse, Thomas Hellstrom, Konrad Rzeszutek Wilk
From: Jérôme Glisse <jglisse@redhat.com>
Current code never allowed the page pool to actualy fill in anyway.
This fix it, so that we only start freeing page from the pool when
we go over the pool size.
Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Tested-by: Michel Dänzer <michel@daenzer.net>
Cc: Thomas Hellstrom <thellstrom@vmware.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
index c96db43..0194a93 100644
--- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
+++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
@@ -953,14 +953,8 @@ void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev)
} else {
pool->npages_free += count;
list_splice(&ttm_dma->pages_list, &pool->free_list);
- npages = count;
- if (pool->npages_free > _manager->options.max_size) {
+ if (pool->npages_free > _manager->options.max_size)
npages = pool->npages_free - _manager->options.max_size;
- /* free at least NUM_PAGES_TO_ALLOC number of pages
- * to reduce calls to set_memory_wb */
- if (npages < NUM_PAGES_TO_ALLOC)
- npages = NUM_PAGES_TO_ALLOC;
- }
}
spin_unlock_irqrestore(&pool->lock, irq_flags);
--
1.8.3.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 2/2] drm/ttm: improve uncached page deallocation.
2015-07-08 18:16 [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool j.glisse
@ 2015-07-08 18:16 ` j.glisse
2015-07-08 18:40 ` Konrad Rzeszutek Wilk
2015-07-08 18:41 ` [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool Konrad Rzeszutek Wilk
2015-07-09 2:41 ` Michel Dänzer
2 siblings, 1 reply; 5+ messages in thread
From: j.glisse @ 2015-07-08 18:16 UTC (permalink / raw)
To: dri-devel
Cc: Jérôme Glisse, Konrad Rzeszutek Wilk,
Michel Dänzer, Thomas Hellstrom
From: Jérôme Glisse <jglisse@redhat.com>
Calls to set_memory_wb() incure heavy TLB flush and IPI cost. To
minimize those wait until pool grow beyond batch size before
draining the pool.
Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Cc: Michel Dänzer <michel@daenzer.net>
Cc: Thomas Hellstrom <thellstrom@vmware.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
index 0194a93..8028dd6 100644
--- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
+++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
@@ -953,7 +953,12 @@ void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev)
} else {
pool->npages_free += count;
list_splice(&ttm_dma->pages_list, &pool->free_list);
- if (pool->npages_free > _manager->options.max_size)
+ /*
+ * Wait to have at at least NUM_PAGES_TO_ALLOC number of pages
+ * to free in order to minimize calls to set_memory_wb().
+ */
+ if (pool->npages_free >= (_manager->options.max_size +
+ NUM_PAGES_TO_ALLOC))
npages = pool->npages_free - _manager->options.max_size;
}
spin_unlock_irqrestore(&pool->lock, irq_flags);
--
1.8.3.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH 2/2] drm/ttm: improve uncached page deallocation.
2015-07-08 18:16 ` [PATCH 2/2] drm/ttm: improve uncached page deallocation j.glisse
@ 2015-07-08 18:40 ` Konrad Rzeszutek Wilk
0 siblings, 0 replies; 5+ messages in thread
From: Konrad Rzeszutek Wilk @ 2015-07-08 18:40 UTC (permalink / raw)
To: j.glisse
Cc: Jérôme Glisse, Michel Dänzer, dri-devel,
Thomas Hellstrom
On Wed, Jul 08, 2015 at 02:16:37PM -0400, j.glisse@gmail.com wrote:
> From: Jérôme Glisse <jglisse@redhat.com>
>
> Calls to set_memory_wb() incure heavy TLB flush and IPI cost. To
> minimize those wait until pool grow beyond batch size before
> draining the pool.
>
> Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
> Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
> Cc: Michel Dänzer <michel@daenzer.net>
> Cc: Thomas Hellstrom <thellstrom@vmware.com>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> ---
> drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> index 0194a93..8028dd6 100644
> --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> @@ -953,7 +953,12 @@ void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev)
> } else {
> pool->npages_free += count;
> list_splice(&ttm_dma->pages_list, &pool->free_list);
> - if (pool->npages_free > _manager->options.max_size)
> + /*
> + * Wait to have at at least NUM_PAGES_TO_ALLOC number of pages
> + * to free in order to minimize calls to set_memory_wb().
> + */
> + if (pool->npages_free >= (_manager->options.max_size +
> + NUM_PAGES_TO_ALLOC))
> npages = pool->npages_free - _manager->options.max_size;
> }
> spin_unlock_irqrestore(&pool->lock, irq_flags);
> --
> 1.8.3.1
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool.
2015-07-08 18:16 [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool j.glisse
2015-07-08 18:16 ` [PATCH 2/2] drm/ttm: improve uncached page deallocation j.glisse
@ 2015-07-08 18:41 ` Konrad Rzeszutek Wilk
2015-07-09 2:41 ` Michel Dänzer
2 siblings, 0 replies; 5+ messages in thread
From: Konrad Rzeszutek Wilk @ 2015-07-08 18:41 UTC (permalink / raw)
To: j.glisse; +Cc: Jérôme Glisse, Thomas Hellstrom, dri-devel
On Wed, Jul 08, 2015 at 02:16:36PM -0400, j.glisse@gmail.com wrote:
> From: Jérôme Glisse <jglisse@redhat.com>
>
> Current code never allowed the page pool to actualy fill in anyway.
> This fix it, so that we only start freeing page from the pool when
> we go over the pool size.
>
> Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
> Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
> Tested-by: Michel Dänzer <michel@daenzer.net>
> Cc: Thomas Hellstrom <thellstrom@vmware.com>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> ---
> drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 8 +-------
> 1 file changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> index c96db43..0194a93 100644
> --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> @@ -953,14 +953,8 @@ void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev)
> } else {
> pool->npages_free += count;
> list_splice(&ttm_dma->pages_list, &pool->free_list);
> - npages = count;
> - if (pool->npages_free > _manager->options.max_size) {
> + if (pool->npages_free > _manager->options.max_size)
> npages = pool->npages_free - _manager->options.max_size;
> - /* free at least NUM_PAGES_TO_ALLOC number of pages
> - * to reduce calls to set_memory_wb */
> - if (npages < NUM_PAGES_TO_ALLOC)
> - npages = NUM_PAGES_TO_ALLOC;
> - }
> }
> spin_unlock_irqrestore(&pool->lock, irq_flags);
>
> --
> 1.8.3.1
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool.
2015-07-08 18:16 [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool j.glisse
2015-07-08 18:16 ` [PATCH 2/2] drm/ttm: improve uncached page deallocation j.glisse
2015-07-08 18:41 ` [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool Konrad Rzeszutek Wilk
@ 2015-07-09 2:41 ` Michel Dänzer
2 siblings, 0 replies; 5+ messages in thread
From: Michel Dänzer @ 2015-07-09 2:41 UTC (permalink / raw)
To: j.glisse, dri-devel
Cc: Jérôme Glisse, Thomas Hellstrom, Konrad Rzeszutek Wilk
On 09.07.2015 03:16, j.glisse@gmail.com wrote:
> From: Jérôme Glisse <jglisse@redhat.com>
>
> Current code never allowed the page pool to actualy fill in anyway.
> This fix it, so that we only start freeing page from the pool when
> we go over the pool size.
>
> Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
[...]
> - if (pool->npages_free > _manager->options.max_size) {
> + if (pool->npages_free > _manager->options.max_size)
> npages = pool->npages_free - _manager->options.max_size;
> - /* free at least NUM_PAGES_TO_ALLOC number of pages
> - * to reduce calls to set_memory_wb */
> - if (npages < NUM_PAGES_TO_ALLOC)
> - npages = NUM_PAGES_TO_ALLOC;
> - }
This should be part of patch 2. With that fixed, both patches are
Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com>
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-07-09 2:41 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-08 18:16 [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool j.glisse
2015-07-08 18:16 ` [PATCH 2/2] drm/ttm: improve uncached page deallocation j.glisse
2015-07-08 18:40 ` Konrad Rzeszutek Wilk
2015-07-08 18:41 ` [PATCH 1/2] drm/ttm: fix object deallocation to properly fill in the page pool Konrad Rzeszutek Wilk
2015-07-09 2:41 ` Michel Dänzer
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.