mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-02 08:32:55 +00:00
cxl/pci: simplify the check of mem_enabled in cxl_hdm_decode_init()
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>
This commit is contained in:
parent
99bf0eebc7
commit
3f9e075317
@ -426,7 +426,15 @@ int cxl_hdm_decode_init(struct cxl_dev_state *cxlds, struct cxl_hdm *cxlhdm,
|
|||||||
return -ENODEV;
|
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;
|
struct device *cxld_dev;
|
||||||
|
|
||||||
cxld_dev = device_find_child(&root->dev, &info->dvsec_range[i],
|
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++;
|
allowed++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!allowed && info->mem_enabled) {
|
if (!allowed) {
|
||||||
dev_err(dev, "Range register decodes outside platform defined CXL ranges.\n");
|
dev_err(dev, "Range register decodes outside platform defined CXL ranges.\n");
|
||||||
return -ENXIO;
|
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
|
* match. If at least one DVSEC range is enabled and allowed, skip HDM
|
||||||
* Decoder Capability Enable.
|
* Decoder Capability Enable.
|
||||||
*/
|
*/
|
||||||
if (info->mem_enabled)
|
return 0;
|
||||||
return 0;
|
|
||||||
|
|
||||||
rc = devm_cxl_enable_hdm(&port->dev, cxlhdm);
|
|
||||||
if (rc)
|
|
||||||
return rc;
|
|
||||||
|
|
||||||
return devm_cxl_enable_mem(&port->dev, cxlds);
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_NS_GPL(cxl_hdm_decode_init, CXL);
|
EXPORT_SYMBOL_NS_GPL(cxl_hdm_decode_init, CXL);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user