From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: [PATCH 08/13] drm/vmwgfx: add support for new TTM fault callback V3 Date: Mon, 05 Apr 2010 14:19:30 +0200 Message-ID: <4BB9D552.8060007@shipmail.org> References: <1269535044-17930-1-git-send-email-jglisse@redhat.com> <1269535044-17930-2-git-send-email-jglisse@redhat.com> <1269535044-17930-3-git-send-email-jglisse@redhat.com> <1269535044-17930-4-git-send-email-jglisse@redhat.com> <1269535044-17930-5-git-send-email-jglisse@redhat.com> <1269535044-17930-6-git-send-email-jglisse@redhat.com> <1269535044-17930-7-git-send-email-jglisse@redhat.com> <1269535044-17930-8-git-send-email-jglisse@redhat.com> <1269535044-17930-9-git-send-email-jglisse@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1269535044-17930-9-git-send-email-jglisse@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.sourceforge.net To: Jerome Glisse Cc: dri-devel@lists.sf.net List-Id: dri-devel@lists.freedesktop.org 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 > Reviewed-by: Thomas Hellstrom > --- > 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 --