From: kernel test robot <lkp@intel.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-kernel@vger.kernel.org
Subject: [mingo-tip:sched/headers 1517/2384] arch/mips/mti-malta/malta-dtshim.c:92:15: error: implicit declaration of function 'min_t'
Date: Sat, 15 Jan 2022 20:29:45 +0800 [thread overview]
Message-ID: <202201152000.mOrb5rnf-lkp@intel.com> (raw)
tree: git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git sched/headers
head: 4c707c1c0de83967079b4e385012fa5b00e2cd11
commit: 986644c38150163ceefbb1302500fba6787bf621 [1517/2384] headers/deps: Optimize <linux/kernel.h>
config: mips-maltaaprp_defconfig (https://download.01.org/0day-ci/archive/20220115/202201152000.mOrb5rnf-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 650fc40b6d8d9a5869b4fca525d5f237b0ee2803)
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
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git/commit/?id=986644c38150163ceefbb1302500fba6787bf621
git remote add mingo-tip git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git
git fetch --no-tags mingo-tip sched/headers
git checkout 986644c38150163ceefbb1302500fba6787bf621
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> arch/mips/mti-malta/malta-dtshim.c:92:15: error: implicit declaration of function 'min_t' [-Werror,-Wimplicit-function-declaration]
size_preio = min_t(unsigned long, size, SZ_256M);
^
>> arch/mips/mti-malta/malta-dtshim.c:92:21: error: expected expression
size_preio = min_t(unsigned long, size, SZ_256M);
^
>> arch/mips/mti-malta/malta-dtshim.c:192:21: error: implicit declaration of function 'max_t' [-Werror,-Wimplicit-function-declaration]
physical_memsize = max_t(unsigned long, physical_memsize, memsize);
^
arch/mips/mti-malta/malta-dtshim.c:192:27: error: expected expression
physical_memsize = max_t(unsigned long, physical_memsize, memsize);
^
4 errors generated.
vim +/min_t +92 arch/mips/mti-malta/malta-dtshim.c
0051fc2e7b8450 Paul Burton 2016-09-19 72
0051fc2e7b8450 Paul Burton 2016-09-19 73 static unsigned __init gen_fdt_mem_array(__be32 *mem_array, unsigned long size,
0051fc2e7b8450 Paul Burton 2016-09-19 74 enum mem_map map)
e81a8c7dabac05 Paul Burton 2015-09-22 75 {
e81a8c7dabac05 Paul Burton 2015-09-22 76 unsigned long size_preio;
e81a8c7dabac05 Paul Burton 2015-09-22 77 unsigned entries;
e81a8c7dabac05 Paul Burton 2015-09-22 78
e81a8c7dabac05 Paul Burton 2015-09-22 79 entries = 1;
e81a8c7dabac05 Paul Burton 2015-09-22 80 mem_array[0] = cpu_to_be32(PHYS_OFFSET);
97f2645f358b41 Masahiro Yamada 2016-08-03 81 if (IS_ENABLED(CONFIG_EVA)) {
e81a8c7dabac05 Paul Burton 2015-09-22 82 /*
e81a8c7dabac05 Paul Burton 2015-09-22 83 * The current Malta EVA configuration is "special" in that it
e81a8c7dabac05 Paul Burton 2015-09-22 84 * always makes use of addresses in the upper half of the 32 bit
e81a8c7dabac05 Paul Burton 2015-09-22 85 * physical address map, which gives it a contiguous region of
e81a8c7dabac05 Paul Burton 2015-09-22 86 * DDR but limits it to 2GB.
e81a8c7dabac05 Paul Burton 2015-09-22 87 */
e81a8c7dabac05 Paul Burton 2015-09-22 88 mem_array[1] = cpu_to_be32(size);
0051fc2e7b8450 Paul Burton 2016-09-19 89 goto done;
0051fc2e7b8450 Paul Burton 2016-09-19 90 }
0051fc2e7b8450 Paul Burton 2016-09-19 91
e81a8c7dabac05 Paul Burton 2015-09-22 @92 size_preio = min_t(unsigned long, size, SZ_256M);
e81a8c7dabac05 Paul Burton 2015-09-22 93 mem_array[1] = cpu_to_be32(size_preio);
0051fc2e7b8450 Paul Burton 2016-09-19 94 size -= size_preio;
0051fc2e7b8450 Paul Burton 2016-09-19 95 if (!size)
0051fc2e7b8450 Paul Burton 2016-09-19 96 goto done;
0051fc2e7b8450 Paul Burton 2016-09-19 97
0051fc2e7b8450 Paul Burton 2016-09-19 98 if (map == MEM_MAP_V2) {
0051fc2e7b8450 Paul Burton 2016-09-19 99 /*
0051fc2e7b8450 Paul Burton 2016-09-19 100 * We have a flat 32 bit physical memory map with DDR filling
0051fc2e7b8450 Paul Burton 2016-09-19 101 * all 4GB of the memory map, apart from the I/O region which
0051fc2e7b8450 Paul Burton 2016-09-19 102 * obscures 256MB from 0x10000000-0x1fffffff.
0051fc2e7b8450 Paul Burton 2016-09-19 103 *
0051fc2e7b8450 Paul Burton 2016-09-19 104 * Therefore we discard the 256MB behind the I/O region.
0051fc2e7b8450 Paul Burton 2016-09-19 105 */
0051fc2e7b8450 Paul Burton 2016-09-19 106 if (size <= SZ_256M)
0051fc2e7b8450 Paul Burton 2016-09-19 107 goto done;
0051fc2e7b8450 Paul Burton 2016-09-19 108 size -= SZ_256M;
0051fc2e7b8450 Paul Burton 2016-09-19 109
0051fc2e7b8450 Paul Burton 2016-09-19 110 /* Make use of the memory following the I/O region */
0051fc2e7b8450 Paul Burton 2016-09-19 111 entries++;
0051fc2e7b8450 Paul Burton 2016-09-19 112 mem_array[2] = cpu_to_be32(PHYS_OFFSET + SZ_512M);
0051fc2e7b8450 Paul Burton 2016-09-19 113 mem_array[3] = cpu_to_be32(size);
0051fc2e7b8450 Paul Burton 2016-09-19 114 } else {
0051fc2e7b8450 Paul Burton 2016-09-19 115 /*
0051fc2e7b8450 Paul Burton 2016-09-19 116 * We have a 32 bit physical memory map with a 2GB DDR region
0051fc2e7b8450 Paul Burton 2016-09-19 117 * aliased in the upper & lower halves of it. The I/O region
0051fc2e7b8450 Paul Burton 2016-09-19 118 * obscures 256MB from 0x10000000-0x1fffffff in the low alias
0051fc2e7b8450 Paul Burton 2016-09-19 119 * but the DDR it obscures is accessible via the high alias.
0051fc2e7b8450 Paul Burton 2016-09-19 120 *
0051fc2e7b8450 Paul Burton 2016-09-19 121 * Simply access everything beyond the lowest 256MB of DDR using
0051fc2e7b8450 Paul Burton 2016-09-19 122 * the high alias.
0051fc2e7b8450 Paul Burton 2016-09-19 123 */
0051fc2e7b8450 Paul Burton 2016-09-19 124 entries++;
0051fc2e7b8450 Paul Burton 2016-09-19 125 mem_array[2] = cpu_to_be32(PHYS_OFFSET + SZ_2G + SZ_256M);
0051fc2e7b8450 Paul Burton 2016-09-19 126 mem_array[3] = cpu_to_be32(size);
e81a8c7dabac05 Paul Burton 2015-09-22 127 }
e81a8c7dabac05 Paul Burton 2015-09-22 128
0051fc2e7b8450 Paul Burton 2016-09-19 129 done:
e81a8c7dabac05 Paul Burton 2015-09-22 130 BUG_ON(entries > MAX_MEM_ARRAY_ENTRIES);
e81a8c7dabac05 Paul Burton 2015-09-22 131 return entries;
e81a8c7dabac05 Paul Burton 2015-09-22 132 }
e81a8c7dabac05 Paul Burton 2015-09-22 133
e81a8c7dabac05 Paul Burton 2015-09-22 134 static void __init append_memory(void *fdt, int root_off)
e81a8c7dabac05 Paul Burton 2015-09-22 135 {
e81a8c7dabac05 Paul Burton 2015-09-22 136 __be32 mem_array[2 * MAX_MEM_ARRAY_ENTRIES];
e81a8c7dabac05 Paul Burton 2015-09-22 137 unsigned long memsize;
e81a8c7dabac05 Paul Burton 2015-09-22 138 unsigned mem_entries;
e81a8c7dabac05 Paul Burton 2015-09-22 139 int i, err, mem_off;
0051fc2e7b8450 Paul Burton 2016-09-19 140 enum mem_map mem_map;
0051fc2e7b8450 Paul Burton 2016-09-19 141 u32 config;
e81a8c7dabac05 Paul Burton 2015-09-22 142 char *var, param_name[10], *var_names[] = {
e81a8c7dabac05 Paul Burton 2015-09-22 143 "ememsize", "memsize",
e81a8c7dabac05 Paul Burton 2015-09-22 144 };
e81a8c7dabac05 Paul Burton 2015-09-22 145
e81a8c7dabac05 Paul Burton 2015-09-22 146 /* if a memory node already exists, leave it alone */
e81a8c7dabac05 Paul Burton 2015-09-22 147 mem_off = fdt_path_offset(fdt, "/memory");
e81a8c7dabac05 Paul Burton 2015-09-22 148 if (mem_off >= 0)
e81a8c7dabac05 Paul Burton 2015-09-22 149 return;
e81a8c7dabac05 Paul Burton 2015-09-22 150
e81a8c7dabac05 Paul Burton 2015-09-22 151 /* find memory size from the bootloader environment */
e81a8c7dabac05 Paul Burton 2015-09-22 152 for (i = 0; i < ARRAY_SIZE(var_names); i++) {
e81a8c7dabac05 Paul Burton 2015-09-22 153 var = fw_getenv(var_names[i]);
e81a8c7dabac05 Paul Burton 2015-09-22 154 if (!var)
e81a8c7dabac05 Paul Burton 2015-09-22 155 continue;
e81a8c7dabac05 Paul Burton 2015-09-22 156
e81a8c7dabac05 Paul Burton 2015-09-22 157 err = kstrtoul(var, 0, &physical_memsize);
e81a8c7dabac05 Paul Burton 2015-09-22 158 if (!err)
e81a8c7dabac05 Paul Burton 2015-09-22 159 break;
e81a8c7dabac05 Paul Burton 2015-09-22 160
e81a8c7dabac05 Paul Burton 2015-09-22 161 pr_warn("Failed to read the '%s' env variable '%s'\n",
e81a8c7dabac05 Paul Burton 2015-09-22 162 var_names[i], var);
e81a8c7dabac05 Paul Burton 2015-09-22 163 }
e81a8c7dabac05 Paul Burton 2015-09-22 164
e81a8c7dabac05 Paul Burton 2015-09-22 165 if (!physical_memsize) {
e81a8c7dabac05 Paul Burton 2015-09-22 166 pr_warn("The bootloader didn't provide memsize: defaulting to 32MB\n");
e81a8c7dabac05 Paul Burton 2015-09-22 167 physical_memsize = 32 << 20;
e81a8c7dabac05 Paul Burton 2015-09-22 168 }
e81a8c7dabac05 Paul Burton 2015-09-22 169
97f2645f358b41 Masahiro Yamada 2016-08-03 170 if (IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)) {
e81a8c7dabac05 Paul Burton 2015-09-22 171 /*
e81a8c7dabac05 Paul Burton 2015-09-22 172 * SOC-it swaps, or perhaps doesn't swap, when DMA'ing
e81a8c7dabac05 Paul Burton 2015-09-22 173 * the last word of physical memory.
e81a8c7dabac05 Paul Burton 2015-09-22 174 */
e81a8c7dabac05 Paul Burton 2015-09-22 175 physical_memsize -= PAGE_SIZE;
e81a8c7dabac05 Paul Burton 2015-09-22 176 }
e81a8c7dabac05 Paul Burton 2015-09-22 177
e81a8c7dabac05 Paul Burton 2015-09-22 178 /* default to using all available RAM */
e81a8c7dabac05 Paul Burton 2015-09-22 179 memsize = physical_memsize;
e81a8c7dabac05 Paul Burton 2015-09-22 180
e81a8c7dabac05 Paul Burton 2015-09-22 181 /* allow the user to override the usable memory */
e81a8c7dabac05 Paul Burton 2015-09-22 182 for (i = 0; i < ARRAY_SIZE(var_names); i++) {
e81a8c7dabac05 Paul Burton 2015-09-22 183 snprintf(param_name, sizeof(param_name), "%s=", var_names[i]);
e81a8c7dabac05 Paul Burton 2015-09-22 184 var = strstr(arcs_cmdline, param_name);
e81a8c7dabac05 Paul Burton 2015-09-22 185 if (!var)
e81a8c7dabac05 Paul Burton 2015-09-22 186 continue;
e81a8c7dabac05 Paul Burton 2015-09-22 187
e81a8c7dabac05 Paul Burton 2015-09-22 188 memsize = memparse(var + strlen(param_name), NULL);
e81a8c7dabac05 Paul Burton 2015-09-22 189 }
e81a8c7dabac05 Paul Burton 2015-09-22 190
e81a8c7dabac05 Paul Burton 2015-09-22 191 /* if the user says there's more RAM than we thought, believe them */
e81a8c7dabac05 Paul Burton 2015-09-22 @192 physical_memsize = max_t(unsigned long, physical_memsize, memsize);
e81a8c7dabac05 Paul Burton 2015-09-22 193
0051fc2e7b8450 Paul Burton 2016-09-19 194 /* detect the memory map in use */
0051fc2e7b8450 Paul Burton 2016-09-19 195 if (malta_scon() == MIPS_REVISION_SCON_ROCIT) {
0051fc2e7b8450 Paul Burton 2016-09-19 196 /* ROCit has a register indicating the memory map in use */
0051fc2e7b8450 Paul Burton 2016-09-19 197 config = readl((void __iomem *)CKSEG1ADDR(ROCIT_CONFIG_GEN1));
0051fc2e7b8450 Paul Burton 2016-09-19 198 mem_map = config & ROCIT_CONFIG_GEN1_MEMMAP_MASK;
0051fc2e7b8450 Paul Burton 2016-09-19 199 mem_map >>= ROCIT_CONFIG_GEN1_MEMMAP_SHIFT;
0051fc2e7b8450 Paul Burton 2016-09-19 200 } else {
0051fc2e7b8450 Paul Burton 2016-09-19 201 /* if not using ROCit, presume the v1 memory map */
0051fc2e7b8450 Paul Burton 2016-09-19 202 mem_map = MEM_MAP_V1;
0051fc2e7b8450 Paul Burton 2016-09-19 203 }
0051fc2e7b8450 Paul Burton 2016-09-19 204 if (mem_map > MEM_MAP_V2)
0051fc2e7b8450 Paul Burton 2016-09-19 205 panic("Unsupported physical memory map v%u detected",
0051fc2e7b8450 Paul Burton 2016-09-19 206 (unsigned int)mem_map);
0051fc2e7b8450 Paul Burton 2016-09-19 207
e81a8c7dabac05 Paul Burton 2015-09-22 208 /* append memory to the DT */
e81a8c7dabac05 Paul Burton 2015-09-22 209 mem_off = fdt_add_subnode(fdt, root_off, "memory");
e81a8c7dabac05 Paul Burton 2015-09-22 210 if (mem_off < 0)
e81a8c7dabac05 Paul Burton 2015-09-22 211 panic("Unable to add memory node to DT: %d", mem_off);
e81a8c7dabac05 Paul Burton 2015-09-22 212
e81a8c7dabac05 Paul Burton 2015-09-22 213 err = fdt_setprop_string(fdt, mem_off, "device_type", "memory");
e81a8c7dabac05 Paul Burton 2015-09-22 214 if (err)
e81a8c7dabac05 Paul Burton 2015-09-22 215 panic("Unable to set memory node device_type: %d", err);
e81a8c7dabac05 Paul Burton 2015-09-22 216
0051fc2e7b8450 Paul Burton 2016-09-19 217 mem_entries = gen_fdt_mem_array(mem_array, physical_memsize, mem_map);
e81a8c7dabac05 Paul Burton 2015-09-22 218 err = fdt_setprop(fdt, mem_off, "reg", mem_array,
e81a8c7dabac05 Paul Burton 2015-09-22 219 mem_entries * 2 * sizeof(mem_array[0]));
e81a8c7dabac05 Paul Burton 2015-09-22 220 if (err)
e81a8c7dabac05 Paul Burton 2015-09-22 221 panic("Unable to set memory regs property: %d", err);
e81a8c7dabac05 Paul Burton 2015-09-22 222
0051fc2e7b8450 Paul Burton 2016-09-19 223 mem_entries = gen_fdt_mem_array(mem_array, memsize, mem_map);
e81a8c7dabac05 Paul Burton 2015-09-22 224 err = fdt_setprop(fdt, mem_off, "linux,usable-memory", mem_array,
e81a8c7dabac05 Paul Burton 2015-09-22 225 mem_entries * 2 * sizeof(mem_array[0]));
e81a8c7dabac05 Paul Burton 2015-09-22 226 if (err)
e81a8c7dabac05 Paul Burton 2015-09-22 227 panic("Unable to set linux,usable-memory property: %d", err);
e81a8c7dabac05 Paul Burton 2015-09-22 228 }
e81a8c7dabac05 Paul Burton 2015-09-22 229
:::::: The code at line 92 was first introduced by commit
:::::: e81a8c7dabac05d444eda315ff1a747b0fe38396 MIPS: Malta: Setup RAM regions via DT
:::::: TO: Paul Burton <paul.burton@imgtec.com>
:::::: CC: Ralf Baechle <ralf@linux-mips.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [mingo-tip:sched/headers 1517/2384] arch/mips/mti-malta/malta-dtshim.c:92:15: error: implicit declaration of function 'min_t'
Date: Sat, 15 Jan 2022 20:29:45 +0800 [thread overview]
Message-ID: <202201152000.mOrb5rnf-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 15033 bytes --]
tree: git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git sched/headers
head: 4c707c1c0de83967079b4e385012fa5b00e2cd11
commit: 986644c38150163ceefbb1302500fba6787bf621 [1517/2384] headers/deps: Optimize <linux/kernel.h>
config: mips-maltaaprp_defconfig (https://download.01.org/0day-ci/archive/20220115/202201152000.mOrb5rnf-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 650fc40b6d8d9a5869b4fca525d5f237b0ee2803)
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
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git/commit/?id=986644c38150163ceefbb1302500fba6787bf621
git remote add mingo-tip git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git
git fetch --no-tags mingo-tip sched/headers
git checkout 986644c38150163ceefbb1302500fba6787bf621
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> arch/mips/mti-malta/malta-dtshim.c:92:15: error: implicit declaration of function 'min_t' [-Werror,-Wimplicit-function-declaration]
size_preio = min_t(unsigned long, size, SZ_256M);
^
>> arch/mips/mti-malta/malta-dtshim.c:92:21: error: expected expression
size_preio = min_t(unsigned long, size, SZ_256M);
^
>> arch/mips/mti-malta/malta-dtshim.c:192:21: error: implicit declaration of function 'max_t' [-Werror,-Wimplicit-function-declaration]
physical_memsize = max_t(unsigned long, physical_memsize, memsize);
^
arch/mips/mti-malta/malta-dtshim.c:192:27: error: expected expression
physical_memsize = max_t(unsigned long, physical_memsize, memsize);
^
4 errors generated.
vim +/min_t +92 arch/mips/mti-malta/malta-dtshim.c
0051fc2e7b8450 Paul Burton 2016-09-19 72
0051fc2e7b8450 Paul Burton 2016-09-19 73 static unsigned __init gen_fdt_mem_array(__be32 *mem_array, unsigned long size,
0051fc2e7b8450 Paul Burton 2016-09-19 74 enum mem_map map)
e81a8c7dabac05 Paul Burton 2015-09-22 75 {
e81a8c7dabac05 Paul Burton 2015-09-22 76 unsigned long size_preio;
e81a8c7dabac05 Paul Burton 2015-09-22 77 unsigned entries;
e81a8c7dabac05 Paul Burton 2015-09-22 78
e81a8c7dabac05 Paul Burton 2015-09-22 79 entries = 1;
e81a8c7dabac05 Paul Burton 2015-09-22 80 mem_array[0] = cpu_to_be32(PHYS_OFFSET);
97f2645f358b41 Masahiro Yamada 2016-08-03 81 if (IS_ENABLED(CONFIG_EVA)) {
e81a8c7dabac05 Paul Burton 2015-09-22 82 /*
e81a8c7dabac05 Paul Burton 2015-09-22 83 * The current Malta EVA configuration is "special" in that it
e81a8c7dabac05 Paul Burton 2015-09-22 84 * always makes use of addresses in the upper half of the 32 bit
e81a8c7dabac05 Paul Burton 2015-09-22 85 * physical address map, which gives it a contiguous region of
e81a8c7dabac05 Paul Burton 2015-09-22 86 * DDR but limits it to 2GB.
e81a8c7dabac05 Paul Burton 2015-09-22 87 */
e81a8c7dabac05 Paul Burton 2015-09-22 88 mem_array[1] = cpu_to_be32(size);
0051fc2e7b8450 Paul Burton 2016-09-19 89 goto done;
0051fc2e7b8450 Paul Burton 2016-09-19 90 }
0051fc2e7b8450 Paul Burton 2016-09-19 91
e81a8c7dabac05 Paul Burton 2015-09-22 @92 size_preio = min_t(unsigned long, size, SZ_256M);
e81a8c7dabac05 Paul Burton 2015-09-22 93 mem_array[1] = cpu_to_be32(size_preio);
0051fc2e7b8450 Paul Burton 2016-09-19 94 size -= size_preio;
0051fc2e7b8450 Paul Burton 2016-09-19 95 if (!size)
0051fc2e7b8450 Paul Burton 2016-09-19 96 goto done;
0051fc2e7b8450 Paul Burton 2016-09-19 97
0051fc2e7b8450 Paul Burton 2016-09-19 98 if (map == MEM_MAP_V2) {
0051fc2e7b8450 Paul Burton 2016-09-19 99 /*
0051fc2e7b8450 Paul Burton 2016-09-19 100 * We have a flat 32 bit physical memory map with DDR filling
0051fc2e7b8450 Paul Burton 2016-09-19 101 * all 4GB of the memory map, apart from the I/O region which
0051fc2e7b8450 Paul Burton 2016-09-19 102 * obscures 256MB from 0x10000000-0x1fffffff.
0051fc2e7b8450 Paul Burton 2016-09-19 103 *
0051fc2e7b8450 Paul Burton 2016-09-19 104 * Therefore we discard the 256MB behind the I/O region.
0051fc2e7b8450 Paul Burton 2016-09-19 105 */
0051fc2e7b8450 Paul Burton 2016-09-19 106 if (size <= SZ_256M)
0051fc2e7b8450 Paul Burton 2016-09-19 107 goto done;
0051fc2e7b8450 Paul Burton 2016-09-19 108 size -= SZ_256M;
0051fc2e7b8450 Paul Burton 2016-09-19 109
0051fc2e7b8450 Paul Burton 2016-09-19 110 /* Make use of the memory following the I/O region */
0051fc2e7b8450 Paul Burton 2016-09-19 111 entries++;
0051fc2e7b8450 Paul Burton 2016-09-19 112 mem_array[2] = cpu_to_be32(PHYS_OFFSET + SZ_512M);
0051fc2e7b8450 Paul Burton 2016-09-19 113 mem_array[3] = cpu_to_be32(size);
0051fc2e7b8450 Paul Burton 2016-09-19 114 } else {
0051fc2e7b8450 Paul Burton 2016-09-19 115 /*
0051fc2e7b8450 Paul Burton 2016-09-19 116 * We have a 32 bit physical memory map with a 2GB DDR region
0051fc2e7b8450 Paul Burton 2016-09-19 117 * aliased in the upper & lower halves of it. The I/O region
0051fc2e7b8450 Paul Burton 2016-09-19 118 * obscures 256MB from 0x10000000-0x1fffffff in the low alias
0051fc2e7b8450 Paul Burton 2016-09-19 119 * but the DDR it obscures is accessible via the high alias.
0051fc2e7b8450 Paul Burton 2016-09-19 120 *
0051fc2e7b8450 Paul Burton 2016-09-19 121 * Simply access everything beyond the lowest 256MB of DDR using
0051fc2e7b8450 Paul Burton 2016-09-19 122 * the high alias.
0051fc2e7b8450 Paul Burton 2016-09-19 123 */
0051fc2e7b8450 Paul Burton 2016-09-19 124 entries++;
0051fc2e7b8450 Paul Burton 2016-09-19 125 mem_array[2] = cpu_to_be32(PHYS_OFFSET + SZ_2G + SZ_256M);
0051fc2e7b8450 Paul Burton 2016-09-19 126 mem_array[3] = cpu_to_be32(size);
e81a8c7dabac05 Paul Burton 2015-09-22 127 }
e81a8c7dabac05 Paul Burton 2015-09-22 128
0051fc2e7b8450 Paul Burton 2016-09-19 129 done:
e81a8c7dabac05 Paul Burton 2015-09-22 130 BUG_ON(entries > MAX_MEM_ARRAY_ENTRIES);
e81a8c7dabac05 Paul Burton 2015-09-22 131 return entries;
e81a8c7dabac05 Paul Burton 2015-09-22 132 }
e81a8c7dabac05 Paul Burton 2015-09-22 133
e81a8c7dabac05 Paul Burton 2015-09-22 134 static void __init append_memory(void *fdt, int root_off)
e81a8c7dabac05 Paul Burton 2015-09-22 135 {
e81a8c7dabac05 Paul Burton 2015-09-22 136 __be32 mem_array[2 * MAX_MEM_ARRAY_ENTRIES];
e81a8c7dabac05 Paul Burton 2015-09-22 137 unsigned long memsize;
e81a8c7dabac05 Paul Burton 2015-09-22 138 unsigned mem_entries;
e81a8c7dabac05 Paul Burton 2015-09-22 139 int i, err, mem_off;
0051fc2e7b8450 Paul Burton 2016-09-19 140 enum mem_map mem_map;
0051fc2e7b8450 Paul Burton 2016-09-19 141 u32 config;
e81a8c7dabac05 Paul Burton 2015-09-22 142 char *var, param_name[10], *var_names[] = {
e81a8c7dabac05 Paul Burton 2015-09-22 143 "ememsize", "memsize",
e81a8c7dabac05 Paul Burton 2015-09-22 144 };
e81a8c7dabac05 Paul Burton 2015-09-22 145
e81a8c7dabac05 Paul Burton 2015-09-22 146 /* if a memory node already exists, leave it alone */
e81a8c7dabac05 Paul Burton 2015-09-22 147 mem_off = fdt_path_offset(fdt, "/memory");
e81a8c7dabac05 Paul Burton 2015-09-22 148 if (mem_off >= 0)
e81a8c7dabac05 Paul Burton 2015-09-22 149 return;
e81a8c7dabac05 Paul Burton 2015-09-22 150
e81a8c7dabac05 Paul Burton 2015-09-22 151 /* find memory size from the bootloader environment */
e81a8c7dabac05 Paul Burton 2015-09-22 152 for (i = 0; i < ARRAY_SIZE(var_names); i++) {
e81a8c7dabac05 Paul Burton 2015-09-22 153 var = fw_getenv(var_names[i]);
e81a8c7dabac05 Paul Burton 2015-09-22 154 if (!var)
e81a8c7dabac05 Paul Burton 2015-09-22 155 continue;
e81a8c7dabac05 Paul Burton 2015-09-22 156
e81a8c7dabac05 Paul Burton 2015-09-22 157 err = kstrtoul(var, 0, &physical_memsize);
e81a8c7dabac05 Paul Burton 2015-09-22 158 if (!err)
e81a8c7dabac05 Paul Burton 2015-09-22 159 break;
e81a8c7dabac05 Paul Burton 2015-09-22 160
e81a8c7dabac05 Paul Burton 2015-09-22 161 pr_warn("Failed to read the '%s' env variable '%s'\n",
e81a8c7dabac05 Paul Burton 2015-09-22 162 var_names[i], var);
e81a8c7dabac05 Paul Burton 2015-09-22 163 }
e81a8c7dabac05 Paul Burton 2015-09-22 164
e81a8c7dabac05 Paul Burton 2015-09-22 165 if (!physical_memsize) {
e81a8c7dabac05 Paul Burton 2015-09-22 166 pr_warn("The bootloader didn't provide memsize: defaulting to 32MB\n");
e81a8c7dabac05 Paul Burton 2015-09-22 167 physical_memsize = 32 << 20;
e81a8c7dabac05 Paul Burton 2015-09-22 168 }
e81a8c7dabac05 Paul Burton 2015-09-22 169
97f2645f358b41 Masahiro Yamada 2016-08-03 170 if (IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)) {
e81a8c7dabac05 Paul Burton 2015-09-22 171 /*
e81a8c7dabac05 Paul Burton 2015-09-22 172 * SOC-it swaps, or perhaps doesn't swap, when DMA'ing
e81a8c7dabac05 Paul Burton 2015-09-22 173 * the last word of physical memory.
e81a8c7dabac05 Paul Burton 2015-09-22 174 */
e81a8c7dabac05 Paul Burton 2015-09-22 175 physical_memsize -= PAGE_SIZE;
e81a8c7dabac05 Paul Burton 2015-09-22 176 }
e81a8c7dabac05 Paul Burton 2015-09-22 177
e81a8c7dabac05 Paul Burton 2015-09-22 178 /* default to using all available RAM */
e81a8c7dabac05 Paul Burton 2015-09-22 179 memsize = physical_memsize;
e81a8c7dabac05 Paul Burton 2015-09-22 180
e81a8c7dabac05 Paul Burton 2015-09-22 181 /* allow the user to override the usable memory */
e81a8c7dabac05 Paul Burton 2015-09-22 182 for (i = 0; i < ARRAY_SIZE(var_names); i++) {
e81a8c7dabac05 Paul Burton 2015-09-22 183 snprintf(param_name, sizeof(param_name), "%s=", var_names[i]);
e81a8c7dabac05 Paul Burton 2015-09-22 184 var = strstr(arcs_cmdline, param_name);
e81a8c7dabac05 Paul Burton 2015-09-22 185 if (!var)
e81a8c7dabac05 Paul Burton 2015-09-22 186 continue;
e81a8c7dabac05 Paul Burton 2015-09-22 187
e81a8c7dabac05 Paul Burton 2015-09-22 188 memsize = memparse(var + strlen(param_name), NULL);
e81a8c7dabac05 Paul Burton 2015-09-22 189 }
e81a8c7dabac05 Paul Burton 2015-09-22 190
e81a8c7dabac05 Paul Burton 2015-09-22 191 /* if the user says there's more RAM than we thought, believe them */
e81a8c7dabac05 Paul Burton 2015-09-22 @192 physical_memsize = max_t(unsigned long, physical_memsize, memsize);
e81a8c7dabac05 Paul Burton 2015-09-22 193
0051fc2e7b8450 Paul Burton 2016-09-19 194 /* detect the memory map in use */
0051fc2e7b8450 Paul Burton 2016-09-19 195 if (malta_scon() == MIPS_REVISION_SCON_ROCIT) {
0051fc2e7b8450 Paul Burton 2016-09-19 196 /* ROCit has a register indicating the memory map in use */
0051fc2e7b8450 Paul Burton 2016-09-19 197 config = readl((void __iomem *)CKSEG1ADDR(ROCIT_CONFIG_GEN1));
0051fc2e7b8450 Paul Burton 2016-09-19 198 mem_map = config & ROCIT_CONFIG_GEN1_MEMMAP_MASK;
0051fc2e7b8450 Paul Burton 2016-09-19 199 mem_map >>= ROCIT_CONFIG_GEN1_MEMMAP_SHIFT;
0051fc2e7b8450 Paul Burton 2016-09-19 200 } else {
0051fc2e7b8450 Paul Burton 2016-09-19 201 /* if not using ROCit, presume the v1 memory map */
0051fc2e7b8450 Paul Burton 2016-09-19 202 mem_map = MEM_MAP_V1;
0051fc2e7b8450 Paul Burton 2016-09-19 203 }
0051fc2e7b8450 Paul Burton 2016-09-19 204 if (mem_map > MEM_MAP_V2)
0051fc2e7b8450 Paul Burton 2016-09-19 205 panic("Unsupported physical memory map v%u detected",
0051fc2e7b8450 Paul Burton 2016-09-19 206 (unsigned int)mem_map);
0051fc2e7b8450 Paul Burton 2016-09-19 207
e81a8c7dabac05 Paul Burton 2015-09-22 208 /* append memory to the DT */
e81a8c7dabac05 Paul Burton 2015-09-22 209 mem_off = fdt_add_subnode(fdt, root_off, "memory");
e81a8c7dabac05 Paul Burton 2015-09-22 210 if (mem_off < 0)
e81a8c7dabac05 Paul Burton 2015-09-22 211 panic("Unable to add memory node to DT: %d", mem_off);
e81a8c7dabac05 Paul Burton 2015-09-22 212
e81a8c7dabac05 Paul Burton 2015-09-22 213 err = fdt_setprop_string(fdt, mem_off, "device_type", "memory");
e81a8c7dabac05 Paul Burton 2015-09-22 214 if (err)
e81a8c7dabac05 Paul Burton 2015-09-22 215 panic("Unable to set memory node device_type: %d", err);
e81a8c7dabac05 Paul Burton 2015-09-22 216
0051fc2e7b8450 Paul Burton 2016-09-19 217 mem_entries = gen_fdt_mem_array(mem_array, physical_memsize, mem_map);
e81a8c7dabac05 Paul Burton 2015-09-22 218 err = fdt_setprop(fdt, mem_off, "reg", mem_array,
e81a8c7dabac05 Paul Burton 2015-09-22 219 mem_entries * 2 * sizeof(mem_array[0]));
e81a8c7dabac05 Paul Burton 2015-09-22 220 if (err)
e81a8c7dabac05 Paul Burton 2015-09-22 221 panic("Unable to set memory regs property: %d", err);
e81a8c7dabac05 Paul Burton 2015-09-22 222
0051fc2e7b8450 Paul Burton 2016-09-19 223 mem_entries = gen_fdt_mem_array(mem_array, memsize, mem_map);
e81a8c7dabac05 Paul Burton 2015-09-22 224 err = fdt_setprop(fdt, mem_off, "linux,usable-memory", mem_array,
e81a8c7dabac05 Paul Burton 2015-09-22 225 mem_entries * 2 * sizeof(mem_array[0]));
e81a8c7dabac05 Paul Burton 2015-09-22 226 if (err)
e81a8c7dabac05 Paul Burton 2015-09-22 227 panic("Unable to set linux,usable-memory property: %d", err);
e81a8c7dabac05 Paul Burton 2015-09-22 228 }
e81a8c7dabac05 Paul Burton 2015-09-22 229
:::::: The code@line 92 was first introduced by commit
:::::: e81a8c7dabac05d444eda315ff1a747b0fe38396 MIPS: Malta: Setup RAM regions via DT
:::::: TO: Paul Burton <paul.burton@imgtec.com>
:::::: CC: Ralf Baechle <ralf@linux-mips.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next reply other threads:[~2022-01-15 12:29 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-15 12:29 kernel test robot [this message]
2022-01-15 12:29 ` [mingo-tip:sched/headers 1517/2384] arch/mips/mti-malta/malta-dtshim.c:92:15: error: implicit declaration of function 'min_t' kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202201152000.mOrb5rnf-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=mingo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.