linux-next: build failure after merge of the cxl tree

Message ID 20240105161709.22d1b027@canb.auug.org.au
State New
Headers
Series linux-next: build failure after merge of the cxl tree |

Commit Message

Stephen Rothwell Jan. 5, 2024, 5:17 a.m. UTC
  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@canb.auug.org.au>
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@canb.auug.org.au>
---
 drivers/cxl/core/cdat.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)
  

Comments

Dan Williams Jan. 6, 2024, 3:23 a.m. UTC | #1
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@canb.auug.org.au>
> 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@canb.auug.org.au>
> ---
>  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
  

Patch

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;
 }