• Dan Williams's avatar
    cxl/pmem: Register 'pmem' / cxl_nvdimm devices · 21083f51
    Dan Williams authored
    While a memX device on /sys/bus/cxl represents a CXL memory expander
    control interface, a pmemX device represents the persistent memory
    sub-functionality. It bridges the CXL subystem to the libnvdimm nmemX
    control interface.
    
    With this skeleton ndctl can now see persistent memory devices on a
    "CXL" bus. Later patches add support for translating libnvdimm native
    commands to CXL commands.
    
    # ndctl list -BDiu -b CXL
    {
      "provider":"CXL",
      "dev":"ndbus1",
      "dimms":[
        {
          "dev":"nmem1",
          "state":"disabled"
        },
        {
          "dev":"nmem0",
          "state":"disabled"
        }
      ]
    }
    
    Given nvdimm_bus_unregister() removes all devices on an ndbus0 the
    cxl_pmem infrastructure needs to arrange ->remove() to be triggered on
    cxl_nvdimm devices to keep their enabled state synchronized with the
    registration state of their corresponding device on the nvdimm_bus. In
    other words, always arrange for cxl_nvdimm_driver.remove() to unregister
    nvdimms from an nvdimm_bus ahead of the bus being unregistered.
    Reviewed-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    Link: https://lore.kernel.org/r/162380012696.3039556.4293801691038740850.stgit@dwillia2-desk3.amr.corp.intel.comSigned-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    21083f51
pmem.c 5.19 KB