Jerome Glisse wrote: > This add the support for the new fault callback, does change anything > from driver point of view. > > Improvement: store the aperture base in a variable so that we don't > call a function to get it on each fault. > > Patch hasn't been tested. > > V2 don't derefence bo->mem.mm_node as it's not NULL only for > VRAM or GTT > V3 update after io_mem_reserve/io_mem_free callback balancing > > Signed-off-by: Jerome Glisse <jgli...@redhat.com> >
Reviewed-by: Thomas Hellstrom <thellst...@vmware.com> > --- > drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c | 40 > +++++++++++++++++++++++++++++++- > 1 files changed, 39 insertions(+), 1 deletions(-) > > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c > b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c > index 825ebe3..7e28448 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c > @@ -193,6 +193,41 @@ static void vmw_swap_notify(struct ttm_buffer_object *bo) > vmw_dmabuf_gmr_unbind(bo); > } > > +static int vmw_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct > ttm_mem_reg *mem) > +{ > + struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type]; > + struct vmw_private *dev_priv = container_of(bdev, struct vmw_private, > bdev); > + > + mem->bus.is_iomem = false; > + mem->bus.offset = 0; > + mem->bus.size = mem->num_pages << PAGE_SHIFT; > + mem->bus.base = 0; > + if (!(man->flags & TTM_MEMTYPE_FLAG_MAPPABLE)) > + return -EINVAL; > + switch (mem->mem_type) { > + case TTM_PL_SYSTEM: > + /* System memory */ > + return 0; > + case TTM_PL_VRAM: > + mem->bus.offset = mem->mm_node->start << PAGE_SHIFT; > + mem->bus.base = dev_priv->vram_start; > + mem->bus.is_iomem = true; > + break; > + default: > + return -EINVAL; > + } > + return 0; > +} > + > +static void vmw_ttm_io_mem_free(struct ttm_bo_device *bdev, struct > ttm_mem_reg *mem) > +{ > +} > + > +static int vmw_ttm_fault_reserve_notify(struct ttm_buffer_object *bo) > +{ > + return 0; > +} > + > /** > * FIXME: We're using the old vmware polling method to sync. > * Do this with fences instead. > @@ -248,5 +283,8 @@ struct ttm_bo_driver vmw_bo_driver = { > .sync_obj_unref = vmw_sync_obj_unref, > .sync_obj_ref = vmw_sync_obj_ref, > .move_notify = vmw_move_notify, > - .swap_notify = vmw_swap_notify > + .swap_notify = vmw_swap_notify, > + .fault_reserve_notify = &vmw_ttm_fault_reserve_notify, > + .io_mem_reserve = &vmw_ttm_io_mem_reserve, > + .io_mem_free = &vmw_ttm_io_mem_free, > }; > ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel