* [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2024-08-23 14:11 [PATCH 1/2] drm/ttm: fix kernel-doc typo for @trylock_only Jani Nikula
@ 2024-08-23 14:11 ` Jani Nikula
2024-08-26 16:05 ` kernel test robot
2024-08-26 22:28 ` kernel test robot
0 siblings, 2 replies; 19+ messages in thread
From: Jani Nikula @ 2024-08-23 14:11 UTC (permalink / raw)
To: dri-devel
Cc: intel-gfx, jani.nikula, Daniel Vetter, David Airlie,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Masahiro Yamada
Ensure drm headers build, are self-contained, have header guards, and
have no kernel-doc warnings, when CONFIG_DRM_HEADER_TEST=y.
The mechanism follows similar patters used in i915, xe, and usr/include.
To cover include/drm, we need to recurse there using the top level
Kbuild and the new include/Kbuild files.
v4: check for CONFIG_WERROR in addition to CONFIG_DRM_WERROR
v3: adapt to upstream build changes
v2: make DRM_HEADER_TEST depend on DRM
Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Kbuild | 1 +
drivers/gpu/drm/Kconfig | 11 +++++++++++
drivers/gpu/drm/Makefile | 18 ++++++++++++++++++
include/Kbuild | 1 +
include/drm/Makefile | 18 ++++++++++++++++++
5 files changed, 49 insertions(+)
create mode 100644 include/Kbuild
create mode 100644 include/drm/Makefile
diff --git a/Kbuild b/Kbuild
index 464b34a08f51..f327ca86990c 100644
--- a/Kbuild
+++ b/Kbuild
@@ -97,3 +97,4 @@ obj-$(CONFIG_SAMPLES) += samples/
obj-$(CONFIG_NET) += net/
obj-y += virt/
obj-y += $(ARCH_DRIVERS)
+obj-$(CONFIG_DRM_HEADER_TEST) += include/
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 0387143bbb39..1f3a22df9309 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -476,6 +476,17 @@ config DRM_WERROR
If in doubt, say N.
+config DRM_HEADER_TEST
+ bool "Ensure DRM headers are self-contained and pass kernel-doc"
+ depends on DRM && EXPERT
+ default n
+ help
+ Ensure the DRM subsystem headers both under drivers/gpu/drm and
+ include/drm compile, are self-contained, have header guards, and have
+ no kernel-doc warnings.
+
+ If in doubt, say N.
+
endif
# Separate option because drm_panel_orientation_quirks.c is shared with fbdev
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index 68cc9258ffc4..c199075c87a4 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -219,3 +219,21 @@ obj-y += solomon/
obj-$(CONFIG_DRM_SPRD) += sprd/
obj-$(CONFIG_DRM_LOONGSON) += loongson/
obj-$(CONFIG_DRM_POWERVR) += imagination/
+
+# Ensure drm headers are self-contained and pass kernel-doc
+hdrtest-files := \
+ $(shell cd $(src) && find . -maxdepth 1 -name 'drm_*.h') \
+ $(shell cd $(src) && find display lib -name '*.h')
+
+always-$(CONFIG_DRM_HEADER_TEST) += \
+ $(patsubst %.h,%.hdrtest, $(hdrtest-files))
+
+# Include the header twice to detect missing include guard.
+quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
+ cmd_hdrtest = \
+ $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
+ $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
+ touch $@
+
+$(obj)/%.hdrtest: $(src)/%.h FORCE
+ $(call if_changed_dep,hdrtest)
diff --git a/include/Kbuild b/include/Kbuild
new file mode 100644
index 000000000000..5e76a599e2dd
--- /dev/null
+++ b/include/Kbuild
@@ -0,0 +1 @@
+obj-$(CONFIG_DRM_HEADER_TEST) += drm/
diff --git a/include/drm/Makefile b/include/drm/Makefile
new file mode 100644
index 000000000000..a7bd15d2803e
--- /dev/null
+++ b/include/drm/Makefile
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: GPL-2.0
+
+# Ensure drm headers are self-contained and pass kernel-doc
+hdrtest-files := \
+ $(shell cd $(src) && find * -name '*.h' 2>/dev/null)
+
+always-$(CONFIG_DRM_HEADER_TEST) += \
+ $(patsubst %.h,%.hdrtest, $(hdrtest-files))
+
+# Include the header twice to detect missing include guard.
+quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
+ cmd_hdrtest = \
+ $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
+ $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
+ touch $@
+
+$(obj)/%.hdrtest: $(src)/%.h FORCE
+ $(call if_changed_dep,hdrtest)
--
2.39.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2024-08-23 14:11 ` [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc Jani Nikula
@ 2024-08-26 16:05 ` kernel test robot
2024-08-26 22:28 ` kernel test robot
1 sibling, 0 replies; 19+ messages in thread
From: kernel test robot @ 2024-08-26 16:05 UTC (permalink / raw)
To: Jani Nikula, dri-devel
Cc: oe-kbuild-all, intel-gfx, jani.nikula, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Masahiro Yamada
Hi Jani,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm/drm-next]
[also build test ERROR on drm-misc/drm-misc-next next-20240826]
[cannot apply to linus/master v6.11-rc5]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-ensure-drm-headers-are-self-contained-and-pass-kernel-doc/20240826-134953
base: git://anongit.freedesktop.org/drm/drm drm-next
patch link: https://lore.kernel.org/r/20240823141110.3431423-2-jani.nikula%40intel.com
patch subject: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
config: sparc-allmodconfig (https://download.01.org/0day-ci/archive/20240826/202408262328.MknfI1MV-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240826/202408262328.MknfI1MV-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408262328.MknfI1MV-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from arch/sparc/include/asm/pgtable_64.h:16,
from arch/sparc/include/asm/pgtable.h:5,
from include/linux/pgtable.h:6,
from include/drm/ttm/ttm_caching.h:28,
from <command-line>:
include/asm-generic/pgtable-nop4d.h:9:18: error: unknown type name 'pgd_t'; did you mean 'pid_t'?
9 | typedef struct { pgd_t pgd; } p4d_t;
| ^~~~~
| pid_t
include/asm-generic/pgtable-nop4d.h:21:28: error: unknown type name 'pgd_t'; did you mean 'p4d_t'?
21 | static inline int pgd_none(pgd_t pgd) { return 0; }
| ^~~~~
| p4d_t
include/asm-generic/pgtable-nop4d.h:22:27: error: unknown type name 'pgd_t'; did you mean 'p4d_t'?
22 | static inline int pgd_bad(pgd_t pgd) { return 0; }
| ^~~~~
| p4d_t
include/asm-generic/pgtable-nop4d.h:23:31: error: unknown type name 'pgd_t'; did you mean 'p4d_t'?
23 | static inline int pgd_present(pgd_t pgd) { return 1; }
| ^~~~~
| p4d_t
include/asm-generic/pgtable-nop4d.h:24:30: error: unknown type name 'pgd_t'; did you mean 'p4d_t'?
24 | static inline void pgd_clear(pgd_t *pgd) { }
| ^~~~~
| p4d_t
include/asm-generic/pgtable-nop4d.h:35:33: error: unknown type name 'pgd_t'; did you mean 'p4d_t'?
35 | static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address)
| ^~~~~
| p4d_t
In file included from arch/sparc/include/asm/page.h:8,
from arch/sparc/include/asm/pgtable_64.h:23:
include/linux/pgtable.h: In function 'pud_offset':
arch/sparc/include/asm/page_64.h:79:29: error: request for member 'pgd' in something not a structure or union
79 | #define pgd_val(x) ((x).pgd)
| ^
arch/sparc/include/asm/page_64.h:147:60: note: in definition of macro '__va'
147 | #define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET))
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
arch/sparc/include/asm/pgtable_64.h:863:25: note: in expansion of macro 'p4d_val'
863 | ((pud_t *) __va(p4d_val(p4d)))
| ^~~~~~~
include/linux/pgtable.h:133:16: note: in expansion of macro 'p4d_pgtable'
133 | return p4d_pgtable(*p4d) + pud_index(address);
| ^~~~~~~~~~~
include/linux/pgtable.h: In function 'pmd_off':
include/linux/pgtable.h:165:38: error: implicit declaration of function 'p4d_offset'; did you mean 'pud_offset'? [-Wimplicit-function-declaration]
165 | return pmd_offset(pud_offset(p4d_offset(pgd_offset(mm, va), va), va), va);
| ^~~~~~~~~~
| pud_offset
>> include/linux/pgtable.h:165:38: error: passing argument 1 of 'pud_offset' makes pointer from integer without a cast [-Wint-conversion]
165 | return pmd_offset(pud_offset(p4d_offset(pgd_offset(mm, va), va), va), va);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int
include/linux/pgtable.h:131:40: note: expected 'p4d_t *' but argument is of type 'int'
131 | static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address)
| ~~~~~~~^~~
include/linux/pgtable.h: In function 'pmd_off_k':
include/linux/pgtable.h:170:38: error: passing argument 1 of 'pud_offset' makes pointer from integer without a cast [-Wint-conversion]
170 | return pmd_offset(pud_offset(p4d_offset(pgd_offset_k(va), va), va), va);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int
include/linux/pgtable.h:131:40: note: expected 'p4d_t *' but argument is of type 'int'
131 | static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address)
| ~~~~~~~^~~
include/linux/pgtable.h: In function 'p4d_same':
arch/sparc/include/asm/page_64.h:79:29: error: request for member 'pgd' in something not a structure or union
79 | #define pgd_val(x) ((x).pgd)
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
include/linux/pgtable.h:1042:16: note: in expansion of macro 'p4d_val'
1042 | return p4d_val(p4d_a) == p4d_val(p4d_b);
| ^~~~~~~
arch/sparc/include/asm/page_64.h:79:29: error: request for member 'pgd' in something not a structure or union
79 | #define pgd_val(x) ((x).pgd)
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
include/linux/pgtable.h:1042:34: note: in expansion of macro 'p4d_val'
1042 | return p4d_val(p4d_a) == p4d_val(p4d_b);
| ^~~~~~~
include/linux/pgtable.h:1040:34: warning: parameter 'p4d_a' set but not used [-Wunused-but-set-parameter]
1040 | static inline int p4d_same(p4d_t p4d_a, p4d_t p4d_b)
| ~~~~~~^~~~~
include/linux/pgtable.h:1040:47: warning: parameter 'p4d_b' set but not used [-Wunused-but-set-parameter]
1040 | static inline int p4d_same(p4d_t p4d_a, p4d_t p4d_b)
| ~~~~~~^~~~~
include/linux/pgtable.h: In function 'pgd_none_or_clear_bad':
include/linux/pgtable.h:1240:13: error: implicit declaration of function 'pgd_none'; did you mean 'p4d_none'? [-Wimplicit-function-declaration]
1240 | if (pgd_none(*pgd))
| ^~~~~~~~
| p4d_none
In file included from arch/sparc/include/asm/pgtable_64.h:17:
include/linux/pgtable.h:1242:22: error: implicit declaration of function 'pgd_bad'; did you mean 'pmd_bad'? [-Wimplicit-function-declaration]
1242 | if (unlikely(pgd_bad(*pgd))) {
| ^~~~~~~
include/linux/compiler.h:77:45: note: in definition of macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/pgtable.h: In function 'p4d_none_or_clear_bad':
arch/sparc/include/asm/page_64.h:79:29: error: request for member 'pgd' in something not a structure or union
79 | #define pgd_val(x) ((x).pgd)
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
arch/sparc/include/asm/pgtable_64.h:813:43: note: in expansion of macro 'p4d_val'
813 | #define p4d_none(p4d) (!p4d_val(p4d))
| ^~~~~~~
include/linux/pgtable.h:1251:13: note: in expansion of macro 'p4d_none'
1251 | if (p4d_none(*p4d))
| ^~~~~~~~
arch/sparc/include/asm/page_64.h:79:29: error: request for member 'pgd' in something not a structure or union
79 | #define pgd_val(x) ((x).pgd)
| ^
include/linux/compiler.h:77:45: note: in definition of macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
arch/sparc/include/asm/pgtable_64.h:815:42: note: in expansion of macro 'p4d_val'
815 | #define p4d_bad(p4d) (p4d_val(p4d) & ~PAGE_MASK)
| ^~~~~~~
include/linux/pgtable.h:1253:22: note: in expansion of macro 'p4d_bad'
1253 | if (unlikely(p4d_bad(*p4d))) {
| ^~~~~~~
vim +/pud_offset +165 include/linux/pgtable.h
974b9b2c68f3d3 Mike Rapoport 2020-06-08 155
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 156 /*
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 157 * In many cases it is known that a virtual address is mapped at PMD or PTE
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 158 * level, so instead of traversing all the page table levels, we can get a
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 159 * pointer to the PMD entry in user or kernel page table or translate a virtual
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 160 * address to the pointer in the PTE in the kernel page tables with simple
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 161 * helpers.
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 162 */
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 163 static inline pmd_t *pmd_off(struct mm_struct *mm, unsigned long va)
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 164 {
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 @165 return pmd_offset(pud_offset(p4d_offset(pgd_offset(mm, va), va), va), va);
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 166 }
e05c7b1f2bc4b7 Mike Rapoport 2020-06-08 167
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2024-08-23 14:11 ` [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc Jani Nikula
2024-08-26 16:05 ` kernel test robot
@ 2024-08-26 22:28 ` kernel test robot
1 sibling, 0 replies; 19+ messages in thread
From: kernel test robot @ 2024-08-26 22:28 UTC (permalink / raw)
To: Jani Nikula, dri-devel
Cc: oe-kbuild-all, intel-gfx, jani.nikula, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Masahiro Yamada
Hi Jani,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm/drm-next]
[also build test ERROR on next-20240826]
[cannot apply to drm-misc/drm-misc-next linus/master v6.11-rc5]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-ensure-drm-headers-are-self-contained-and-pass-kernel-doc/20240826-134953
base: git://anongit.freedesktop.org/drm/drm drm-next
patch link: https://lore.kernel.org/r/20240823141110.3431423-2-jani.nikula%40intel.com
patch subject: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
config: arc-allmodconfig (https://download.01.org/0day-ci/archive/20240827/202408270538.dEV4dXpq-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240827/202408270538.dEV4dXpq-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408270538.dEV4dXpq-lkp@intel.com/
All errors (new ones prefixed by >>):
| ^~~~~~~
arch/arc/include/asm/pgtable-levels.h:160:34: note: in expansion of macro 'pmd_val'
160 | #define pmd_page_vaddr(pmd) (pmd_val(pmd) & PAGE_MASK)
| ^~~~~~~
include/linux/pgtable.h:96:25: note: in expansion of macro 'pmd_page_vaddr'
96 | return (pte_t *)pmd_page_vaddr(*pmd) + pte_index(address);
| ^~~~~~~~~~~~~~
include/linux/pgtable.h: In function 'pmd_off':
include/linux/pgtable.h:165:38: error: implicit declaration of function 'p4d_offset'; did you mean 'pmd_offset'? [-Werror=implicit-function-declaration]
165 | return pmd_offset(pud_offset(p4d_offset(pgd_offset(mm, va), va), va), va);
| ^~~~~~~~~~
| pmd_offset
include/linux/pgtable.h:165:38: warning: passing argument 1 of 'pud_offset' makes pointer from integer without a cast [-Wint-conversion]
165 | return pmd_offset(pud_offset(p4d_offset(pgd_offset(mm, va), va), va), va);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int
include/asm-generic/pgtable-nopud.h:42:40: note: expected 'p4d_t *' but argument is of type 'int'
42 | static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address)
| ~~~~~~~^~~
include/linux/pgtable.h: In function 'pmd_off_k':
include/linux/pgtable.h:170:38: warning: passing argument 1 of 'pud_offset' makes pointer from integer without a cast [-Wint-conversion]
170 | return pmd_offset(pud_offset(p4d_offset(pgd_offset_k(va), va), va), va);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int
include/asm-generic/pgtable-nopud.h:42:40: note: expected 'p4d_t *' but argument is of type 'int'
42 | static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address)
| ~~~~~~~^~~
include/linux/pgtable.h: In function 'virt_to_kpte':
arch/arc/include/asm/page.h:41:29: error: request for member 'pgd' in something not a structure or union
41 | #define pgd_val(x) ((x).pgd)
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
include/asm-generic/pgtable-nopud.h:48:50: note: in expansion of macro 'p4d_val'
48 | #define pud_val(x) (p4d_val((x).p4d))
| ^~~~~~~
include/asm-generic/pgtable-nopmd.h:52:50: note: in expansion of macro 'pud_val'
52 | #define pmd_val(x) (pud_val((x).pud))
| ^~~~~~~
arch/arc/include/asm/pgtable-levels.h:156:35: note: in expansion of macro 'pmd_val'
156 | #define pmd_none(x) (!pmd_val(x))
| ^~~~~~~
include/linux/pgtable.h:177:16: note: in expansion of macro 'pmd_none'
177 | return pmd_none(*pmd) ? NULL : pte_offset_kernel(pmd, vaddr);
| ^~~~~~~~
include/linux/pgtable.h: In function 'ptep_test_and_clear_young':
include/linux/pgtable.h:359:55: error: implicit declaration of function 'pte_mkold'; did you mean 'pmd_mkold'? [-Werror=implicit-function-declaration]
359 | set_pte_at(vma->vm_mm, address, ptep, pte_mkold(pte));
| ^~~~~~~~~
include/linux/pgtable.h:280:66: note: in definition of macro 'set_pte_at'
280 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
include/linux/pgtable.h:359:55: error: incompatible type for argument 4 of 'set_ptes'
359 | set_pte_at(vma->vm_mm, address, ptep, pte_mkold(pte));
| ^~~~~~~~~~~~~~
| |
| int
include/linux/pgtable.h:280:66: note: in definition of macro 'set_pte_at'
280 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
include/linux/pgtable.h:265:36: note: expected 'pte_t' but argument is of type 'int'
265 | pte_t *ptep, pte_t pte, unsigned int nr)
| ~~~~~~^~~
include/linux/pgtable.h: In function 'pmdp_test_and_clear_young':
arch/arc/include/asm/page.h:74:29: error: request for member 'pte' in something not a structure or union
74 | #define pte_val(x) ((x).pte)
| ^
arch/arc/include/asm/pgtable-bits-arcv2.h:82:34: note: in expansion of macro 'pte_val'
82 | #define pte_young(pte) (pte_val(pte) & _PAGE_ACCESSED)
| ^~~~~~~
arch/arc/include/asm/hugepage.h:40:33: note: in expansion of macro 'pte_young'
40 | #define pmd_young(pmd) pte_young(pmd_pte(pmd))
| ^~~~~~~~~
include/linux/pgtable.h:372:14: note: in expansion of macro 'pmd_young'
372 | if (!pmd_young(pmd))
| ^~~~~~~~~
arch/arc/include/asm/hugepage.h:33:33: error: implicit declaration of function 'pte_pmd'; did you mean 'pfn_pmd'? [-Werror=implicit-function-declaration]
33 | #define pmd_mkold(pmd) pte_pmd(pte_mkold(pmd_pte(pmd)))
| ^~~~~~~
include/linux/pgtable.h:375:55: note: in expansion of macro 'pmd_mkold'
375 | set_pmd_at(vma->vm_mm, address, pmdp, pmd_mkold(pmd));
| ^~~~~~~~~
arch/arc/include/asm/hugepage.h:33:33: error: incompatible type for argument 4 of 'set_pmd_at'
33 | #define pmd_mkold(pmd) pte_pmd(pte_mkold(pmd_pte(pmd)))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int
include/linux/pgtable.h:375:55: note: in expansion of macro 'pmd_mkold'
375 | set_pmd_at(vma->vm_mm, address, pmdp, pmd_mkold(pmd));
| ^~~~~~~~~
arch/arc/include/asm/hugepage.h:59:50: note: expected 'pmd_t' but argument is of type 'int'
59 | pmd_t *pmdp, pmd_t pmd)
| ~~~~~~^~~
include/linux/pgtable.h: In function 'clear_young_dirty_ptes':
include/linux/pgtable.h:493:39: error: incompatible types when assigning to type 'pte_t' from type 'int'
493 | pte = pte_mkold(pte);
| ^~~~~~~~~
>> include/linux/pgtable.h:495:39: error: implicit declaration of function 'pte_mkclean'; did you mean 'pmd_mkclean'? [-Werror=implicit-function-declaration]
495 | pte = pte_mkclean(pte);
| ^~~~~~~~~~~
| pmd_mkclean
include/linux/pgtable.h:495:39: error: incompatible types when assigning to type 'pte_t' from type 'int'
include/linux/pgtable.h: In function 'pmdp_huge_get_and_clear':
arch/arc/include/asm/page.h:41:29: error: request for member 'pgd' in something not a structure or union
41 | #define pgd_val(x) ((x).pgd)
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
include/asm-generic/pgtable-nopud.h:48:50: note: in expansion of macro 'p4d_val'
48 | #define pud_val(x) (p4d_val((x).p4d))
| ^~~~~~~
include/asm-generic/pgtable-nopmd.h:52:50: note: in expansion of macro 'pud_val'
52 | #define pmd_val(x) (pud_val((x).pud))
| ^~~~~~~
arch/arc/include/asm/pgtable-levels.h:159:38: note: in expansion of macro 'pmd_val'
159 | #define pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0)
| ^~~~~~~
include/linux/pgtable.h:603:9: note: in expansion of macro 'pmd_clear'
603 | pmd_clear(pmdp);
| ^~~~~~~~~
include/linux/pgtable.h: In function 'get_and_clear_full_ptes':
>> include/linux/pgtable.h:684:31: error: implicit declaration of function 'pte_mkdirty'; did you mean 'pte_dirty'? [-Werror=implicit-function-declaration]
684 | pte = pte_mkdirty(pte);
| ^~~~~~~~~~~
| pte_dirty
include/linux/pgtable.h:684:31: error: incompatible types when assigning to type 'pte_t' from type 'int'
>> include/linux/pgtable.h:686:31: error: implicit declaration of function 'pte_mkyoung'; did you mean 'pte_young'? [-Werror=implicit-function-declaration]
686 | pte = pte_mkyoung(pte);
| ^~~~~~~~~~~
| pte_young
include/linux/pgtable.h:686:31: error: incompatible types when assigning to type 'pte_t' from type 'int'
include/linux/pgtable.h: In function 'pte_mkwrite':
include/linux/pgtable.h:807:16: error: implicit declaration of function 'pte_mkwrite_novma'; did you mean 'pmd_mkwrite_novma'? [-Werror=implicit-function-declaration]
807 | return pte_mkwrite_novma(pte);
| ^~~~~~~~~~~~~~~~~
| pmd_mkwrite_novma
include/linux/pgtable.h:807:16: error: incompatible types when returning type 'int' but 'pte_t' was expected
807 | return pte_mkwrite_novma(pte);
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h: In function 'pmd_mkwrite':
arch/arc/include/asm/hugepage.h:31:33: error: incompatible types when returning type 'int' but 'pmd_t' was expected
31 | #define pmd_mkwrite_novma(pmd) pte_pmd(pte_mkwrite_novma(pmd_pte(pmd)))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h:814:16: note: in expansion of macro 'pmd_mkwrite_novma'
814 | return pmd_mkwrite_novma(pmd);
| ^~~~~~~~~~~~~~~~~
include/linux/pgtable.h: In function 'ptep_set_wrprotect':
include/linux/pgtable.h:823:39: error: implicit declaration of function 'pte_wrprotect'; did you mean 'pmd_wrprotect'? [-Werror=implicit-function-declaration]
823 | set_pte_at(mm, address, ptep, pte_wrprotect(old_pte));
| ^~~~~~~~~~~~~
include/linux/pgtable.h:280:66: note: in definition of macro 'set_pte_at'
280 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
include/linux/pgtable.h:823:39: error: incompatible type for argument 4 of 'set_ptes'
823 | set_pte_at(mm, address, ptep, pte_wrprotect(old_pte));
| ^~~~~~~~~~~~~~~~~~~~~~
| |
| int
include/linux/pgtable.h:280:66: note: in definition of macro 'set_pte_at'
280 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
include/linux/pgtable.h:265:36: note: expected 'pte_t' but argument is of type 'int'
265 | pte_t *ptep, pte_t pte, unsigned int nr)
| ~~~~~~^~~
include/linux/pgtable.h: In function 'pmdp_set_wrprotect':
arch/arc/include/asm/hugepage.h:30:33: error: incompatible type for argument 4 of 'set_pmd_at'
30 | #define pmd_wrprotect(pmd) pte_pmd(pte_wrprotect(pmd_pte(pmd)))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int
include/linux/pgtable.h:880:39: note: in expansion of macro 'pmd_wrprotect'
880 | set_pmd_at(mm, address, pmdp, pmd_wrprotect(old_pmd));
| ^~~~~~~~~~~~~
arch/arc/include/asm/hugepage.h:59:50: note: expected 'pmd_t' but argument is of type 'int'
59 | pmd_t *pmdp, pmd_t pmd)
| ~~~~~~^~~
include/linux/pgtable.h: In function 'pmd_same':
arch/arc/include/asm/page.h:41:29: error: request for member 'pgd' in something not a structure or union
41 | #define pgd_val(x) ((x).pgd)
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
include/asm-generic/pgtable-nopud.h:48:50: note: in expansion of macro 'p4d_val'
48 | #define pud_val(x) (p4d_val((x).p4d))
| ^~~~~~~
include/asm-generic/pgtable-nopmd.h:52:50: note: in expansion of macro 'pud_val'
52 | #define pmd_val(x) (pud_val((x).pud))
| ^~~~~~~
include/linux/pgtable.h:1027:16: note: in expansion of macro 'pmd_val'
1027 | return pmd_val(pmd_a) == pmd_val(pmd_b);
| ^~~~~~~
arch/arc/include/asm/page.h:41:29: error: request for member 'pgd' in something not a structure or union
41 | #define pgd_val(x) ((x).pgd)
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
include/asm-generic/pgtable-nopud.h:48:50: note: in expansion of macro 'p4d_val'
48 | #define pud_val(x) (p4d_val((x).p4d))
| ^~~~~~~
include/asm-generic/pgtable-nopmd.h:52:50: note: in expansion of macro 'pud_val'
52 | #define pmd_val(x) (pud_val((x).pud))
| ^~~~~~~
include/linux/pgtable.h:1027:34: note: in expansion of macro 'pmd_val'
1027 | return pmd_val(pmd_a) == pmd_val(pmd_b);
| ^~~~~~~
include/linux/pgtable.h:1025:34: warning: parameter 'pmd_a' set but not used [-Wunused-but-set-parameter]
1025 | static inline int pmd_same(pmd_t pmd_a, pmd_t pmd_b)
| ~~~~~~^~~~~
include/linux/pgtable.h:1025:47: warning: parameter 'pmd_b' set but not used [-Wunused-but-set-parameter]
1025 | static inline int pmd_same(pmd_t pmd_a, pmd_t pmd_b)
| ~~~~~~^~~~~
include/linux/pgtable.h: In function 'pud_same':
arch/arc/include/asm/page.h:41:29: error: request for member 'pgd' in something not a structure or union
41 | #define pgd_val(x) ((x).pgd)
| ^
include/asm-generic/pgtable-nop4d.h:40:50: note: in expansion of macro 'pgd_val'
40 | #define p4d_val(x) (pgd_val((x).pgd))
| ^~~~~~~
include/asm-generic/pgtable-nopud.h:48:50: note: in expansion of macro 'p4d_val'
48 | #define pud_val(x) (p4d_val((x).p4d))
| ^~~~~~~
include/linux/pgtable.h:1034:16: note: in expansion of macro 'pud_val'
1034 | return pud_val(pud_a) == pud_val(pud_b);
| ^~~~~~~
arch/arc/include/asm/page.h:41:29: error: request for member 'pgd' in something not a structure or union
vim +495 include/linux/pgtable.h
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 461
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 462 #ifndef clear_young_dirty_ptes
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 463 /**
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 464 * clear_young_dirty_ptes - Mark PTEs that map consecutive pages of the
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 465 * same folio as old/clean.
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 466 * @mm: Address space the pages are mapped into.
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 467 * @addr: Address the first page is mapped at.
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 468 * @ptep: Page table pointer for the first entry.
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 469 * @nr: Number of entries to mark old/clean.
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 470 * @flags: Flags to modify the PTE batch semantics.
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 471 *
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 472 * May be overridden by the architecture; otherwise, implemented by
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 473 * get_and_clear/modify/set for each pte in the range.
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 474 *
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 475 * Note that PTE bits in the PTE range besides the PFN can differ. For example,
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 476 * some PTEs might be write-protected.
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 477 *
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 478 * Context: The caller holds the page table lock. The PTEs map consecutive
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 479 * pages that belong to the same folio. The PTEs are all in the same PMD.
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 480 */
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 481 static inline void clear_young_dirty_ptes(struct vm_area_struct *vma,
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 482 unsigned long addr, pte_t *ptep,
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 483 unsigned int nr, cydp_t flags)
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 484 {
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 485 pte_t pte;
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 486
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 487 for (;;) {
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 488 if (flags == CYDP_CLEAR_YOUNG)
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 489 ptep_test_and_clear_young(vma, addr, ptep);
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 490 else {
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 491 pte = ptep_get_and_clear(vma->vm_mm, addr, ptep);
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 492 if (flags & CYDP_CLEAR_YOUNG)
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 493 pte = pte_mkold(pte);
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 494 if (flags & CYDP_CLEAR_DIRTY)
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 @495 pte = pte_mkclean(pte);
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 496 set_pte_at(vma->vm_mm, addr, ptep, pte);
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 497 }
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 498 if (--nr == 0)
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 499 break;
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 500 ptep++;
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 501 addr += PAGE_SIZE;
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 502 }
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 503 }
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 504 #endif
1b68112c40395b include/linux/pgtable.h Lance Yang 2024-04-18 505
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 506 static inline void ptep_clear(struct mm_struct *mm, unsigned long addr,
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 507 pte_t *ptep)
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 508 {
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 509 ptep_get_and_clear(mm, addr, ptep);
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 510 }
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 511
6ca297d4784625 include/linux/pgtable.h Peter Zijlstra 2022-10-21 512 #ifdef CONFIG_GUP_GET_PXX_LOW_HIGH
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 513 /*
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 514 * For walking the pagetables without holding any locks. Some architectures
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 515 * (eg x86-32 PAE) cannot load the entries atomically without using expensive
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 516 * instructions. We are guaranteed that a PTE will only either go from not
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 517 * present to present, or present to not present -- it will not switch to a
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 518 * completely different present page without a TLB flush inbetween; which we
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 519 * are blocking by holding interrupts off.
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 520 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 521 * Setting ptes from not present to present goes:
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 522 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 523 * ptep->pte_high = h;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 524 * smp_wmb();
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 525 * ptep->pte_low = l;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 526 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 527 * And present to not present goes:
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 528 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 529 * ptep->pte_low = 0;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 530 * smp_wmb();
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 531 * ptep->pte_high = 0;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 532 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 533 * We must ensure here that the load of pte_low sees 'l' IFF pte_high sees 'h'.
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 534 * We load pte_high *after* loading pte_low, which ensures we don't see an older
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 535 * value of pte_high. *Then* we recheck pte_low, which ensures that we haven't
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 536 * picked up a changed pte high. We might have gotten rubbish values from
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 537 * pte_low and pte_high, but we are guaranteed that pte_low will not have the
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 538 * present bit set *unless* it is 'l'. Because get_user_pages_fast() only
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 539 * operates on present ptes we're safe.
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 540 */
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 541 static inline pte_t ptep_get_lockless(pte_t *ptep)
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 542 {
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 543 pte_t pte;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 544
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 545 do {
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 546 pte.pte_low = ptep->pte_low;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 547 smp_rmb();
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 548 pte.pte_high = ptep->pte_high;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 549 smp_rmb();
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 550 } while (unlikely(pte.pte_low != ptep->pte_low));
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 551
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 552 return pte;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 553 }
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 554 #define ptep_get_lockless ptep_get_lockless
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 555
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 556 #if CONFIG_PGTABLE_LEVELS > 2
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 557 static inline pmd_t pmdp_get_lockless(pmd_t *pmdp)
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 558 {
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 559 pmd_t pmd;
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 560
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 561 do {
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 562 pmd.pmd_low = pmdp->pmd_low;
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 563 smp_rmb();
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 564 pmd.pmd_high = pmdp->pmd_high;
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 565 smp_rmb();
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 566 } while (unlikely(pmd.pmd_low != pmdp->pmd_low));
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 567
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 568 return pmd;
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 569 }
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 570 #define pmdp_get_lockless pmdp_get_lockless
146b42e07494e4 include/linux/pgtable.h Hugh Dickins 2023-07-11 571 #define pmdp_get_lockless_sync() tlb_remove_table_sync_one()
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 572 #endif /* CONFIG_PGTABLE_LEVELS > 2 */
6ca297d4784625 include/linux/pgtable.h Peter Zijlstra 2022-10-21 573 #endif /* CONFIG_GUP_GET_PXX_LOW_HIGH */
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 574
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 575 /*
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 576 * We require that the PTE can be read atomically.
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 577 */
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 578 #ifndef ptep_get_lockless
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 579 static inline pte_t ptep_get_lockless(pte_t *ptep)
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 580 {
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 581 return ptep_get(ptep);
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 582 }
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 583 #endif
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 584
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 585 #ifndef pmdp_get_lockless
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 586 static inline pmd_t pmdp_get_lockless(pmd_t *pmdp)
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 587 {
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 588 return pmdp_get(pmdp);
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 589 }
146b42e07494e4 include/linux/pgtable.h Hugh Dickins 2023-07-11 590 static inline void pmdp_get_lockless_sync(void)
146b42e07494e4 include/linux/pgtable.h Hugh Dickins 2023-07-11 591 {
146b42e07494e4 include/linux/pgtable.h Hugh Dickins 2023-07-11 592 }
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 593 #endif
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 594
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 595 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 596 #ifndef __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR
8809aa2d28d741 include/asm-generic/pgtable.h Aneesh Kumar K.V 2015-06-24 597 static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 598 unsigned long address,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 599 pmd_t *pmdp)
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 600 {
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 601 pmd_t pmd = *pmdp;
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 602
2d28a2275c21d0 include/asm-generic/pgtable.h Catalin Marinas 2012-10-08 603 pmd_clear(pmdp);
1831414cd729a3 include/linux/pgtable.h Kemeng Shi 2023-07-14 604 page_table_check_pmd_clear(mm, pmd);
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 605
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 606 return pmd;
49b24d6b41c576 include/asm-generic/pgtable.h Nicolas Kaiser 2011-06-15 607 }
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 608 #endif /* __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR */
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 609 #ifndef __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 610 static inline pud_t pudp_huge_get_and_clear(struct mm_struct *mm,
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 611 unsigned long address,
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 612 pud_t *pudp)
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 613 {
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 614 pud_t pud = *pudp;
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 615
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 616 pud_clear(pudp);
931c38e16499a0 include/linux/pgtable.h Kemeng Shi 2023-07-14 617 page_table_check_pud_clear(mm, pud);
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 618
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 619 return pud;
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 620 }
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 621 #endif /* __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR */
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 622 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
^1da177e4c3f41 include/asm-generic/pgtable.h Linus Torvalds 2005-04-16 623
fcbe08d66f57c3 include/asm-generic/pgtable.h Martin Schwidefsky 2014-10-24 624 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 625 #ifndef __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR_FULL
93a98695f2f9f9 include/asm-generic/pgtable.h Aneesh Kumar K.V 2020-05-05 626 static inline pmd_t pmdp_huge_get_and_clear_full(struct vm_area_struct *vma,
fcbe08d66f57c3 include/asm-generic/pgtable.h Martin Schwidefsky 2014-10-24 627 unsigned long address, pmd_t *pmdp,
fcbe08d66f57c3 include/asm-generic/pgtable.h Martin Schwidefsky 2014-10-24 628 int full)
fcbe08d66f57c3 include/asm-generic/pgtable.h Martin Schwidefsky 2014-10-24 629 {
93a98695f2f9f9 include/asm-generic/pgtable.h Aneesh Kumar K.V 2020-05-05 630 return pmdp_huge_get_and_clear(vma->vm_mm, address, pmdp);
fcbe08d66f57c3 include/asm-generic/pgtable.h Martin Schwidefsky 2014-10-24 631 }
fcbe08d66f57c3 include/asm-generic/pgtable.h Martin Schwidefsky 2014-10-24 632 #endif
fcbe08d66f57c3 include/asm-generic/pgtable.h Martin Schwidefsky 2014-10-24 633
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 634 #ifndef __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR_FULL
f32928ab6fe5ab include/linux/pgtable.h Aneesh Kumar K.V 2023-07-25 635 static inline pud_t pudp_huge_get_and_clear_full(struct vm_area_struct *vma,
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 636 unsigned long address, pud_t *pudp,
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 637 int full)
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 638 {
f32928ab6fe5ab include/linux/pgtable.h Aneesh Kumar K.V 2023-07-25 639 return pudp_huge_get_and_clear(vma->vm_mm, address, pudp);
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 640 }
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 641 #endif
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 642 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 643
a600388d284193 include/asm-generic/pgtable.h Zachary Amsden 2005-09-03 644 #ifndef __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 645 static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 646 unsigned long address, pte_t *ptep,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 647 int full)
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 648 {
d3a89233583bf8 include/linux/pgtable.h zhang songyi 2022-11-28 649 return ptep_get_and_clear(mm, address, ptep);
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 650 }
a600388d284193 include/asm-generic/pgtable.h Zachary Amsden 2005-09-03 651 #endif
a600388d284193 include/asm-generic/pgtable.h Zachary Amsden 2005-09-03 652
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 653 #ifndef get_and_clear_full_ptes
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 654 /**
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 655 * get_and_clear_full_ptes - Clear present PTEs that map consecutive pages of
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 656 * the same folio, collecting dirty/accessed bits.
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 657 * @mm: Address space the pages are mapped into.
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 658 * @addr: Address the first page is mapped at.
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 659 * @ptep: Page table pointer for the first entry.
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 660 * @nr: Number of entries to clear.
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 661 * @full: Whether we are clearing a full mm.
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 662 *
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 663 * May be overridden by the architecture; otherwise, implemented as a simple
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 664 * loop over ptep_get_and_clear_full(), merging dirty/accessed bits into the
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 665 * returned PTE.
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 666 *
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 667 * Note that PTE bits in the PTE range besides the PFN can differ. For example,
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 668 * some PTEs might be write-protected.
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 669 *
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 670 * Context: The caller holds the page table lock. The PTEs map consecutive
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 671 * pages that belong to the same folio. The PTEs are all in the same PMD.
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 672 */
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 673 static inline pte_t get_and_clear_full_ptes(struct mm_struct *mm,
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 674 unsigned long addr, pte_t *ptep, unsigned int nr, int full)
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 675 {
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 676 pte_t pte, tmp_pte;
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 677
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 678 pte = ptep_get_and_clear_full(mm, addr, ptep, full);
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 679 while (--nr) {
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 680 ptep++;
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 681 addr += PAGE_SIZE;
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 682 tmp_pte = ptep_get_and_clear_full(mm, addr, ptep, full);
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 683 if (pte_dirty(tmp_pte))
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 @684 pte = pte_mkdirty(pte);
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 685 if (pte_young(tmp_pte))
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 @686 pte = pte_mkyoung(pte);
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 687 }
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 688 return pte;
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 689 }
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 690 #endif
10ebac4f95e7a9 include/linux/pgtable.h David Hildenbrand 2024-02-14 691
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 0/2] drm: add header tests
@ 2025-01-22 14:41 Jani Nikula
2025-01-22 14:41 ` [PATCH 1/2] drm/client: include types.h to make drm_client_event.h self-contained Jani Nikula
` (5 more replies)
0 siblings, 6 replies; 19+ messages in thread
From: Jani Nikula @ 2025-01-22 14:41 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, intel-xe, simona.vetter, jani.nikula
Add CONFIG_DRM_HEADER_TEST to ensure drm headers are self-contained and
pass kernel-doc. And for starters, fix one header that this catches.
Jani Nikula (2):
drm/client: include types.h to make drm_client_event.h self-contained
drm: ensure drm headers are self-contained and pass kernel-doc
Kbuild | 1 +
drivers/gpu/drm/Kconfig | 11 +++++++++++
drivers/gpu/drm/Makefile | 18 ++++++++++++++++++
include/Kbuild | 1 +
include/drm/Makefile | 18 ++++++++++++++++++
include/drm/drm_client_event.h | 2 ++
6 files changed, 51 insertions(+)
create mode 100644 include/Kbuild
create mode 100644 include/drm/Makefile
--
2.39.5
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/2] drm/client: include types.h to make drm_client_event.h self-contained
2025-01-22 14:41 [PATCH 0/2] drm: add header tests Jani Nikula
@ 2025-01-22 14:41 ` Jani Nikula
2025-01-22 14:41 ` [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc Jani Nikula
` (4 subsequent siblings)
5 siblings, 0 replies; 19+ messages in thread
From: Jani Nikula @ 2025-01-22 14:41 UTC (permalink / raw)
To: dri-devel
Cc: intel-gfx, intel-xe, simona.vetter, jani.nikula,
Thomas Zimmermann
drm_client_event.h uses bool without types.h, include it.
Fixes: bf17766f1083 ("drm/client: Move suspend/resume into DRM client callbacks")
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
include/drm/drm_client_event.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/drm/drm_client_event.h b/include/drm/drm_client_event.h
index 99863554b055..1d544d3a3228 100644
--- a/include/drm/drm_client_event.h
+++ b/include/drm/drm_client_event.h
@@ -3,6 +3,8 @@
#ifndef _DRM_CLIENT_EVENT_H_
#define _DRM_CLIENT_EVENT_H_
+#include <linux/types.h>
+
struct drm_device;
#if defined(CONFIG_DRM_CLIENT)
--
2.39.5
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2025-01-22 14:41 [PATCH 0/2] drm: add header tests Jani Nikula
2025-01-22 14:41 ` [PATCH 1/2] drm/client: include types.h to make drm_client_event.h self-contained Jani Nikula
@ 2025-01-22 14:41 ` Jani Nikula
2025-03-02 16:01 ` Masahiro Yamada
2025-01-22 15:23 ` ✗ Fi.CI.CHECKPATCH: warning for drm: add header tests Patchwork
` (3 subsequent siblings)
5 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2025-01-22 14:41 UTC (permalink / raw)
To: dri-devel
Cc: intel-gfx, intel-xe, simona.vetter, jani.nikula, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Masahiro Yamada
Ensure drm headers build, are self-contained, have header guards, and
have no kernel-doc warnings, when CONFIG_DRM_HEADER_TEST=y.
The mechanism follows similar patters used in i915, xe, and usr/include.
To cover include/drm, we need to recurse there using the top level
Kbuild and the new include/Kbuild files.
v4: check for CONFIG_WERROR in addition to CONFIG_DRM_WERROR
v3: adapt to upstream build changes
v2: make DRM_HEADER_TEST depend on DRM
Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Kbuild | 1 +
drivers/gpu/drm/Kconfig | 11 +++++++++++
drivers/gpu/drm/Makefile | 18 ++++++++++++++++++
include/Kbuild | 1 +
include/drm/Makefile | 18 ++++++++++++++++++
5 files changed, 49 insertions(+)
create mode 100644 include/Kbuild
create mode 100644 include/drm/Makefile
diff --git a/Kbuild b/Kbuild
index 464b34a08f51..f327ca86990c 100644
--- a/Kbuild
+++ b/Kbuild
@@ -97,3 +97,4 @@ obj-$(CONFIG_SAMPLES) += samples/
obj-$(CONFIG_NET) += net/
obj-y += virt/
obj-y += $(ARCH_DRIVERS)
+obj-$(CONFIG_DRM_HEADER_TEST) += include/
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index fbef3f471bd0..f9b3ebf63fa9 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -494,6 +494,17 @@ config DRM_WERROR
If in doubt, say N.
+config DRM_HEADER_TEST
+ bool "Ensure DRM headers are self-contained and pass kernel-doc"
+ depends on DRM && EXPERT
+ default n
+ help
+ Ensure the DRM subsystem headers both under drivers/gpu/drm and
+ include/drm compile, are self-contained, have header guards, and have
+ no kernel-doc warnings.
+
+ If in doubt, say N.
+
endif
# Separate option because drm_panel_orientation_quirks.c is shared with fbdev
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index 85af94bb907d..42901f877bf2 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -222,3 +222,21 @@ obj-y += solomon/
obj-$(CONFIG_DRM_SPRD) += sprd/
obj-$(CONFIG_DRM_LOONGSON) += loongson/
obj-$(CONFIG_DRM_POWERVR) += imagination/
+
+# Ensure drm headers are self-contained and pass kernel-doc
+hdrtest-files := \
+ $(shell cd $(src) && find . -maxdepth 1 -name 'drm_*.h') \
+ $(shell cd $(src) && find display lib -name '*.h')
+
+always-$(CONFIG_DRM_HEADER_TEST) += \
+ $(patsubst %.h,%.hdrtest, $(hdrtest-files))
+
+# Include the header twice to detect missing include guard.
+quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
+ cmd_hdrtest = \
+ $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
+ $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
+ touch $@
+
+$(obj)/%.hdrtest: $(src)/%.h FORCE
+ $(call if_changed_dep,hdrtest)
diff --git a/include/Kbuild b/include/Kbuild
new file mode 100644
index 000000000000..5e76a599e2dd
--- /dev/null
+++ b/include/Kbuild
@@ -0,0 +1 @@
+obj-$(CONFIG_DRM_HEADER_TEST) += drm/
diff --git a/include/drm/Makefile b/include/drm/Makefile
new file mode 100644
index 000000000000..a7bd15d2803e
--- /dev/null
+++ b/include/drm/Makefile
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: GPL-2.0
+
+# Ensure drm headers are self-contained and pass kernel-doc
+hdrtest-files := \
+ $(shell cd $(src) && find * -name '*.h' 2>/dev/null)
+
+always-$(CONFIG_DRM_HEADER_TEST) += \
+ $(patsubst %.h,%.hdrtest, $(hdrtest-files))
+
+# Include the header twice to detect missing include guard.
+quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
+ cmd_hdrtest = \
+ $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
+ $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
+ touch $@
+
+$(obj)/%.hdrtest: $(src)/%.h FORCE
+ $(call if_changed_dep,hdrtest)
--
2.39.5
^ permalink raw reply related [flat|nested] 19+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for drm: add header tests
2025-01-22 14:41 [PATCH 0/2] drm: add header tests Jani Nikula
2025-01-22 14:41 ` [PATCH 1/2] drm/client: include types.h to make drm_client_event.h self-contained Jani Nikula
2025-01-22 14:41 ` [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc Jani Nikula
@ 2025-01-22 15:23 ` Patchwork
2025-01-22 15:23 ` ✗ Fi.CI.SPARSE: " Patchwork
` (2 subsequent siblings)
5 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2025-01-22 15:23 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: drm: add header tests
URL : https://patchwork.freedesktop.org/series/143853/
State : warning
== Summary ==
Error: dim checkpatch failed
282b1c214450 drm/client: include types.h to make drm_client_event.h self-contained
6cafae5be8dc drm: ensure drm headers are self-contained and pass kernel-doc
-:89: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#89:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 61 lines checked
^ permalink raw reply [flat|nested] 19+ messages in thread
* ✗ Fi.CI.SPARSE: warning for drm: add header tests
2025-01-22 14:41 [PATCH 0/2] drm: add header tests Jani Nikula
` (2 preceding siblings ...)
2025-01-22 15:23 ` ✗ Fi.CI.CHECKPATCH: warning for drm: add header tests Patchwork
@ 2025-01-22 15:23 ` Patchwork
2025-01-22 15:37 ` ✗ i915.CI.BAT: failure " Patchwork
2025-01-23 14:55 ` [PATCH 0/2] " Simona Vetter
5 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2025-01-22 15:23 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: drm: add header tests
URL : https://patchwork.freedesktop.org/series/143853/
State : warning
== Summary ==
Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
-
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1873:9: error: incompatible types in conditional expression (different base types):
+drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1873:9: int
+drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1873:9: void
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:414:49: error: static assertion failed: "amd_sriov_msg_vf2pf_info must be 1 KB"
+drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:418:49: error: static assertion failed: "amd_sriov_msg_pf2vf_info must be 1 KB"
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
/home/kbuild2/linux/maintainer-tools/dim: line 2106: echo: write error: Broken pipe
^ permalink raw reply [flat|nested] 19+ messages in thread
* ✗ i915.CI.BAT: failure for drm: add header tests
2025-01-22 14:41 [PATCH 0/2] drm: add header tests Jani Nikula
` (3 preceding siblings ...)
2025-01-22 15:23 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2025-01-22 15:37 ` Patchwork
2025-01-23 14:55 ` [PATCH 0/2] " Simona Vetter
5 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2025-01-22 15:37 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 5355 bytes --]
== Series Details ==
Series: drm: add header tests
URL : https://patchwork.freedesktop.org/series/143853/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_16001 -> Patchwork_143853v1
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_143853v1 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_143853v1, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/index.html
Participating hosts (45 -> 44)
------------------------------
Missing (1): fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_143853v1:
### IGT changes ###
#### Possible regressions ####
* igt@gem_exec_fence@basic-await@vecs0:
- bat-arlh-3: [PASS][1] -> [FAIL][2] +1 other test fail
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16001/bat-arlh-3/igt@gem_exec_fence@basic-await@vecs0.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/bat-arlh-3/igt@gem_exec_fence@basic-await@vecs0.html
Known issues
------------
Here are the changes found in Patchwork_143853v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_lmem_swapping@verify-random:
- fi-cfl-8109u: NOTRUN -> [SKIP][3] ([i915#4613]) +3 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/fi-cfl-8109u/igt@gem_lmem_swapping@verify-random.html
* igt@i915_module_load@load:
- fi-pnv-d510: [PASS][4] -> [ABORT][5] ([i915#13203])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16001/fi-pnv-d510/igt@i915_module_load@load.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/fi-pnv-d510/igt@i915_module_load@load.html
* igt@i915_pm_rpm@module-reload:
- bat-dg1-7: [PASS][6] -> [FAIL][7] ([i915#13401])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16001/bat-dg1-7/igt@i915_pm_rpm@module-reload.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/bat-dg1-7/igt@i915_pm_rpm@module-reload.html
* igt@i915_selftest@live:
- bat-arlh-2: [PASS][8] -> [DMESG-FAIL][9] ([i915#12061] / [i915#12435])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16001/bat-arlh-2/igt@i915_selftest@live.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/bat-arlh-2/igt@i915_selftest@live.html
* igt@i915_selftest@live@workarounds:
- bat-arlh-2: [PASS][10] -> [DMESG-FAIL][11] ([i915#12061])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16001/bat-arlh-2/igt@i915_selftest@live@workarounds.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/bat-arlh-2/igt@i915_selftest@live@workarounds.html
* igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
- bat-dg2-11: [PASS][12] -> [SKIP][13] ([i915#9197]) +3 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16001/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
#### Possible fixes ####
* igt@i915_module_load@reload:
- fi-cfl-8109u: [ABORT][14] -> [PASS][15]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16001/fi-cfl-8109u/igt@i915_module_load@reload.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/fi-cfl-8109u/igt@i915_module_load@reload.html
* igt@i915_pm_rpm@module-reload:
- bat-dg2-9: [ABORT][16] -> [PASS][17]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16001/bat-dg2-9/igt@i915_pm_rpm@module-reload.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/bat-dg2-9/igt@i915_pm_rpm@module-reload.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12435
[i915#13203]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13203
[i915#13401]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13401
[i915#13494]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13494
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
Build changes
-------------
* Linux: CI_DRM_16001 -> Patchwork_143853v1
CI-20190529: 20190529
CI_DRM_16001: 6834acba715b85cbecfeb660b9695806e98c9a0a @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8206: 48d7780a026179e5de232142df3ac59fec6487ee @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_143853v1: 6834acba715b85cbecfeb660b9695806e98c9a0a @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143853v1/index.html
[-- Attachment #2: Type: text/html, Size: 6191 bytes --]
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 0/2] drm: add header tests
2025-01-22 14:41 [PATCH 0/2] drm: add header tests Jani Nikula
` (4 preceding siblings ...)
2025-01-22 15:37 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2025-01-23 14:55 ` Simona Vetter
2025-02-12 10:26 ` Jani Nikula
5 siblings, 1 reply; 19+ messages in thread
From: Simona Vetter @ 2025-01-23 14:55 UTC (permalink / raw)
To: Jani Nikula; +Cc: dri-devel, intel-gfx, intel-xe, simona.vetter
On Wed, Jan 22, 2025 at 04:41:32PM +0200, Jani Nikula wrote:
> Add CONFIG_DRM_HEADER_TEST to ensure drm headers are self-contained and
> pass kernel-doc. And for starters, fix one header that this catches.
>
> Jani Nikula (2):
> drm/client: include types.h to make drm_client_event.h self-contained
> drm: ensure drm headers are self-contained and pass kernel-doc
I guess we should give this another shot. On the series:
Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
>
> Kbuild | 1 +
> drivers/gpu/drm/Kconfig | 11 +++++++++++
> drivers/gpu/drm/Makefile | 18 ++++++++++++++++++
> include/Kbuild | 1 +
> include/drm/Makefile | 18 ++++++++++++++++++
> include/drm/drm_client_event.h | 2 ++
> 6 files changed, 51 insertions(+)
> create mode 100644 include/Kbuild
> create mode 100644 include/drm/Makefile
>
> --
> 2.39.5
>
--
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 0/2] drm: add header tests
2025-01-23 14:55 ` [PATCH 0/2] " Simona Vetter
@ 2025-02-12 10:26 ` Jani Nikula
0 siblings, 0 replies; 19+ messages in thread
From: Jani Nikula @ 2025-02-12 10:26 UTC (permalink / raw)
To: Simona Vetter; +Cc: dri-devel, intel-gfx, intel-xe, simona.vetter
On Thu, 23 Jan 2025, Simona Vetter <simona.vetter@ffwll.ch> wrote:
> On Wed, Jan 22, 2025 at 04:41:32PM +0200, Jani Nikula wrote:
>> Add CONFIG_DRM_HEADER_TEST to ensure drm headers are self-contained and
>> pass kernel-doc. And for starters, fix one header that this catches.
>>
>> Jani Nikula (2):
>> drm/client: include types.h to make drm_client_event.h self-contained
>> drm: ensure drm headers are self-contained and pass kernel-doc
>
> I guess we should give this another shot. On the series:
>
> Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
Thanks, pushed to drm-misc-next.
BR,
Jani.
>
>
>>
>> Kbuild | 1 +
>> drivers/gpu/drm/Kconfig | 11 +++++++++++
>> drivers/gpu/drm/Makefile | 18 ++++++++++++++++++
>> include/Kbuild | 1 +
>> include/drm/Makefile | 18 ++++++++++++++++++
>> include/drm/drm_client_event.h | 2 ++
>> 6 files changed, 51 insertions(+)
>> create mode 100644 include/Kbuild
>> create mode 100644 include/drm/Makefile
>>
>> --
>> 2.39.5
>>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2025-01-22 14:41 ` [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc Jani Nikula
@ 2025-03-02 16:01 ` Masahiro Yamada
2025-03-03 10:02 ` Jani Nikula
0 siblings, 1 reply; 19+ messages in thread
From: Masahiro Yamada @ 2025-03-02 16:01 UTC (permalink / raw)
To: Jani Nikula
Cc: dri-devel, intel-gfx, intel-xe, simona.vetter, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Linus Torvalds
+CC: Linus
On Wed, Jan 22, 2025 at 11:41 PM Jani Nikula <jani.nikula@intel.com> wrote:
>
> Ensure drm headers build, are self-contained, have header guards, and
> have no kernel-doc warnings, when CONFIG_DRM_HEADER_TEST=y.
>
> The mechanism follows similar patters used in i915, xe, and usr/include.
>
> To cover include/drm, we need to recurse there using the top level
> Kbuild and the new include/Kbuild files.
NACK.
I replied here:
https://lore.kernel.org/all/CAK7LNARJgqADxnOXAX49XzDFD4zT=7i8yTB0o=EmNtxmScq8jA@mail.gmail.com/T/#u
I CCed Linus to avoid him accidentally pulling this.
He disliked this misfeature.
>
> v4: check for CONFIG_WERROR in addition to CONFIG_DRM_WERROR
>
> v3: adapt to upstream build changes
>
> v2: make DRM_HEADER_TEST depend on DRM
>
> Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Masahiro Yamada <masahiroy@kernel.org>
> Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> Kbuild | 1 +
> drivers/gpu/drm/Kconfig | 11 +++++++++++
> drivers/gpu/drm/Makefile | 18 ++++++++++++++++++
> include/Kbuild | 1 +
> include/drm/Makefile | 18 ++++++++++++++++++
> 5 files changed, 49 insertions(+)
> create mode 100644 include/Kbuild
> create mode 100644 include/drm/Makefile
>
> diff --git a/Kbuild b/Kbuild
> index 464b34a08f51..f327ca86990c 100644
> --- a/Kbuild
> +++ b/Kbuild
> @@ -97,3 +97,4 @@ obj-$(CONFIG_SAMPLES) += samples/
> obj-$(CONFIG_NET) += net/
> obj-y += virt/
> obj-y += $(ARCH_DRIVERS)
> +obj-$(CONFIG_DRM_HEADER_TEST) += include/
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index fbef3f471bd0..f9b3ebf63fa9 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -494,6 +494,17 @@ config DRM_WERROR
>
> If in doubt, say N.
>
> +config DRM_HEADER_TEST
> + bool "Ensure DRM headers are self-contained and pass kernel-doc"
> + depends on DRM && EXPERT
> + default n
> + help
> + Ensure the DRM subsystem headers both under drivers/gpu/drm and
> + include/drm compile, are self-contained, have header guards, and have
> + no kernel-doc warnings.
> +
> + If in doubt, say N.
> +
> endif
>
> # Separate option because drm_panel_orientation_quirks.c is shared with fbdev
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index 85af94bb907d..42901f877bf2 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -222,3 +222,21 @@ obj-y += solomon/
> obj-$(CONFIG_DRM_SPRD) += sprd/
> obj-$(CONFIG_DRM_LOONGSON) += loongson/
> obj-$(CONFIG_DRM_POWERVR) += imagination/
> +
> +# Ensure drm headers are self-contained and pass kernel-doc
> +hdrtest-files := \
> + $(shell cd $(src) && find . -maxdepth 1 -name 'drm_*.h') \
> + $(shell cd $(src) && find display lib -name '*.h')
> +
> +always-$(CONFIG_DRM_HEADER_TEST) += \
> + $(patsubst %.h,%.hdrtest, $(hdrtest-files))
> +
> +# Include the header twice to detect missing include guard.
> +quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
> + cmd_hdrtest = \
> + $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
> + $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
> + touch $@
> +
> +$(obj)/%.hdrtest: $(src)/%.h FORCE
> + $(call if_changed_dep,hdrtest)
> diff --git a/include/Kbuild b/include/Kbuild
> new file mode 100644
> index 000000000000..5e76a599e2dd
> --- /dev/null
> +++ b/include/Kbuild
> @@ -0,0 +1 @@
> +obj-$(CONFIG_DRM_HEADER_TEST) += drm/
> diff --git a/include/drm/Makefile b/include/drm/Makefile
> new file mode 100644
> index 000000000000..a7bd15d2803e
> --- /dev/null
> +++ b/include/drm/Makefile
> @@ -0,0 +1,18 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +# Ensure drm headers are self-contained and pass kernel-doc
> +hdrtest-files := \
> + $(shell cd $(src) && find * -name '*.h' 2>/dev/null)
> +
> +always-$(CONFIG_DRM_HEADER_TEST) += \
> + $(patsubst %.h,%.hdrtest, $(hdrtest-files))
> +
> +# Include the header twice to detect missing include guard.
> +quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
> + cmd_hdrtest = \
> + $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
> + $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
> + touch $@
> +
> +$(obj)/%.hdrtest: $(src)/%.h FORCE
> + $(call if_changed_dep,hdrtest)
> --
> 2.39.5
>
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2025-03-02 16:01 ` Masahiro Yamada
@ 2025-03-03 10:02 ` Jani Nikula
2025-03-03 12:59 ` Masahiro Yamada
0 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2025-03-03 10:02 UTC (permalink / raw)
To: Masahiro Yamada
Cc: dri-devel, intel-gfx, intel-xe, simona.vetter, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Linus Torvalds
On Mon, 03 Mar 2025, Masahiro Yamada <masahiroy@kernel.org> wrote:
> +CC: Linus
>
> On Wed, Jan 22, 2025 at 11:41 PM Jani Nikula <jani.nikula@intel.com> wrote:
>>
>> Ensure drm headers build, are self-contained, have header guards, and
>> have no kernel-doc warnings, when CONFIG_DRM_HEADER_TEST=y.
>>
>> The mechanism follows similar patters used in i915, xe, and usr/include.
>>
>> To cover include/drm, we need to recurse there using the top level
>> Kbuild and the new include/Kbuild files.
>
> NACK.
>
> I replied here:
> https://lore.kernel.org/all/CAK7LNARJgqADxnOXAX49XzDFD4zT=7i8yTB0o=EmNtxmScq8jA@mail.gmail.com/T/#u
I really don't find it fair to completely ignore several pings over an
extended period of time, and then show up to NAK after the patches have
been merged.
> I CCed Linus to avoid him accidentally pulling this.
> He disliked this misfeature.
I believe being able to statically check the headers at build time, both
by the developers and CI, depending on a config option, makes for a more
pleasant development experience.
We've had this in i915 and xe for a long time, and we avoid a lot of
build breakage due to missing includes e.g. while refactoring, and we
don't get reports about kernel-doc issues either. Because they all fail
at build, and we catch the issues pre-merge. We skip a whole class of
merge->dammit->fix cycles with this.
All of the drm headers are clean and pass. We don't add any exception
lists. It's not enabled by default.
I can appreciate this might not be the best approach for all of
include/linux, but for include/drm, I think it's definitely a win.
And one of the underlying goals is to make for minimal headers with
minimal includes and minimal dependencies, preferring forward
declarations over includes, splitting functionality by header, etc. It's
just that doing that often leads to broken headers, unless you actually
build test them... and here we are.
BR,
Jani.
>
>
>
>
>>
>> v4: check for CONFIG_WERROR in addition to CONFIG_DRM_WERROR
>>
>> v3: adapt to upstream build changes
>>
>> v2: make DRM_HEADER_TEST depend on DRM
>>
>> Suggested-by: Daniel Vetter <daniel@ffwll.ch>
>> Cc: David Airlie <airlied@gmail.com>
>> Cc: Daniel Vetter <daniel@ffwll.ch>
>> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> Cc: Maxime Ripard <mripard@kernel.org>
>> Cc: Thomas Zimmermann <tzimmermann@suse.de>
>> Cc: Masahiro Yamada <masahiroy@kernel.org>
>> Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>> Kbuild | 1 +
>> drivers/gpu/drm/Kconfig | 11 +++++++++++
>> drivers/gpu/drm/Makefile | 18 ++++++++++++++++++
>> include/Kbuild | 1 +
>> include/drm/Makefile | 18 ++++++++++++++++++
>> 5 files changed, 49 insertions(+)
>> create mode 100644 include/Kbuild
>> create mode 100644 include/drm/Makefile
>>
>> diff --git a/Kbuild b/Kbuild
>> index 464b34a08f51..f327ca86990c 100644
>> --- a/Kbuild
>> +++ b/Kbuild
>> @@ -97,3 +97,4 @@ obj-$(CONFIG_SAMPLES) += samples/
>> obj-$(CONFIG_NET) += net/
>> obj-y += virt/
>> obj-y += $(ARCH_DRIVERS)
>> +obj-$(CONFIG_DRM_HEADER_TEST) += include/
>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
>> index fbef3f471bd0..f9b3ebf63fa9 100644
>> --- a/drivers/gpu/drm/Kconfig
>> +++ b/drivers/gpu/drm/Kconfig
>> @@ -494,6 +494,17 @@ config DRM_WERROR
>>
>> If in doubt, say N.
>>
>> +config DRM_HEADER_TEST
>> + bool "Ensure DRM headers are self-contained and pass kernel-doc"
>> + depends on DRM && EXPERT
>> + default n
>> + help
>> + Ensure the DRM subsystem headers both under drivers/gpu/drm and
>> + include/drm compile, are self-contained, have header guards, and have
>> + no kernel-doc warnings.
>> +
>> + If in doubt, say N.
>> +
>> endif
>>
>> # Separate option because drm_panel_orientation_quirks.c is shared with fbdev
>> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
>> index 85af94bb907d..42901f877bf2 100644
>> --- a/drivers/gpu/drm/Makefile
>> +++ b/drivers/gpu/drm/Makefile
>> @@ -222,3 +222,21 @@ obj-y += solomon/
>> obj-$(CONFIG_DRM_SPRD) += sprd/
>> obj-$(CONFIG_DRM_LOONGSON) += loongson/
>> obj-$(CONFIG_DRM_POWERVR) += imagination/
>> +
>> +# Ensure drm headers are self-contained and pass kernel-doc
>> +hdrtest-files := \
>> + $(shell cd $(src) && find . -maxdepth 1 -name 'drm_*.h') \
>> + $(shell cd $(src) && find display lib -name '*.h')
>> +
>> +always-$(CONFIG_DRM_HEADER_TEST) += \
>> + $(patsubst %.h,%.hdrtest, $(hdrtest-files))
>> +
>> +# Include the header twice to detect missing include guard.
>> +quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
>> + cmd_hdrtest = \
>> + $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
>> + $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
>> + touch $@
>> +
>> +$(obj)/%.hdrtest: $(src)/%.h FORCE
>> + $(call if_changed_dep,hdrtest)
>> diff --git a/include/Kbuild b/include/Kbuild
>> new file mode 100644
>> index 000000000000..5e76a599e2dd
>> --- /dev/null
>> +++ b/include/Kbuild
>> @@ -0,0 +1 @@
>> +obj-$(CONFIG_DRM_HEADER_TEST) += drm/
>> diff --git a/include/drm/Makefile b/include/drm/Makefile
>> new file mode 100644
>> index 000000000000..a7bd15d2803e
>> --- /dev/null
>> +++ b/include/drm/Makefile
>> @@ -0,0 +1,18 @@
>> +# SPDX-License-Identifier: GPL-2.0
>> +
>> +# Ensure drm headers are self-contained and pass kernel-doc
>> +hdrtest-files := \
>> + $(shell cd $(src) && find * -name '*.h' 2>/dev/null)
>> +
>> +always-$(CONFIG_DRM_HEADER_TEST) += \
>> + $(patsubst %.h,%.hdrtest, $(hdrtest-files))
>> +
>> +# Include the header twice to detect missing include guard.
>> +quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
>> + cmd_hdrtest = \
>> + $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
>> + $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
>> + touch $@
>> +
>> +$(obj)/%.hdrtest: $(src)/%.h FORCE
>> + $(call if_changed_dep,hdrtest)
>> --
>> 2.39.5
>>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2025-03-03 10:02 ` Jani Nikula
@ 2025-03-03 12:59 ` Masahiro Yamada
2025-03-03 13:52 ` Jani Nikula
0 siblings, 1 reply; 19+ messages in thread
From: Masahiro Yamada @ 2025-03-03 12:59 UTC (permalink / raw)
To: Jani Nikula
Cc: dri-devel, intel-gfx, intel-xe, simona.vetter, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Linus Torvalds
On Mon, Mar 3, 2025 at 7:02 PM Jani Nikula <jani.nikula@intel.com> wrote:
>
> On Mon, 03 Mar 2025, Masahiro Yamada <masahiroy@kernel.org> wrote:
> > +CC: Linus
> >
> > On Wed, Jan 22, 2025 at 11:41 PM Jani Nikula <jani.nikula@intel.com> wrote:
> >>
> >> Ensure drm headers build, are self-contained, have header guards, and
> >> have no kernel-doc warnings, when CONFIG_DRM_HEADER_TEST=y.
> >>
> >> The mechanism follows similar patters used in i915, xe, and usr/include.
> >>
> >> To cover include/drm, we need to recurse there using the top level
> >> Kbuild and the new include/Kbuild files.
> >
> > NACK.
> >
> > I replied here:
> > https://lore.kernel.org/all/CAK7LNARJgqADxnOXAX49XzDFD4zT=7i8yTB0o=EmNtxmScq8jA@mail.gmail.com/T/#u
>
> I really don't find it fair to completely ignore several pings over an
> extended period of time, and then show up to NAK after the patches have
> been merged.
Sorry, I didn't mean to ignore it - I simply didn't notice it.
I regularly check linux-kbuild and linux-kernel MLs (though I still miss
responding to many emails).
However, I don't check the drm ML at all.
I need to reconsider my email filtering rules, but in reality,
I can't respond to all emails in time.
I believe you are re-adding something Linus was negative about:
https://lore.kernel.org/all/87a7982hwc.fsf@intel.com/
> > I CCed Linus to avoid him accidentally pulling this.
> > He disliked this misfeature.
>
> I believe being able to statically check the headers at build time, both
> by the developers and CI, depending on a config option, makes for a more
> pleasant development experience.
>
> We've had this in i915 and xe for a long time, and we avoid a lot of
> build breakage due to missing includes e.g. while refactoring, and we
> don't get reports about kernel-doc issues either. Because they all fail
> at build, and we catch the issues pre-merge. We skip a whole class of
> merge->dammit->fix cycles with this.
>
> All of the drm headers are clean and pass. We don't add any exception
> lists. It's not enabled by default.
I'm not a big fan of the header tests in i915 and xe.
However, you've built a fence and you are dong what you want
in driver-local Makefiles, so I can't avoid them.
>
> I can appreciate this might not be the best approach for all of
> include/linux, but for include/drm, I think it's definitely a win.
>
> And one of the underlying goals is to make for minimal headers with
> minimal includes and minimal dependencies, preferring forward
> declarations over includes, splitting functionality by header, etc. It's
> just that doing that often leads to broken headers, unless you actually
> build test them... and here we are.
What I learned from my last attempt is that we cannot avoid
false positives without adding a lot of exceptions.
We can never be certain whether you are making DRM headers
self-contained for valid reasons or for hypothetical, invalid ones.
>
> BR,
> Jani.
>
>
> >
> >
> >
> >
> >>
> >> v4: check for CONFIG_WERROR in addition to CONFIG_DRM_WERROR
> >>
> >> v3: adapt to upstream build changes
> >>
> >> v2: make DRM_HEADER_TEST depend on DRM
> >>
> >> Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> >> Cc: David Airlie <airlied@gmail.com>
> >> Cc: Daniel Vetter <daniel@ffwll.ch>
> >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >> Cc: Maxime Ripard <mripard@kernel.org>
> >> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> >> Cc: Masahiro Yamada <masahiroy@kernel.org>
> >> Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> >> ---
> >> Kbuild | 1 +
> >> drivers/gpu/drm/Kconfig | 11 +++++++++++
> >> drivers/gpu/drm/Makefile | 18 ++++++++++++++++++
> >> include/Kbuild | 1 +
> >> include/drm/Makefile | 18 ++++++++++++++++++
> >> 5 files changed, 49 insertions(+)
> >> create mode 100644 include/Kbuild
> >> create mode 100644 include/drm/Makefile
> >>
> >> diff --git a/Kbuild b/Kbuild
> >> index 464b34a08f51..f327ca86990c 100644
> >> --- a/Kbuild
> >> +++ b/Kbuild
> >> @@ -97,3 +97,4 @@ obj-$(CONFIG_SAMPLES) += samples/
> >> obj-$(CONFIG_NET) += net/
> >> obj-y += virt/
> >> obj-y += $(ARCH_DRIVERS)
> >> +obj-$(CONFIG_DRM_HEADER_TEST) += include/
> >> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> >> index fbef3f471bd0..f9b3ebf63fa9 100644
> >> --- a/drivers/gpu/drm/Kconfig
> >> +++ b/drivers/gpu/drm/Kconfig
> >> @@ -494,6 +494,17 @@ config DRM_WERROR
> >>
> >> If in doubt, say N.
> >>
> >> +config DRM_HEADER_TEST
> >> + bool "Ensure DRM headers are self-contained and pass kernel-doc"
> >> + depends on DRM && EXPERT
> >> + default n
> >> + help
> >> + Ensure the DRM subsystem headers both under drivers/gpu/drm and
> >> + include/drm compile, are self-contained, have header guards, and have
> >> + no kernel-doc warnings.
> >> +
> >> + If in doubt, say N.
> >> +
> >> endif
> >>
> >> # Separate option because drm_panel_orientation_quirks.c is shared with fbdev
> >> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> >> index 85af94bb907d..42901f877bf2 100644
> >> --- a/drivers/gpu/drm/Makefile
> >> +++ b/drivers/gpu/drm/Makefile
> >> @@ -222,3 +222,21 @@ obj-y += solomon/
> >> obj-$(CONFIG_DRM_SPRD) += sprd/
> >> obj-$(CONFIG_DRM_LOONGSON) += loongson/
> >> obj-$(CONFIG_DRM_POWERVR) += imagination/
> >> +
> >> +# Ensure drm headers are self-contained and pass kernel-doc
> >> +hdrtest-files := \
> >> + $(shell cd $(src) && find . -maxdepth 1 -name 'drm_*.h') \
> >> + $(shell cd $(src) && find display lib -name '*.h')
> >> +
> >> +always-$(CONFIG_DRM_HEADER_TEST) += \
> >> + $(patsubst %.h,%.hdrtest, $(hdrtest-files))
> >> +
> >> +# Include the header twice to detect missing include guard.
> >> +quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
> >> + cmd_hdrtest = \
> >> + $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
> >> + $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
> >> + touch $@
> >> +
> >> +$(obj)/%.hdrtest: $(src)/%.h FORCE
> >> + $(call if_changed_dep,hdrtest)
> >> diff --git a/include/Kbuild b/include/Kbuild
> >> new file mode 100644
> >> index 000000000000..5e76a599e2dd
> >> --- /dev/null
> >> +++ b/include/Kbuild
> >> @@ -0,0 +1 @@
> >> +obj-$(CONFIG_DRM_HEADER_TEST) += drm/
> >> diff --git a/include/drm/Makefile b/include/drm/Makefile
> >> new file mode 100644
> >> index 000000000000..a7bd15d2803e
> >> --- /dev/null
> >> +++ b/include/drm/Makefile
> >> @@ -0,0 +1,18 @@
> >> +# SPDX-License-Identifier: GPL-2.0
> >> +
> >> +# Ensure drm headers are self-contained and pass kernel-doc
> >> +hdrtest-files := \
> >> + $(shell cd $(src) && find * -name '*.h' 2>/dev/null)
> >> +
> >> +always-$(CONFIG_DRM_HEADER_TEST) += \
> >> + $(patsubst %.h,%.hdrtest, $(hdrtest-files))
> >> +
> >> +# Include the header twice to detect missing include guard.
> >> +quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
> >> + cmd_hdrtest = \
> >> + $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
> >> + $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
> >> + touch $@
> >> +
> >> +$(obj)/%.hdrtest: $(src)/%.h FORCE
> >> + $(call if_changed_dep,hdrtest)
> >> --
> >> 2.39.5
> >>
>
> --
> Jani Nikula, Intel
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2025-03-03 12:59 ` Masahiro Yamada
@ 2025-03-03 13:52 ` Jani Nikula
2025-03-04 18:05 ` Masahiro Yamada
0 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2025-03-03 13:52 UTC (permalink / raw)
To: Masahiro Yamada
Cc: dri-devel, intel-gfx, intel-xe, simona.vetter, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Linus Torvalds
On Mon, 03 Mar 2025, Masahiro Yamada <masahiroy@kernel.org> wrote:
> On Mon, Mar 3, 2025 at 7:02 PM Jani Nikula <jani.nikula@intel.com> wrote:
>>
>> On Mon, 03 Mar 2025, Masahiro Yamada <masahiroy@kernel.org> wrote:
>> And one of the underlying goals is to make for minimal headers with
>> minimal includes and minimal dependencies, preferring forward
>> declarations over includes, splitting functionality by header, etc. It's
>> just that doing that often leads to broken headers, unless you actually
>> build test them... and here we are.
>
>
> What I learned from my last attempt is that we cannot avoid
> false positives without adding a lot of exceptions.
All of the drm core, xe and i915 headers build fine without
exceptions. There are no false positives. (*)
> We can never be certain whether you are making DRM headers
> self-contained for valid reasons or for hypothetical, invalid ones.
Please enlighten me. What are hypothetical, invalid reasons for making
headers self-contained?
IMO headers should almost invariably be self-contained, instead of
putting the burden on their users to include other headers to make it
work. It's a PITA in a project the size of the kernel, or even just the
drm subsystem, to track these cases when you modify includes in either
users or the headers being included.
The exception to this are headers that are not to be included directly
by users, but rather by other headers as an implementation detail. There
may be such cases in include/linux, but not under include/drm.
BR,
Jani.
(*) Fine, there's one *intentional* special case in i915.
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2025-03-03 13:52 ` Jani Nikula
@ 2025-03-04 18:05 ` Masahiro Yamada
2025-03-05 13:59 ` Maxime Ripard
0 siblings, 1 reply; 19+ messages in thread
From: Masahiro Yamada @ 2025-03-04 18:05 UTC (permalink / raw)
To: Jani Nikula
Cc: dri-devel, intel-gfx, intel-xe, simona.vetter, Daniel Vetter,
David Airlie, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Linus Torvalds
On Mon, Mar 3, 2025 at 10:53 PM Jani Nikula <jani.nikula@intel.com> wrote:
>
> On Mon, 03 Mar 2025, Masahiro Yamada <masahiroy@kernel.org> wrote:
> > On Mon, Mar 3, 2025 at 7:02 PM Jani Nikula <jani.nikula@intel.com> wrote:
> >>
> >> On Mon, 03 Mar 2025, Masahiro Yamada <masahiroy@kernel.org> wrote:
> >> And one of the underlying goals is to make for minimal headers with
> >> minimal includes and minimal dependencies, preferring forward
> >> declarations over includes, splitting functionality by header, etc. It's
> >> just that doing that often leads to broken headers, unless you actually
> >> build test them... and here we are.
> >
> >
> > What I learned from my last attempt is that we cannot avoid
> > false positives without adding a lot of exceptions.
>
> All of the drm core, xe and i915 headers build fine without
> exceptions. There are no false positives. (*)
>
> > We can never be certain whether you are making DRM headers
> > self-contained for valid reasons or for hypothetical, invalid ones.
>
> Please enlighten me. What are hypothetical, invalid reasons for making
> headers self-contained?
See this thread:
https://lore.kernel.org/all/20190718130835.GA28520@lst.de/
When CONFIG_BLOCK=n, it does not make sense to
ensure <linux/iomap.h> is self-contained.
This is just one example.
I am pretty sure I observed more false-positives
in header compile tests.
>
> IMO headers should almost invariably be self-contained, instead of
> putting the burden on their users to include other headers to make it
> work. It's a PITA in a project the size of the kernel, or even just the
> drm subsystem, to track these cases when you modify includes in either
> users or the headers being included.
>
> The exception to this are headers that are not to be included directly
> by users, but rather by other headers as an implementation detail. There
> may be such cases in include/linux, but not under include/drm.
This results in a false check for include/linux/.
I don’t see much sense in doing this exceptionally for include/drm/
after we've learned that it doesn't work globally.
>
> BR,
> Jani.
>
>
> (*) Fine, there's one *intentional* special case in i915.
>
> --
> Jani Nikula, Intel
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2025-03-04 18:05 ` Masahiro Yamada
@ 2025-03-05 13:59 ` Maxime Ripard
2025-03-08 17:05 ` Masahiro Yamada
0 siblings, 1 reply; 19+ messages in thread
From: Maxime Ripard @ 2025-03-05 13:59 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Jani Nikula, dri-devel, intel-gfx, intel-xe, simona.vetter,
Daniel Vetter, David Airlie, Maarten Lankhorst, Thomas Zimmermann,
Linus Torvalds
[-- Attachment #1: Type: text/plain, Size: 1308 bytes --]
On Wed, Mar 05, 2025 at 03:05:25AM +0900, Masahiro Yamada wrote:
> > IMO headers should almost invariably be self-contained, instead of
> > putting the burden on their users to include other headers to make it
> > work. It's a PITA in a project the size of the kernel, or even just the
> > drm subsystem, to track these cases when you modify includes in either
> > users or the headers being included.
> >
> > The exception to this are headers that are not to be included directly
> > by users, but rather by other headers as an implementation detail. There
> > may be such cases in include/linux, but not under include/drm.
>
> This results in a false check for include/linux/.
>
> I don’t see much sense in doing this exceptionally for include/drm/
> after we've learned that it doesn't work globally.
As far as I'm concerned, I find this extremely helpful for DRM. If only
to ensure that the huge amount of work that went into cleaning up our
headers doesn't get lost.
Nobody here claims that it should be enabled globally, just that it
should be enabled for DRM. We already have plenty of exceptions like
that for compiler flags, checkpatch, contribution process, etc. so I'm
not sure why those would be ok, but additional checks limited to a
subsystem wouldn't.
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2025-03-05 13:59 ` Maxime Ripard
@ 2025-03-08 17:05 ` Masahiro Yamada
2025-03-13 10:59 ` Jani Nikula
0 siblings, 1 reply; 19+ messages in thread
From: Masahiro Yamada @ 2025-03-08 17:05 UTC (permalink / raw)
To: Maxime Ripard
Cc: Jani Nikula, dri-devel, intel-gfx, intel-xe, simona.vetter,
Daniel Vetter, David Airlie, Maarten Lankhorst, Thomas Zimmermann,
Linus Torvalds
On Wed, Mar 5, 2025 at 10:59 PM Maxime Ripard <mripard@kernel.org> wrote:
>
> On Wed, Mar 05, 2025 at 03:05:25AM +0900, Masahiro Yamada wrote:
> > > IMO headers should almost invariably be self-contained, instead of
> > > putting the burden on their users to include other headers to make it
> > > work. It's a PITA in a project the size of the kernel, or even just the
> > > drm subsystem, to track these cases when you modify includes in either
> > > users or the headers being included.
> > >
> > > The exception to this are headers that are not to be included directly
> > > by users, but rather by other headers as an implementation detail. There
> > > may be such cases in include/linux, but not under include/drm.
> >
> > This results in a false check for include/linux/.
> >
> > I don’t see much sense in doing this exceptionally for include/drm/
> > after we've learned that it doesn't work globally.
>
> As far as I'm concerned, I find this extremely helpful for DRM. If only
> to ensure that the huge amount of work that went into cleaning up our
> headers doesn't get lost.
>
> Nobody here claims that it should be enabled globally, just that it
> should be enabled for DRM. We already have plenty of exceptions like
> that for compiler flags, checkpatch, contribution process, etc. so I'm
> not sure why those would be ok, but additional checks limited to a
> subsystem wouldn't.
>
> Maxime
Because we learned this feature is broken.
It was broken under include/linux/, so it will be broken under include/drm/ too.
Headers are included conditionally.
There is no need to make them self-contained in all cases
by compile-testing every header detected by the 'find' command.
I am very negative about this patch.
I hope the upstream maintainers and Linus will not pull this.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc
2025-03-08 17:05 ` Masahiro Yamada
@ 2025-03-13 10:59 ` Jani Nikula
0 siblings, 0 replies; 19+ messages in thread
From: Jani Nikula @ 2025-03-13 10:59 UTC (permalink / raw)
To: Masahiro Yamada, Maxime Ripard
Cc: dri-devel, intel-gfx, intel-xe, simona.vetter, Daniel Vetter,
David Airlie, Maarten Lankhorst, Thomas Zimmermann,
Linus Torvalds
On Sun, 09 Mar 2025, Masahiro Yamada <masahiroy@kernel.org> wrote:
> On Wed, Mar 5, 2025 at 10:59 PM Maxime Ripard <mripard@kernel.org> wrote:
>> As far as I'm concerned, I find this extremely helpful for DRM. If only
>> to ensure that the huge amount of work that went into cleaning up our
>> headers doesn't get lost.
>>
>> Nobody here claims that it should be enabled globally, just that it
>> should be enabled for DRM. We already have plenty of exceptions like
>> that for compiler flags, checkpatch, contribution process, etc. so I'm
>> not sure why those would be ok, but additional checks limited to a
>> subsystem wouldn't.
>>
>> Maxime
>
> Because we learned this feature is broken.
> It was broken under include/linux/, so it will be broken under include/drm/ too.
I don't think that's a valid conclusion.
BR,
Jani.
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2025-03-13 10:59 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-22 14:41 [PATCH 0/2] drm: add header tests Jani Nikula
2025-01-22 14:41 ` [PATCH 1/2] drm/client: include types.h to make drm_client_event.h self-contained Jani Nikula
2025-01-22 14:41 ` [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc Jani Nikula
2025-03-02 16:01 ` Masahiro Yamada
2025-03-03 10:02 ` Jani Nikula
2025-03-03 12:59 ` Masahiro Yamada
2025-03-03 13:52 ` Jani Nikula
2025-03-04 18:05 ` Masahiro Yamada
2025-03-05 13:59 ` Maxime Ripard
2025-03-08 17:05 ` Masahiro Yamada
2025-03-13 10:59 ` Jani Nikula
2025-01-22 15:23 ` ✗ Fi.CI.CHECKPATCH: warning for drm: add header tests Patchwork
2025-01-22 15:23 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-01-22 15:37 ` ✗ i915.CI.BAT: failure " Patchwork
2025-01-23 14:55 ` [PATCH 0/2] " Simona Vetter
2025-02-12 10:26 ` Jani Nikula
-- strict thread matches above, loose matches on Subject: below --
2024-08-23 14:11 [PATCH 1/2] drm/ttm: fix kernel-doc typo for @trylock_only Jani Nikula
2024-08-23 14:11 ` [PATCH 2/2] drm: ensure drm headers are self-contained and pass kernel-doc Jani Nikula
2024-08-26 16:05 ` kernel test robot
2024-08-26 22:28 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox