forked from mirrors/linux
		
	Revert "drm/virtio: drop prime import/export callbacks"
This patch does more harm than good, as it breaks both Xwayland and gnome-shell with X11. Xwayland requires DRI3 & DRI3 requires PRIME. X11 crash for obscure double-free reason which are hard to debug (starting X11 by hand doesn't trigger the crash). I don't see an apparent problem implementing those stub prime functions, they may return an error at run-time, and it seems to be handled fine by GNOME at least. This reverts commitb318e3ff7c. [airlied: This broke userspace for virtio-gpus, and regressed things from DRI3 to DRI2. This brings back the original problem, but it's better than regressions.] Fixes:b318e3ff7c("drm/virtio: drop prime import/export callbacks") Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
		
							parent
							
								
									9fa246256e
								
							
						
					
					
						commit
						a0cecc23cf
					
				
					 3 changed files with 20 additions and 0 deletions
				
			
		|  | @ -205,10 +205,14 @@ static struct drm_driver driver = { | |||
| #if defined(CONFIG_DEBUG_FS) | ||||
| 	.debugfs_init = virtio_gpu_debugfs_init, | ||||
| #endif | ||||
| 	.prime_handle_to_fd = drm_gem_prime_handle_to_fd, | ||||
| 	.prime_fd_to_handle = drm_gem_prime_fd_to_handle, | ||||
| 	.gem_prime_export = drm_gem_prime_export, | ||||
| 	.gem_prime_import = drm_gem_prime_import, | ||||
| 	.gem_prime_pin = virtgpu_gem_prime_pin, | ||||
| 	.gem_prime_unpin = virtgpu_gem_prime_unpin, | ||||
| 	.gem_prime_get_sg_table = virtgpu_gem_prime_get_sg_table, | ||||
| 	.gem_prime_import_sg_table = virtgpu_gem_prime_import_sg_table, | ||||
| 	.gem_prime_vmap = virtgpu_gem_prime_vmap, | ||||
| 	.gem_prime_vunmap = virtgpu_gem_prime_vunmap, | ||||
| 	.gem_prime_mmap = virtgpu_gem_prime_mmap, | ||||
|  |  | |||
|  | @ -354,6 +354,10 @@ int virtio_gpu_object_wait(struct virtio_gpu_object *bo, bool no_wait); | |||
| /* virtgpu_prime.c */ | ||||
| int virtgpu_gem_prime_pin(struct drm_gem_object *obj); | ||||
| void virtgpu_gem_prime_unpin(struct drm_gem_object *obj); | ||||
| struct sg_table *virtgpu_gem_prime_get_sg_table(struct drm_gem_object *obj); | ||||
| struct drm_gem_object *virtgpu_gem_prime_import_sg_table( | ||||
| 	struct drm_device *dev, struct dma_buf_attachment *attach, | ||||
| 	struct sg_table *sgt); | ||||
| void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj); | ||||
| void virtgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); | ||||
| int virtgpu_gem_prime_mmap(struct drm_gem_object *obj, | ||||
|  |  | |||
|  | @ -39,6 +39,18 @@ void virtgpu_gem_prime_unpin(struct drm_gem_object *obj) | |||
| 	WARN_ONCE(1, "not implemented"); | ||||
| } | ||||
| 
 | ||||
| struct sg_table *virtgpu_gem_prime_get_sg_table(struct drm_gem_object *obj) | ||||
| { | ||||
| 	return ERR_PTR(-ENODEV); | ||||
| } | ||||
| 
 | ||||
| struct drm_gem_object *virtgpu_gem_prime_import_sg_table( | ||||
| 	struct drm_device *dev, struct dma_buf_attachment *attach, | ||||
| 	struct sg_table *table) | ||||
| { | ||||
| 	return ERR_PTR(-ENODEV); | ||||
| } | ||||
| 
 | ||||
| void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj) | ||||
| { | ||||
| 	struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Dave Airlie
						Dave Airlie