]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cxl/pci: simplify the check of mem_enabled in cxl_hdm_decode_init()
authorYanfei Xu <yanfei.xu@intel.com>
Wed, 28 Aug 2024 08:42:31 +0000 (16:42 +0800)
committerDave Jiang <dave.jiang@intel.com>
Mon, 9 Sep 2024 18:33:44 +0000 (11:33 -0700)
Cases can be divided into two categories which are DVSEC range enabled and
not enabled when HDM decoders exist but is not enabled. To avoid checking
info->mem_enabled, which indicates the enablement of DVSEC range, every
time, we can check !info->mem_enabled once in advance. This simplification
can make the code clearer.

No functional change intended.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Yanfei Xu <yanfei.xu@intel.com>
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
Link: https://patch.msgid.link/20240828084231.1378789-5-yanfei.xu@intel.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/cxl/core/pci.c

index 043775f3f9a5b0e92fadf0a7a765b7982a696def..9d396ef0aeedf95a9567172db3d2dff1cb1759ac 100644 (file)
@@ -426,7 +426,15 @@ int cxl_hdm_decode_init(struct cxl_dev_state *cxlds, struct cxl_hdm *cxlhdm,
                return -ENODEV;
        }
 
-       for (i = 0, allowed = 0; info->mem_enabled && i < info->ranges; i++) {
+       if (!info->mem_enabled) {
+               rc = devm_cxl_enable_hdm(&port->dev, cxlhdm);
+               if (rc)
+                       return rc;
+
+               return devm_cxl_enable_mem(&port->dev, cxlds);
+       }
+
+       for (i = 0, allowed = 0; i < info->ranges; i++) {
                struct device *cxld_dev;
 
                cxld_dev = device_find_child(&root->dev, &info->dvsec_range[i],
@@ -440,7 +448,7 @@ int cxl_hdm_decode_init(struct cxl_dev_state *cxlds, struct cxl_hdm *cxlhdm,
                allowed++;
        }
 
-       if (!allowed && info->mem_enabled) {
+       if (!allowed) {
                dev_err(dev, "Range register decodes outside platform defined CXL ranges.\n");
                return -ENXIO;
        }
@@ -454,14 +462,7 @@ int cxl_hdm_decode_init(struct cxl_dev_state *cxlds, struct cxl_hdm *cxlhdm,
         * match. If at least one DVSEC range is enabled and allowed, skip HDM
         * Decoder Capability Enable.
         */
-       if (info->mem_enabled)
-               return 0;
-
-       rc = devm_cxl_enable_hdm(&port->dev, cxlhdm);
-       if (rc)
-               return rc;
-
-       return devm_cxl_enable_mem(&port->dev, cxlds);
+       return 0;
 }
 EXPORT_SYMBOL_NS_GPL(cxl_hdm_decode_init, CXL);