diff --git a/autotools/m4/drm_gem_dmabuf_mmap.m4 b/autotools/m4/drm_gem_dmabuf_mmap.m4 new file mode 100644 index 000000000..311150c2d --- /dev/null +++ b/autotools/m4/drm_gem_dmabuf_mmap.m4 @@ -0,0 +1,20 @@ +dnl # +dnl # 0adec22702d4 +dnl # drm: Remove struct drm_driver.gem_prime_mmap +dnl # +AC_DEFUN([AC_DRM_DRIVER_GEM_PRIME_MMAP_NOT_PRESENT], [ + AC_KERNEL_DO_BACKGROUND([ + AC_KERNEL_TRY_COMPILE([ + #include + #include + ],[ + struct drm_driver drv; + drv.gem_prime_mmap = NULL; + (void)drv; + ],[ + ],[ + AC_DEFINE(BPM_DRM_DRIVER_GEM_PRIME_MMAP_NOT_PRESENT, 1, + [struct drm_driver does not have gem_prime_mmap callback]) + ]) + ]) +]) diff --git a/autotools/m4/xe.m4 b/autotools/m4/xe.m4 index 40eff769b..24ccbf59c 100644 --- a/autotools/m4/xe.m4 +++ b/autotools/m4/xe.m4 @@ -166,6 +166,7 @@ AC_DEFUN([AC_XE_CONFIG], [ AC_MEI_CLASS_BUS_REGISTER_CONST_ARGS_NOT_PRESENT AC_PCI_RESIZE_RESOURCE_VF_BARS_NOT_PRESENT AC_DEV_PM_SMART_SUSPEND_NOT_PRESENT + AC_DRM_DRIVER_GEM_PRIME_MMAP_NOT_PRESENT dnl # SVM-related probes AC_SHRINKER_ALLOC_NOT_PRESENT diff --git a/backport/backport-include/drm/drm_prime.h b/backport/backport-include/drm/drm_prime.h new file mode 100644 index 000000000..833d8207f --- /dev/null +++ b/backport/backport-include/drm/drm_prime.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef _DRM_PRIME_H +#define _DRM_PRIME_H + +#include_next +#include + +#ifdef BPM_DRM_DRIVER_GEM_PRIME_MMAP_NOT_PRESENT +static inline int backport_drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, + struct vm_area_struct *vma) +{ + struct drm_gem_object *obj = dma_buf->priv; + return drm_gem_prime_mmap(obj, vma); +} +#undef drm_gem_dmabuf_mmap +#define drm_gem_dmabuf_mmap(dma_buf, vma) \ + backport_drm_gem_dmabuf_mmap((dma_buf), (vma)) + +#endif /* BPM_DRM_DRIVER_GEM_PRIME_MMAP_NOT_PRESENT */ + +#endif /* _DRM_PRIME_H */