| /* |
| * SPDX-License-Identifier: MIT |
| * |
| * Copyright © 2019 Intel Corporation |
| */ |
| |
| #include <drm/drm_file.h> |
| |
| #include "i915_drv.h" |
| #include "igt_mmap.h" |
| |
| unsigned long igt_mmap_node(struct drm_i915_private *i915, |
| struct drm_vma_offset_node *node, |
| unsigned long addr, |
| unsigned long prot, |
| unsigned long flags) |
| { |
| struct file *file; |
| int err; |
| |
| /* Pretend to open("/dev/dri/card0") */ |
| file = mock_drm_getfile(i915->drm.primary, O_RDWR); |
| if (IS_ERR(file)) |
| return PTR_ERR(file); |
| |
| err = drm_vma_node_allow(node, file->private_data); |
| if (err) { |
| addr = err; |
| goto out_file; |
| } |
| |
| addr = vm_mmap(file, addr, drm_vma_node_size(node) << PAGE_SHIFT, |
| prot, flags, drm_vma_node_offset_addr(node)); |
| |
| drm_vma_node_revoke(node, file->private_data); |
| out_file: |
| fput(file); |
| return addr; |
| } |