Re: [PATCH 08/10] nvdimm: Add driver for OpenCAPI Storage Class Memory

From: kbuild test robot
Date: Sun Oct 27 2019 - 18:56:12 EST


Hi Alastair,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on char-misc/char-misc-testing]
[cannot apply to v5.4-rc5 next-20191025]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Alastair-D-Silva/Add-support-for-OpenCAPI-SCM-devices/20191028-043750
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git da80d2e516eb858eb5bcca7fa5f5a13ed86930e4
config: x86_64-allyesconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-14) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

drivers/nvdimm/ocxl-scm.c: In function 'scm_register_lpc_mem':
>> drivers/nvdimm/ocxl-scm.c:476:16: error: implicit declaration of function 'of_node_to_nid'; did you mean 'zone_to_nid'? [-Werror=implicit-function-declaration]
target_node = of_node_to_nid(scm_data->pdev->dev.of_node);
^~~~~~~~~~~~~~
zone_to_nid
cc1: some warnings being treated as errors
--
drivers/misc/ocxl/main.c: In function 'init_ocxl':
>> drivers/misc/ocxl/main.c:12:7: error: 'tlbie_capable' undeclared (first use in this function); did you mean 'ptracer_capable'?
if (!tlbie_capable)
^~~~~~~~~~~~~
ptracer_capable
drivers/misc/ocxl/main.c:12:7: note: each undeclared identifier is reported only once for each function it appears in
--
>> drivers/misc/ocxl/config.c:4:10: fatal error: asm/pnv-ocxl.h: No such file or directory
#include <asm/pnv-ocxl.h>
^~~~~~~~~~~~~~~~
compilation terminated.
--
>> drivers/misc/ocxl/file.c:9:10: fatal error: asm/reg.h: No such file or directory
#include <asm/reg.h>
^~~~~~~~~~~
compilation terminated.
--
drivers/misc/ocxl/mmio.c: In function 'ocxl_global_mmio_read32':
>> drivers/misc/ocxl/mmio.c:20:10: error: implicit declaration of function 'readl_be'; did you mean 'readsb'? [-Werror=implicit-function-declaration]
*val = readl_be((char *)afu->global_mmio_ptr + offset);
^~~~~~~~
readsb
drivers/misc/ocxl/mmio.c: In function 'ocxl_global_mmio_read64':
>> drivers/misc/ocxl/mmio.c:45:10: error: implicit declaration of function 'readq_be'; did you mean 'readsb'? [-Werror=implicit-function-declaration]
*val = readq_be((char *)afu->global_mmio_ptr + offset);
^~~~~~~~
readsb
drivers/misc/ocxl/mmio.c: In function 'ocxl_global_mmio_write32':
>> drivers/misc/ocxl/mmio.c:70:3: error: implicit declaration of function 'writel_be'; did you mean 'writesb'? [-Werror=implicit-function-declaration]
writel_be(val, (char *)afu->global_mmio_ptr + offset);
^~~~~~~~~
writesb
drivers/misc/ocxl/mmio.c: In function 'ocxl_global_mmio_write64':
>> drivers/misc/ocxl/mmio.c:96:3: error: implicit declaration of function 'writeq_be'; did you mean 'writesb'? [-Werror=implicit-function-declaration]
writeq_be(val, (char *)afu->global_mmio_ptr + offset);
^~~~~~~~~
writesb
cc1: some warnings being treated as errors
--
>> drivers/misc/ocxl/link.c:7:10: fatal error: asm/copro.h: No such file or directory
#include <asm/copro.h>
^~~~~~~~~~~~~
compilation terminated.
--
drivers/misc/ocxl/context.c: In function 'ocxl_context_attach':
>> drivers/misc/ocxl/context.c:82:21: error: 'mm_context_t {aka struct <anonymous>}' has no member named 'id'
pidr = mm->context.id;
^
--
>> drivers/misc/ocxl/afu_irq.c:4:10: fatal error: asm/pnv-ocxl.h: No such file or directory
#include <asm/pnv-ocxl.h>
^~~~~~~~~~~~~~~~
compilation terminated.
--
drivers/misc/ocxl/core.c: In function 'ocxl_function_open':
>> drivers/misc/ocxl/core.c:546:7: error: implicit declaration of function 'radix_enabled'; did you mean 'pat_enabled'? [-Werror=implicit-function-declaration]
if (!radix_enabled()) {
^~~~~~~~~~~~~
pat_enabled
cc1: some warnings being treated as errors

vim +476 drivers/nvdimm/ocxl-scm.c

402
403 /**
404 * scm_register_lpc_mem() - Discover persistent memory on a device and register it with the NVDIMM subsystem
405 * @scm_data: The SCM device data
406 * Return: 0 on success
407 */
408 static int scm_register_lpc_mem(struct scm_data *scm_data)
409 {
410 struct nd_region_desc region_desc;
411 struct nd_mapping_desc nd_mapping_desc;
412 struct resource *lpc_mem;
413 const struct ocxl_afu_config *config;
414 const struct ocxl_fn_config *fn_config;
415 int rc;
416 unsigned long nvdimm_cmd_mask = 0;
417 unsigned long nvdimm_flags = 0;
418 int target_node;
419 char serial[16+1];
420
421 // Set up the reserved metadata area
422 rc = ocxl_afu_map_lpc_mem(scm_data->ocxl_afu);
423 if (rc < 0)
424 return rc;
425
426 lpc_mem = ocxl_afu_lpc_mem(scm_data->ocxl_afu);
427 if (lpc_mem == NULL)
428 return -EINVAL;
429
430 config = ocxl_afu_config(scm_data->ocxl_afu);
431 fn_config = ocxl_function_config(scm_data->ocxl_fn);
432
433 rc = scm_reserve_metadata(scm_data, lpc_mem);
434 if (rc)
435 return rc;
436
437 scm_data->bus_desc.attr_groups = scm_pmem_attribute_groups;
438 scm_data->bus_desc.provider_name = "scm";
439 scm_data->bus_desc.ndctl = scm_ndctl;
440 scm_data->bus_desc.module = THIS_MODULE;
441
442 scm_data->nvdimm_bus = nvdimm_bus_register(&scm_data->dev,
443 &scm_data->bus_desc);
444 if (!scm_data->nvdimm_bus)
445 return -EINVAL;
446
447 scm_data->scm_res.start = (u64)lpc_mem->start + SCM_LABEL_AREA_SIZE;
448 scm_data->scm_res.end = (u64)lpc_mem->start + config->lpc_mem_size - 1;
449 scm_data->scm_res.name = "SCM persistent memory";
450
451 set_bit(ND_CMD_GET_CONFIG_SIZE, &nvdimm_cmd_mask);
452 set_bit(ND_CMD_GET_CONFIG_DATA, &nvdimm_cmd_mask);
453 set_bit(ND_CMD_SET_CONFIG_DATA, &nvdimm_cmd_mask);
454 set_bit(ND_CMD_SMART, &nvdimm_cmd_mask);
455
456 set_bit(NDD_ALIASING, &nvdimm_flags);
457
458 snprintf(serial, sizeof(serial), "%llx", fn_config->serial);
459 nd_mapping_desc.nvdimm = __nvdimm_create(scm_data->nvdimm_bus, scm_data,
460 scm_dimm_attribute_groups,
461 nvdimm_flags, nvdimm_cmd_mask,
462 0, NULL, serial, &sec_ops);
463 if (!nd_mapping_desc.nvdimm)
464 return -ENOMEM;
465
466 if (nvdimm_bus_check_dimm_count(scm_data->nvdimm_bus, 1))
467 return -EINVAL;
468
469 nd_mapping_desc.start = scm_data->scm_res.start;
470 nd_mapping_desc.size = resource_size(&scm_data->scm_res);
471 nd_mapping_desc.position = 0;
472
473 scm_data->nd_set.cookie1 = fn_config->serial + 1; // allow for empty serial
474 scm_data->nd_set.cookie2 = fn_config->serial + 1;
475
> 476 target_node = of_node_to_nid(scm_data->pdev->dev.of_node);
477
478 memset(&region_desc, 0, sizeof(region_desc));
479 region_desc.res = &scm_data->scm_res;
480 region_desc.attr_groups = scm_pmem_region_attribute_groups;
481 region_desc.numa_node = NUMA_NO_NODE;
482 region_desc.target_node = target_node;
483 region_desc.num_mappings = 1;
484 region_desc.mapping = &nd_mapping_desc;
485 region_desc.nd_set = &scm_data->nd_set;
486
487 set_bit(ND_REGION_PAGEMAP, &region_desc.flags);
488 /*
489 * NB: libnvdimm copies the data from ndr_desc into it's own
490 * structures so passing a stack pointer is fine.
491 */
492 scm_data->nd_region = nvdimm_pmem_region_create(scm_data->nvdimm_bus,
493 &region_desc);
494 if (!scm_data->nd_region)
495 return -EINVAL;
496
497 dev_info(&scm_data->dev,
498 "Onlining %lluMB of persistent memory\n",
499 nd_mapping_desc.size / SZ_1M);
500
501 return 0;
502 }
503

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip