Message ID | 20241205211854.43215-4-zaidal@os.amperecomputing.com |
---|---|
State | New |
Headers | show |
Series | Enable EINJv2 support | expand |
Hi Zaid,
kernel test robot noticed the following build warnings:
[auto build test WARNING on rafael-pm/linux-next]
[also build test WARNING on rafael-pm/bleeding-edge linus/master v6.13-rc1 next-20241205]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Zaid-Alali/ACPICA-Update-values-to-hex-to-follow-ACPI-specs/20241206-052420
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
patch link: https://lore.kernel.org/r/20241205211854.43215-4-zaidal%40os.amperecomputing.com
patch subject: [PATCH v2 3/9] ACPI: APEI: EINJ: Fix kernel test robot sparse warning
config: i386-buildonly-randconfig-005-20241206 (https://download.01.org/0day-ci/archive/20241206/202412061152.Zar8cGxV-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241206/202412061152.Zar8cGxV-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202412061152.Zar8cGxV-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from drivers/acpi/apei/einj-core.c:23:
In file included from include/linux/mm.h:2223:
include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
518 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
>> drivers/acpi/apei/einj-core.c:338:6: warning: variable 'p' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
338 | if (!r) {
| ^~
drivers/acpi/apei/einj-core.c:436:6: note: uninitialized use occurs here
436 | if (p)
| ^
drivers/acpi/apei/einj-core.c:338:2: note: remove the 'if' if its condition is always false
338 | if (!r) {
| ^~~~~~~~~
339 | pr_err("Can not request [mem %#010llx-%#010llx] for Trigger table\n",
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
340 | (unsigned long long)trigger_paddr,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
341 | (unsigned long long)trigger_paddr +
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
342 | sizeof(*trigger_tab) - 1);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
343 | goto out;
| ~~~~~~~~~
344 | }
| ~
drivers/acpi/apei/einj-core.c:334:17: note: initialize the variable 'p' to silence this warning
334 | void __iomem *p;
| ^
| = NULL
2 warnings generated.
vim +338 drivers/acpi/apei/einj-core.c
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 301
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 302 static struct acpi_generic_address *einj_get_trigger_parameter_region(
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 303 struct acpi_einj_trigger *trigger_tab, u64 param1, u64 param2)
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 304 {
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 305 int i;
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 306 struct acpi_whea_header *entry;
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 307
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 308 entry = (struct acpi_whea_header *)
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 309 ((char *)trigger_tab + sizeof(struct acpi_einj_trigger));
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 310 for (i = 0; i < trigger_tab->entry_count; i++) {
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 311 if (entry->action == ACPI_EINJ_TRIGGER_ERROR &&
1d5d820b8fe83b5 drivers/acpi/apei/einj.c Yazen Ghannam 2017-08-28 312 entry->instruction <= ACPI_EINJ_WRITE_REGISTER_VALUE &&
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 313 entry->register_region.space_id ==
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 314 ACPI_ADR_SPACE_SYSTEM_MEMORY &&
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 315 (entry->register_region.address & param2) == (param1 & param2))
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 316 return &entry->register_region;
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 317 entry++;
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 318 }
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 319
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 320 return NULL;
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 321 }
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 322 /* Execute instructions in trigger error action table */
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 323 static int __einj_error_trigger(u64 trigger_paddr, u32 type,
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 324 u64 param1, u64 param2)
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 325 {
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 326 struct acpi_einj_trigger *trigger_tab = NULL;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 327 struct apei_exec_context trigger_ctx;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 328 struct apei_resources trigger_resources;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 329 struct acpi_whea_header *trigger_entry;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 330 struct resource *r;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 331 u32 table_size;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 332 int rc = -EIO;
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 333 struct acpi_generic_address *trigger_param_region = NULL;
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 334 void __iomem *p;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 335
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 336 r = request_mem_region(trigger_paddr, sizeof(*trigger_tab),
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 337 "APEI EINJ Trigger Table");
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 @338 if (!r) {
b2f740baa421525 drivers/acpi/apei/einj.c Borislav Petkov 2016-05-23 339 pr_err("Can not request [mem %#010llx-%#010llx] for Trigger table\n",
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 340 (unsigned long long)trigger_paddr,
46b91e379f7180b drivers/acpi/apei/einj.c Bjorn Helgaas 2011-12-08 341 (unsigned long long)trigger_paddr +
46b91e379f7180b drivers/acpi/apei/einj.c Bjorn Helgaas 2011-12-08 342 sizeof(*trigger_tab) - 1);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 343 goto out;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 344 }
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 345 p = ioremap_cache(trigger_paddr, sizeof(*trigger_tab));
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 346 if (!p) {
b2f740baa421525 drivers/acpi/apei/einj.c Borislav Petkov 2016-05-23 347 pr_err("Failed to map trigger table!\n");
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 348 goto out_rel_header;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 349 }
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 350 trigger_tab = __io_virt(p);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 351 rc = einj_check_trigger_header(trigger_tab);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 352 if (rc) {
933ca4e323de777 drivers/acpi/apei/einj.c Kefeng Wang 2019-10-18 353 pr_warn(FW_BUG "Invalid trigger error action table.\n");
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 354 goto out_rel_header;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 355 }
4c40aed869a200a drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09 356
4c40aed869a200a drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09 357 /* No action structures in the TRIGGER_ERROR table, nothing to do */
4c40aed869a200a drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09 358 if (!trigger_tab->entry_count)
4c40aed869a200a drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09 359 goto out_rel_header;
4c40aed869a200a drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09 360
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 361 rc = -EIO;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 362 table_size = trigger_tab->table_size;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 363 r = request_mem_region(trigger_paddr + sizeof(*trigger_tab),
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 364 table_size - sizeof(*trigger_tab),
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 365 "APEI EINJ Trigger Table");
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 366 if (!r) {
b2f740baa421525 drivers/acpi/apei/einj.c Borislav Petkov 2016-05-23 367 pr_err("Can not request [mem %#010llx-%#010llx] for Trigger Table Entry\n",
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 368 (unsigned long long)trigger_paddr + sizeof(*trigger_tab),
46b91e379f7180b drivers/acpi/apei/einj.c Bjorn Helgaas 2011-12-08 369 (unsigned long long)trigger_paddr + table_size - 1);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 370 goto out_rel_header;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 371 }
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 372 iounmap(p);
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 373 p = ioremap_cache(trigger_paddr, table_size);
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 374 if (!p) {
b2f740baa421525 drivers/acpi/apei/einj.c Borislav Petkov 2016-05-23 375 pr_err("Failed to map trigger table!\n");
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 376 goto out_rel_entry;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 377 }
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 378 trigger_tab = __io_virt(p);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 379 trigger_entry = (struct acpi_whea_header *)
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 380 ((char *)trigger_tab + sizeof(struct acpi_einj_trigger));
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 381 apei_resources_init(&trigger_resources);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 382 apei_exec_ctx_init(&trigger_ctx, einj_ins_type,
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 383 ARRAY_SIZE(einj_ins_type),
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 384 trigger_entry, trigger_tab->entry_count);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 385 rc = apei_exec_collect_resources(&trigger_ctx, &trigger_resources);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 386 if (rc)
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 387 goto out_fini;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 388 rc = apei_resources_sub(&trigger_resources, &einj_resources);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 389 if (rc)
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 390 goto out_fini;
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 391 /*
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 392 * Some firmware will access target address specified in
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 393 * param1 to trigger the error when injecting memory error.
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 394 * This will cause resource conflict with regular memory. So
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 395 * remove it from trigger table resources.
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 396 */
c5a130325f13b21 drivers/acpi/apei/einj.c Chen Gong 2013-06-06 397 if ((param_extension || acpi5) && (type & MEM_ERROR_MASK) && param2) {
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 398 struct apei_resources addr_resources;
37ea9693869627d drivers/acpi/apei/einj.c Jay Lu 2022-12-06 399
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 400 apei_resources_init(&addr_resources);
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 401 trigger_param_region = einj_get_trigger_parameter_region(
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 402 trigger_tab, param1, param2);
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 403 if (trigger_param_region) {
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 404 rc = apei_resources_add(&addr_resources,
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 405 trigger_param_region->address,
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 406 trigger_param_region->bit_width/8, true);
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 407 if (rc)
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 408 goto out_fini;
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 409 rc = apei_resources_sub(&trigger_resources,
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 410 &addr_resources);
b4e008dc53a31cb drivers/acpi/apei/einj.c Xiao, Hui 2011-12-08 411 }
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 412 apei_resources_fini(&addr_resources);
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 413 if (rc)
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 414 goto out_fini;
fdea163d8c17ba0 drivers/acpi/apei/einj.c Huang Ying 2011-12-08 415 }
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 416 rc = apei_resources_request(&trigger_resources, "APEI EINJ Trigger");
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 417 if (rc)
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 418 goto out_fini;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 419 rc = apei_exec_pre_map_gars(&trigger_ctx);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 420 if (rc)
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 421 goto out_release;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 422
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 423 rc = apei_exec_run(&trigger_ctx, ACPI_EINJ_TRIGGER_ERROR);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 424
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 425 apei_exec_post_unmap_gars(&trigger_ctx);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 426 out_release:
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 427 apei_resources_release(&trigger_resources);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 428 out_fini:
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 429 apei_resources_fini(&trigger_resources);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 430 out_rel_entry:
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 431 release_mem_region(trigger_paddr + sizeof(*trigger_tab),
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 432 table_size - sizeof(*trigger_tab));
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 433 out_rel_header:
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 434 release_mem_region(trigger_paddr, sizeof(*trigger_tab));
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 435 out:
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 436 if (p)
37dbc95939d19c3 drivers/acpi/apei/einj-core.c Zaid Alali 2024-12-05 437 iounmap(p);
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 438
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 439 return rc;
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 440 }
e40213450b53157 drivers/acpi/apei/einj.c Huang Ying 2010-05-18 441
diff --git a/drivers/acpi/apei/einj-core.c b/drivers/acpi/apei/einj-core.c index 04731a5b01fa..74dfb3daba50 100644 --- a/drivers/acpi/apei/einj-core.c +++ b/drivers/acpi/apei/einj-core.c @@ -215,20 +215,22 @@ static void check_vendor_extension(u64 paddr, { int offset = v5param->vendor_extension; struct vendor_error_type_extension *v; + void __iomem *p; u32 sbdf; if (!offset) return; - v = acpi_os_map_iomem(paddr + offset, sizeof(*v)); - if (!v) + p = acpi_os_map_iomem(paddr + offset, sizeof(*v)); + if (!p) return; + v = __io_virt(p); get_oem_vendor_struct(paddr, offset, v); sbdf = v->pcie_sbdf; sprintf(vendor_dev, "%x:%x:%x.%x vendor_id=%x device_id=%x rev_id=%x\n", sbdf >> 24, (sbdf >> 16) & 0xff, (sbdf >> 11) & 0x1f, (sbdf >> 8) & 0x7, v->vendor_id, v->device_id, v->rev_id); - acpi_os_unmap_iomem(v, sizeof(*v)); + acpi_os_unmap_iomem(p, sizeof(*v)); } static void *einj_get_parameter_address(void) @@ -253,9 +255,11 @@ static void *einj_get_parameter_address(void) } if (pa_v5) { struct set_error_type_with_address *v5param; + void __iomem *p; - v5param = acpi_os_map_iomem(pa_v5, sizeof(*v5param)); - if (v5param) { + p = acpi_os_map_iomem(pa_v5, sizeof(*v5param)); + if (p) { + v5param = __io_virt(p); acpi5 = 1; check_vendor_extension(pa_v5, v5param); return v5param; @@ -263,12 +267,14 @@ static void *einj_get_parameter_address(void) } if (param_extension && pa_v4) { struct einj_parameter *v4param; + void __iomem *p; - v4param = acpi_os_map_iomem(pa_v4, sizeof(*v4param)); - if (!v4param) + p = acpi_os_map_iomem(pa_v4, sizeof(*v4param)); + if (!p) return NULL; + v4param = __io_virt(p); if (v4param->reserved1 || v4param->reserved2) { - acpi_os_unmap_iomem(v4param, sizeof(*v4param)); + acpi_os_unmap_iomem(p, sizeof(*v4param)); return NULL; } return v4param; @@ -325,6 +331,7 @@ static int __einj_error_trigger(u64 trigger_paddr, u32 type, u32 table_size; int rc = -EIO; struct acpi_generic_address *trigger_param_region = NULL; + void __iomem *p; r = request_mem_region(trigger_paddr, sizeof(*trigger_tab), "APEI EINJ Trigger Table"); @@ -335,11 +342,12 @@ static int __einj_error_trigger(u64 trigger_paddr, u32 type, sizeof(*trigger_tab) - 1); goto out; } - trigger_tab = ioremap_cache(trigger_paddr, sizeof(*trigger_tab)); - if (!trigger_tab) { + p = ioremap_cache(trigger_paddr, sizeof(*trigger_tab)); + if (!p) { pr_err("Failed to map trigger table!\n"); goto out_rel_header; } + trigger_tab = __io_virt(p); rc = einj_check_trigger_header(trigger_tab); if (rc) { pr_warn(FW_BUG "Invalid trigger error action table.\n"); @@ -361,12 +369,13 @@ static int __einj_error_trigger(u64 trigger_paddr, u32 type, (unsigned long long)trigger_paddr + table_size - 1); goto out_rel_header; } - iounmap(trigger_tab); - trigger_tab = ioremap_cache(trigger_paddr, table_size); - if (!trigger_tab) { + iounmap(p); + p = ioremap_cache(trigger_paddr, table_size); + if (!p) { pr_err("Failed to map trigger table!\n"); goto out_rel_entry; } + trigger_tab = __io_virt(p); trigger_entry = (struct acpi_whea_header *) ((char *)trigger_tab + sizeof(struct acpi_einj_trigger)); apei_resources_init(&trigger_resources); @@ -424,8 +433,8 @@ static int __einj_error_trigger(u64 trigger_paddr, u32 type, out_rel_header: release_mem_region(trigger_paddr, sizeof(*trigger_tab)); out: - if (trigger_tab) - iounmap(trigger_tab); + if (p) + iounmap(p); return rc; } @@ -860,7 +869,7 @@ static void __exit einj_remove(struct platform_device *pdev) sizeof(struct set_error_type_with_address) : sizeof(struct einj_parameter); - acpi_os_unmap_iomem(einj_param, size); + acpi_os_unmap_iomem((void __iomem *)einj_param, size); if (vendor_errors.size) acpi_os_unmap_memory(vendor_errors.data, vendor_errors.size); }
This patch fixes the kernel test robot warning reported here: https://lore.kernel.org/all/202410241620.oApALow5-lkp@intel.com/ Signed-off-by: Zaid Alali <zaidal@os.amperecomputing.com> --- drivers/acpi/apei/einj-core.c | 41 +++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 16 deletions(-)