From: kernel test robot <lkp@intel.com>
To: Michael Ellerman <mpe@ellerman.id.au>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: arch/powerpc/platforms/powernv/opal-core.c:476:58: sparse: sparse: incorrect type in argument 2 (different base types)
Date: Sun, 20 Feb 2022 23:52:07 +0800 [thread overview]
Message-ID: <202202202338.FLQ4w2vm-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4f12b742eb2b3a850ac8be7dc4ed52976fc6cb0b
commit: d936f8182e1bd18f5e9e6c5e8d8b69261200ca96 powerpc/powernv: Fix type of opal_mpipl_query_tag() addr argument
date: 10 months ago
config: powerpc64-randconfig-s032-20220220 (https://download.01.org/0day-ci/archive/20220220/202202202338.FLQ4w2vm-lkp@intel.com/config)
compiler: powerpc64-linux-gcc (GCC) 11.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d936f8182e1bd18f5e9e6c5e8d8b69261200ca96
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout d936f8182e1bd18f5e9e6c5e8d8b69261200ca96
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=powerpc SHELL=/bin/bash arch/powerpc/platforms/powernv/ drivers/gpu/drm/amd/display/amdgpu_dm/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
arch/powerpc/platforms/powernv/opal-core.c:99:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] n_namesz @@ got restricted __be32 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:99:24: sparse: expected unsigned int [usertype] n_namesz
arch/powerpc/platforms/powernv/opal-core.c:99:24: sparse: got restricted __be32 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:100:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] n_descsz @@ got restricted __be32 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:100:24: sparse: expected unsigned int [usertype] n_descsz
arch/powerpc/platforms/powernv/opal-core.c:100:24: sparse: got restricted __be32 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:101:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] n_type @@ got restricted __be32 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:101:24: sparse: expected unsigned int [usertype] n_type
arch/powerpc/platforms/powernv/opal-core.c:101:24: sparse: got restricted __be32 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:122:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [usertype] pr_pid @@ got restricted __be32 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:122:34: sparse: expected int [usertype] pr_pid
arch/powerpc/platforms/powernv/opal-core.c:122:34: sparse: got restricted __be32 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:123:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [usertype] pr_ppid @@ got restricted __be32 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:123:34: sparse: expected int [usertype] pr_ppid
arch/powerpc/platforms/powernv/opal-core.c:123:34: sparse: got restricted __be32 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:133:44: sparse: sparse: incorrect type in assignment (different base types) @@ expected short pr_cursig @@ got restricted __be16 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:133:44: sparse: expected short pr_cursig
arch/powerpc/platforms/powernv/opal-core.c:133:44: sparse: got restricted __be16 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:146:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:146:21: sparse: expected unsigned long long [usertype]
arch/powerpc/platforms/powernv/opal-core.c:146:21: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:147:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:147:21: sparse: expected unsigned long long [usertype]
arch/powerpc/platforms/powernv/opal-core.c:147:21: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:150:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:150:21: sparse: expected unsigned long long [usertype]
arch/powerpc/platforms/powernv/opal-core.c:150:21: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:277:17: sparse: sparse: cast to restricted __be64
arch/powerpc/platforms/powernv/opal-core.c:277:17: sparse: sparse: cast to restricted __be64
arch/powerpc/platforms/powernv/opal-core.c:363:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] e_type @@ got restricted __be16 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:363:21: sparse: expected unsigned short [usertype] e_type
arch/powerpc/platforms/powernv/opal-core.c:363:21: sparse: got restricted __be16 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:364:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] e_machine @@ got restricted __be16 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:364:24: sparse: expected unsigned short [usertype] e_machine
arch/powerpc/platforms/powernv/opal-core.c:364:24: sparse: got restricted __be16 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:365:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] e_version @@ got restricted __be32 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:365:24: sparse: expected unsigned int [usertype] e_version
arch/powerpc/platforms/powernv/opal-core.c:365:24: sparse: got restricted __be32 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:367:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] e_phoff @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:367:22: sparse: expected unsigned long long [usertype] e_phoff
arch/powerpc/platforms/powernv/opal-core.c:367:22: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:371:23: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] e_ehsize @@ got restricted __be16 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:371:23: sparse: expected unsigned short [usertype] e_ehsize
arch/powerpc/platforms/powernv/opal-core.c:371:23: sparse: got restricted __be16 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:372:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] e_phentsize @@ got restricted __be16 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:372:26: sparse: expected unsigned short [usertype] e_phentsize
arch/powerpc/platforms/powernv/opal-core.c:372:26: sparse: got restricted __be16 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:380:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] p_type @@ got restricted __be32 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:380:25: sparse: expected unsigned int [usertype] p_type
arch/powerpc/platforms/powernv/opal-core.c:380:25: sparse: got restricted __be32 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:384:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] p_offset @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:384:25: sparse: expected unsigned long long [usertype] p_offset
arch/powerpc/platforms/powernv/opal-core.c:384:25: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:385:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] p_memsz @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:385:41: sparse: expected unsigned long long [usertype] p_memsz
arch/powerpc/platforms/powernv/opal-core.c:385:41: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:394:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] p_type @@ got restricted __be32 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:394:33: sparse: expected unsigned int [usertype] p_type
arch/powerpc/platforms/powernv/opal-core.c:394:33: sparse: got restricted __be32 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:395:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] p_flags @@ got restricted __be32 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:395:33: sparse: expected unsigned int [usertype] p_flags
arch/powerpc/platforms/powernv/opal-core.c:395:33: sparse: got restricted __be32 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:406:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] p_paddr @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:406:33: sparse: expected unsigned long long [usertype] p_paddr
arch/powerpc/platforms/powernv/opal-core.c:406:33: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:407:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] p_vaddr @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:407:33: sparse: expected unsigned long long [usertype] p_vaddr
arch/powerpc/platforms/powernv/opal-core.c:407:33: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:408:50: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] p_memsz @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:408:50: sparse: expected unsigned long long [usertype] p_memsz
arch/powerpc/platforms/powernv/opal-core.c:408:50: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:410:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] p_offset @@ got restricted __be64 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:410:33: sparse: expected unsigned long long [usertype] p_offset
arch/powerpc/platforms/powernv/opal-core.c:410:33: sparse: got restricted __be64 [usertype]
arch/powerpc/platforms/powernv/opal-core.c:417:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] e_phnum @@ got restricted __be16 [usertype] @@
arch/powerpc/platforms/powernv/opal-core.c:417:22: sparse: expected unsigned short [usertype] e_phnum
arch/powerpc/platforms/powernv/opal-core.c:417:22: sparse: got restricted __be16 [usertype]
>> arch/powerpc/platforms/powernv/opal-core.c:476:58: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected restricted __be64 [usertype] *addr @@ got unsigned long long * @@
arch/powerpc/platforms/powernv/opal-core.c:476:58: sparse: expected restricted __be64 [usertype] *addr
arch/powerpc/platforms/powernv/opal-core.c:476:58: sparse: got unsigned long long *
arch/powerpc/platforms/powernv/opal-core.c:482:16: sparse: sparse: cast to restricted __be64
arch/powerpc/platforms/powernv/opal-core.c:487:57: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected restricted __be64 [usertype] *addr @@ got unsigned long long * @@
arch/powerpc/platforms/powernv/opal-core.c:487:57: sparse: expected restricted __be64 [usertype] *addr
arch/powerpc/platforms/powernv/opal-core.c:487:57: sparse: got unsigned long long *
arch/powerpc/platforms/powernv/opal-core.c:493:16: sparse: sparse: cast to restricted __be64
arch/powerpc/platforms/powernv/opal-core.c: note: in included file:
arch/powerpc/platforms/powernv/opal-fadump.h:138:33: sparse: sparse: restricted __be64 degrades to integer
--
arch/powerpc/platforms/powernv/opal-fadump.c:104:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] boot_mem_dest_addr @@ got restricted __be64 const [usertype] dest @@
arch/powerpc/platforms/powernv/opal-fadump.c:104:41: sparse: expected unsigned long long [usertype] boot_mem_dest_addr
arch/powerpc/platforms/powernv/opal-fadump.c:104:41: sparse: got restricted __be64 const [usertype] dest
arch/powerpc/platforms/powernv/opal-fadump.c:130:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long base @@ got restricted __be64 const [usertype] src @@
arch/powerpc/platforms/powernv/opal-fadump.c:130:22: sparse: expected unsigned long base
arch/powerpc/platforms/powernv/opal-fadump.c:130:22: sparse: got restricted __be64 const [usertype] src
arch/powerpc/platforms/powernv/opal-fadump.c:131:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long size @@ got restricted __be64 const [usertype] size @@
arch/powerpc/platforms/powernv/opal-fadump.c:131:22: sparse: expected unsigned long size
arch/powerpc/platforms/powernv/opal-fadump.c:131:22: sparse: got restricted __be64 const [usertype] size
arch/powerpc/platforms/powernv/opal-fadump.c:146:46: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long reserve_dump_area_start @@ got restricted __be64 const [usertype] dest @@
arch/powerpc/platforms/powernv/opal-fadump.c:146:46: sparse: expected unsigned long reserve_dump_area_start
arch/powerpc/platforms/powernv/opal-fadump.c:146:46: sparse: got restricted __be64 const [usertype] dest
arch/powerpc/platforms/powernv/opal-fadump.c:196:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be64 [usertype] src @@ got unsigned long long @@
arch/powerpc/platforms/powernv/opal-fadump.c:196:41: sparse: expected restricted __be64 [usertype] src
arch/powerpc/platforms/powernv/opal-fadump.c:196:41: sparse: got unsigned long long
arch/powerpc/platforms/powernv/opal-fadump.c:197:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be64 [usertype] dest @@ got unsigned long long [usertype] addr @@
arch/powerpc/platforms/powernv/opal-fadump.c:197:41: sparse: expected restricted __be64 [usertype] dest
arch/powerpc/platforms/powernv/opal-fadump.c:197:41: sparse: got unsigned long long [usertype] addr
arch/powerpc/platforms/powernv/opal-fadump.c:198:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be64 [usertype] size @@ got unsigned long long @@
arch/powerpc/platforms/powernv/opal-fadump.c:198:41: sparse: expected restricted __be64 [usertype] size
arch/powerpc/platforms/powernv/opal-fadump.c:198:41: sparse: got unsigned long long
arch/powerpc/platforms/powernv/opal-fadump.c:208:53: sparse: sparse: restricted __be64 degrades to integer
arch/powerpc/platforms/powernv/opal-fadump.c:276:56: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned long long [usertype] src @@ got restricted __be64 [usertype] src @@
arch/powerpc/platforms/powernv/opal-fadump.c:276:56: sparse: expected unsigned long long [usertype] src
arch/powerpc/platforms/powernv/opal-fadump.c:276:56: sparse: got restricted __be64 [usertype] src
arch/powerpc/platforms/powernv/opal-fadump.c:277:56: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned long long [usertype] dest @@ got restricted __be64 [usertype] dest @@
arch/powerpc/platforms/powernv/opal-fadump.c:277:56: sparse: expected unsigned long long [usertype] dest
arch/powerpc/platforms/powernv/opal-fadump.c:277:56: sparse: got restricted __be64 [usertype] dest
arch/powerpc/platforms/powernv/opal-fadump.c:278:56: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected unsigned long long [usertype] size @@ got restricted __be64 [usertype] size @@
arch/powerpc/platforms/powernv/opal-fadump.c:278:56: sparse: expected unsigned long long [usertype] size
arch/powerpc/platforms/powernv/opal-fadump.c:278:56: sparse: got restricted __be64 [usertype] size
arch/powerpc/platforms/powernv/opal-fadump.c:573:38: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] dumped_bytes @@ got restricted __be64 const [usertype] size @@
arch/powerpc/platforms/powernv/opal-fadump.c:573:38: sparse: expected unsigned long long [usertype] dumped_bytes
arch/powerpc/platforms/powernv/opal-fadump.c:573:38: sparse: got restricted __be64 const [usertype] size
>> arch/powerpc/platforms/powernv/opal-fadump.c:683:60: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected restricted __be64 [usertype] *addr @@ got unsigned long long * @@
arch/powerpc/platforms/powernv/opal-fadump.c:683:60: sparse: expected restricted __be64 [usertype] *addr
arch/powerpc/platforms/powernv/opal-fadump.c:683:60: sparse: got unsigned long long *
arch/powerpc/platforms/powernv/opal-fadump.c:689:16: sparse: sparse: cast to restricted __be64
arch/powerpc/platforms/powernv/opal-fadump.c:705:57: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected restricted __be64 [usertype] *addr @@ got unsigned long long * @@
arch/powerpc/platforms/powernv/opal-fadump.c:705:57: sparse: expected restricted __be64 [usertype] *addr
arch/powerpc/platforms/powernv/opal-fadump.c:705:57: sparse: got unsigned long long *
arch/powerpc/platforms/powernv/opal-fadump.c:707:24: sparse: sparse: cast to restricted __be64
arch/powerpc/platforms/powernv/opal-fadump.c: note: in included file:
arch/powerpc/platforms/powernv/opal-fadump.h:138:33: sparse: sparse: restricted __be64 degrades to integer
vim +476 arch/powerpc/platforms/powernv/opal-core.c
6f713d18144ce8 Hari Bathini 2019-09-11 298
6f713d18144ce8 Hari Bathini 2019-09-11 299 static int __init create_opalcore(void)
6f713d18144ce8 Hari Bathini 2019-09-11 300 {
6f713d18144ce8 Hari Bathini 2019-09-11 301 u64 opal_boot_entry, opal_base_addr, paddr;
6f713d18144ce8 Hari Bathini 2019-09-11 302 u32 hdr_size, cpu_notes_size, count;
6f713d18144ce8 Hari Bathini 2019-09-11 303 struct device_node *dn;
6f713d18144ce8 Hari Bathini 2019-09-11 304 struct opalcore *new;
6f713d18144ce8 Hari Bathini 2019-09-11 305 loff_t opalcore_off;
6f713d18144ce8 Hari Bathini 2019-09-11 306 struct page *page;
6f713d18144ce8 Hari Bathini 2019-09-11 307 Elf64_Phdr *phdr;
6f713d18144ce8 Hari Bathini 2019-09-11 308 Elf64_Ehdr *elf;
6f713d18144ce8 Hari Bathini 2019-09-11 309 int i, ret;
6f713d18144ce8 Hari Bathini 2019-09-11 310 char *bufp;
6f713d18144ce8 Hari Bathini 2019-09-11 311
6f713d18144ce8 Hari Bathini 2019-09-11 312 /* Get size of header & CPU notes for OPAL core */
6f713d18144ce8 Hari Bathini 2019-09-11 313 hdr_size = (sizeof(Elf64_Ehdr) +
6f713d18144ce8 Hari Bathini 2019-09-11 314 ((oc_conf->ptload_cnt + 1) * sizeof(Elf64_Phdr)));
6f713d18144ce8 Hari Bathini 2019-09-11 315 cpu_notes_size = ((oc_conf->num_cpus * (CRASH_CORE_NOTE_HEAD_BYTES +
6f713d18144ce8 Hari Bathini 2019-09-11 316 CRASH_CORE_NOTE_NAME_BYTES +
6f713d18144ce8 Hari Bathini 2019-09-11 317 CRASH_CORE_NOTE_DESC_BYTES)) +
6f713d18144ce8 Hari Bathini 2019-09-11 318 (CRASH_CORE_NOTE_HEAD_BYTES +
6f713d18144ce8 Hari Bathini 2019-09-11 319 CRASH_CORE_NOTE_NAME_BYTES + AUXV_DESC_SZ));
6f713d18144ce8 Hari Bathini 2019-09-11 320
6f713d18144ce8 Hari Bathini 2019-09-11 321 /* Allocate buffer to setup OPAL core */
6f713d18144ce8 Hari Bathini 2019-09-11 322 oc_conf->opalcorebuf_sz = PAGE_ALIGN(hdr_size + cpu_notes_size);
6f713d18144ce8 Hari Bathini 2019-09-11 323 oc_conf->opalcorebuf = alloc_pages_exact(oc_conf->opalcorebuf_sz,
6f713d18144ce8 Hari Bathini 2019-09-11 324 GFP_KERNEL | __GFP_ZERO);
6f713d18144ce8 Hari Bathini 2019-09-11 325 if (!oc_conf->opalcorebuf) {
6f713d18144ce8 Hari Bathini 2019-09-11 326 pr_err("Not enough memory to setup OPAL core (size: %lu)\n",
6f713d18144ce8 Hari Bathini 2019-09-11 327 oc_conf->opalcorebuf_sz);
6f713d18144ce8 Hari Bathini 2019-09-11 328 oc_conf->opalcorebuf_sz = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 329 return -ENOMEM;
6f713d18144ce8 Hari Bathini 2019-09-11 330 }
6f713d18144ce8 Hari Bathini 2019-09-11 331 count = oc_conf->opalcorebuf_sz / PAGE_SIZE;
6f713d18144ce8 Hari Bathini 2019-09-11 332 page = virt_to_page(oc_conf->opalcorebuf);
6f713d18144ce8 Hari Bathini 2019-09-11 333 for (i = 0; i < count; i++)
6f713d18144ce8 Hari Bathini 2019-09-11 334 mark_page_reserved(page + i);
6f713d18144ce8 Hari Bathini 2019-09-11 335
6f713d18144ce8 Hari Bathini 2019-09-11 336 pr_debug("opalcorebuf = 0x%llx\n", (u64)oc_conf->opalcorebuf);
6f713d18144ce8 Hari Bathini 2019-09-11 337
6f713d18144ce8 Hari Bathini 2019-09-11 338 /* Read OPAL related device-tree entries */
6f713d18144ce8 Hari Bathini 2019-09-11 339 dn = of_find_node_by_name(NULL, "ibm,opal");
6f713d18144ce8 Hari Bathini 2019-09-11 340 if (dn) {
6f713d18144ce8 Hari Bathini 2019-09-11 341 ret = of_property_read_u64(dn, "opal-base-address",
6f713d18144ce8 Hari Bathini 2019-09-11 342 &opal_base_addr);
6f713d18144ce8 Hari Bathini 2019-09-11 343 pr_debug("opal-base-address: %llx\n", opal_base_addr);
6f713d18144ce8 Hari Bathini 2019-09-11 344 ret |= of_property_read_u64(dn, "opal-boot-address",
6f713d18144ce8 Hari Bathini 2019-09-11 345 &opal_boot_entry);
6f713d18144ce8 Hari Bathini 2019-09-11 346 pr_debug("opal-boot-address: %llx\n", opal_boot_entry);
6f713d18144ce8 Hari Bathini 2019-09-11 347 }
6f713d18144ce8 Hari Bathini 2019-09-11 348 if (!dn || ret)
6f713d18144ce8 Hari Bathini 2019-09-11 349 pr_warn("WARNING: Failed to read OPAL base & entry values\n");
6f713d18144ce8 Hari Bathini 2019-09-11 350
6f713d18144ce8 Hari Bathini 2019-09-11 351 /* Use count to keep track of the program headers */
6f713d18144ce8 Hari Bathini 2019-09-11 352 count = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 353
6f713d18144ce8 Hari Bathini 2019-09-11 354 bufp = oc_conf->opalcorebuf;
6f713d18144ce8 Hari Bathini 2019-09-11 355 elf = (Elf64_Ehdr *)bufp;
6f713d18144ce8 Hari Bathini 2019-09-11 356 bufp += sizeof(Elf64_Ehdr);
6f713d18144ce8 Hari Bathini 2019-09-11 357 memcpy(elf->e_ident, ELFMAG, SELFMAG);
6f713d18144ce8 Hari Bathini 2019-09-11 358 elf->e_ident[EI_CLASS] = ELF_CLASS;
6f713d18144ce8 Hari Bathini 2019-09-11 359 elf->e_ident[EI_DATA] = ELFDATA2MSB;
6f713d18144ce8 Hari Bathini 2019-09-11 360 elf->e_ident[EI_VERSION] = EV_CURRENT;
6f713d18144ce8 Hari Bathini 2019-09-11 361 elf->e_ident[EI_OSABI] = ELF_OSABI;
6f713d18144ce8 Hari Bathini 2019-09-11 362 memset(elf->e_ident+EI_PAD, 0, EI_NIDENT-EI_PAD);
6f713d18144ce8 Hari Bathini 2019-09-11 363 elf->e_type = cpu_to_be16(ET_CORE);
6f713d18144ce8 Hari Bathini 2019-09-11 364 elf->e_machine = cpu_to_be16(ELF_ARCH);
6f713d18144ce8 Hari Bathini 2019-09-11 365 elf->e_version = cpu_to_be32(EV_CURRENT);
6f713d18144ce8 Hari Bathini 2019-09-11 366 elf->e_entry = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 367 elf->e_phoff = cpu_to_be64(sizeof(Elf64_Ehdr));
6f713d18144ce8 Hari Bathini 2019-09-11 368 elf->e_shoff = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 369 elf->e_flags = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 370
6f713d18144ce8 Hari Bathini 2019-09-11 371 elf->e_ehsize = cpu_to_be16(sizeof(Elf64_Ehdr));
6f713d18144ce8 Hari Bathini 2019-09-11 372 elf->e_phentsize = cpu_to_be16(sizeof(Elf64_Phdr));
6f713d18144ce8 Hari Bathini 2019-09-11 373 elf->e_phnum = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 374 elf->e_shentsize = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 375 elf->e_shnum = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 376 elf->e_shstrndx = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 377
6f713d18144ce8 Hari Bathini 2019-09-11 378 phdr = (Elf64_Phdr *)bufp;
6f713d18144ce8 Hari Bathini 2019-09-11 379 bufp += sizeof(Elf64_Phdr);
6f713d18144ce8 Hari Bathini 2019-09-11 380 phdr->p_type = cpu_to_be32(PT_NOTE);
6f713d18144ce8 Hari Bathini 2019-09-11 381 phdr->p_flags = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 382 phdr->p_align = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 383 phdr->p_paddr = phdr->p_vaddr = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 384 phdr->p_offset = cpu_to_be64(hdr_size);
6f713d18144ce8 Hari Bathini 2019-09-11 385 phdr->p_filesz = phdr->p_memsz = cpu_to_be64(cpu_notes_size);
6f713d18144ce8 Hari Bathini 2019-09-11 386 count++;
6f713d18144ce8 Hari Bathini 2019-09-11 387
6f713d18144ce8 Hari Bathini 2019-09-11 388 opalcore_off = oc_conf->opalcorebuf_sz;
6f713d18144ce8 Hari Bathini 2019-09-11 389 oc_conf->ptload_phdr = (Elf64_Phdr *)bufp;
6f713d18144ce8 Hari Bathini 2019-09-11 390 paddr = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 391 for (i = 0; i < oc_conf->ptload_cnt; i++) {
6f713d18144ce8 Hari Bathini 2019-09-11 392 phdr = (Elf64_Phdr *)bufp;
6f713d18144ce8 Hari Bathini 2019-09-11 393 bufp += sizeof(Elf64_Phdr);
6f713d18144ce8 Hari Bathini 2019-09-11 394 phdr->p_type = cpu_to_be32(PT_LOAD);
6f713d18144ce8 Hari Bathini 2019-09-11 395 phdr->p_flags = cpu_to_be32(PF_R|PF_W|PF_X);
6f713d18144ce8 Hari Bathini 2019-09-11 396 phdr->p_align = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 397
6f713d18144ce8 Hari Bathini 2019-09-11 398 new = get_new_element();
6f713d18144ce8 Hari Bathini 2019-09-11 399 if (!new)
6f713d18144ce8 Hari Bathini 2019-09-11 400 return -ENOMEM;
6f713d18144ce8 Hari Bathini 2019-09-11 401 new->paddr = oc_conf->ptload_addr[i];
6f713d18144ce8 Hari Bathini 2019-09-11 402 new->size = oc_conf->ptload_size[i];
6f713d18144ce8 Hari Bathini 2019-09-11 403 new->offset = opalcore_off;
6f713d18144ce8 Hari Bathini 2019-09-11 404 list_add_tail(&new->list, &opalcore_list);
6f713d18144ce8 Hari Bathini 2019-09-11 405
6f713d18144ce8 Hari Bathini 2019-09-11 406 phdr->p_paddr = cpu_to_be64(paddr);
6f713d18144ce8 Hari Bathini 2019-09-11 407 phdr->p_vaddr = cpu_to_be64(opal_base_addr + paddr);
6f713d18144ce8 Hari Bathini 2019-09-11 @408 phdr->p_filesz = phdr->p_memsz =
6f713d18144ce8 Hari Bathini 2019-09-11 409 cpu_to_be64(oc_conf->ptload_size[i]);
6f713d18144ce8 Hari Bathini 2019-09-11 410 phdr->p_offset = cpu_to_be64(opalcore_off);
6f713d18144ce8 Hari Bathini 2019-09-11 411
6f713d18144ce8 Hari Bathini 2019-09-11 412 count++;
6f713d18144ce8 Hari Bathini 2019-09-11 413 opalcore_off += oc_conf->ptload_size[i];
6f713d18144ce8 Hari Bathini 2019-09-11 414 paddr += oc_conf->ptload_size[i];
6f713d18144ce8 Hari Bathini 2019-09-11 415 }
6f713d18144ce8 Hari Bathini 2019-09-11 416
6f713d18144ce8 Hari Bathini 2019-09-11 417 elf->e_phnum = cpu_to_be16(count);
6f713d18144ce8 Hari Bathini 2019-09-11 418
6f713d18144ce8 Hari Bathini 2019-09-11 419 bufp = (char *)opalcore_append_cpu_notes((Elf64_Word *)bufp);
6f713d18144ce8 Hari Bathini 2019-09-11 420 bufp = (char *)auxv_to_elf64_notes((Elf64_Word *)bufp, opal_boot_entry);
6f713d18144ce8 Hari Bathini 2019-09-11 421
6f713d18144ce8 Hari Bathini 2019-09-11 422 oc_conf->opalcore_size = opalcore_off;
6f713d18144ce8 Hari Bathini 2019-09-11 423 return 0;
6f713d18144ce8 Hari Bathini 2019-09-11 424 }
6f713d18144ce8 Hari Bathini 2019-09-11 425
6f713d18144ce8 Hari Bathini 2019-09-11 426 static void opalcore_cleanup(void)
6f713d18144ce8 Hari Bathini 2019-09-11 427 {
6f713d18144ce8 Hari Bathini 2019-09-11 428 if (oc_conf == NULL)
6f713d18144ce8 Hari Bathini 2019-09-11 429 return;
6f713d18144ce8 Hari Bathini 2019-09-11 430
6f713d18144ce8 Hari Bathini 2019-09-11 431 /* Remove OPAL core sysfs file */
8852c07a881b0a Sourabh Jain 2019-12-11 432 sysfs_remove_bin_file(mpipl_kobj, &opal_core_attr);
6f713d18144ce8 Hari Bathini 2019-09-11 433 oc_conf->ptload_phdr = NULL;
6f713d18144ce8 Hari Bathini 2019-09-11 434 oc_conf->ptload_cnt = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 435
6f713d18144ce8 Hari Bathini 2019-09-11 436 /* free the buffer used for setting up OPAL core */
6f713d18144ce8 Hari Bathini 2019-09-11 437 if (oc_conf->opalcorebuf) {
6f713d18144ce8 Hari Bathini 2019-09-11 438 void *end = (void *)((u64)oc_conf->opalcorebuf +
6f713d18144ce8 Hari Bathini 2019-09-11 439 oc_conf->opalcorebuf_sz);
6f713d18144ce8 Hari Bathini 2019-09-11 440
6f713d18144ce8 Hari Bathini 2019-09-11 441 free_reserved_area(oc_conf->opalcorebuf, end, -1, NULL);
6f713d18144ce8 Hari Bathini 2019-09-11 442 oc_conf->opalcorebuf = NULL;
6f713d18144ce8 Hari Bathini 2019-09-11 443 oc_conf->opalcorebuf_sz = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 444 }
6f713d18144ce8 Hari Bathini 2019-09-11 445
6f713d18144ce8 Hari Bathini 2019-09-11 446 kfree(oc_conf);
6f713d18144ce8 Hari Bathini 2019-09-11 447 oc_conf = NULL;
6f713d18144ce8 Hari Bathini 2019-09-11 448 }
6f713d18144ce8 Hari Bathini 2019-09-11 449 __exitcall(opalcore_cleanup);
6f713d18144ce8 Hari Bathini 2019-09-11 450
6f713d18144ce8 Hari Bathini 2019-09-11 451 static void __init opalcore_config_init(void)
6f713d18144ce8 Hari Bathini 2019-09-11 452 {
6f713d18144ce8 Hari Bathini 2019-09-11 453 u32 idx, cpu_data_version;
6f713d18144ce8 Hari Bathini 2019-09-11 454 struct device_node *np;
6f713d18144ce8 Hari Bathini 2019-09-11 455 const __be32 *prop;
6f713d18144ce8 Hari Bathini 2019-09-11 456 u64 addr = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 457 int i, ret;
6f713d18144ce8 Hari Bathini 2019-09-11 458
6f713d18144ce8 Hari Bathini 2019-09-11 459 np = of_find_node_by_path("/ibm,opal/dump");
6f713d18144ce8 Hari Bathini 2019-09-11 460 if (np == NULL)
6f713d18144ce8 Hari Bathini 2019-09-11 461 return;
6f713d18144ce8 Hari Bathini 2019-09-11 462
6f713d18144ce8 Hari Bathini 2019-09-11 463 if (!of_device_is_compatible(np, "ibm,opal-dump")) {
6f713d18144ce8 Hari Bathini 2019-09-11 464 pr_warn("Support missing for this f/w version!\n");
6f713d18144ce8 Hari Bathini 2019-09-11 465 return;
6f713d18144ce8 Hari Bathini 2019-09-11 466 }
6f713d18144ce8 Hari Bathini 2019-09-11 467
6f713d18144ce8 Hari Bathini 2019-09-11 468 /* Check if dump has been initiated on last reboot */
6f713d18144ce8 Hari Bathini 2019-09-11 469 prop = of_get_property(np, "mpipl-boot", NULL);
6f713d18144ce8 Hari Bathini 2019-09-11 470 if (!prop) {
6f713d18144ce8 Hari Bathini 2019-09-11 471 of_node_put(np);
6f713d18144ce8 Hari Bathini 2019-09-11 472 return;
6f713d18144ce8 Hari Bathini 2019-09-11 473 }
6f713d18144ce8 Hari Bathini 2019-09-11 474
6f713d18144ce8 Hari Bathini 2019-09-11 475 /* Get OPAL metadata */
6f713d18144ce8 Hari Bathini 2019-09-11 @476 ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_OPAL, &addr);
6f713d18144ce8 Hari Bathini 2019-09-11 477 if ((ret != OPAL_SUCCESS) || !addr) {
6f713d18144ce8 Hari Bathini 2019-09-11 478 pr_err("Failed to get OPAL metadata (%d)\n", ret);
6f713d18144ce8 Hari Bathini 2019-09-11 479 goto error_out;
6f713d18144ce8 Hari Bathini 2019-09-11 480 }
6f713d18144ce8 Hari Bathini 2019-09-11 481
6f713d18144ce8 Hari Bathini 2019-09-11 482 addr = be64_to_cpu(addr);
6f713d18144ce8 Hari Bathini 2019-09-11 483 pr_debug("OPAL metadata addr: %llx\n", addr);
6f713d18144ce8 Hari Bathini 2019-09-11 484 opalc_metadata = __va(addr);
6f713d18144ce8 Hari Bathini 2019-09-11 485
6f713d18144ce8 Hari Bathini 2019-09-11 486 /* Get OPAL CPU metadata */
6f713d18144ce8 Hari Bathini 2019-09-11 487 ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_CPU, &addr);
6f713d18144ce8 Hari Bathini 2019-09-11 488 if ((ret != OPAL_SUCCESS) || !addr) {
6f713d18144ce8 Hari Bathini 2019-09-11 489 pr_err("Failed to get OPAL CPU metadata (%d)\n", ret);
6f713d18144ce8 Hari Bathini 2019-09-11 490 goto error_out;
6f713d18144ce8 Hari Bathini 2019-09-11 491 }
6f713d18144ce8 Hari Bathini 2019-09-11 492
6f713d18144ce8 Hari Bathini 2019-09-11 493 addr = be64_to_cpu(addr);
6f713d18144ce8 Hari Bathini 2019-09-11 494 pr_debug("CPU metadata addr: %llx\n", addr);
6f713d18144ce8 Hari Bathini 2019-09-11 495 opalc_cpu_metadata = __va(addr);
6f713d18144ce8 Hari Bathini 2019-09-11 496
6f713d18144ce8 Hari Bathini 2019-09-11 497 /* Allocate memory for config buffer */
6f713d18144ce8 Hari Bathini 2019-09-11 498 oc_conf = kzalloc(sizeof(struct opalcore_config), GFP_KERNEL);
6f713d18144ce8 Hari Bathini 2019-09-11 499 if (oc_conf == NULL)
6f713d18144ce8 Hari Bathini 2019-09-11 500 goto error_out;
6f713d18144ce8 Hari Bathini 2019-09-11 501
6f713d18144ce8 Hari Bathini 2019-09-11 502 /* Parse OPAL metadata */
6f713d18144ce8 Hari Bathini 2019-09-11 503 if (opalc_metadata->version != OPAL_MPIPL_VERSION) {
6f713d18144ce8 Hari Bathini 2019-09-11 504 pr_warn("Supported OPAL metadata version: %u, found: %u!\n",
6f713d18144ce8 Hari Bathini 2019-09-11 505 OPAL_MPIPL_VERSION, opalc_metadata->version);
6f713d18144ce8 Hari Bathini 2019-09-11 506 pr_warn("WARNING: F/W using newer OPAL metadata format!!\n");
6f713d18144ce8 Hari Bathini 2019-09-11 507 }
6f713d18144ce8 Hari Bathini 2019-09-11 508
6f713d18144ce8 Hari Bathini 2019-09-11 509 oc_conf->ptload_cnt = 0;
6f713d18144ce8 Hari Bathini 2019-09-11 510 idx = be32_to_cpu(opalc_metadata->region_cnt);
6f713d18144ce8 Hari Bathini 2019-09-11 511 if (idx > MAX_PT_LOAD_CNT) {
6f713d18144ce8 Hari Bathini 2019-09-11 512 pr_warn("WARNING: OPAL regions count (%d) adjusted to limit (%d)",
8ec5cb12cd957e Qinglang Miao 2020-09-16 513 idx, MAX_PT_LOAD_CNT);
6f713d18144ce8 Hari Bathini 2019-09-11 514 idx = MAX_PT_LOAD_CNT;
6f713d18144ce8 Hari Bathini 2019-09-11 515 }
6f713d18144ce8 Hari Bathini 2019-09-11 516 for (i = 0; i < idx; i++) {
6f713d18144ce8 Hari Bathini 2019-09-11 517 oc_conf->ptload_addr[oc_conf->ptload_cnt] =
6f713d18144ce8 Hari Bathini 2019-09-11 518 be64_to_cpu(opalc_metadata->region[i].dest);
6f713d18144ce8 Hari Bathini 2019-09-11 519 oc_conf->ptload_size[oc_conf->ptload_cnt++] =
6f713d18144ce8 Hari Bathini 2019-09-11 520 be64_to_cpu(opalc_metadata->region[i].size);
6f713d18144ce8 Hari Bathini 2019-09-11 521 }
6f713d18144ce8 Hari Bathini 2019-09-11 522 oc_conf->ptload_cnt = i;
6f713d18144ce8 Hari Bathini 2019-09-11 523 oc_conf->crashing_cpu = be32_to_cpu(opalc_metadata->crashing_pir);
6f713d18144ce8 Hari Bathini 2019-09-11 524
6f713d18144ce8 Hari Bathini 2019-09-11 525 if (!oc_conf->ptload_cnt) {
6f713d18144ce8 Hari Bathini 2019-09-11 526 pr_err("OPAL memory regions not found\n");
6f713d18144ce8 Hari Bathini 2019-09-11 527 goto error_out;
6f713d18144ce8 Hari Bathini 2019-09-11 528 }
6f713d18144ce8 Hari Bathini 2019-09-11 529
6f713d18144ce8 Hari Bathini 2019-09-11 530 /* Parse OPAL CPU metadata */
6f713d18144ce8 Hari Bathini 2019-09-11 531 cpu_data_version = be32_to_cpu(opalc_cpu_metadata->cpu_data_version);
6f713d18144ce8 Hari Bathini 2019-09-11 532 if (cpu_data_version != HDAT_FADUMP_CPU_DATA_VER) {
6f713d18144ce8 Hari Bathini 2019-09-11 533 pr_warn("Supported CPU data version: %u, found: %u!\n",
6f713d18144ce8 Hari Bathini 2019-09-11 534 HDAT_FADUMP_CPU_DATA_VER, cpu_data_version);
6f713d18144ce8 Hari Bathini 2019-09-11 535 pr_warn("WARNING: F/W using newer CPU state data format!!\n");
6f713d18144ce8 Hari Bathini 2019-09-11 536 }
6f713d18144ce8 Hari Bathini 2019-09-11 537
6f713d18144ce8 Hari Bathini 2019-09-11 538 addr = be64_to_cpu(opalc_cpu_metadata->region[0].dest);
6f713d18144ce8 Hari Bathini 2019-09-11 539 if (!addr) {
6f713d18144ce8 Hari Bathini 2019-09-11 540 pr_err("CPU state data not found!\n");
6f713d18144ce8 Hari Bathini 2019-09-11 541 goto error_out;
6f713d18144ce8 Hari Bathini 2019-09-11 542 }
6f713d18144ce8 Hari Bathini 2019-09-11 543 oc_conf->cpu_state_destination_vaddr = (u64)__va(addr);
6f713d18144ce8 Hari Bathini 2019-09-11 544
6f713d18144ce8 Hari Bathini 2019-09-11 545 oc_conf->cpu_state_data_size =
6f713d18144ce8 Hari Bathini 2019-09-11 546 be64_to_cpu(opalc_cpu_metadata->region[0].size);
6f713d18144ce8 Hari Bathini 2019-09-11 547 oc_conf->cpu_state_entry_size =
6f713d18144ce8 Hari Bathini 2019-09-11 548 be32_to_cpu(opalc_cpu_metadata->cpu_data_size);
6f713d18144ce8 Hari Bathini 2019-09-11 549
6f713d18144ce8 Hari Bathini 2019-09-11 550 if ((oc_conf->cpu_state_entry_size == 0) ||
6f713d18144ce8 Hari Bathini 2019-09-11 551 (oc_conf->cpu_state_entry_size > oc_conf->cpu_state_data_size)) {
6f713d18144ce8 Hari Bathini 2019-09-11 552 pr_err("CPU state data is invalid.\n");
6f713d18144ce8 Hari Bathini 2019-09-11 553 goto error_out;
6f713d18144ce8 Hari Bathini 2019-09-11 554 }
6f713d18144ce8 Hari Bathini 2019-09-11 555 oc_conf->num_cpus = (oc_conf->cpu_state_data_size /
6f713d18144ce8 Hari Bathini 2019-09-11 556 oc_conf->cpu_state_entry_size);
6f713d18144ce8 Hari Bathini 2019-09-11 557
6f713d18144ce8 Hari Bathini 2019-09-11 558 of_node_put(np);
6f713d18144ce8 Hari Bathini 2019-09-11 559 return;
6f713d18144ce8 Hari Bathini 2019-09-11 560
6f713d18144ce8 Hari Bathini 2019-09-11 561 error_out:
6f713d18144ce8 Hari Bathini 2019-09-11 562 pr_err("Could not export /sys/firmware/opal/core\n");
6f713d18144ce8 Hari Bathini 2019-09-11 563 opalcore_cleanup();
6f713d18144ce8 Hari Bathini 2019-09-11 564 of_node_put(np);
6f713d18144ce8 Hari Bathini 2019-09-11 565 }
6f713d18144ce8 Hari Bathini 2019-09-11 566
:::::: The code at line 476 was first introduced by commit
:::::: 6f713d18144ce86c9f01cdf64222d6339e26129e powerpc/opalcore: export /sys/firmware/opal/core for analysing opal crashes
:::::: TO: Hari Bathini <hbathini@linux.vnet.ibm.com>
:::::: CC: Michael Ellerman <mpe@ellerman.id.au>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
next reply other threads:[~2022-02-20 15:52 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-20 15:52 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2023-12-19 22:10 arch/powerpc/platforms/powernv/opal-core.c:476:58: sparse: sparse: incorrect type in argument 2 (different base types) kernel test robot
2023-12-15 14:52 kernel test robot
2023-12-07 23:34 kernel test robot
2023-12-04 17:32 kernel test robot
2021-05-18 21:34 kernel test robot
2021-05-18 21:34 ` 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=202202202338.FLQ4w2vm-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpe@ellerman.id.au \
/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.