Stephen Rothwell wrote: > 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. Yup, this looks good, I will include a this merge in my next branch going forward. > > 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