You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
drm/ttm: use drm calloc large and free large
Now that the drm core can do this, lets just use it, split the code out so TTM doesn't have to drag all of drmP.h in. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -28,13 +28,13 @@
|
||||
* Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
|
||||
*/
|
||||
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/file.h>
|
||||
#include <linux/swap.h>
|
||||
#include "drm_cache.h"
|
||||
#include "drm_mem_util.h"
|
||||
#include "ttm/ttm_module.h"
|
||||
#include "ttm/ttm_bo_driver.h"
|
||||
#include "ttm/ttm_placement.h"
|
||||
@@ -43,32 +43,15 @@ static int ttm_tt_swapin(struct ttm_tt *ttm);
|
||||
|
||||
/**
|
||||
* Allocates storage for pointers to the pages that back the ttm.
|
||||
*
|
||||
* Uses kmalloc if possible. Otherwise falls back to vmalloc.
|
||||
*/
|
||||
static void ttm_tt_alloc_page_directory(struct ttm_tt *ttm)
|
||||
{
|
||||
unsigned long size = ttm->num_pages * sizeof(*ttm->pages);
|
||||
ttm->pages = NULL;
|
||||
|
||||
if (size <= PAGE_SIZE)
|
||||
ttm->pages = kzalloc(size, GFP_KERNEL);
|
||||
|
||||
if (!ttm->pages) {
|
||||
ttm->pages = vmalloc_user(size);
|
||||
if (ttm->pages)
|
||||
ttm->page_flags |= TTM_PAGE_FLAG_VMALLOC;
|
||||
}
|
||||
ttm->pages = drm_calloc_large(ttm->num_pages, sizeof(*ttm->pages));
|
||||
}
|
||||
|
||||
static void ttm_tt_free_page_directory(struct ttm_tt *ttm)
|
||||
{
|
||||
if (ttm->page_flags & TTM_PAGE_FLAG_VMALLOC) {
|
||||
vfree(ttm->pages);
|
||||
ttm->page_flags &= ~TTM_PAGE_FLAG_VMALLOC;
|
||||
} else {
|
||||
kfree(ttm->pages);
|
||||
}
|
||||
drm_free_large(ttm->pages);
|
||||
ttm->pages = NULL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user