summaryrefslogtreecommitdiff
path: root/drivers/cxl
diff options
context:
space:
mode:
authorBen Widawsky <ben.widawsky@intel.com>2021-07-17 02:15:46 +0300
committerDan Williams <dan.j.williams@intel.com>2021-08-06 18:27:02 +0300
commit1e39db573e4cdf798b899de2b1e72ac9bea08013 (patch)
treeaef8ea178cd6d924b61b377ba2e1ff55689d8c9c /drivers/cxl
parent3d135db510240fefd79da46181493d3e3b415f6b (diff)
downloadlinux-1e39db573e4cdf798b899de2b1e72ac9bea08013.tar.xz
cxl/pci: Ignore unknown register block types
In an effort to explicit avoid supporting vendor specific register blocks (which can happily be mapped from userspace), entirely skip probing unknown types. The secondary benefit of this will be revealed in the future with code simplification. Signed-off-by: Ben Widawsky <ben.widawsky@intel.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Link: https://lore.kernel.org/r/20210716231548.174778-2-ben.widawsky@intel.com Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/cxl')
-rw-r--r--drivers/cxl/pci.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
index 193983e6edce..90a1c895e442 100644
--- a/drivers/cxl/pci.c
+++ b/drivers/cxl/pci.c
@@ -1118,14 +1118,6 @@ static int cxl_mem_setup_regs(struct cxl_mem *cxlm)
u64 offset;
u8 bar;
- map = kzalloc(sizeof(*map), GFP_KERNEL);
- if (!map) {
- ret = -ENOMEM;
- goto free_maps;
- }
-
- list_add(&map->list, &register_maps);
-
pci_read_config_dword(pdev, regloc, &reg_lo);
pci_read_config_dword(pdev, regloc + 4, &reg_hi);
@@ -1135,6 +1127,18 @@ static int cxl_mem_setup_regs(struct cxl_mem *cxlm)
dev_dbg(dev, "Found register block in bar %u @ 0x%llx of type %u\n",
bar, offset, reg_type);
+ /* Ignore unknown register block types */
+ if (reg_type > CXL_REGLOC_RBI_MEMDEV)
+ continue;
+
+ map = kzalloc(sizeof(*map), GFP_KERNEL);
+ if (!map) {
+ ret = -ENOMEM;
+ goto free_maps;
+ }
+
+ list_add(&map->list, &register_maps);
+
base = cxl_mem_map_regblock(cxlm, bar, offset);
if (!base) {
ret = -ENOMEM;