diff mbox series

drm/i915: Skip remap_io() calls for non-x86 platforms

Message ID 20211118111319.412926-1-siva.mullati@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915: Skip remap_io() calls for non-x86 platforms | expand

Commit Message

Mullati Siva Nov. 18, 2021, 11:13 a.m. UTC
From: Siva Mullati <siva.mullati@intel.com>

Only hw that supports mappable aperture would hit this path
vm_fault_gtt/vm_fault_tmm, So we never hit these functions
remap_io_mapping() and remap_io_sg in discrete, So skip this
code for non-x86 architectures.

Signed-off-by: Siva Mullati <siva.mullati@intel.com>
---
 drivers/gpu/drm/i915/Makefile            |  2 +-
 drivers/gpu/drm/i915/gem/i915_gem_mman.c |  1 +
 drivers/gpu/drm/i915/i915_drv.h          |  8 ------
 drivers/gpu/drm/i915/i915_mm.c           |  1 +
 drivers/gpu/drm/i915/i915_mm.h           | 31 ++++++++++++++++++++++++
 5 files changed, 34 insertions(+), 9 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/i915_mm.h

Comments

Jani Nikula Nov. 18, 2021, 11:25 a.m. UTC | #1
On Thu, 18 Nov 2021, Mullati Siva <siva.mullati@intel.com> wrote:
> From: Siva Mullati <siva.mullati@intel.com>
>
> Only hw that supports mappable aperture would hit this path
> vm_fault_gtt/vm_fault_tmm, So we never hit these functions
> remap_io_mapping() and remap_io_sg in discrete, So skip this
> code for non-x86 architectures.

Please enable CONFIG_DRM_I915_WERROR=y while developing, and fix the
fallout. The header is not self-contained. To fix that, please use
forward declarations instead of #includes where possible.

BR,
Jani.

>
> Signed-off-by: Siva Mullati <siva.mullati@intel.com>
> ---
>  drivers/gpu/drm/i915/Makefile            |  2 +-
>  drivers/gpu/drm/i915/gem/i915_gem_mman.c |  1 +
>  drivers/gpu/drm/i915/i915_drv.h          |  8 ------
>  drivers/gpu/drm/i915/i915_mm.c           |  1 +
>  drivers/gpu/drm/i915/i915_mm.h           | 31 ++++++++++++++++++++++++
>  5 files changed, 34 insertions(+), 9 deletions(-)
>  create mode 100644 drivers/gpu/drm/i915/i915_mm.h
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 074d6b8edd23..b08397e41efb 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -62,12 +62,12 @@ i915-y += i915_driver.o \
>  i915-y += \
>  	dma_resv_utils.o \
>  	i915_memcpy.o \
> -	i915_mm.o \
>  	i915_sw_fence.o \
>  	i915_sw_fence_work.o \
>  	i915_syncmap.o \
>  	i915_user_extensions.o
>  
> +i915-$(CONFIG_X86) += i915_mm.o
>  i915-$(CONFIG_COMPAT)   += i915_ioc32.o
>  i915-$(CONFIG_DEBUG_FS) += \
>  	i915_debugfs.o \
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
> index 65fc6ff5f59d..39bb15eafc07 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
> @@ -17,6 +17,7 @@
>  #include "i915_gem_ioctls.h"
>  #include "i915_gem_object.h"
>  #include "i915_gem_mman.h"
> +#include "i915_mm.h"
>  #include "i915_trace.h"
>  #include "i915_user_extensions.h"
>  #include "i915_gem_ttm.h"
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index f2a546d58481..c0712281ee83 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1962,14 +1962,6 @@ mkwrite_device_info(struct drm_i915_private *dev_priv)
>  int i915_reg_read_ioctl(struct drm_device *dev, void *data,
>  			struct drm_file *file);
>  
> -/* i915_mm.c */
> -int remap_io_mapping(struct vm_area_struct *vma,
> -		     unsigned long addr, unsigned long pfn, unsigned long size,
> -		     struct io_mapping *iomap);
> -int remap_io_sg(struct vm_area_struct *vma,
> -		unsigned long addr, unsigned long size,
> -		struct scatterlist *sgl, resource_size_t iobase);
> -
>  static inline int intel_hws_csb_write_index(struct drm_i915_private *i915)
>  {
>  	if (GRAPHICS_VER(i915) >= 11)
> diff --git a/drivers/gpu/drm/i915/i915_mm.c b/drivers/gpu/drm/i915/i915_mm.c
> index 666808cb3a32..f4df15fe7cf8 100644
> --- a/drivers/gpu/drm/i915/i915_mm.c
> +++ b/drivers/gpu/drm/i915/i915_mm.c
> @@ -27,6 +27,7 @@
>  
>  
>  #include "i915_drv.h"
> +#include "i915_mm.h"
>  
>  struct remap_pfn {
>  	struct mm_struct *mm;
> diff --git a/drivers/gpu/drm/i915/i915_mm.h b/drivers/gpu/drm/i915/i915_mm.h
> new file mode 100644
> index 000000000000..71651cced0f5
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/i915_mm.h
> @@ -0,0 +1,31 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2021 Intel Corporation
> + */
> +
> +#ifndef __I915_MM_H__
> +#define __I915_MM_H__
> +
> +#if IS_ENABLED(CONFIG_X86)
> +int remap_io_mapping(struct vm_area_struct *vma,
> +                     unsigned long addr, unsigned long pfn, unsigned long size,
> +                     struct io_mapping *iomap);
> +int remap_io_sg(struct vm_area_struct *vma,
> +                unsigned long addr, unsigned long size,
> +                struct scatterlist *sgl, resource_size_t iobase);
> +#else
> +static inline int remap_io_mapping(struct vm_area_struct *vma,
> +                     unsigned long addr, unsigned long pfn, unsigned long size,
> +                     struct io_mapping *iomap)
> +{
> +        return 0;
> +}
> +static inline int remap_io_sg(struct vm_area_struct *vma,
> +                unsigned long addr, unsigned long size,
> +                struct scatterlist *sgl, resource_size_t iobase)
> +{
> +        return 0;
> +}
> +#endif
> +
> +#endif /* __I915_MM_H__ */
kernel test robot Nov. 18, 2021, 8:33 p.m. UTC | #2
Hi Mullati,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip v5.16-rc1 next-20211118]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Mullati-Siva/drm-i915-Skip-remap_io-calls-for-non-x86-platforms/20211118-191629
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/3cc867f614222b682fb1f739ff6db5133d9352ad
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Mullati-Siva/drm-i915-Skip-remap_io-calls-for-non-x86-platforms/20211118-191629
        git checkout 3cc867f614222b682fb1f739ff6db5133d9352ad
        # save the attached .config to linux build tree
        mkdir build_dir
        make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from <command-line>:
   drivers/gpu/drm/i915/i915_mm.h:12:29: error: 'struct io_mapping' declared inside parameter list will not be visible outside of this definition or declaration [-Werror]
      12 |                      struct io_mapping *iomap);
         |                             ^~~~~~~~~~
   drivers/gpu/drm/i915/i915_mm.h:10:29: error: 'struct vm_area_struct' declared inside parameter list will not be visible outside of this definition or declaration [-Werror]
      10 | int remap_io_mapping(struct vm_area_struct *vma,
         |                             ^~~~~~~~~~~~~~
>> drivers/gpu/drm/i915/i915_mm.h:15:42: error: unknown type name 'resource_size_t'
      15 |                 struct scatterlist *sgl, resource_size_t iobase);
         |                                          ^~~~~~~~~~~~~~~
   cc1: all warnings being treated as errors


vim +/resource_size_t +15 drivers/gpu/drm/i915/i915_mm.h

     8	
     9	#if IS_ENABLED(CONFIG_X86)
    10	int remap_io_mapping(struct vm_area_struct *vma,
    11	                     unsigned long addr, unsigned long pfn, unsigned long size,
    12	                     struct io_mapping *iomap);
    13	int remap_io_sg(struct vm_area_struct *vma,
    14	                unsigned long addr, unsigned long size,
  > 15	                struct scatterlist *sgl, resource_size_t iobase);
    16	#else
    17	static inline int remap_io_mapping(struct vm_area_struct *vma,
    18	                     unsigned long addr, unsigned long pfn, unsigned long size,
    19	                     struct io_mapping *iomap)
    20	{
    21	        return 0;
    22	}
    23	static inline int remap_io_sg(struct vm_area_struct *vma,
    24	                unsigned long addr, unsigned long size,
    25	                struct scatterlist *sgl, resource_size_t iobase)
    26	{
    27	        return 0;
    28	}
    29	#endif
    30	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
kernel test robot Nov. 19, 2021, 6:25 a.m. UTC | #3
Hi Mullati,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip v5.16-rc1 next-20211118]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Mullati-Siva/drm-i915-Skip-remap_io-calls-for-non-x86-platforms/20211118-191629
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-randconfig-a002-20211118 (attached as .config)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/3cc867f614222b682fb1f739ff6db5133d9352ad
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Mullati-Siva/drm-i915-Skip-remap_io-calls-for-non-x86-platforms/20211118-191629
        git checkout 3cc867f614222b682fb1f739ff6db5133d9352ad
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from <built-in>:4:
>> drivers/gpu/drm/i915/i915_mm.h:10:29: error: declaration of 'struct vm_area_struct' will not be visible outside of this function [-Werror,-Wvisibility]
   int remap_io_mapping(struct vm_area_struct *vma,
                               ^
>> drivers/gpu/drm/i915/i915_mm.h:12:29: error: declaration of 'struct io_mapping' will not be visible outside of this function [-Werror,-Wvisibility]
                        struct io_mapping *iomap);
                               ^
   drivers/gpu/drm/i915/i915_mm.h:13:24: error: declaration of 'struct vm_area_struct' will not be visible outside of this function [-Werror,-Wvisibility]
   int remap_io_sg(struct vm_area_struct *vma,
                          ^
>> drivers/gpu/drm/i915/i915_mm.h:15:24: error: declaration of 'struct scatterlist' will not be visible outside of this function [-Werror,-Wvisibility]
                   struct scatterlist *sgl, resource_size_t iobase);
                          ^
>> drivers/gpu/drm/i915/i915_mm.h:15:42: error: unknown type name 'resource_size_t'
                   struct scatterlist *sgl, resource_size_t iobase);
                                            ^
   5 errors generated.


vim +10 drivers/gpu/drm/i915/i915_mm.h

     8	
     9	#if IS_ENABLED(CONFIG_X86)
  > 10	int remap_io_mapping(struct vm_area_struct *vma,
    11	                     unsigned long addr, unsigned long pfn, unsigned long size,
  > 12	                     struct io_mapping *iomap);
    13	int remap_io_sg(struct vm_area_struct *vma,
    14	                unsigned long addr, unsigned long size,
  > 15	                struct scatterlist *sgl, resource_size_t iobase);
    16	#else
    17	static inline int remap_io_mapping(struct vm_area_struct *vma,
    18	                     unsigned long addr, unsigned long pfn, unsigned long size,
    19	                     struct io_mapping *iomap)
    20	{
    21	        return 0;
    22	}
    23	static inline int remap_io_sg(struct vm_area_struct *vma,
    24	                unsigned long addr, unsigned long size,
    25	                struct scatterlist *sgl, resource_size_t iobase)
    26	{
    27	        return 0;
    28	}
    29	#endif
    30	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 074d6b8edd23..b08397e41efb 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -62,12 +62,12 @@  i915-y += i915_driver.o \
 i915-y += \
 	dma_resv_utils.o \
 	i915_memcpy.o \
-	i915_mm.o \
 	i915_sw_fence.o \
 	i915_sw_fence_work.o \
 	i915_syncmap.o \
 	i915_user_extensions.o
 
+i915-$(CONFIG_X86) += i915_mm.o
 i915-$(CONFIG_COMPAT)   += i915_ioc32.o
 i915-$(CONFIG_DEBUG_FS) += \
 	i915_debugfs.o \
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
index 65fc6ff5f59d..39bb15eafc07 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
@@ -17,6 +17,7 @@ 
 #include "i915_gem_ioctls.h"
 #include "i915_gem_object.h"
 #include "i915_gem_mman.h"
+#include "i915_mm.h"
 #include "i915_trace.h"
 #include "i915_user_extensions.h"
 #include "i915_gem_ttm.h"
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index f2a546d58481..c0712281ee83 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1962,14 +1962,6 @@  mkwrite_device_info(struct drm_i915_private *dev_priv)
 int i915_reg_read_ioctl(struct drm_device *dev, void *data,
 			struct drm_file *file);
 
-/* i915_mm.c */
-int remap_io_mapping(struct vm_area_struct *vma,
-		     unsigned long addr, unsigned long pfn, unsigned long size,
-		     struct io_mapping *iomap);
-int remap_io_sg(struct vm_area_struct *vma,
-		unsigned long addr, unsigned long size,
-		struct scatterlist *sgl, resource_size_t iobase);
-
 static inline int intel_hws_csb_write_index(struct drm_i915_private *i915)
 {
 	if (GRAPHICS_VER(i915) >= 11)
diff --git a/drivers/gpu/drm/i915/i915_mm.c b/drivers/gpu/drm/i915/i915_mm.c
index 666808cb3a32..f4df15fe7cf8 100644
--- a/drivers/gpu/drm/i915/i915_mm.c
+++ b/drivers/gpu/drm/i915/i915_mm.c
@@ -27,6 +27,7 @@ 
 
 
 #include "i915_drv.h"
+#include "i915_mm.h"
 
 struct remap_pfn {
 	struct mm_struct *mm;
diff --git a/drivers/gpu/drm/i915/i915_mm.h b/drivers/gpu/drm/i915/i915_mm.h
new file mode 100644
index 000000000000..71651cced0f5
--- /dev/null
+++ b/drivers/gpu/drm/i915/i915_mm.h
@@ -0,0 +1,31 @@ 
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2021 Intel Corporation
+ */
+
+#ifndef __I915_MM_H__
+#define __I915_MM_H__
+
+#if IS_ENABLED(CONFIG_X86)
+int remap_io_mapping(struct vm_area_struct *vma,
+                     unsigned long addr, unsigned long pfn, unsigned long size,
+                     struct io_mapping *iomap);
+int remap_io_sg(struct vm_area_struct *vma,
+                unsigned long addr, unsigned long size,
+                struct scatterlist *sgl, resource_size_t iobase);
+#else
+static inline int remap_io_mapping(struct vm_area_struct *vma,
+                     unsigned long addr, unsigned long pfn, unsigned long size,
+                     struct io_mapping *iomap)
+{
+        return 0;
+}
+static inline int remap_io_sg(struct vm_area_struct *vma,
+                unsigned long addr, unsigned long size,
+                struct scatterlist *sgl, resource_size_t iobase)
+{
+        return 0;
+}
+#endif
+
+#endif /* __I915_MM_H__ */