Hi all, After merging the cxl tree, today's linux-next build (x86_64 allmodconfig) failed like this: drivers/cxl/core/cdat.c: In function 'match_cxlrd_hb': drivers/cxl/core/cdat.c:327:43: error: 'struct cxl_switch_decoder' has no member named 'target_lock' 327 | seq = read_seqbegin(&cxlsd->target_lock); | ^~ drivers/cxl/core/cdat.c:332:38: error: 'struct cxl_switch_decoder' has no member named 'target_lock' 332 | } while (read_seqretry(&cxlsd->target_lock, seq)); | ^~ Caused by commit 185c1a489f87 ("cxl: Check qos_class validity on memdev probe") interacting with commit 5459e186a5c9 ("cxl/port: Fix missing target list lock") from hte cls-fixes tree. I have applied the following merge resolution for today. From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Date: Fri, 5 Jan 2024 15:44:24 +1100 Subject: [PATCH] fix up for "cxl: Check qos_class validity on memdev probe" interacting with "cxl/port: Fix missing target list lock" Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> --- drivers/cxl/core/cdat.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/cxl/core/cdat.c b/drivers/cxl/core/cdat.c index cd84d87f597a..10ac76bed477 100644 --- a/drivers/cxl/core/cdat.c +++ b/drivers/cxl/core/cdat.c @@ -8,6 +8,7 @@ #include "cxlpci.h" #include "cxlmem.h" #include "cxl.h" +#include "core.h" struct dsmas_entry { struct range dpa_range; @@ -315,7 +316,6 @@ static int match_cxlrd_hb(struct device *dev, void *data) struct device *host_bridge = data; struct cxl_switch_decoder *cxlsd; struct cxl_root_decoder *cxlrd; - unsigned int seq; if (!is_root_decoder(dev)) return 0; @@ -323,13 +323,11 @@ static int match_cxlrd_hb(struct device *dev, void *data) cxlrd = to_cxl_root_decoder(dev); cxlsd = &cxlrd->cxlsd; - do { - seq = read_seqbegin(&cxlsd->target_lock); - for (int i = 0; i < cxlsd->nr_targets; i++) { - if (host_bridge == cxlsd->target[i]->dport_dev) - return 1; - } - } while (read_seqretry(&cxlsd->target_lock, seq)); + guard(rwsem_read)(&cxl_region_rwsem); + for (int i = 0; i < cxlsd->nr_targets; i++) { + if (host_bridge == cxlsd->target[i]->dport_dev) + return 1; + } return 0; } -- 2.43.0 -- Cheers, Stephen Rothwell
Attachment:
pgptyZ1nj_Lnq.pgp
Description: OpenPGP digital signature