On 13.08.2014 12:52, Jérôme Glisse wrote: > From: Jérôme Glisse <jglisse@xxxxxxxxxx> > > When experiencing memory pressure we want to minimize pool size so that > memory we just shrinked is not added back again just as the next thing. > > This will divide by 2 the maximum pool size for each device each time > the pool have to shrink. The limit is bumped again is next allocation > happen after one second since the last shrink. The one second delay is > obviously an arbitrary choice. > > Signed-off-by: Jérôme Glisse <jglisse@xxxxxxxxxx> [...] > diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c > index 09874d6..ab41adf 100644 > --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c > +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c > @@ -68,6 +68,8 @@ > * @list: Pool of free uc/wc pages for fast reuse. > * @gfp_flags: Flags to pass for alloc_page. > * @npages: Number of pages in pool. > + * @cur_max_size: Current maximum size for the pool. > + * @shrink_timeout: Timeout for pool maximum size restriction. > */ > struct ttm_page_pool { > spinlock_t lock; > @@ -76,6 +78,8 @@ struct ttm_page_pool { > gfp_t gfp_flags; > unsigned npages; > char *name; > + unsigned cur_max_size; > + unsigned long last_shrink; s/last_shrink/shrink_timeout/ Looks like maybe you posted an untested stale set of patches? > @@ -289,6 +293,16 @@ static void ttm_pool_update_free_locked(struct ttm_page_pool *pool, > pool->nfrees += freed_pages; > } > > +static inline void ttm_pool_update_max_size(struct ttm_page_pool *pool) > +{ > + if (time_before(jiffies, pool->shrink_timeout)) > + return; > + /* In case we reached zero bounce back to 512 pages. */ > + pool->cur_max_size = max(pool->cur_max_size << 1, 512); Another 'comparison of distinct pointer types lacks a cast' warning. Both issues apply to ttm_page_alloc_dma.c as well. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel