* Re: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
[not found] <20231005140730.2191134-1-ryan.roberts@arm.com>
@ 2023-10-13 21:15 ` kernel test robot
2023-10-16 17:54 ` Catalin Marinas
0 siblings, 1 reply; 6+ messages in thread
From: kernel test robot @ 2023-10-13 21:15 UTC (permalink / raw)
To: Ryan Roberts, Catalin Marinas, Will Deacon, Steven Price,
Peter Collingbourne
Cc: llvm, oe-kbuild-all, Ryan Roberts, linux-arm-kernel, linux-kernel
Hi Ryan,
kernel test robot noticed the following build warnings:
[auto build test WARNING on arm64/for-next/core]
[also build test WARNING on arm-perf/for-next/perf arm/for-next kvmarm/next soc/for-next linus/master v6.6-rc5 next-20231013]
[cannot apply to arm/fixes]
[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/Ryan-Roberts/arm64-mm-Hoist-synchronization-out-of-set_ptes-loop/20231005-231636
base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
patch link: https://lore.kernel.org/r/20231005140730.2191134-1-ryan.roberts%40arm.com
patch subject: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-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/202310140531.BQQwt3NQ-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from net/ipv4/route.c:66:
In file included from include/linux/mm.h:29:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
1 warning generated.
--
In file included from sound/soc/qcom/qdsp6/q6apm-dai.c:9:
In file included from include/sound/soc.h:18:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/arm64/include/asm/hardirq.h:17:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/arm64/include/asm/io.h:12:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
sound/soc/qcom/qdsp6/q6apm-dai.c:355:38: warning: cast from 'void (*)(uint32_t, uint32_t, uint32_t *, void *)' (aka 'void (*)(unsigned int, unsigned int, unsigned int *, void *)') to 'q6apm_cb' (aka 'void (*)(unsigned int, unsigned int, void *, void *)') converts to incompatible function type [-Wcast-function-type-strict]
355 | prtd->graph = q6apm_graph_open(dev, (q6apm_cb)event_handler, prtd, graph_id);
| ^~~~~~~~~~~~~~~~~~~~~~~
sound/soc/qcom/qdsp6/q6apm-dai.c:499:38: warning: cast from 'void (*)(uint32_t, uint32_t, uint32_t *, void *)' (aka 'void (*)(unsigned int, unsigned int, unsigned int *, void *)') to 'q6apm_cb' (aka 'void (*)(unsigned int, unsigned int, void *, void *)') converts to incompatible function type [-Wcast-function-type-strict]
499 | prtd->graph = q6apm_graph_open(dev, (q6apm_cb)event_handler_compr, prtd, graph_id);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 warnings generated.
--
In file included from arch/arm64/kernel/mte.c:9:
In file included from include/linux/mm.h:29:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
arch/arm64/kernel/mte.c:79:20: warning: unused function '__mte_enable_kernel' [-Wunused-function]
79 | static inline void __mte_enable_kernel(const char *mode, unsigned long tcf)
| ^
2 warnings generated.
--
In file included from drivers/gpu/drm/radeon/radeon_ttm.c:33:
In file included from include/linux/dma-mapping.h:11:
In file included from include/linux/scatterlist.h:8:
In file included from include/linux/mm.h:29:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
drivers/gpu/drm/radeon/radeon_ttm.c:200:20: warning: variable 'rbo' set but not used [-Wunused-but-set-variable]
200 | struct radeon_bo *rbo;
| ^
2 warnings generated.
--
In file included from drivers/gpu/drm/kmb/kmb_dsi.c:12:
In file included from include/linux/regmap.h:20:
In file included from include/linux/iopoll.h:14:
In file included from include/linux/io.h:13:
In file included from arch/arm64/include/asm/io.h:12:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
drivers/gpu/drm/kmb/kmb_dsi.c:822:2: warning: unused function 'set_test_mode_src_osc_freq_target_low_bits' [-Wunused-function]
822 | set_test_mode_src_osc_freq_target_low_bits(struct kmb_dsi *kmb_dsi,
| ^
drivers/gpu/drm/kmb/kmb_dsi.c:834:2: warning: unused function 'set_test_mode_src_osc_freq_target_hi_bits' [-Wunused-function]
834 | set_test_mode_src_osc_freq_target_hi_bits(struct kmb_dsi *kmb_dsi,
| ^
3 warnings generated.
--
In file included from drivers/gpu/drm/nouveau/nouveau_svm.c:22:
In file included from drivers/gpu/drm/nouveau/nouveau_svm.h:3:
In file included from drivers/gpu/drm/nouveau/include/nvif/os.h:8:
In file included from include/linux/pci.h:38:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/arm64/include/asm/hardirq.h:17:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/arm64/include/asm/io.h:12:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
drivers/gpu/drm/nouveau/nouveau_svm.c:115:24: warning: variable 'priority' set but not used [-Wunused-but-set-variable]
115 | unsigned target, cmd, priority;
| ^
drivers/gpu/drm/nouveau/nouveau_svm.c:929:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
929 | int ret;
| ^
3 warnings generated.
--
In file included from drivers/gpu/drm/nouveau/nouveau_connector.c:30:
In file included from include/linux/vga_switcheroo.h:34:
In file included from include/linux/fb.h:6:
In file included from include/linux/kgdb.h:19:
In file included from include/linux/kprobes.h:28:
In file included from include/linux/ftrace.h:10:
In file included from include/linux/trace_recursion.h:5:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/arm64/include/asm/hardirq.h:17:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/arm64/include/asm/io.h:12:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
drivers/gpu/drm/nouveau/nouveau_connector.c:1301:7: warning: variable 'entry' set but not used [-Wunused-but-set-variable]
1301 | u32 entry = ROM16(nv_connector->dcb[0]);
| ^
2 warnings generated.
--
In file included from drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:22:
In file included from drivers/gpu/drm/nouveau/nvkm/subdev/acr/priv.h:3:
In file included from drivers/gpu/drm/nouveau/include/nvkm/subdev/acr.h:5:
In file included from drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h:4:
In file included from drivers/gpu/drm/nouveau/include/nvkm/core/device.h:4:
In file included from drivers/gpu/drm/nouveau/include/nvkm/core/oclass.h:3:
In file included from drivers/gpu/drm/nouveau/include/nvkm/core/os.h:4:
In file included from drivers/gpu/drm/nouveau/include/nvif/os.h:8:
In file included from include/linux/pci.h:38:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/arm64/include/asm/hardirq.h:17:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/arm64/include/asm/io.h:12:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:221:7: warning: variable 'loc' set but not used [-Wunused-but-set-variable]
221 | u32 loc, sig, cnt, *meta;
| ^
2 warnings generated.
--
In file included from drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c:24:
In file included from drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h:5:
In file included from drivers/gpu/drm/nouveau/include/nvkm/subdev/bios.h:4:
In file included from drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h:4:
In file included from drivers/gpu/drm/nouveau/include/nvkm/core/device.h:4:
In file included from drivers/gpu/drm/nouveau/include/nvkm/core/oclass.h:3:
In file included from drivers/gpu/drm/nouveau/include/nvkm/core/os.h:4:
In file included from drivers/gpu/drm/nouveau/include/nvif/os.h:8:
In file included from include/linux/pci.h:38:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/arm64/include/asm/hardirq.h:17:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/arm64/include/asm/io.h:12:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c:161:10: warning: cast from 'void (*)(const struct firmware *)' to 'void (*)(void *)' converts to incompatible function type [-Wcast-function-type-strict]
161 | .fini = (void(*)(void *))release_firmware,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
--
In file included from drivers/gpu/drm/renesas/rcar-du/rcar_cmm.c:8:
In file included from include/linux/io.h:13:
In file included from arch/arm64/include/asm/io.h:12:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
drivers/gpu/drm/renesas/rcar-du/rcar_cmm.c:35:19: warning: unused function 'rcar_cmm_read' [-Wunused-function]
35 | static inline int rcar_cmm_read(struct rcar_cmm *rcmm, u32 reg)
| ^
2 warnings generated.
--
In file included from drivers/gpu/drm/qxl/qxl_cmd.c:30:
In file included from include/drm/drm_util.h:35:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/arm64/include/asm/hardirq.h:17:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/arm64/include/asm/io.h:12:
In file included from include/linux/pgtable.h:6:
>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^
drivers/gpu/drm/qxl/qxl_cmd.c:424:6: warning: variable 'count' set but not used [-Wunused-but-set-variable]
424 | int count = 0;
| ^
2 warnings generated.
..
vim +/addr +344 arch/arm64/include/asm/pgtable.h
4f04d8f0054511 Catalin Marinas 2012-03-05 343
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 @344) static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 345) pte_t *ptep, pte_t pte, unsigned int nr)
42b2547137f5c9 Kefeng Wang 2022-05-12 346 {
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 347) page_table_check_ptes_set(mm, ptep, pte, nr);
3ba82bb647345d Ryan Roberts 2023-10-05 348 __sync_cache_and_tags(pte, nr);
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 349)
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 350) for (;;) {
3ba82bb647345d Ryan Roberts 2023-10-05 351 __check_safe_pte_update(mm, ptep, pte);
3ba82bb647345d Ryan Roberts 2023-10-05 352 set_pte(ptep, pte);
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 353) if (--nr == 0)
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 354) break;
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 355) ptep++;
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 356) addr += PAGE_SIZE;
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 357) pte_val(pte) += PAGE_SIZE;
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 358) }
42b2547137f5c9 Kefeng Wang 2022-05-12 359 }
4a169d61c2ede9 Matthew Wilcox (Oracle 2023-08-02 360) #define set_ptes set_ptes
42b2547137f5c9 Kefeng Wang 2022-05-12 361
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
2023-10-13 21:15 ` [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop kernel test robot
@ 2023-10-16 17:54 ` Catalin Marinas
2023-10-17 7:36 ` Ryan Roberts
0 siblings, 1 reply; 6+ messages in thread
From: Catalin Marinas @ 2023-10-16 17:54 UTC (permalink / raw)
To: kernel test robot
Cc: Ryan Roberts, Will Deacon, Steven Price, Peter Collingbourne,
llvm, oe-kbuild-all, linux-arm-kernel, linux-kernel
On Sat, Oct 14, 2023 at 05:15:51AM +0800, kernel test robot wrote:
> kernel test robot noticed the following build warnings:
>
> [auto build test WARNING on arm64/for-next/core]
> [also build test WARNING on arm-perf/for-next/perf arm/for-next kvmarm/next soc/for-next linus/master v6.6-rc5 next-20231013]
> [cannot apply to arm/fixes]
> [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/Ryan-Roberts/arm64-mm-Hoist-synchronization-out-of-set_ptes-loop/20231005-231636
> base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
> patch link: https://lore.kernel.org/r/20231005140730.2191134-1-ryan.roberts%40arm.com
> patch subject: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
> config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-lkp@intel.com/config)
> compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-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/202310140531.BQQwt3NQ-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
> In file included from net/ipv4/route.c:66:
> In file included from include/linux/mm.h:29:
> In file included from include/linux/pgtable.h:6:
> >> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
> 344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
> | ^
> 1 warning generated.
Thanks for the report. I think something like below will do (I'll test
and commit as a separate patch, it's not something that Ryan's patch
introduces):
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 68984ba9ce2a..b19a8aee684c 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -341,8 +341,9 @@ static inline void __sync_cache_and_tags(pte_t pte, unsigned int nr_pages)
mte_sync_tags(pte, nr_pages);
}
-static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep, pte_t pte, unsigned int nr)
+static inline void set_ptes(struct mm_struct *mm,
+ unsigned long __always_unused addr,
+ pte_t *ptep, pte_t pte, unsigned int nr)
{
page_table_check_ptes_set(mm, ptep, pte, nr);
__sync_cache_and_tags(pte, nr);
@@ -353,7 +354,6 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
if (--nr == 0)
break;
ptep++;
- addr += PAGE_SIZE;
pte_val(pte) += PAGE_SIZE;
}
}
@@ -528,7 +528,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd)
#define pud_pfn(pud) ((__pud_to_phys(pud) & PUD_MASK) >> PAGE_SHIFT)
#define pfn_pud(pfn,prot) __pud(__phys_to_pud_val((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot))
-static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
+static inline void __set_pte_at(struct mm_struct *mm,
+ unsigned long __always_unused addr,
pte_t *ptep, pte_t pte, unsigned int nr)
{
__sync_cache_and_tags(pte, nr);
--
Catalin
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
2023-10-16 17:54 ` Catalin Marinas
@ 2023-10-17 7:36 ` Ryan Roberts
2023-10-17 12:57 ` Catalin Marinas
0 siblings, 1 reply; 6+ messages in thread
From: Ryan Roberts @ 2023-10-17 7:36 UTC (permalink / raw)
To: Catalin Marinas, kernel test robot
Cc: Will Deacon, Steven Price, Peter Collingbourne, llvm,
oe-kbuild-all, linux-arm-kernel, linux-kernel
On 16/10/2023 18:54, Catalin Marinas wrote:
> On Sat, Oct 14, 2023 at 05:15:51AM +0800, kernel test robot wrote:
>> kernel test robot noticed the following build warnings:
>>
>> [auto build test WARNING on arm64/for-next/core]
>> [also build test WARNING on arm-perf/for-next/perf arm/for-next kvmarm/next soc/for-next linus/master v6.6-rc5 next-20231013]
>> [cannot apply to arm/fixes]
>> [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/Ryan-Roberts/arm64-mm-Hoist-synchronization-out-of-set_ptes-loop/20231005-231636
>> base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
>> patch link: https://lore.kernel.org/r/20231005140730.2191134-1-ryan.roberts%40arm.com
>> patch subject: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
>> config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-lkp@intel.com/config)
>> compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
>> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-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/202310140531.BQQwt3NQ-lkp@intel.com/
>>
>> All warnings (new ones prefixed by >>):
>>
>> In file included from net/ipv4/route.c:66:
>> In file included from include/linux/mm.h:29:
>> In file included from include/linux/pgtable.h:6:
>>>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
>> 344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
>> | ^
>> 1 warning generated.
>
> Thanks for the report. I think something like below will do (I'll test
> and commit as a separate patch, it's not something that Ryan's patch
> introduces):
I was actually just trying to repro this and was planning to send out a v3 of my
patch. But if you are happy to handle it as you suggest, then I guess you don't
need anything further from me?
Thanks,
Ryan
>
> diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
> index 68984ba9ce2a..b19a8aee684c 100644
> --- a/arch/arm64/include/asm/pgtable.h
> +++ b/arch/arm64/include/asm/pgtable.h
> @@ -341,8 +341,9 @@ static inline void __sync_cache_and_tags(pte_t pte, unsigned int nr_pages)
> mte_sync_tags(pte, nr_pages);
> }
>
> -static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
> - pte_t *ptep, pte_t pte, unsigned int nr)
> +static inline void set_ptes(struct mm_struct *mm,
> + unsigned long __always_unused addr,
> + pte_t *ptep, pte_t pte, unsigned int nr)
> {
> page_table_check_ptes_set(mm, ptep, pte, nr);
> __sync_cache_and_tags(pte, nr);
> @@ -353,7 +354,6 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
> if (--nr == 0)
> break;
> ptep++;
> - addr += PAGE_SIZE;
> pte_val(pte) += PAGE_SIZE;
> }
> }
> @@ -528,7 +528,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd)
> #define pud_pfn(pud) ((__pud_to_phys(pud) & PUD_MASK) >> PAGE_SHIFT)
> #define pfn_pud(pfn,prot) __pud(__phys_to_pud_val((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot))
>
> -static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
> +static inline void __set_pte_at(struct mm_struct *mm,
> + unsigned long __always_unused addr,
> pte_t *ptep, pte_t pte, unsigned int nr)
> {
> __sync_cache_and_tags(pte, nr);
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
2023-10-17 7:36 ` Ryan Roberts
@ 2023-10-17 12:57 ` Catalin Marinas
2023-10-18 8:21 ` Ryan Roberts
0 siblings, 1 reply; 6+ messages in thread
From: Catalin Marinas @ 2023-10-17 12:57 UTC (permalink / raw)
To: Ryan Roberts
Cc: kernel test robot, Will Deacon, Steven Price, Peter Collingbourne,
llvm, oe-kbuild-all, linux-arm-kernel, linux-kernel
On Tue, Oct 17, 2023 at 08:36:43AM +0100, Ryan Roberts wrote:
> On 16/10/2023 18:54, Catalin Marinas wrote:
> > On Sat, Oct 14, 2023 at 05:15:51AM +0800, kernel test robot wrote:
> >> kernel test robot noticed the following build warnings:
> >>
> >> [auto build test WARNING on arm64/for-next/core]
> >> [also build test WARNING on arm-perf/for-next/perf arm/for-next kvmarm/next soc/for-next linus/master v6.6-rc5 next-20231013]
> >> [cannot apply to arm/fixes]
> >> [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/Ryan-Roberts/arm64-mm-Hoist-synchronization-out-of-set_ptes-loop/20231005-231636
> >> base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
> >> patch link: https://lore.kernel.org/r/20231005140730.2191134-1-ryan.roberts%40arm.com
> >> patch subject: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
> >> config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-lkp@intel.com/config)
> >> compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
> >> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-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/202310140531.BQQwt3NQ-lkp@intel.com/
> >>
> >> All warnings (new ones prefixed by >>):
> >>
> >> In file included from net/ipv4/route.c:66:
> >> In file included from include/linux/mm.h:29:
> >> In file included from include/linux/pgtable.h:6:
> >>>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
> >> 344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
> >> | ^
> >> 1 warning generated.
> >
> > Thanks for the report. I think something like below will do (I'll test
> > and commit as a separate patch, it's not something that Ryan's patch
> > introduces):
>
> I was actually just trying to repro this and was planning to send out a v3 of my
> patch. But if you are happy to handle it as you suggest, then I guess you don't
> need anything further from me?
If you feel like testing, please give this a go ;)
------------8<---------------------------
From e6255237acfc21e92252653c3ed42446ef67f625 Mon Sep 17 00:00:00 2001
From: Catalin Marinas <catalin.marinas@arm.com>
Date: Tue, 17 Oct 2023 11:57:55 +0100
Subject: [PATCH] arm64: Mark the 'addr' argument to set_ptes() and
__set_pte_at() as unused
This argument is not used by the arm64 implementation. Mark it as
__always_unused and also remove the unnecessary 'addr' increment in
set_ptes().
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202310140531.BQQwt3NQ-lkp@intel.com/
Cc: Will Deacon <will@kernel.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>
---
arch/arm64/include/asm/pgtable.h | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 68984ba9ce2a..b19a8aee684c 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -341,8 +341,9 @@ static inline void __sync_cache_and_tags(pte_t pte, unsigned int nr_pages)
mte_sync_tags(pte, nr_pages);
}
-static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep, pte_t pte, unsigned int nr)
+static inline void set_ptes(struct mm_struct *mm,
+ unsigned long __always_unused addr,
+ pte_t *ptep, pte_t pte, unsigned int nr)
{
page_table_check_ptes_set(mm, ptep, pte, nr);
__sync_cache_and_tags(pte, nr);
@@ -353,7 +354,6 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
if (--nr == 0)
break;
ptep++;
- addr += PAGE_SIZE;
pte_val(pte) += PAGE_SIZE;
}
}
@@ -528,7 +528,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd)
#define pud_pfn(pud) ((__pud_to_phys(pud) & PUD_MASK) >> PAGE_SHIFT)
#define pfn_pud(pfn,prot) __pud(__phys_to_pud_val((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot))
-static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
+static inline void __set_pte_at(struct mm_struct *mm,
+ unsigned long __always_unused addr,
pte_t *ptep, pte_t pte, unsigned int nr)
{
__sync_cache_and_tags(pte, nr);
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
2023-10-17 12:57 ` Catalin Marinas
@ 2023-10-18 8:21 ` Ryan Roberts
2023-10-18 9:36 ` Catalin Marinas
0 siblings, 1 reply; 6+ messages in thread
From: Ryan Roberts @ 2023-10-18 8:21 UTC (permalink / raw)
To: Catalin Marinas
Cc: kernel test robot, Will Deacon, Steven Price, Peter Collingbourne,
llvm, oe-kbuild-all, linux-arm-kernel, linux-kernel
On 17/10/2023 13:57, Catalin Marinas wrote:
> On Tue, Oct 17, 2023 at 08:36:43AM +0100, Ryan Roberts wrote:
>> On 16/10/2023 18:54, Catalin Marinas wrote:
>>> On Sat, Oct 14, 2023 at 05:15:51AM +0800, kernel test robot wrote:
>>>> kernel test robot noticed the following build warnings:
>>>>
>>>> [auto build test WARNING on arm64/for-next/core]
>>>> [also build test WARNING on arm-perf/for-next/perf arm/for-next kvmarm/next soc/for-next linus/master v6.6-rc5 next-20231013]
>>>> [cannot apply to arm/fixes]
>>>> [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/Ryan-Roberts/arm64-mm-Hoist-synchronization-out-of-set_ptes-loop/20231005-231636
>>>> base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
>>>> patch link: https://lore.kernel.org/r/20231005140730.2191134-1-ryan.roberts%40arm.com
>>>> patch subject: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
>>>> config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-lkp@intel.com/config)
>>>> compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
>>>> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-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/202310140531.BQQwt3NQ-lkp@intel.com/
>>>>
>>>> All warnings (new ones prefixed by >>):
>>>>
>>>> In file included from net/ipv4/route.c:66:
>>>> In file included from include/linux/mm.h:29:
>>>> In file included from include/linux/pgtable.h:6:
>>>>>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
>>>> 344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
>>>> | ^
>>>> 1 warning generated.
>>>
>>> Thanks for the report. I think something like below will do (I'll test
>>> and commit as a separate patch, it's not something that Ryan's patch
>>> introduces):
>>
>> I was actually just trying to repro this and was planning to send out a v3 of my
>> patch. But if you are happy to handle it as you suggest, then I guess you don't
>> need anything further from me?
>
> If you feel like testing, please give this a go ;)
Compile tested and observed that warning is gone with your change. Also ran mm
selftests and all looks good. So:
Tested-by: Ryan Roberts <ryan.roberts@arm.com>
>
> ------------8<---------------------------
> From e6255237acfc21e92252653c3ed42446ef67f625 Mon Sep 17 00:00:00 2001
> From: Catalin Marinas <catalin.marinas@arm.com>
> Date: Tue, 17 Oct 2023 11:57:55 +0100
> Subject: [PATCH] arm64: Mark the 'addr' argument to set_ptes() and
> __set_pte_at() as unused
>
> This argument is not used by the arm64 implementation. Mark it as
> __always_unused and also remove the unnecessary 'addr' increment in
> set_ptes().
>
> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202310140531.BQQwt3NQ-lkp@intel.com/
> Cc: Will Deacon <will@kernel.org>
> Cc: Ryan Roberts <ryan.roberts@arm.com>
> ---
> arch/arm64/include/asm/pgtable.h | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
> index 68984ba9ce2a..b19a8aee684c 100644
> --- a/arch/arm64/include/asm/pgtable.h
> +++ b/arch/arm64/include/asm/pgtable.h
> @@ -341,8 +341,9 @@ static inline void __sync_cache_and_tags(pte_t pte, unsigned int nr_pages)
> mte_sync_tags(pte, nr_pages);
> }
>
> -static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
> - pte_t *ptep, pte_t pte, unsigned int nr)
> +static inline void set_ptes(struct mm_struct *mm,
> + unsigned long __always_unused addr,
Personally I'm not a huge fan of the __always_unused mark up, given that it's
used so patchily in the source. The warning also disappears without these
markups. (the real problem is just the `addr += PAGE_SIZE` below.
Thanks,
Ryan
> + pte_t *ptep, pte_t pte, unsigned int nr)
> {
> page_table_check_ptes_set(mm, ptep, pte, nr);
> __sync_cache_and_tags(pte, nr);
> @@ -353,7 +354,6 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
> if (--nr == 0)
> break;
> ptep++;
> - addr += PAGE_SIZE;
> pte_val(pte) += PAGE_SIZE;
> }
> }
> @@ -528,7 +528,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd)
> #define pud_pfn(pud) ((__pud_to_phys(pud) & PUD_MASK) >> PAGE_SHIFT)
> #define pfn_pud(pfn,prot) __pud(__phys_to_pud_val((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot))
>
> -static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
> +static inline void __set_pte_at(struct mm_struct *mm,
> + unsigned long __always_unused addr,
> pte_t *ptep, pte_t pte, unsigned int nr)
> {
> __sync_cache_and_tags(pte, nr);
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
2023-10-18 8:21 ` Ryan Roberts
@ 2023-10-18 9:36 ` Catalin Marinas
0 siblings, 0 replies; 6+ messages in thread
From: Catalin Marinas @ 2023-10-18 9:36 UTC (permalink / raw)
To: Ryan Roberts
Cc: kernel test robot, Will Deacon, Steven Price, Peter Collingbourne,
llvm, oe-kbuild-all, linux-arm-kernel, linux-kernel
On Wed, Oct 18, 2023 at 09:21:02AM +0100, Ryan Roberts wrote:
> On 17/10/2023 13:57, Catalin Marinas wrote:
> > On Tue, Oct 17, 2023 at 08:36:43AM +0100, Ryan Roberts wrote:
> >> On 16/10/2023 18:54, Catalin Marinas wrote:
> >>> On Sat, Oct 14, 2023 at 05:15:51AM +0800, kernel test robot wrote:
> >>>> kernel test robot noticed the following build warnings:
> >>>>
> >>>> [auto build test WARNING on arm64/for-next/core]
> >>>> [also build test WARNING on arm-perf/for-next/perf arm/for-next kvmarm/next soc/for-next linus/master v6.6-rc5 next-20231013]
> >>>> [cannot apply to arm/fixes]
> >>>> [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/Ryan-Roberts/arm64-mm-Hoist-synchronization-out-of-set_ptes-loop/20231005-231636
> >>>> base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
> >>>> patch link: https://lore.kernel.org/r/20231005140730.2191134-1-ryan.roberts%40arm.com
> >>>> patch subject: [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop
> >>>> config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-lkp@intel.com/config)
> >>>> compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
> >>>> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231014/202310140531.BQQwt3NQ-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/202310140531.BQQwt3NQ-lkp@intel.com/
> >>>>
> >>>> All warnings (new ones prefixed by >>):
> >>>>
> >>>> In file included from net/ipv4/route.c:66:
> >>>> In file included from include/linux/mm.h:29:
> >>>> In file included from include/linux/pgtable.h:6:
> >>>>>> arch/arm64/include/asm/pgtable.h:344:65: warning: parameter 'addr' set but not used [-Wunused-but-set-parameter]
> >>>> 344 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
> >>>> | ^
> >>>> 1 warning generated.
> >>>
> >>> Thanks for the report. I think something like below will do (I'll test
> >>> and commit as a separate patch, it's not something that Ryan's patch
> >>> introduces):
> >>
> >> I was actually just trying to repro this and was planning to send out a v3 of my
> >> patch. But if you are happy to handle it as you suggest, then I guess you don't
> >> need anything further from me?
> >
> > If you feel like testing, please give this a go ;)
>
> Compile tested and observed that warning is gone with your change. Also ran mm
> selftests and all looks good. So:
>
> Tested-by: Ryan Roberts <ryan.roberts@arm.com>
Thanks. I'll push this patch on top of yours.
--
Catalin
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-10-18 9:36 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20231005140730.2191134-1-ryan.roberts@arm.com>
2023-10-13 21:15 ` [PATCH v2] arm64/mm: Hoist synchronization out of set_ptes() loop kernel test robot
2023-10-16 17:54 ` Catalin Marinas
2023-10-17 7:36 ` Ryan Roberts
2023-10-17 12:57 ` Catalin Marinas
2023-10-18 8:21 ` Ryan Roberts
2023-10-18 9:36 ` Catalin Marinas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox