]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/gpu/drm/ttm/ttm_memory.c
Merge branch 'drm-ttm-pool' into drm-core-next
[mv-sheeva.git] / drivers / gpu / drm / ttm / ttm_memory.c
index 801b702566e6d61fc94205372d886723e9459b9f..e70ddd82dc022e38c42b10bb4bce1b60ff511f04 100644 (file)
@@ -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);
 }