33,9 → 33,11 |
#include <ttm/ttm_bo_driver.h> |
#include <ttm/ttm_placement.h> |
#include <ttm/ttm_module.h> |
#include <ttm/ttm_page_alloc.h> |
#include <drm/drmP.h> |
#include <drm/radeon_drm.h> |
#include <linux/seq_file.h> |
#include <linux/slab.h> |
#include "radeon_reg.h" |
#include "radeon.h" |
|
57,12 → 59,12 |
/* |
* Global memory. |
*/ |
static int radeon_ttm_mem_global_init(struct ttm_global_reference *ref) |
static int radeon_ttm_mem_global_init(struct drm_global_reference *ref) |
{ |
return ttm_mem_global_init(ref->object); |
} |
|
static void radeon_ttm_mem_global_release(struct ttm_global_reference *ref) |
static void radeon_ttm_mem_global_release(struct drm_global_reference *ref) |
{ |
ttm_mem_global_release(ref->object); |
} |
69,16 → 71,16 |
|
static int radeon_ttm_global_init(struct radeon_device *rdev) |
{ |
struct ttm_global_reference *global_ref; |
struct drm_global_reference *global_ref; |
int r; |
|
rdev->mman.mem_global_referenced = false; |
global_ref = &rdev->mman.mem_global_ref; |
global_ref->global_type = TTM_GLOBAL_TTM_MEM; |
global_ref->global_type = DRM_GLOBAL_TTM_MEM; |
global_ref->size = sizeof(struct ttm_mem_global); |
global_ref->init = &radeon_ttm_mem_global_init; |
global_ref->release = &radeon_ttm_mem_global_release; |
r = ttm_global_item_ref(global_ref); |
r = drm_global_item_ref(global_ref); |
if (r != 0) { |
DRM_ERROR("Failed setting up TTM memory accounting " |
"subsystem.\n"); |
88,14 → 90,14 |
rdev->mman.bo_global_ref.mem_glob = |
rdev->mman.mem_global_ref.object; |
global_ref = &rdev->mman.bo_global_ref.ref; |
global_ref->global_type = TTM_GLOBAL_TTM_BO; |
global_ref->global_type = DRM_GLOBAL_TTM_BO; |
global_ref->size = sizeof(struct ttm_bo_global); |
global_ref->init = &ttm_bo_global_init; |
global_ref->release = &ttm_bo_global_release; |
r = ttm_global_item_ref(global_ref); |
r = drm_global_item_ref(global_ref); |
if (r != 0) { |
DRM_ERROR("Failed setting up TTM BO subsystem.\n"); |
ttm_global_item_unref(&rdev->mman.mem_global_ref); |
drm_global_item_unref(&rdev->mman.mem_global_ref); |
return r; |
} |
|
104,9 → 106,11 |
} |
|
|
struct ttm_backend *radeon_ttm_backend_create(struct radeon_device *rdev); |
static int radeon_invalidate_caches(struct ttm_bo_device *bdev, uint32_t flags) |
{ |
return 0; |
} |
|
|
static int radeon_init_mem_type(struct ttm_bo_device *bdev, uint32_t type, |
struct ttm_mem_type_manager *man) |
{ |
122,7 → 126,8 |
man->default_caching = TTM_PL_FLAG_CACHED; |
break; |
case TTM_PL_TT: |
man->gpu_offset = rdev->mc.gtt_location; |
man->func = &ttm_bo_manager_func; |
man->gpu_offset = rdev->mc.gtt_start; |
man->available_caching = TTM_PL_MASK_CACHING; |
man->default_caching = TTM_PL_FLAG_CACHED; |
man->flags = TTM_MEMTYPE_FLAG_MAPPABLE | TTM_MEMTYPE_FLAG_CMA; |
133,34 → 138,22 |
(unsigned)type); |
return -EINVAL; |
} |
man->io_offset = rdev->mc.agp_base; |
man->io_size = rdev->mc.gtt_size; |
man->io_addr = NULL; |
if (!rdev->ddev->agp->cant_use_aperture) |
man->flags = TTM_MEMTYPE_FLAG_NEEDS_IOREMAP | |
TTM_MEMTYPE_FLAG_MAPPABLE; |
man->flags = TTM_MEMTYPE_FLAG_MAPPABLE; |
man->available_caching = TTM_PL_FLAG_UNCACHED | |
TTM_PL_FLAG_WC; |
man->default_caching = TTM_PL_FLAG_WC; |
} else |
} |
#endif |
{ |
man->io_offset = 0; |
man->io_size = 0; |
man->io_addr = NULL; |
} |
break; |
case TTM_PL_VRAM: |
/* "On-card" video ram */ |
man->gpu_offset = rdev->mc.vram_location; |
man->func = &ttm_bo_manager_func; |
man->gpu_offset = rdev->mc.vram_start; |
man->flags = TTM_MEMTYPE_FLAG_FIXED | |
TTM_MEMTYPE_FLAG_NEEDS_IOREMAP | |
TTM_MEMTYPE_FLAG_MAPPABLE; |
man->available_caching = TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC; |
man->default_caching = TTM_PL_FLAG_WC; |
man->io_addr = NULL; |
man->io_offset = rdev->mc.aper_base; |
man->io_size = rdev->mc.aper_size; |
break; |
default: |
DRM_ERROR("Unsupported memory type %u\n", (unsigned)type); |