--- dev/drm2/i915/i915_dma.c 2018/11/02 21:36:24 1.1 +++ dev/drm2/i915/i915_dma.c 2018/11/05 19:56:12 @@ -1374,7 +1374,11 @@ free(dev_priv, DRM_MEM_DRIVER); return (-EIO); } +#if defined(__FreeBSD_version) && (__FreeBSD_version >= 1100000) + dev_priv->mm.gtt = (struct intel_gtt)( *(intel_gtt_get()) ); +#else dev_priv->mm.gtt = intel_gtt_get(); +#endif /* __FreeBSD_version >= 1100000 */ /* Add register map (needed for suspend/resume) */ mmio_bar = IS_GEN2(dev) ? 1 : 0; --- dev/drm2/i915/i915_gem.c 2018/11/05 18:32:24 1.1 +++ dev/drm2/i915/i915_gem.c 2018/11/05 19:55:41 @@ -995,11 +995,22 @@ #define to_user_ptr(x) ((void *)(uintptr_t)(x)) #define offset_in_page(x) ((x) & PAGE_MASK) #define page_to_phys(x) VM_PAGE_TO_PHYS(x) + +#if defined(__FreeBSD_version) && (__FreeBSD_version >= 1100000) +#define __copy_to_user_inatomic _fbA__copy_to_user_inatomic + +#undef __copy_from_user_inatomic_nocache +#define __copy_from_user_inatomic_nocache _fbA__copy_from_user_inatomic_nocache +#define fault_in_multipages_readable _fbA_fault_in_multipages_readable +#define fault_in_multipages_writeable _fbA_fault_in_multipages_writeable +#endif /*__FreeBSD_version >= 1100000 */ + static inline int __copy_to_user_inatomic(void __user *to, const void *from, unsigned n) { return (copyout_nofault(from, to, n) != 0 ? n : 0); } + static inline unsigned long __copy_from_user_inatomic_nocache(void *to, const void __user *from, unsigned long n) @@ -1014,6 +1025,7 @@ */ return ((copyin_nofault(__DECONST(void *, from), to, n) != 0 ? n : 0)); } + static inline int fault_in_multipages_readable(const char __user *uaddr, int size) { @@ -1874,7 +1886,11 @@ map = &p->p_vmspace->vm_map; size = round_page(args->size); PROC_LOCK(p); +#if defined(__FreeBSD_version) && (__FreeBSD_version >= 1100000) + if (map->size + size > lim_cur_proc(p, RLIMIT_VMEM)) { +#else if (map->size + size > lim_cur(p, RLIMIT_VMEM)) { +#endif /*__FreeBSD_version >= 1100000 */ PROC_UNLOCK(p); error = -ENOMEM; goto out; @@ -3172,7 +3188,11 @@ m = vm_page_grab(object, pindex, VM_ALLOC_NORMAL); if (m->valid != VM_PAGE_BITS_ALL) { if (vm_pager_has_page(object, pindex, NULL, NULL)) { +#if defined(__FreeBSD_version) && (__FreeBSD_version >= 1100000) + rv = vm_pager_get_pages(object, &m, 1, NULL, NULL); +#else rv = vm_pager_get_pages(object, &m, 1, 0); +#endif /*__FreeBSD_version >= 1100000 */ m = vm_page_lookup(object, pindex); if (m == NULL) return (NULL); --- dev/drm2/i915/i915_irq.c 2018/11/05 19:07:28 1.1 +++ dev/drm2/i915/i915_irq.c 2018/11/05 19:58:07 @@ -779,7 +779,10 @@ } } +#ifdef pr_err /* __FreeBSD_version >= 1100000 */ +#undef pr_err #define pr_err(...) printf(__VA_ARGS__) +#endif /* __FreeBSD_version >= 1100000 */ static void i915_report_and_clear_eir(struct drm_device *dev) {