]> www.infradead.org Git - users/hch/block.git/commitdiff
cxl/core/pci: Move reading of control register to immediately before usage
authorForyun Ma <foryun.ma@jaguarmicro.com>
Tue, 4 Jun 2024 03:21:51 +0000 (11:21 +0800)
committerDave Jiang <dave.jiang@intel.com>
Wed, 17 Jul 2024 17:35:08 +0000 (10:35 -0700)
Relocate the reading of the DVSEC control register to immediately
before usage and avoid unnecessary PCI config access from the read
if DVSEC capability check, hdm_count check, or device validity check
results in failure.

Signed-off-by: Foryun Ma <foryun.ma@jaguarmicro.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
Link: https://patch.msgid.link/20240604032151.655-1-foryun.ma@jaguarmicro.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/cxl/core/pci.c

index 8567dd11eaac7450b56da8883c33d1990fb0daa2..a663e7566c480d8c684aa7681f3de4371cad0a85 100644 (file)
@@ -338,10 +338,6 @@ int cxl_dvsec_rr_decode(struct device *dev, int d,
        if (rc)
                return rc;
 
-       rc = pci_read_config_word(pdev, d + CXL_DVSEC_CTRL_OFFSET, &ctrl);
-       if (rc)
-               return rc;
-
        if (!(cap & CXL_DVSEC_MEM_CAPABLE)) {
                dev_dbg(dev, "Not MEM Capable\n");
                return -ENXIO;
@@ -368,6 +364,10 @@ int cxl_dvsec_rr_decode(struct device *dev, int d,
         * disabled, and they will remain moot after the HDM Decoder
         * capability is enabled.
         */
+       rc = pci_read_config_word(pdev, d + CXL_DVSEC_CTRL_OFFSET, &ctrl);
+       if (rc)
+               return rc;
+
        info->mem_enabled = FIELD_GET(CXL_DVSEC_MEM_ENABLE, ctrl);
        if (!info->mem_enabled)
                return 0;