diff options
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_memory.c')
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_memory.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_memory.c b/drivers/gpu/drm/ttm/ttm_memory.c index 801b702566e..e70ddd82dc0 100644 --- a/drivers/gpu/drm/ttm/ttm_memory.c +++ b/drivers/gpu/drm/ttm/ttm_memory.c @@ -27,6 +27,7 @@  #include "ttm/ttm_memory.h"  #include "ttm/ttm_module.h" +#include "ttm/ttm_page_alloc.h"  #include <linux/spinlock.h>  #include <linux/sched.h>  #include <linux/wait.h> @@ -393,6 +394,7 @@ int ttm_mem_global_init(struct ttm_mem_global *glob)  		       "Zone %7s: Available graphics memory: %llu kiB.\n",  		       zone->name, (unsigned long long) zone->max_mem >> 10);  	} +	ttm_page_alloc_init(glob, glob->zone_kernel->max_mem/(2*PAGE_SIZE));  	return 0;  out_no_zone:  	ttm_mem_global_release(glob); @@ -405,6 +407,9 @@ void ttm_mem_global_release(struct ttm_mem_global *glob)  	unsigned int i;  	struct ttm_mem_zone *zone; +	/* let the page allocator first stop the shrink work. */ +	ttm_page_alloc_fini(); +  	flush_workqueue(glob->swap_queue);  	destroy_workqueue(glob->swap_queue);  	glob->swap_queue = NULL; @@ -412,7 +417,7 @@ void ttm_mem_global_release(struct ttm_mem_global *glob)  		zone = glob->zones[i];  		kobject_del(&zone->kobj);  		kobject_put(&zone->kobj); -	} +			}  	kobject_del(&glob->kobj);  	kobject_put(&glob->kobj);  }  |