<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div dir="auto">
<div><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">Am 25.04.2019 10:35 schrieb Thomas Hellstrom <thellstrom@vmware.com>:<br type="attribution">
<blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><font size="2"><span style="font-size:11pt">
<div>Hi, Christian,<br>
<br>
On Wed, 2019-04-24 at 16:20 +0200, Thomas Hellström wrote:<br>
> On Wed, 2019-04-24 at 14:10 +0000, Koenig, Christian wrote:<br>
> > Am 24.04.19 um 14:00 schrieb Thomas Hellstrom:<br>
> > > Add a pointer to the struct vm_operations_struct in the<br>
> > > bo_device,<br>
> > > and<br>
> > > assign that pointer to the default value currently used.<br>
> > > <br>
> > > The driver can then optionally modify that pointer and the new<br>
> > > value<br>
> > > can be used for each new vma created.<br>
> > > <br>
> > > Cc: "Christian König" <christian.koenig@amd.com><br>
> > > <br>
> > > Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com><br>
> > > Reviewed-by: Christian König <christian.koenig@amd.com><br>
> > <br>
> > Going to pick those two TTM patches up for amd-staging-drm-next.<br>
> <br>
> Will you be relying on either patch for related work? Otherwise it<br>
> would be simpler for us to use vmwgfx-next for the whole series,<br>
> targeting 5.3.<br>
> <br>
> Thomas<br>
<br>
Is this OK with you?<br>
</div>
</span></font></div>
</blockquote>
</div>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">I wanted to base some cleanup work on this, but this can wait as well.</div>
<div dir="auto"><br>
</div>
<div dir="auto">So fine with me to merge this through vmwgfx-next.</div>
<div dir="auto"><br>
</div>
<div dir="auto">Regards,</div>
<div dir="auto">Christian.</div>
<div dir="auto"><br>
</div>
<div dir="auto">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><font size="2"><span style="font-size:11pt">
<div><br>
Thanks,<br>
Thomas<br>
<br>
<br>
<br>
> <br>
> > Christian.<br>
> > <br>
> > > ---<br>
> > >   drivers/gpu/drm/ttm/ttm_bo.c    | 1 +<br>
> > >   drivers/gpu/drm/ttm/ttm_bo_vm.c | 6 +++---<br>
> > >   include/drm/ttm/ttm_bo_driver.h | 6 ++++++<br>
> > >   3 files changed, 10 insertions(+), 3 deletions(-)<br>
> > > <br>
> > > diff --git a/drivers/gpu/drm/ttm/ttm_bo.c<br>
> > > b/drivers/gpu/drm/ttm/ttm_bo.c<br>
> > > index 3f56647cdb35..1c85bec00472 100644<br>
> > > --- a/drivers/gpu/drm/ttm/ttm_bo.c<br>
> > > +++ b/drivers/gpu/drm/ttm/ttm_bo.c<br>
> > > @@ -1656,6 +1656,7 @@ int ttm_bo_device_init(struct ttm_bo_device<br>
> > > *bdev,<br>
> > >    mutex_lock(&ttm_global_mutex);<br>
> > >    list_add_tail(&bdev->device_list, &glob->device_list);<br>
> > >    mutex_unlock(&ttm_global_mutex);<br>
> > > + bdev->vm_ops = &ttm_bo_vm_ops;<br>
> > >   <br>
> > >    return 0;<br>
> > >   out_no_sys:<br>
> > > diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c<br>
> > > b/drivers/gpu/drm/ttm/ttm_bo_vm.c<br>
> > > index e86a29a1e51f..bfb25b81fed7 100644<br>
> > > --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c<br>
> > > +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c<br>
> > > @@ -395,7 +395,7 @@ static int ttm_bo_vm_access(struct<br>
> > > vm_area_struct *vma, unsigned long addr,<br>
> > >    return ret;<br>
> > >   }<br>
> > >   <br>
> > > -static const struct vm_operations_struct ttm_bo_vm_ops = {<!-- --><br>
> > > +const struct vm_operations_struct ttm_bo_vm_ops = {<!-- --><br>
> > >    .fault = ttm_bo_vm_fault,<br>
> > >    .open = ttm_bo_vm_open,<br>
> > >    .close = ttm_bo_vm_close,<br>
> > > @@ -445,7 +445,7 @@ int ttm_bo_mmap(struct file *filp, struct<br>
> > > vm_area_struct *vma,<br>
> > >    if (unlikely(ret != 0))<br>
> > >            goto out_unref;<br>
> > >   <br>
> > > - vma->vm_ops = &ttm_bo_vm_ops;<br>
> > > + vma->vm_ops = bdev->vm_ops;<br>
> > >   <br>
> > >    /*<br>
> > >     * Note: We're transferring the bo reference to<br>
> > > @@ -477,7 +477,7 @@ int ttm_fbdev_mmap(struct vm_area_struct<br>
> > > *vma,<br>
> > > struct ttm_buffer_object *bo)<br>
> > >   <br>
> > >    ttm_bo_get(bo);<br>
> > >   <br>
> > > - vma->vm_ops = &ttm_bo_vm_ops;<br>
> > > + vma->vm_ops = bo->bdev->vm_ops;<br>
> > >    vma->vm_private_data = bo;<br>
> > >    vma->vm_flags |= VM_MIXEDMAP;<br>
> > >    vma->vm_flags |= VM_IO | VM_DONTEXPAND;<br>
> > > diff --git a/include/drm/ttm/ttm_bo_driver.h<br>
> > > b/include/drm/ttm/ttm_bo_driver.h<br>
> > > index cbf3180cb612..cfeaff5d9706 100644<br>
> > > --- a/include/drm/ttm/ttm_bo_driver.h<br>
> > > +++ b/include/drm/ttm/ttm_bo_driver.h<br>
> > > @@ -443,6 +443,9 @@ extern struct ttm_bo_global {<!-- --><br>
> > >    * @driver: Pointer to a struct ttm_bo_driver struct setup by<br>
> > > the<br>
> > > driver.<br>
> > >    * @man: An array of mem_type_managers.<br>
> > >    * @vma_manager: Address space manager<br>
> > > + * @vm_ops: Pointer to the struct vm_operations_struct used for<br>
> > > this<br>
> > > + * device's VM operations. The driver may override this before<br>
> > > the<br>
> > > first<br>
> > > + * mmap() call.<br>
> > >    * lru_lock: Spinlock that protects the buffer+device lru lists<br>
> > > and<br>
> > >    * ddestroy lists.<br>
> > >    * @dev_mapping: A pointer to the struct address_space<br>
> > > representing the<br>
> > > @@ -461,6 +464,7 @@ struct ttm_bo_device {<!-- --><br>
> > >    struct ttm_bo_global *glob;<br>
> > >    struct ttm_bo_driver *driver;<br>
> > >    struct ttm_mem_type_manager man[TTM_NUM_MEM_TYPES];<br>
> > > + const struct vm_operations_struct *vm_ops;<br>
> > >   <br>
> > >    /*<br>
> > >     * Protected by internal locks.<br>
> > > @@ -489,6 +493,8 @@ struct ttm_bo_device {<!-- --><br>
> > >    bool no_retry;<br>
> > >   };<br>
> > >   <br>
> > > +extern const struct vm_operations_struct ttm_bo_vm_ops;<br>
> > > +<br>
> > >   /**<br>
> > >    * struct ttm_lru_bulk_move_pos<br>
> > >    *<br>
</div>
</span></font></div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</body>
</html>