if (list_empty(&list)) {
vigs_comm_exec(vigs_dev->comm, execbuffer);
} else {
- ret = ttm_eu_reserve_buffers(&ticket, &list);
+ ret = ttm_eu_reserve_buffers(&ticket, &list, true, NULL);
if (ret != 0) {
goto out3;
vigs_comm_exec(vigs_dev->comm, execbuffer);
- ttm_eu_fence_buffer_objects(&ticket, &list, fence);
+ ttm_eu_fence_buffer_objects(&ticket, &list, (void *)fence);
if (sync) {
vigs_fence_wait(fence, false);
bool kernel,
vigs_gem_destroy_func destroy)
{
- u32 placements[1];
+ struct ttm_place placements[1];
struct ttm_placement placement;
enum ttm_bo_type bo_type;
int ret = 0;
size = roundup(size, PAGE_SIZE);
-
if (size == 0) {
kfree(vigs_gem);
return -EINVAL;
}
+ memset(placements, 0, sizeof(*placements));
+ memset(&placement, 0, sizeof(placement));
+
if (type == VIGS_GEM_TYPE_SURFACE) {
- placements[0] =
+ placements[0].flags =
TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT | TTM_PL_FLAG_NO_EVICT;
} else if (type == VIGS_GEM_TYPE_EXECBUFFER) {
- placements[0] =
+ placements[0].flags =
TTM_PL_FLAG_WC | TTM_PL_FLAG_PRIV0 | TTM_PL_FLAG_NO_EVICT;
} else {
kfree(vigs_gem);
return -EINVAL;
}
- memset(&placement, 0, sizeof(placement));
placement.placement = placements;
placement.busy_placement = placements;
bo_type = ttm_bo_type_device;
}
- if (unlikely(vigs_dev->mman->bo_dev.dev_mapping == NULL)) {
- vigs_dev->mman->bo_dev.dev_mapping = vigs_dev->drm_dev->dev_mapping;
- }
-
ret = drm_gem_object_init(vigs_dev->drm_dev, &vigs_gem->base, size);
if (ret != 0) {
ret = ttm_bo_init(&vigs_dev->mman->bo_dev, &vigs_gem->bo, size, bo_type,
&placement, 0,
- false, NULL, 0, NULL,
+ false, NULL, 0, NULL, NULL,
&vigs_gem_bo_destroy);
if (ret != 0) {
int vigs_gem_pin(struct vigs_gem_object *vigs_gem)
{
- u32 placements[1];
+ struct ttm_place placements[1];
struct ttm_placement placement;
int ret;
return 0;
}
- placements[0] =
- TTM_PL_FLAG_WC | TTM_PL_FLAG_VRAM | TTM_PL_FLAG_NO_EVICT;
-
+ memset(placements, 0, sizeof(*placements));
memset(&placement, 0, sizeof(placement));
+ placements[0].flags =
+ TTM_PL_FLAG_WC | TTM_PL_FLAG_VRAM | TTM_PL_FLAG_NO_EVICT;
+
placement.placement = placements;
placement.busy_placement = placements;
placement.num_placement = 1;
void vigs_gem_unpin(struct vigs_gem_object *vigs_gem)
{
- u32 placements[2];
+ struct ttm_place placements[2];
struct ttm_placement placement;
int ret;
vigs_gem_kunmap(vigs_gem);
- placements[0] =
+ memset(placements, 0, sizeof(*placements) * 2);
+ memset(&placement, 0, sizeof(placement));
+
+ placements[0].flags =
TTM_PL_FLAG_WC | TTM_PL_FLAG_VRAM;
- placements[1] =
+ placements[1].flags =
TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT | TTM_PL_FLAG_NO_EVICT;
- memset(&placement, 0, sizeof(placement));
placement.placement = placements;
placement.busy_placement = placements;
return 0;
}
-static const u32 evict_placements[1] =
+static const struct ttm_place evict_placements[] =
{
- TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT | TTM_PL_FLAG_NO_EVICT
+ {
+ .fpfn = 0,
+ .lpfn = 0,
+ .flags = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT | TTM_PL_FLAG_NO_EVICT
+ },
};
static const struct ttm_placement evict_placement =
{
- .fpfn = 0,
- .lpfn = 0,
.num_placement = ARRAY_SIZE(evict_placements),
.placement = evict_placements,
.num_busy_placement = ARRAY_SIZE(evict_placements),
static int vigs_ttm_fault_reserve_notify(struct ttm_buffer_object *bo)
{
- u32 placements[1];
+ struct ttm_place placements[1];
struct ttm_placement placement;
int ret;
/*
* It's GPU memory page fault. Move this buffer into VRAM.
*/
+ memset(placements, 0, sizeof(*placements));
+ memset(&placement, 0, sizeof(placement));
- placements[0] = TTM_PL_FLAG_WC | TTM_PL_FLAG_VRAM;
+ placements[0].flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_VRAM;
- memset(&placement, 0, sizeof(placement));
placement.placement = placements;
placement.busy_placement = placements;
resource_size_t ram_size,
uint32_t vma_data_size,
struct vigs_mman_ops *ops,
- void *user_data,
+ struct vigs_device *vigs_dev,
struct vigs_mman **mman)
{
int ret = 0;
(*mman)->vram_base = vram_base;
(*mman)->ram_base = ram_base;
(*mman)->ops = ops;
- (*mman)->user_data = user_data;
+ (*mman)->user_data = vigs_dev;
ret = ttm_bo_device_init(&(*mman)->bo_dev,
(*mman)->bo_global_ref.ref.object,
&vigs_ttm_bo_driver,
+ vigs_dev->drm_dev->anon_inode->i_mapping,
DRM_FILE_PAGE_OFFSET,
0);
if (ret != 0) {