diff options
author | Dan Williams <dan.j.williams@intel.com> | 2022-04-08 12:30:29 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2022-04-12 19:11:58 -0700 |
commit | 35ee1f499091c76bd5f5d52f5ef79c3568ac74a6 (patch) | |
tree | 4e618c585acd73dcd897ac6aa7246e13a9b72bf8 /drivers/cxl | |
parent | 31e624a77e748e4ab7d5c9c3ddc46ba7735bd75e (diff) |
cxl/mem: Replace redundant debug message with a comment
cxl_mem_probe() already emits a log message when HDM operation can not
be established. Delete the similar one in cxl_hdm_decode_init().
What is less obvious is why global_ctrl being enabled makes positive
values of info->ranges irrelevant, and the Linux behavior with respect
to the spec recommendation to mirror CXL Range registers with HDM
Decoder Base + Size registers.
Cc: Ben Widawsky <ben.widawsky@intel.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
Link: https://lore.kernel.org/r/164944616743.454665.7055846627973202403.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/cxl')
-rw-r--r-- | drivers/cxl/mem.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/cxl/mem.c b/drivers/cxl/mem.c index 3baae1332760..43e73d259207 100644 --- a/drivers/cxl/mem.c +++ b/drivers/cxl/mem.c @@ -107,11 +107,17 @@ __mock bool cxl_hdm_decode_init(struct cxl_dev_state *cxlds) global_ctrl = readl(crb + cmap->hdm_decoder.offset + CXL_HDM_DECODER_CTRL_OFFSET); global_enable = global_ctrl & CXL_HDM_DECODER_ENABLE; - if (!global_enable && info->ranges) { - dev_dbg(cxlds->dev, - "DVSEC ranges already programmed and HDM decoders not enabled.\n"); + + /* + * Per CXL 2.0 Section 8.1.3.8.3 and 8.1.3.8.4 DVSEC CXL Range 1 Base + * [High,Low] when HDM operation is enabled the range register values + * are ignored by the device, but the spec also recommends matching the + * DVSEC Range 1,2 to HDM Decoder Range 0,1. So, non-zero info->ranges + * are expected even though Linux does not require or maintain that + * match. + */ + if (!global_enable && info->ranges) goto out; - } retval = true; |