]> git.baikalelectronics.ru Git - kernel.git/commit
cxl/pci: Map registers based on capabilities
authorIra Weiny <ira.weiny@intel.com>
Fri, 4 Jun 2021 00:50:36 +0000 (17:50 -0700)
committerDan Williams <dan.j.williams@intel.com>
Sun, 6 Jun 2021 00:37:16 +0000 (17:37 -0700)
commit733aa4188e68abc610fb43f0fe3c7570ea5f3a3d
tree214e2d12ce72c06f88c9126ff21ef2ca392eeeaf
parent5f16ce9864af3b24fd4da479aafd6e2bb1fd045b
cxl/pci: Map registers based on capabilities

The information required to map registers based on capabilities is
contained within the bars themselves.  This means the bar must be mapped
to read the information needed and then unmapped to map the individual
parts of the BAR based on capabilities.

Change cxl_setup_device_regs() to return a new cxl_register_map, change
the name to cxl_probe_device_regs().  Allocate and place
cxl_register_maps on a list while processing all of the specified
register blocks.

After probing all the register blocks go back and map smaller registers
blocks based on their capabilities and dispose of the cxl_register_maps.

NOTE: pci_iomap() is not managed automatically via pcim_enable_device()
so be careful to call pci_iounmap() correctly.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Link: https://lore.kernel.org/r/20210604005036.4187184-1-ira.weiny@intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/core.c
drivers/cxl/cxl.h
drivers/cxl/pci.c