Hi Dan,

I love your patch! Yet something to improve:

[auto build test ERROR on linux-nvdimm/libnvdimm-for-next]
[also build test ERROR on v5.0-rc4 next-20190201]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Dan-Williams/libnvdimm-dimm-Add-a-no-BLK-quirk-based-on-NVDIMM-family/20190203-213444
base:   https://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git 
libnvdimm-for-next
config: x86_64-randconfig-x018-201905 (attached as .config)
compiler: gcc-8 (Debian 8.2.0-14) 8.2.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   drivers/acpi//nfit/core.c: In function 'acpi_nfit_register_dimms':
>> drivers/acpi//nfit/core.c:2003:27: error: 'NVDIMM_FAMILY_HYPERV' undeclared 
>> (first use in this function); did you mean 'NVDIMM_FAMILY_HPE2'?
      if (nfit_mem->family == NVDIMM_FAMILY_HYPERV)
                              ^~~~~~~~~~~~~~~~~~~~
                              NVDIMM_FAMILY_HPE2
   drivers/acpi//nfit/core.c:2003:27: note: each undeclared identifier is 
reported only once for each function it appears in

vim +2003 drivers/acpi//nfit/core.c

  1944  
  1945  static int acpi_nfit_register_dimms(struct acpi_nfit_desc *acpi_desc)
  1946  {
  1947          struct nfit_mem *nfit_mem;
  1948          int dimm_count = 0, rc;
  1949          struct nvdimm *nvdimm;
  1950  
  1951          list_for_each_entry(nfit_mem, &acpi_desc->dimms, list) {
  1952                  struct acpi_nfit_flush_address *flush;
  1953                  unsigned long flags = 0, cmd_mask;
  1954                  struct nfit_memdev *nfit_memdev;
  1955                  u32 device_handle;
  1956                  u16 mem_flags;
  1957  
  1958                  device_handle = 
__to_nfit_memdev(nfit_mem)->device_handle;
  1959                  nvdimm = acpi_nfit_dimm_by_handle(acpi_desc, 
device_handle);
  1960                  if (nvdimm) {
  1961                          dimm_count++;
  1962                          continue;
  1963                  }
  1964  
  1965                  if (nfit_mem->bdw && nfit_mem->memdev_pmem)
  1966                          set_bit(NDD_ALIASING, &flags);
  1967  
  1968                  /* collate flags across all memdevs for this dimm */
  1969                  list_for_each_entry(nfit_memdev, &acpi_desc->memdevs, 
list) {
  1970                          struct acpi_nfit_memory_map *dimm_memdev;
  1971  
  1972                          dimm_memdev = __to_nfit_memdev(nfit_mem);
  1973                          if (dimm_memdev->device_handle
  1974                                          != 
nfit_memdev->memdev->device_handle)
  1975                                  continue;
  1976                          dimm_memdev->flags |= 
nfit_memdev->memdev->flags;
  1977                  }
  1978  
  1979                  mem_flags = __to_nfit_memdev(nfit_mem)->flags;
  1980                  if (mem_flags & ACPI_NFIT_MEM_NOT_ARMED)
  1981                          set_bit(NDD_UNARMED, &flags);
  1982  
  1983                  rc = acpi_nfit_add_dimm(acpi_desc, nfit_mem, 
device_handle);
  1984                  if (rc)
  1985                          continue;
  1986  
  1987                  /*
  1988                   * TODO: provide translation for non-NVDIMM_FAMILY_INTEL
  1989                   * devices (i.e. from nd_cmd to acpi_dsm) to 
standardize the
  1990                   * userspace interface.
  1991                   */
  1992                  cmd_mask = 1UL << ND_CMD_CALL;
  1993                  if (nfit_mem->family == NVDIMM_FAMILY_INTEL) {
  1994                          /*
  1995                           * These commands have a 1:1 correspondence
  1996                           * between DSM payload and libnvdimm ioctl
  1997                           * payload format.
  1998                           */
  1999                          cmd_mask |= nfit_mem->dsm_mask & 
NVDIMM_STANDARD_CMDMASK;
  2000                  }
  2001  
  2002                  /* Quirk to ignore LOCAL for labels on HYPERV DIMMs */
> 2003                  if (nfit_mem->family == NVDIMM_FAMILY_HYPERV)
  2004                          set_bit(NDD_NOBLK, &flags);
  2005  
  2006                  if (test_bit(NFIT_MEM_LSR, &nfit_mem->flags)) {
  2007                          set_bit(ND_CMD_GET_CONFIG_SIZE, &cmd_mask);
  2008                          set_bit(ND_CMD_GET_CONFIG_DATA, &cmd_mask);
  2009                  }
  2010                  if (test_bit(NFIT_MEM_LSW, &nfit_mem->flags))
  2011                          set_bit(ND_CMD_SET_CONFIG_DATA, &cmd_mask);
  2012  
  2013                  flush = nfit_mem->nfit_flush ? 
nfit_mem->nfit_flush->flush
  2014                          : NULL;
  2015                  nvdimm = __nvdimm_create(acpi_desc->nvdimm_bus, 
nfit_mem,
  2016                                  acpi_nfit_dimm_attribute_groups,
  2017                                  flags, cmd_mask, flush ? 
flush->hint_count : 0,
  2018                                  nfit_mem->flush_wpq, &nfit_mem->id[0],
  2019                                  
acpi_nfit_get_security_ops(nfit_mem->family));
  2020                  if (!nvdimm)
  2021                          return -ENOMEM;
  2022  
  2023                  nfit_mem->nvdimm = nvdimm;
  2024                  dimm_count++;
  2025  
  2026                  if ((mem_flags & ACPI_NFIT_MEM_FAILED_MASK) == 0)
  2027                          continue;
  2028  
  2029                  dev_info(acpi_desc->dev, "%s flags:%s%s%s%s%s\n",
  2030                                  nvdimm_name(nvdimm),
  2031                    mem_flags & ACPI_NFIT_MEM_SAVE_FAILED ? " save_fail" 
: "",
  2032                    mem_flags & ACPI_NFIT_MEM_RESTORE_FAILED ? " 
restore_fail":"",
  2033                    mem_flags & ACPI_NFIT_MEM_FLUSH_FAILED ? " 
flush_fail" : "",
  2034                    mem_flags & ACPI_NFIT_MEM_NOT_ARMED ? " not_armed" : 
"",
  2035                    mem_flags & ACPI_NFIT_MEM_MAP_FAILED ? " map_fail" : 
"");
  2036  
  2037          }
  2038  
  2039          rc = nvdimm_bus_check_dimm_count(acpi_desc->nvdimm_bus, 
dimm_count);
  2040          if (rc)
  2041                  return rc;
  2042  
  2043          /*
  2044           * Now that dimms are successfully registered, and async 
registration
  2045           * is flushed, attempt to enable event notification.
  2046           */
  2047          list_for_each_entry(nfit_mem, &acpi_desc->dimms, list) {
  2048                  struct kernfs_node *nfit_kernfs;
  2049  
  2050                  nvdimm = nfit_mem->nvdimm;
  2051                  if (!nvdimm)
  2052                          continue;
  2053  
  2054                  rc = nvdimm_security_setup_events(nvdimm);
  2055                  if (rc < 0)
  2056                          dev_warn(acpi_desc->dev,
  2057                                  "security event setup failed: %d\n", 
rc);
  2058  
  2059                  nfit_kernfs = sysfs_get_dirent(nvdimm_kobj(nvdimm)->sd, 
"nfit");
  2060                  if (nfit_kernfs)
  2061                          nfit_mem->flags_attr = 
sysfs_get_dirent(nfit_kernfs,
  2062                                          "flags");
  2063                  sysfs_put(nfit_kernfs);
  2064                  if (!nfit_mem->flags_attr)
  2065                          dev_warn(acpi_desc->dev, "%s: notifications 
disabled\n",
  2066                                          nvdimm_name(nvdimm));
  2067          }
  2068  
  2069          return devm_add_action_or_reset(acpi_desc->dev, 
shutdown_dimm_notify,
  2070                          acpi_desc);
  2071  }
  2072  

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

Attachment: .config.gz
Description: application/gzip

Reply via email to