[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] xen/arm64/atomic: Clear exclusive monitor on cmpxchg failure


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Ryoji Okamoto <okamoto@xxxxxxxxxxxxx>
  • Date: Wed, 9 Sep 2026 14:52:37 +0900
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BWaPMVJIRKQcX9poEII5w10otm4TFZtQ5aiX1u0k+S8=; b=WvkHT/NNiIq+BW+llXIo01ZqT+vaTlaR7vS5AvscwCXZC9hMEhRjsueV1Pi+3xcNThY7m8IOvlD80+nW9ie9vj/saOlFFK1CQqN9Z5HZY7zwMXgnnpKO7Jnfe/K0gdZvhXFn+2N8qC4T3ZiSOMCfl9dXwTXRSJA7MP9iSB6jWfmOQlicoguJagEGabXsomM5IYiIIP6Dk8xKg/ImaCfmGmFscCzwLetdFORpECjdygzn03W9VBjz5EIDP8Ov5Tw2Hj9i5N05fLGpD0j5KmM8hR8nfOpZGyTM14wMZXPT+tM73UbwTm9OIe2/uHSMz816gyBoq2uWYvUpH1+ppDPb3Q==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MWhhUUKLNqYZNfePFnnJVDZrxfpGDzkbRMwrL87K9W9MzbwcZRLefzyf5cCEqyFk75Q/t9g/CUhxl3djPvFXYE7zlUzbxh0QKcoenkI0d3WwFI7LLJnS2Y9bTgrVNBWFEFkDesO9RbSeBZsN4JmIeEZdATyh6sB2fIogVEyQrd4Id9Oyr44cryo1kRL+NFBJKHuOSKXwTowF/oLkvo2xImnbkNEd059/ps60OYoYfZXlpObLnxI8+K6ksnN1gikzohCwhLUIhju6qnjsewQPNAWxb1AeFSBWvHz8XlCR+gclSIcxPB9GZSnxeqZDd0nblDdQxstFo3sMtzn0Qi2IMQ==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp;
  • Cc: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>, Ryoji Okamoto <okamoto@xxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Wed, 09 Sep 2026 05:53:29 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

When the value comparison fails in atomic_cmpxchg, the code branches
out without executing stxr, leaving the exclusive monitor in the
exclusive state set by ldxr.

Add `clrex` to the failure path to explicitly clear the exclusive
monitor.

Fixes: d2654a556835 ("xen: arm64: atomics")
Signed-off-by: Ryoji Okamoto <okamoto@xxxxxxxxxxxxx>
---
 xen/arch/arm/include/asm/arm64/atomic.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/include/asm/arm64/atomic.h 
b/xen/arch/arm/include/asm/arm64/atomic.h
index 4460165295..2c74ede740 100644
--- a/xen/arch/arm/include/asm/arm64/atomic.h
+++ b/xen/arch/arm/include/asm/arm64/atomic.h
@@ -118,7 +118,9 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int 
new)
 "      b.ne    2f\n"
 "      stxr    %w0, %w4, %2\n"
 "      cbnz    %w0, 1b\n"
-"2:"
+"   b       3f\n"
+"2: clrex\n"
+"3:"
        : "=&r" (tmp), "=&r" (oldval), "+Q" (v->counter)
        : "Ir" (old), "r" (new)
        : "cc");
-- 
2.43.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.