1 /* $NetBSD: igt_mmap.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $ */ 2 3 /* 4 * SPDX-License-Identifier: MIT 5 * 6 * Copyright 2019 Intel Corporation 7 */ 8 9 #include <sys/cdefs.h> 10 __KERNEL_RCSID(0, "$NetBSD: igt_mmap.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $"); 11 12 #include <drm/drm_file.h> 13 14 #include "i915_drv.h" 15 #include "igt_mmap.h" 16 17 unsigned long igt_mmap_node(struct drm_i915_private *i915, 18 struct drm_vma_offset_node *node, 19 unsigned long addr, 20 unsigned long prot, 21 unsigned long flags) 22 { 23 struct file *file; 24 int err; 25 26 /* Pretend to open("/dev/dri/card0") */ 27 file = mock_drm_getfile(i915->drm.primary, O_RDWR); 28 if (IS_ERR(file)) 29 return PTR_ERR(file); 30 31 err = drm_vma_node_allow(node, file->private_data); 32 if (err) { 33 addr = err; 34 goto out_file; 35 } 36 37 addr = vm_mmap(file, addr, drm_vma_node_size(node) << PAGE_SHIFT, 38 prot, flags, drm_vma_node_offset_addr(node)); 39 40 drm_vma_node_revoke(node, file->private_data); 41 out_file: 42 fput(file); 43 return addr; 44 } 45