2015-01-23 13:04:11 +10:00
/*
* Copyright 2014 Canonical
*
* Permission is hereby granted , free of charge , to any person obtaining a
* copy of this software and associated documentation files ( the " Software " ) ,
* to deal in the Software without restriction , including without limitation
* the rights to use , copy , modify , merge , publish , distribute , sublicense ,
* and / or sell copies of the Software , and to permit persons to whom the
* Software is furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL
* THE COPYRIGHT HOLDER ( S ) OR AUTHOR ( S ) BE LIABLE FOR ANY CLAIM , DAMAGES OR
* OTHER LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE ,
* ARISING FROM , OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE .
*
* Authors : Andreas Pokorny
*/
# include "virtgpu_drv.h"
/* Empty Implementations as there should not be any other driver for a virtual
2018-02-22 21:00:17 -03:00
* device that might share buffers with virtgpu
*/
2015-01-23 13:04:11 +10:00
2019-02-27 15:44:41 +01:00
struct sg_table * virtgpu_gem_prime_get_sg_table ( struct drm_gem_object * obj )
{
struct virtio_gpu_object * bo = gem_to_virtio_gpu_obj ( obj ) ;
if ( ! bo - > tbo . ttm - > pages | | ! bo - > tbo . ttm - > num_pages )
/* should not happen */
return ERR_PTR ( - EINVAL ) ;
return drm_prime_pages_to_sg ( bo - > tbo . ttm - > pages ,
bo - > tbo . ttm - > num_pages ) ;
}
2015-01-23 13:04:11 +10:00
void * virtgpu_gem_prime_vmap ( struct drm_gem_object * obj )
{
2018-09-25 18:16:06 +02:00
struct virtio_gpu_object * bo = gem_to_virtio_gpu_obj ( obj ) ;
int ret ;
ret = virtio_gpu_object_kmap ( bo ) ;
if ( ret )
return NULL ;
return bo - > vmap ;
2015-01-23 13:04:11 +10:00
}
void virtgpu_gem_prime_vunmap ( struct drm_gem_object * obj , void * vaddr )
{
2018-09-25 18:16:06 +02:00
virtio_gpu_object_kunmap ( gem_to_virtio_gpu_obj ( obj ) ) ;
2015-01-23 13:04:11 +10:00
}
int virtgpu_gem_prime_mmap ( struct drm_gem_object * obj ,
2019-02-27 15:44:39 +01:00
struct vm_area_struct * vma )
2015-01-23 13:04:11 +10:00
{
2019-02-27 15:44:39 +01:00
struct virtio_gpu_object * bo = gem_to_virtio_gpu_obj ( obj ) ;
bo - > gem_base . vma_node . vm_node . start = bo - > tbo . vma_node . vm_node . start ;
return drm_gem_prime_mmap ( obj , vma ) ;
2015-01-23 13:04:11 +10:00
}