public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] arm64: mm: Do not defer reserve_crashkernel()
@ 2022-03-31  2:59 Kefeng Wang
  2022-03-31  2:59 ` [PATCH v2 1/3] arm64: mm: Do not defer reserve_crashkernel() if only ZONE_DMA32 Kefeng Wang
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Kefeng Wang @ 2022-03-31  2:59 UTC (permalink / raw)
  To: catalin.marinas, will, linux-arm-kernel, linux-kernel
  Cc: vijayb, f.fainelli, Kefeng Wang

Commit 031495635b46 ("arm64: Do not defer reserve_crashkernel() for
platforms with no DMA memory zones"), this lets the kernel benifit
due to BLOCK_MAPPINGS, we could do more if ZONE_DMA and ZONE_DMA32
enabled.

1) Don't defer reserve_crashkernel() if only ZONE_DMA32
2) Don't defer reserve_crashkernel() if ZONE_DMA with dma_force_32bit
   kernel parameter(newly added)

Unixbench benchmark result shows between the block mapping and page mapping.
----------------+------------------+-------------------
        	| block mapping    |   page mapping    
----------------+------------------+-------------------
Process Creation|  5,030.7         |    4,711.8       
(in unixbench)  |                  |                   
----------------+------------------+-------------------

note: RODATA_FULL_DEFAULT_ENABLED is not enabled

v2:
- update patch1 according to Vijay and Florian, and RB of Vijay
- add new patch2

Kefeng Wang (3):
  arm64: mm: Do not defer reserve_crashkernel() if only ZONE_DMA32
  arm64: mm: Don't defer reserve_crashkernel() with dma_force_32bit
  arm64: mm: Cleanup useless parameters in zone_sizes_init()

 arch/arm64/include/asm/kexec.h |  1 +
 arch/arm64/mm/init.c           | 59 +++++++++++++++++++++++++---------
 arch/arm64/mm/mmu.c            |  6 ++--
 3 files changed, 46 insertions(+), 20 deletions(-)

-- 
2.26.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/3] arm64: mm: Do not defer reserve_crashkernel() if only ZONE_DMA32
  2022-03-31  2:59 [PATCH v2 0/3] arm64: mm: Do not defer reserve_crashkernel() Kefeng Wang
@ 2022-03-31  2:59 ` Kefeng Wang
  2022-03-31  2:59 ` [PATCH v2 2/3] arm64: mm: Don't defer reserve_crashkernel() with dma_force_32bit Kefeng Wang
  2022-03-31  2:59 ` [PATCH v2 3/3] arm64: mm: Cleanup useless parameters in zone_sizes_init() Kefeng Wang
  2 siblings, 0 replies; 6+ messages in thread
From: Kefeng Wang @ 2022-03-31  2:59 UTC (permalink / raw)
  To: catalin.marinas, will, linux-arm-kernel, linux-kernel
  Cc: vijayb, f.fainelli, Kefeng Wang, Pasha Tatashin

The kernel could be benefit due to BLOCK_MAPPINGS, see commit
031495635b46 ("arm64: Do not defer reserve_crashkernel() for
platforms with no DMA memory zones"), if only with ZONE_DMA32,
set arm64_dma_phys_limit to max_zone_phys(32) earlier in
arm64_memblock_init(), so platforms with just ZONE_DMA32 config
enabled will be benefit.

Cc: Vijay Balakrishna <vijayb@linux.microsoft.com>
Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Will Deacon <will@kernel.org>
Reviewed-by: Vijay Balakrishna <vijayb@linux.microsoft.com>
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
 arch/arm64/mm/init.c | 23 +++++++++++++----------
 arch/arm64/mm/mmu.c  |  6 ++----
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index 8ac25f19084e..fb01eb489fa9 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -65,8 +65,9 @@ EXPORT_SYMBOL(memstart_addr);
  * Memory reservation for crash kernel either done early or deferred
  * depending on DMA memory zones configs (ZONE_DMA) --
  *
- * In absence of ZONE_DMA configs arm64_dma_phys_limit initialized
- * here instead of max_zone_phys().  This lets early reservation of
+ * In absence of ZONE_DMA and ZONE_DMA32 configs arm64_dma_phys_limit
+ * initialized here and if only with ZONE_DMA32 arm64_dma_phys_limit
+ * initialised to dma32_phys_limit. This lets early reservation of
  * crash kernel memory which has a dependency on arm64_dma_phys_limit.
  * Reserving memory early for crash kernel allows linear creation of block
  * mappings (greater than page-granularity) for all the memory bank rangs.
@@ -84,6 +85,7 @@ EXPORT_SYMBOL(memstart_addr);
  * Note: Page-granularity mapppings are necessary for crash kernel memory
  * range for shrinking its size via /sys/kernel/kexec_crash_size interface.
  */
+static phys_addr_t __ro_after_init dma32_phys_limit;
 #if IS_ENABLED(CONFIG_ZONE_DMA) || IS_ENABLED(CONFIG_ZONE_DMA32)
 phys_addr_t __ro_after_init arm64_dma_phys_limit;
 #else
@@ -160,11 +162,10 @@ static phys_addr_t __init max_zone_phys(unsigned int zone_bits)
 static void __init zone_sizes_init(unsigned long min, unsigned long max)
 {
 	unsigned long max_zone_pfns[MAX_NR_ZONES]  = {0};
-	unsigned int __maybe_unused acpi_zone_dma_bits;
-	unsigned int __maybe_unused dt_zone_dma_bits;
-	phys_addr_t __maybe_unused dma32_phys_limit = max_zone_phys(32);
-
 #ifdef CONFIG_ZONE_DMA
+	unsigned int acpi_zone_dma_bits;
+	unsigned int dt_zone_dma_bits;
+
 	acpi_zone_dma_bits = fls64(acpi_iort_dma_get_max_cpu_address());
 	dt_zone_dma_bits = fls64(of_dma_get_max_cpu_address(NULL));
 	zone_dma_bits = min3(32U, dt_zone_dma_bits, acpi_zone_dma_bits);
@@ -173,8 +174,6 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max)
 #endif
 #ifdef CONFIG_ZONE_DMA32
 	max_zone_pfns[ZONE_DMA32] = PFN_DOWN(dma32_phys_limit);
-	if (!arm64_dma_phys_limit)
-		arm64_dma_phys_limit = dma32_phys_limit;
 #endif
 	max_zone_pfns[ZONE_NORMAL] = max;
 
@@ -336,8 +335,12 @@ void __init arm64_memblock_init(void)
 
 	early_init_fdt_scan_reserved_mem();
 
-	if (!IS_ENABLED(CONFIG_ZONE_DMA) && !IS_ENABLED(CONFIG_ZONE_DMA32))
+	dma32_phys_limit = max_zone_phys(32);
+	if (!IS_ENABLED(CONFIG_ZONE_DMA)) {
+		if (IS_ENABLED(CONFIG_ZONE_DMA32))
+			arm64_dma_phys_limit = dma32_phys_limit;
 		reserve_crashkernel();
+	}
 
 	high_memory = __va(memblock_end_of_DRAM() - 1) + 1;
 }
@@ -385,7 +388,7 @@ void __init bootmem_init(void)
 	 * request_standard_resources() depends on crashkernel's memory being
 	 * reserved, so do it here.
 	 */
-	if (IS_ENABLED(CONFIG_ZONE_DMA) || IS_ENABLED(CONFIG_ZONE_DMA32))
+	if (IS_ENABLED(CONFIG_ZONE_DMA))
 		reserve_crashkernel();
 
 	memblock_dump_all();
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 626ec32873c6..23734481318a 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -529,8 +529,7 @@ static void __init map_mem(pgd_t *pgdp)
 
 #ifdef CONFIG_KEXEC_CORE
 	if (crash_mem_map) {
-		if (IS_ENABLED(CONFIG_ZONE_DMA) ||
-		    IS_ENABLED(CONFIG_ZONE_DMA32))
+		if (IS_ENABLED(CONFIG_ZONE_DMA))
 			flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
 		else if (crashk_res.end)
 			memblock_mark_nomap(crashk_res.start,
@@ -571,8 +570,7 @@ static void __init map_mem(pgd_t *pgdp)
 	 * through /sys/kernel/kexec_crash_size interface.
 	 */
 #ifdef CONFIG_KEXEC_CORE
-	if (crash_mem_map &&
-	    !IS_ENABLED(CONFIG_ZONE_DMA) && !IS_ENABLED(CONFIG_ZONE_DMA32)) {
+	if (crash_mem_map && !IS_ENABLED(CONFIG_ZONE_DMA)) {
 		if (crashk_res.end) {
 			__map_memblock(pgdp, crashk_res.start,
 				       crashk_res.end + 1,
-- 
2.26.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/3] arm64: mm: Don't defer reserve_crashkernel() with dma_force_32bit
  2022-03-31  2:59 [PATCH v2 0/3] arm64: mm: Do not defer reserve_crashkernel() Kefeng Wang
  2022-03-31  2:59 ` [PATCH v2 1/3] arm64: mm: Do not defer reserve_crashkernel() if only ZONE_DMA32 Kefeng Wang
@ 2022-03-31  2:59 ` Kefeng Wang
  2022-03-31  7:01   ` kernel test robot
  2022-03-31  2:59 ` [PATCH v2 3/3] arm64: mm: Cleanup useless parameters in zone_sizes_init() Kefeng Wang
  2 siblings, 1 reply; 6+ messages in thread
From: Kefeng Wang @ 2022-03-31  2:59 UTC (permalink / raw)
  To: catalin.marinas, will, linux-arm-kernel, linux-kernel
  Cc: vijayb, f.fainelli, Kefeng Wang

ARM64 enable ZONE_DMA by default, and with ZONE_DMA crash kernel
memory reservation is delayed until DMA zone memory range size
initilazation performed in zone_sizes_init(), but for most platforms
use 32bit dma_zone_bits, so add dma_force_32bit kernel parameter
if ZONE_DMA enabled, and initialize arm64_dma_phys_limit to
dma32_phys_limit in arm64_memblock_init() if dma_force_32bit
is setup, this could let the crash kernel reservation earlier,
and allows linear creation with block mapping.

Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
 arch/arm64/include/asm/kexec.h |  1 +
 arch/arm64/mm/init.c           | 42 ++++++++++++++++++++++++++--------
 arch/arm64/mm/mmu.c            |  4 ++--
 3 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/arch/arm64/include/asm/kexec.h b/arch/arm64/include/asm/kexec.h
index 9839bfc163d7..653b16acd09a 100644
--- a/arch/arm64/include/asm/kexec.h
+++ b/arch/arm64/include/asm/kexec.h
@@ -94,6 +94,7 @@ static inline void crash_post_resume(void) {}
 void cpu_soft_restart(unsigned long el2_switch, unsigned long entry,
 		      unsigned long arg0, unsigned long arg1,
 		      unsigned long arg2);
+bool crashkernel_could_early_reserve(void)
 #endif
 
 #define ARCH_HAS_KIMAGE_ARCH
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index fb01eb489fa9..329e236c3c52 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -66,7 +66,8 @@ EXPORT_SYMBOL(memstart_addr);
  * depending on DMA memory zones configs (ZONE_DMA) --
  *
  * In absence of ZONE_DMA and ZONE_DMA32 configs arm64_dma_phys_limit
- * initialized here and if only with ZONE_DMA32 arm64_dma_phys_limit
+ * initialized here, and if only with ZONE_DMA32 or if with ZONE_DMA
+ * and dma_force_32bit kernel parameter, the arm64_dma_phys_limit is
  * initialised to dma32_phys_limit. This lets early reservation of
  * crash kernel memory which has a dependency on arm64_dma_phys_limit.
  * Reserving memory early for crash kernel allows linear creation of block
@@ -92,6 +93,27 @@ phys_addr_t __ro_after_init arm64_dma_phys_limit;
 phys_addr_t __ro_after_init arm64_dma_phys_limit = PHYS_MASK + 1;
 #endif
 
+static bool __ro_after_init arm64_dma_force_32bit;
+#ifdef CONFIG_ZONE_DMA
+static int __init arm64_dma_force_32bit_setup(char *p)
+{
+	zone_dma_bits = 32;
+	arm64_dma_force_32bit = true;
+
+	return 0;
+}
+early_param("dma_force_32bit", arm64_dma_force_32bit_setup);
+#endif
+
+bool __init crashkernel_could_early_reserve(void)
+{
+	if (!IS_ENABLED(CONFIG_ZONE_DMA))
+		return true;
+	if (arm64_dma_force_32bit)
+		return true;
+	return false;
+}
+
 /*
  * reserve_crashkernel() - reserves memory for crash kernel
  *
@@ -163,12 +185,14 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max)
 {
 	unsigned long max_zone_pfns[MAX_NR_ZONES]  = {0};
 #ifdef CONFIG_ZONE_DMA
-	unsigned int acpi_zone_dma_bits;
-	unsigned int dt_zone_dma_bits;
+	if (!arm64_dma_force_32bit) {
+		unsigned int acpi_zone_dma_bits;
+		unsigned int dt_zone_dma_bits;
 
-	acpi_zone_dma_bits = fls64(acpi_iort_dma_get_max_cpu_address());
-	dt_zone_dma_bits = fls64(of_dma_get_max_cpu_address(NULL));
-	zone_dma_bits = min3(32U, dt_zone_dma_bits, acpi_zone_dma_bits);
+		acpi_zone_dma_bits = fls64(acpi_iort_dma_get_max_cpu_address());
+		dt_zone_dma_bits = fls64(of_dma_get_max_cpu_address(NULL));
+		zone_dma_bits = min3(32U, dt_zone_dma_bits, acpi_zone_dma_bits);
+	}
 	arm64_dma_phys_limit = max_zone_phys(zone_dma_bits);
 	max_zone_pfns[ZONE_DMA] = PFN_DOWN(arm64_dma_phys_limit);
 #endif
@@ -336,8 +360,8 @@ void __init arm64_memblock_init(void)
 	early_init_fdt_scan_reserved_mem();
 
 	dma32_phys_limit = max_zone_phys(32);
-	if (!IS_ENABLED(CONFIG_ZONE_DMA)) {
-		if (IS_ENABLED(CONFIG_ZONE_DMA32))
+	if (crashkernel_could_early_reserve()) {
+		if (IS_ENABLED(CONFIG_ZONE_DMA32) || dma_force_32bit)
 			arm64_dma_phys_limit = dma32_phys_limit;
 		reserve_crashkernel();
 	}
@@ -388,7 +412,7 @@ void __init bootmem_init(void)
 	 * request_standard_resources() depends on crashkernel's memory being
 	 * reserved, so do it here.
 	 */
-	if (IS_ENABLED(CONFIG_ZONE_DMA))
+	if (!crashkernel_could_early_reserve())
 		reserve_crashkernel();
 
 	memblock_dump_all();
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 23734481318a..8f7e8452d906 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -529,7 +529,7 @@ static void __init map_mem(pgd_t *pgdp)
 
 #ifdef CONFIG_KEXEC_CORE
 	if (crash_mem_map) {
-		if (IS_ENABLED(CONFIG_ZONE_DMA))
+		if (!crashkernel_could_early_reserve())
 			flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
 		else if (crashk_res.end)
 			memblock_mark_nomap(crashk_res.start,
@@ -570,7 +570,7 @@ static void __init map_mem(pgd_t *pgdp)
 	 * through /sys/kernel/kexec_crash_size interface.
 	 */
 #ifdef CONFIG_KEXEC_CORE
-	if (crash_mem_map && !IS_ENABLED(CONFIG_ZONE_DMA)) {
+	if (crash_mem_map && crashkernel_could_early_reserve()) {
 		if (crashk_res.end) {
 			__map_memblock(pgdp, crashk_res.start,
 				       crashk_res.end + 1,
-- 
2.26.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/3] arm64: mm: Cleanup useless parameters in zone_sizes_init()
  2022-03-31  2:59 [PATCH v2 0/3] arm64: mm: Do not defer reserve_crashkernel() Kefeng Wang
  2022-03-31  2:59 ` [PATCH v2 1/3] arm64: mm: Do not defer reserve_crashkernel() if only ZONE_DMA32 Kefeng Wang
  2022-03-31  2:59 ` [PATCH v2 2/3] arm64: mm: Don't defer reserve_crashkernel() with dma_force_32bit Kefeng Wang
@ 2022-03-31  2:59 ` Kefeng Wang
  2 siblings, 0 replies; 6+ messages in thread
From: Kefeng Wang @ 2022-03-31  2:59 UTC (permalink / raw)
  To: catalin.marinas, will, linux-arm-kernel, linux-kernel
  Cc: vijayb, f.fainelli, Kefeng Wang

Directly use max_pfn for max and no one use min, kill them.

Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
 arch/arm64/mm/init.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index 329e236c3c52..174360429f2a 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -181,7 +181,7 @@ static phys_addr_t __init max_zone_phys(unsigned int zone_bits)
 	return min(zone_mask, memblock_end_of_DRAM() - 1) + 1;
 }
 
-static void __init zone_sizes_init(unsigned long min, unsigned long max)
+static void __init zone_sizes_init(void)
 {
 	unsigned long max_zone_pfns[MAX_NR_ZONES]  = {0};
 #ifdef CONFIG_ZONE_DMA
@@ -199,7 +199,7 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max)
 #ifdef CONFIG_ZONE_DMA32
 	max_zone_pfns[ZONE_DMA32] = PFN_DOWN(dma32_phys_limit);
 #endif
-	max_zone_pfns[ZONE_NORMAL] = max;
+	max_zone_pfns[ZONE_NORMAL] = max_pfn;
 
 	free_area_init(max_zone_pfns);
 }
@@ -401,7 +401,7 @@ void __init bootmem_init(void)
 	 * done after the fixed reservations
 	 */
 	sparse_init();
-	zone_sizes_init(min, max);
+	zone_sizes_init();
 
 	/*
 	 * Reserve the CMA area after arm64_dma_phys_limit was initialised.
-- 
2.26.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/3] arm64: mm: Don't defer reserve_crashkernel() with dma_force_32bit
  2022-03-31  2:59 ` [PATCH v2 2/3] arm64: mm: Don't defer reserve_crashkernel() with dma_force_32bit Kefeng Wang
@ 2022-03-31  7:01   ` kernel test robot
  2022-03-31  7:10     ` Kefeng Wang
  0 siblings, 1 reply; 6+ messages in thread
From: kernel test robot @ 2022-03-31  7:01 UTC (permalink / raw)
  To: Kefeng Wang, catalin.marinas, will, linux-arm-kernel,
	linux-kernel
  Cc: kbuild-all, vijayb, f.fainelli, Kefeng Wang

Hi Kefeng,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on next-20220330]
[cannot apply to arm64/for-next/core v5.17 v5.17-rc8 v5.17-rc7 v5.17]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Kefeng-Wang/arm64-mm-Do-not-defer-reserve_crashkernel/20220331-105429
base:    a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57
config: arm64-randconfig-r035-20220331 (https://download.01.org/0day-ci/archive/20220331/202203311421.VENALFHe-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/05592b78cd421b988704f52eba353278a3c22ee4
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Kefeng-Wang/arm64-mm-Do-not-defer-reserve_crashkernel/20220331-105429
        git checkout 05592b78cd421b988704f52eba353278a3c22ee4
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arm64 prepare

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

All error/warnings (new ones prefixed by >>):

   In file included from include/linux/kexec.h:34,
                    from arch/arm64/kernel/asm-offsets.c:12:
>> arch/arm64/include/asm/kexec.h:97:6: warning: no previous prototype for 'crashkernel_could_early_reserve' [-Wmissing-prototypes]
      97 | bool crashkernel_could_early_reserve(void)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/include/asm/kexec.h: In function 'crashkernel_could_early_reserve':
>> arch/arm64/include/asm/kexec.h:102:1: warning: empty declaration
     102 | struct kimage_arch {
         | ^~~~~~
>> arch/arm64/include/asm/kexec.h:115:36: error: storage class specified for parameter 'kexec_image_ops'
     115 | extern const struct kexec_file_ops kexec_image_ops;
         |                                    ^~~~~~~~~~~~~~~
   arch/arm64/include/asm/kexec.h:117:1: warning: empty declaration
     117 | struct kimage;
         | ^~~~~~
>> arch/arm64/include/asm/kexec.h:119:12: error: storage class specified for parameter 'arch_kimage_file_post_load_cleanup'
     119 | extern int arch_kimage_file_post_load_cleanup(struct kimage *image);
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/include/asm/kexec.h:120:12: error: storage class specified for parameter 'load_other_segments'
     120 | extern int load_other_segments(struct kimage *image,
         |            ^~~~~~~~~~~~~~~~~~~
   In file included from arch/arm64/kernel/asm-offsets.c:12:
>> include/linux/kexec.h:77:23: error: storage class specified for parameter 'kimage_entry_t'
      77 | typedef unsigned long kimage_entry_t;
         |                       ^~~~~~~~~~~~~~
>> include/linux/kexec.h:79:1: warning: empty declaration
      79 | struct kexec_segment {
         | ^~~~~~
   include/linux/kexec.h:107:1: warning: empty declaration
     107 | struct purgatory_info {
         | ^~~~~~
   include/linux/kexec.h:125:1: warning: empty declaration
     125 | struct kimage;
         | ^~~~~~
>> include/linux/kexec.h:127:14: error: storage class specified for parameter 'kexec_probe_t'
     127 | typedef int (kexec_probe_t)(const char *kernel_buf, unsigned long kernel_size);
         |              ^~~~~~~~~~~~~
>> include/linux/kexec.h:128:16: error: storage class specified for parameter 'kexec_load_t'
     128 | typedef void *(kexec_load_t)(struct kimage *image, char *kernel_buf,
         |                ^~~~~~~~~~~~
>> include/linux/kexec.h:132:14: error: storage class specified for parameter 'kexec_cleanup_t'
     132 | typedef int (kexec_cleanup_t)(void *loader_data);
         |              ^~~~~~~~~~~~~~~
>> include/linux/kexec.h:135:14: error: storage class specified for parameter 'kexec_verify_sig_t'
     135 | typedef int (kexec_verify_sig_t)(const char *kernel_buf,
         |              ^~~~~~~~~~~~~~~~~~
>> include/linux/kexec.h:140:9: error: expected specifier-qualifier-list before 'kexec_probe_t'
     140 |         kexec_probe_t *probe;
         |         ^~~~~~~~~~~~~
   include/linux/kexec.h:139:1: warning: empty declaration
     139 | struct kexec_file_ops {
         | ^~~~~~
>> include/linux/kexec.h:148:44: error: storage class specified for parameter 'kexec_file_loaders'
     148 | extern const struct kexec_file_ops * const kexec_file_loaders[];
         |                                            ^~~~~~~~~~~~~~~~~~
   include/linux/kexec.h:174:1: warning: empty declaration
     174 | struct kexec_buf {
         | ^~~~~~
>> include/linux/kexec.h:204:5: error: redefinition of parameter 'arch_kimage_file_post_load_cleanup'
     204 | int arch_kimage_file_post_load_cleanup(struct kimage *image);
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/kexec.h:34,
                    from arch/arm64/kernel/asm-offsets.c:12:
   arch/arm64/include/asm/kexec.h:119:12: note: previous definition of 'arch_kimage_file_post_load_cleanup' with type 'int (*)(struct kimage *)'
     119 | extern int arch_kimage_file_post_load_cleanup(struct kimage *image);
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from arch/arm64/kernel/asm-offsets.c:12:
>> include/linux/kexec.h:211:12: error: storage class specified for parameter 'kexec_add_buffer'
     211 | extern int kexec_add_buffer(struct kexec_buf *kbuf);
         |            ^~~~~~~~~~~~~~~~
   include/linux/kexec.h:217:1: warning: empty declaration
     217 | struct crash_mem_range {
         | ^~~~~~
   include/linux/kexec.h:221:1: warning: empty declaration
     221 | struct crash_mem {
         | ^~~~~~
>> include/linux/kexec.h:227:12: error: storage class specified for parameter 'crash_exclude_mem_range'
     227 | extern int crash_exclude_mem_range(struct crash_mem *mem,
         |            ^~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/kexec.h:230:12: error: storage class specified for parameter 'crash_prepare_elf64_headers'
     230 | extern int crash_prepare_elf64_headers(struct crash_mem *mem, int kernel_map,
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/kexec.h:258:9: error: expected specifier-qualifier-list before 'kimage_entry_t'
     258 |         kimage_entry_t head;
         |         ^~~~~~~~~~~~~~
   include/linux/kexec.h:257:1: warning: empty declaration
     257 | struct kimage {
         | ^~~~~~
>> include/linux/kexec.h:325:13: error: storage class specified for parameter 'machine_kexec'
     325 | extern void machine_kexec(struct kimage *image);
         |             ^~~~~~~~~~~~~
>> include/linux/kexec.h:326:12: error: storage class specified for parameter 'machine_kexec_prepare'
     326 | extern int machine_kexec_prepare(struct kimage *image);
         |            ^~~~~~~~~~~~~~~~~~~~~
   include/linux/kexec.h:327:13: error: storage class specified for parameter 'machine_kexec_cleanup'
     327 | extern void machine_kexec_cleanup(struct kimage *image);
         |             ^~~~~~~~~~~~~~~~~~~~~
   include/linux/kexec.h:328:12: error: storage class specified for parameter 'kernel_kexec'
     328 | extern int kernel_kexec(void);
         |            ^~~~~~~~~~~~
   include/linux/kexec.h:329:21: error: storage class specified for parameter 'kimage_alloc_control_pages'
     329 | extern struct page *kimage_alloc_control_pages(struct kimage *image,
         |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kexec.h:333:13: error: storage class specified for parameter '__crash_kexec'
     333 | extern void __crash_kexec(struct pt_regs *);
         |             ^~~~~~~~~~~~~
   include/linux/kexec.h:334:13: error: storage class specified for parameter 'crash_kexec'
     334 | extern void crash_kexec(struct pt_regs *);
         |             ^~~~~~~~~~~
   include/linux/kexec.h:338:12: error: storage class specified for parameter 'kimage_crash_copy_vmcoreinfo'
     338 | extern int kimage_crash_copy_vmcoreinfo(struct kimage *image);
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kexec.h:340:23: error: storage class specified for parameter 'kexec_image'
     340 | extern struct kimage *kexec_image;
         |                       ^~~~~~~~~~~
   include/linux/kexec.h:341:23: error: storage class specified for parameter 'kexec_crash_image'
     341 | extern struct kimage *kexec_crash_image;
         |                       ^~~~~~~~~~~~~~~~~
   include/linux/kexec.h:342:12: error: storage class specified for parameter 'kexec_load_disabled'
     342 | extern int kexec_load_disabled;
         |            ^~~~~~~~~~~~~~~~~~~
   include/linux/kexec.h:360:13: error: storage class specified for parameter 'kexec_in_progress'
     360 | extern bool kexec_in_progress;
         |             ^~~~~~~~~~~~~~~~~
   include/linux/kexec.h:371:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     371 | {
         | ^
   include/linux/kexec.h:378:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     378 | {
         | ^
   include/linux/kexec.h:385:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     385 | {
         | ^
   include/linux/kexec.h:392:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     392 | {
         | ^
   include/linux/kexec.h:398:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     398 | {
         | ^
   include/linux/kexec.h:403:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     403 | {
         | ^
   include/linux/kexec.h:408:91: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     408 | static inline int arch_kexec_post_alloc_pages(void *vaddr, unsigned int pages, gfp_t gfp) { return 0; }
         |                                                                                           ^
   include/linux/kexec.h:412:79: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     412 | static inline void arch_kexec_pre_free_pages(void *vaddr, unsigned int pages) { }
         |                                                                               ^
   In file included from include/linux/dma-mapping.h:9,
                    from arch/arm64/kernel/asm-offsets.c:14:
   include/linux/dma-direction.h:5:1: warning: empty declaration
       5 | enum dma_data_direction {
         | ^~~~
   include/linux/dma-direction.h:13:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
      13 | {
         | ^
   In file included from include/linux/dma-mapping.h:10,
                    from arch/arm64/kernel/asm-offsets.c:14:
   include/linux/scatterlist.h:11:1: warning: empty declaration
      11 | struct scatterlist {
         | ^~~~~~
   include/linux/scatterlist.h:36:1: warning: empty declaration
      36 | struct sg_table {
         | ^~~~~~
   include/linux/scatterlist.h:42:1: warning: empty declaration
      42 | struct sg_append_table {
         | ^~~~~~
   include/linux/scatterlist.h:75:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
      75 | {
         | ^
   include/linux/scatterlist.h:80:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
      80 | {
         | ^
   include/linux/scatterlist.h:85:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
      85 | {
         | ^
   include/linux/scatterlist.h:90:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
      90 | {
         | ^
   include/linux/scatterlist.h:105:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     105 | {
         | ^
   include/linux/scatterlist.h:135:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     135 | {
         | ^
   include/linux/scatterlist.h:142:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     142 | {
         | ^
   include/linux/scatterlist.h:158:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
     158 | {
         | ^
   include/linux/scatterlist.h:187:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token


vim +/kexec_image_ops +115 arch/arm64/include/asm/kexec.h

254a41c0ba0573 AKASHI Takahiro 2017-04-03   92  
7a2512fa649397 Pasha Tatashin  2021-09-30   93  #if defined(CONFIG_KEXEC_CORE)
7a2512fa649397 Pasha Tatashin  2021-09-30   94  void cpu_soft_restart(unsigned long el2_switch, unsigned long entry,
7a2512fa649397 Pasha Tatashin  2021-09-30   95  		      unsigned long arg0, unsigned long arg1,
7a2512fa649397 Pasha Tatashin  2021-09-30   96  		      unsigned long arg2);
05592b78cd421b Kefeng Wang     2022-03-31  @97  bool crashkernel_could_early_reserve(void)
7a2512fa649397 Pasha Tatashin  2021-09-30   98  #endif
7a2512fa649397 Pasha Tatashin  2021-09-30   99  
52b2a8af743604 AKASHI Takahiro 2018-11-15  100  #define ARCH_HAS_KIMAGE_ARCH
52b2a8af743604 AKASHI Takahiro 2018-11-15  101  
52b2a8af743604 AKASHI Takahiro 2018-11-15 @102  struct kimage_arch {
52b2a8af743604 AKASHI Takahiro 2018-11-15  103  	void *dtb;
117cda9a784728 Pavel Tatashin  2021-01-25  104  	phys_addr_t dtb_mem;
4c3c31230c912d Pavel Tatashin  2021-01-25  105  	phys_addr_t kern_reloc;
08eae0ef618f34 Pasha Tatashin  2021-09-30  106  	phys_addr_t el2_vectors;
efc2d0f20a9dab Pasha Tatashin  2021-09-30  107  	phys_addr_t ttbr0;
3744b5280e67f5 Pasha Tatashin  2021-09-30  108  	phys_addr_t ttbr1;
3744b5280e67f5 Pasha Tatashin  2021-09-30  109  	phys_addr_t zero_page;
efc2d0f20a9dab Pasha Tatashin  2021-09-30  110  	unsigned long phys_offset;
efc2d0f20a9dab Pasha Tatashin  2021-09-30  111  	unsigned long t0sz;
52b2a8af743604 AKASHI Takahiro 2018-11-15  112  };
52b2a8af743604 AKASHI Takahiro 2018-11-15  113  
117cda9a784728 Pavel Tatashin  2021-01-25  114  #ifdef CONFIG_KEXEC_FILE
f3b70e50942960 AKASHI Takahiro 2018-11-15 @115  extern const struct kexec_file_ops kexec_image_ops;
f3b70e50942960 AKASHI Takahiro 2018-11-15  116  
52b2a8af743604 AKASHI Takahiro 2018-11-15  117  struct kimage;
52b2a8af743604 AKASHI Takahiro 2018-11-15  118  
52b2a8af743604 AKASHI Takahiro 2018-11-15 @119  extern int arch_kimage_file_post_load_cleanup(struct kimage *image);
52b2a8af743604 AKASHI Takahiro 2018-11-15 @120  extern int load_other_segments(struct kimage *image,
52b2a8af743604 AKASHI Takahiro 2018-11-15  121  		unsigned long kernel_load_addr, unsigned long kernel_size,
52b2a8af743604 AKASHI Takahiro 2018-11-15  122  		char *initrd, unsigned long initrd_len,
52b2a8af743604 AKASHI Takahiro 2018-11-15  123  		char *cmdline);
52b2a8af743604 AKASHI Takahiro 2018-11-15  124  #endif
52b2a8af743604 AKASHI Takahiro 2018-11-15  125  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/3] arm64: mm: Don't defer reserve_crashkernel() with dma_force_32bit
  2022-03-31  7:01   ` kernel test robot
@ 2022-03-31  7:10     ` Kefeng Wang
  0 siblings, 0 replies; 6+ messages in thread
From: Kefeng Wang @ 2022-03-31  7:10 UTC (permalink / raw)
  To: kernel test robot, catalin.marinas, will, linux-arm-kernel,
	linux-kernel
  Cc: kbuild-all, vijayb, f.fainelli


On 2022/3/31 15:01, kernel test robot wrote:
> Hi Kefeng,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on next-20220330]
> [cannot apply to arm64/for-next/core v5.17 v5.17-rc8 v5.17-rc7 v5.17]
> [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]
Thanks, will resend this patchset.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-03-31  7:11 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-31  2:59 [PATCH v2 0/3] arm64: mm: Do not defer reserve_crashkernel() Kefeng Wang
2022-03-31  2:59 ` [PATCH v2 1/3] arm64: mm: Do not defer reserve_crashkernel() if only ZONE_DMA32 Kefeng Wang
2022-03-31  2:59 ` [PATCH v2 2/3] arm64: mm: Don't defer reserve_crashkernel() with dma_force_32bit Kefeng Wang
2022-03-31  7:01   ` kernel test robot
2022-03-31  7:10     ` Kefeng Wang
2022-03-31  2:59 ` [PATCH v2 3/3] arm64: mm: Cleanup useless parameters in zone_sizes_init() Kefeng Wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox