mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-18 22:14:16 +00:00 
			
		
		
		
	drm/virtio: Support partial maps of GEM objects
Those are useful to implement coherent cross-vm mmap. Signed-off-by: Sasha Finkelstein <fnkl.kernel@gmail.com> Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250109-virtgpu-gem-partial-map-v1-1-a914b48776bd@gmail.com Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> [dmitry.osipenko@collabora.com: Corrected vm_size check to account vm_pgoff]
This commit is contained in:
		
							parent
							
								
									3ab334814d
								
							
						
					
					
						commit
						7f3b11934f
					
				
					 1 changed files with 6 additions and 3 deletions
				
			
		|  | @ -37,6 +37,7 @@ static int virtio_gpu_vram_mmap(struct drm_gem_object *obj, | |||
| 	struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj); | ||||
| 	struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo); | ||||
| 	unsigned long vm_size = vma->vm_end - vma->vm_start; | ||||
| 	unsigned long vm_end; | ||||
| 
 | ||||
| 	if (!(bo->blob_flags & VIRTGPU_BLOB_FLAG_USE_MAPPABLE)) | ||||
| 		return -EINVAL; | ||||
|  | @ -56,12 +57,14 @@ static int virtio_gpu_vram_mmap(struct drm_gem_object *obj, | |||
| 	else if (vram->map_info == VIRTIO_GPU_MAP_CACHE_UNCACHED) | ||||
| 		vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); | ||||
| 
 | ||||
| 	/* Partial mappings of GEM buffers don't happen much in practice. */ | ||||
| 	if (vm_size != vram->vram_node.size) | ||||
| 	if (check_add_overflow(vma->vm_pgoff << PAGE_SHIFT, vm_size, &vm_end)) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	if (vm_end > vram->vram_node.size) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	ret = io_remap_pfn_range(vma, vma->vm_start, | ||||
| 				 vram->vram_node.start >> PAGE_SHIFT, | ||||
| 				 (vram->vram_node.start >> PAGE_SHIFT) + vma->vm_pgoff, | ||||
| 				 vm_size, vma->vm_page_prot); | ||||
| 	return ret; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Sasha Finkelstein
						Sasha Finkelstein