X-Loop: help-debbugs@HIDDEN Subject: bug#70474: Possible bug with `atomic-box-swap!` on OSX/M3 (?!?!) Resent-From: Tony Garnock-Jones <tonyg@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Fri, 19 Apr 2024 12:11:04 +0000 Resent-Message-ID: <handler.70474.B.17135286301116 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 70474 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 70474 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-guile@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.17135286301116 (code B ref -1); Fri, 19 Apr 2024 12:11:04 +0000 Received: (at submit) by debbugs.gnu.org; 19 Apr 2024 12:10:30 +0000 Received: from localhost ([127.0.0.1]:58223 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rxn4W-0000Hl-Tp for submit <at> debbugs.gnu.org; Fri, 19 Apr 2024 08:10:30 -0400 Received: from lists.gnu.org ([2001:470:142::17]:50742) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <tonyg@HIDDEN>) id 1rxltg-00056Z-MT for submit <at> debbugs.gnu.org; Fri, 19 Apr 2024 06:55:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <tonyg@HIDDEN>) id 1rxltI-0007GH-B9 for bug-guile@HIDDEN; Fri, 19 Apr 2024 06:54:48 -0400 Received: from smoke.leastfixedpoint.com ([81.4.107.66] helo=mail.leastfixedpoint.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <tonyg@HIDDEN>) id 1rxltF-0006cc-1Z for bug-guile@HIDDEN; Fri, 19 Apr 2024 06:54:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leastfixedpoint.com; s=default; t=1713524073; bh=eRHgaV+xDi31xqWcrPubRTb2thhX/WE0VWITiQ0eVO8=; h=Date:To:From:Subject; b=o8oHNkVVz7W7Fwz8X6f+jVusWEq44douA+NDn5QR60WrxxGHip08HpDes+e2dKayF faE43w+AuYnwp0c4i7QBnTKVNUW1XXmz4kHc3NGcZJZvrFDimGAdA/5jKrSrJ3rD9I VVj6MDl8g1MPlGLSVtoLWjBu2hDMzCXipBxGqjgU= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.leastfixedpoint.com (Postfix) with ESMTPSA id 61CE03F9CE for <bug-guile@HIDDEN>; Fri, 19 Apr 2024 12:54:33 +0200 (CEST) Message-ID: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> Date: Fri, 19 Apr 2024 12:54:32 +0200 MIME-Version: 1.0 Content-Language: en-US From: Tony Garnock-Jones <tonyg@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Received-SPF: pass client-ip=81.4.107.66; envelope-from=tonyg@HIDDEN; helo=mail.leastfixedpoint.com X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PLING_QUERY=0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Mailman-Approved-At: Fri, 19 Apr 2024 08:10:28 -0400 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) Hello all, I'm seeing some very strange behaviour from `atomic-box-swap!` (but not `atomic-box-compare-and-swap!`) on Guile 3.0.9 from Homebrew on OSX Sonoma using an M3 Pro cpu. The issue does not seem to manifest on x86_64. Could it be some interaction between Guile and M3 CPUs? Or am I just doing something very silly that shouldn't work at all and just happens to look like it works on x86_64? Here's the program that fails. It will run for a few hundred million rounds and then yield "q null in get". Note that using CAS seems to work, but plain old swap doesn't. ;;-- ;; Eventually this fails with "q null in get" if `atomic-box-swap!` is ;; used where marked (*) below. It takes usually between hundreds of ;; millions and a few billion increments to fail. ;; ;; It does NOT fail if the line marked (*) is commented out and the line ;; below it mentioning `atomic-box-compare-and-swap!` is uncommented and ;; used instead. ;; ;; The failure happens on OSX Sonoma 14.4.1 on a MacBook Pro running an ;; M3 Pro CPU using Guile version 3.0.9 from Homebrew as of 2024-04-17. ;; ;; It does NOT happen on AMD x86_64 Debian linux with Guile 3.0.9 from ;; Debian packaging. (use-modules (ice-9 atomic)) (define r (make-atomic-box '(0))) (let loop () (let ((v (let ((q (atomic-box-ref r))) (when (null? q) (error "q null in get")) (unless (eq? (atomic-box-compare-and-swap! r q (cdr q)) q) (error "CAS failed in get")) (car q)))) (when (zero? (remainder v 10000000)) (write v) (newline)) (unless (null? (atomic-box-swap! r (list (+ v 1))) ;; (*) ;; (atomic-box-compare-and-swap! r '() (list (+ v 1))) ) (error "swap failed in put")) (loop)))
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Tony Garnock-Jones <tonyg@HIDDEN> Subject: bug#70474: Acknowledgement (Possible bug with `atomic-box-swap!` on OSX/M3 (?!?!)) Message-ID: <handler.70474.B.17135286301116.ack <at> debbugs.gnu.org> References: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> X-Gnu-PR-Message: ack 70474 X-Gnu-PR-Package: guile Reply-To: 70474 <at> debbugs.gnu.org Date: Fri, 19 Apr 2024 12:11:05 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-guile@HIDDEN If you wish to submit further information on this problem, please send it to 70474 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 70474: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D70474 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#70474: Possible bug with `atomic-box-swap!` on OSX/M3 (?!?!) Resent-From: Christopher Baines <mail@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Fri, 19 Apr 2024 13:21:04 +0000 Resent-Message-ID: <handler.70474.B70474.171353281332653 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 70474 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: Tony Garnock-Jones <tonyg@HIDDEN> Cc: 70474 <at> debbugs.gnu.org Received: via spool by 70474-submit <at> debbugs.gnu.org id=B70474.171353281332653 (code B ref 70474); Fri, 19 Apr 2024 13:21:04 +0000 Received: (at 70474) by debbugs.gnu.org; 19 Apr 2024 13:20:13 +0000 Received: from localhost ([127.0.0.1]:58278 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rxoA0-0008Ub-Tz for submit <at> debbugs.gnu.org; Fri, 19 Apr 2024 09:20:13 -0400 Received: from mira.cbaines.net ([212.71.252.8]:43352) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <mail@HIDDEN>) id 1rxo9y-0008UV-TD for 70474 <at> debbugs.gnu.org; Fri, 19 Apr 2024 09:20:11 -0400 Received: from localhost (unknown [212.132.255.10]) by mira.cbaines.net (Postfix) with ESMTPSA id 9D33C27BBE9; Fri, 19 Apr 2024 14:19:55 +0100 (BST) Received: from felis (localhost.lan [127.0.0.1]) by localhost (OpenSMTPD) with ESMTP id 1774406a; Fri, 19 Apr 2024 13:19:55 +0000 (UTC) From: Christopher Baines <mail@HIDDEN> In-Reply-To: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> (Tony Garnock-Jones's message of "Fri, 19 Apr 2024 12:54:32 +0200") References: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> User-Agent: mu4e 1.12.2; emacs 29.3 Date: Fri, 19 Apr 2024 14:19:52 +0100 Message-ID: <87o7a54hhj.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 0.1 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.9 (/) --=-=-= Content-Type: text/plain Tony Garnock-Jones <tonyg@HIDDEN> writes: > I'm seeing some very strange behaviour from `atomic-box-swap!` (but > not `atomic-box-compare-and-swap!`) on Guile 3.0.9 from Homebrew on > OSX Sonoma using an M3 Pro cpu. The issue does not seem to manifest on > x86_64. Could it be some interaction between Guile and M3 CPUs? > > Or am I just doing something very silly that shouldn't work at all and > just happens to look like it works on x86_64? > > Here's the program that fails. It will run for a few hundred million > rounds and then yield "q null in get". Note that using CAS seems to > work, but plain old swap doesn't. There are known issue(s) with Guile JIT and atomics on ARM (e.g. [1]). If the problem doesn't appear when disabling JIT, then you're probably seeing the same issue. 1: https://github.com/wingo/fibers/issues/83 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAmYib3hfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh aW5lcy5uZXQACgkQXiijOwuE9XdcGA//Qv+7hdmyETA6quu0eSzC5hr+q0Me//xp 3E0sYsZIp4Vm6q4qsNdTpOv+2BzcM+UsqRPQa/BCwCcfQGNXlVOEkCkO//QmbjW1 hCwFuKJq/3LKwvqYu1r5+tqYUYnNvfwzbhf7z63SXqww3SeR1rjGsjIG0tTLUzOl PNy9eseYVMGQzKgqV7kG8B14eyYMawHnFcTk+PBrM9ctX0esfvDYFrTcz50TIXVK 50Djlq6oDNpzd5pxiJxK1FgSpmcNrWnoNcmAHSSsLHzabAMpzIFQ7x5SV1la7+k+ YygFfCe4/pDQJ6VwJfJmPn3K+MAF1oB/zrGnRYIg4M+b0rr+1NK0vFRQiTeFaywL 4EjNI+zeREVWdl/sgXoHZtzpXRuZnhYjy3pq/xMLkrOIJy4qwXbTqzB3nu4d4/2Y jJvYd7lT+cMqrEYLZqQ19yoHADSr9OCswQq8MAMqMqt1SIk/AS4cKD6LWDmoHrXM qWi7/3zg0GYhbyHi6lT9rHR9BXtz4czE2rCUP6MrhtXec3qdEXki1xRt6H1Aju6u 4enJcd0pCMPYCWRp3ZktvkWGx0QllF7w3RODOfAXgWU0c8H5Xll25skkCdn2O2r7 E0G69s7++rtMYGzxXsQ3owHi1rOVE05fvPoflj7Nv35eBFupbTNnh7YqfYg2A5+f jcXRZxREh+s= =OPiV -----END PGP SIGNATURE----- --=-=-=--
X-Loop: help-debbugs@HIDDEN Subject: bug#70474: Also manifests on an M1 running 14.1.1 and with newer Guile versions References: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> In-Reply-To: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> Resent-From: Tony Garnock-Jones <tonyg@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Fri, 19 Apr 2024 13:37:03 +0000 Resent-Message-ID: <handler.70474.B70474.17135337657714 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 70474 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 70474 <at> debbugs.gnu.org Received: via spool by 70474-submit <at> debbugs.gnu.org id=B70474.17135337657714 (code B ref 70474); Fri, 19 Apr 2024 13:37:03 +0000 Received: (at 70474) by debbugs.gnu.org; 19 Apr 2024 13:36:05 +0000 Received: from localhost ([127.0.0.1]:58326 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rxoPL-00020A-OV for submit <at> debbugs.gnu.org; Fri, 19 Apr 2024 09:36:04 -0400 Received: from smoke.leastfixedpoint.com ([81.4.107.66]:35166 helo=mail.leastfixedpoint.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <tonyg@HIDDEN>) id 1rxn8l-0000nE-Kx for 70474 <at> debbugs.gnu.org; Fri, 19 Apr 2024 08:14:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leastfixedpoint.com; s=default; t=1713528871; bh=dtLbz9Dlg68RYMZcoCbEH/mIj0yklq46Npuqi5bCTzY=; h=Date:To:From:Subject; b=pErrpAwZDI5Zc4RaLPWmhdOT8lQDaok+fak/CXTstbRhBz7tc9FAyNc+u9iJKtkyI sb11iWYozWgRoTZs39rQs5Vf1L7RIyxF50UQFvc6jPG00XYNdL1Tf0f7/450lCL+Lx WJbucS7rdPeQ8DH73vmhovV3JeuDRDOvPslAAwhY= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.leastfixedpoint.com (Postfix) with ESMTPSA id 85C113F69F for <70474 <at> debbugs.gnu.org>; Fri, 19 Apr 2024 14:14:31 +0200 (CEST) Message-ID: <2db23b95-92a0-43be-b9eb-0f14fd543d84@HIDDEN> Date: Fri, 19 Apr 2024 14:14:31 +0200 MIME-Version: 1.0 Content-Language: en-US From: Tony Garnock-Jones <tonyg@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Mailman-Approved-At: Fri, 19 Apr 2024 09:36:02 -0400 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) A small bit of extra information: it's not just one machine; the problem also manifests on an M1 running OSX 14.1.1. In addition, it happens with newer Guile versions including `guile-next` from `aconchillo`'s Homebrew tap and including a version I built from Guile git main just now. Regards, Tony
X-Loop: help-debbugs@HIDDEN Subject: bug#70474: [PATCH 1/2] Including the cast makes Apple clang 15.0.0 happy; without it, clang is sad References: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> In-Reply-To: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> Resent-From: Tony Garnock-Jones <tonyg@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Fri, 19 Apr 2024 20:48:02 +0000 Resent-Message-ID: <handler.70474.B70474.17135596328865 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 70474 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 70474 <at> debbugs.gnu.org Received: via spool by 70474-submit <at> debbugs.gnu.org id=B70474.17135596328865 (code B ref 70474); Fri, 19 Apr 2024 20:48:02 +0000 Received: (at 70474) by debbugs.gnu.org; 19 Apr 2024 20:47:12 +0000 Received: from localhost ([127.0.0.1]:60295 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rxv8a-0002Iv-H7 for submit <at> debbugs.gnu.org; Fri, 19 Apr 2024 16:47:12 -0400 Received: from smoke.leastfixedpoint.com ([81.4.107.66]:35892 helo=mail.leastfixedpoint.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <tonyg@HIDDEN>) id 1rxv8X-0002HV-B0 for 70474 <at> debbugs.gnu.org; Fri, 19 Apr 2024 16:47:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leastfixedpoint.com; s=default; t=1713559608; bh=/EqZboH04xeZkD1XiBJLH4aun0ZWyW6ot2INBx9RgEY=; h=Date:From:Subject:To; b=hi7mgsgae0Dkf48OfIwWccp/aN1gYVlmrL+mUuixvSS3B1XsUbIwGFh02KQ8Ld0ns xdUIcK9OcFQsqkfYq9veGdmIJgJcdxR4f5HH7wZFsllXFDdqNClFRRsnPhKQKyfd7+ bcaFuca8uGcRTOnrB/qDVK8CwkTw4GtwL9GtGUYY= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.leastfixedpoint.com (Postfix) with ESMTPSA id DC2813F69F for <70474 <at> debbugs.gnu.org>; Fri, 19 Apr 2024 22:46:48 +0200 (CEST) Message-ID: <0a3bee59-a20e-492e-9908-5b03ff5833c2@HIDDEN> Date: Fri, 19 Apr 2024 22:46:48 +0200 MIME-Version: 1.0 From: Tony Garnock-Jones <tonyg@HIDDEN> Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) I'm not sure why, exactly, but I needed this to get builds to work on OSX Sonoma at all. --- libguile/scmsigs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c index 7fd3fd8f1..be96dbd5c 100644 --- a/libguile/scmsigs.c +++ b/libguile/scmsigs.c @@ -302,7 +302,7 @@ scm_i_signals_post_fork () } #if SCM_USE_PTHREAD_THREADS - once = SCM_I_PTHREAD_ONCE_INIT; + once = (scm_i_pthread_once_t) SCM_I_PTHREAD_ONCE_INIT; #endif if (active) scm_i_ensure_signal_delivery_thread (); -- 2.44.0
X-Loop: help-debbugs@HIDDEN Subject: bug#70474: [PATCH 2/2] Replace aarch64 CAS and atomic-swap generated JIT code with CASAL and SWPAL instructions References: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> In-Reply-To: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> Resent-From: Tony Garnock-Jones <tonyg@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Fri, 19 Apr 2024 20:50:04 +0000 Resent-Message-ID: <handler.70474.B70474.171355975910044 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 70474 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 70474 <at> debbugs.gnu.org Received: via spool by 70474-submit <at> debbugs.gnu.org id=B70474.171355975910044 (code B ref 70474); Fri, 19 Apr 2024 20:50:04 +0000 Received: (at 70474) by debbugs.gnu.org; 19 Apr 2024 20:49:19 +0000 Received: from localhost ([127.0.0.1]:60306 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rxvAb-0002bi-11 for submit <at> debbugs.gnu.org; Fri, 19 Apr 2024 16:49:19 -0400 Received: from smoke.leastfixedpoint.com ([81.4.107.66]:46806 helo=mail.leastfixedpoint.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <tonyg@HIDDEN>) id 1rxvAY-0002aB-2s for 70474 <at> debbugs.gnu.org; Fri, 19 Apr 2024 16:49:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leastfixedpoint.com; s=default; t=1713559734; bh=5GvdGAiEy6L8uduTPQHO6lj7mWJFAtq4mOkXDAynviM=; h=Date:From:Subject:To; b=AvUrIBeXA5R/WstxMZ8Tb99EqaRDEv7uVau7xCET6u7Sn3jvnh7khJh10HJ7QuVKv /4SgBMANkkOzKwlh+9UsNXE3V3ErIezSNmJhuKEadxzsM3I9vHlqNndbBS8t5mrbKy W+e+4TiIZHaGR+raVszcQ+cFNBo3f1o2Q7r+56aI= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.leastfixedpoint.com (Postfix) with ESMTPSA id 2F2743F69F for <70474 <at> debbugs.gnu.org>; Fri, 19 Apr 2024 22:48:54 +0200 (CEST) Message-ID: <6cacb4fa-4547-469b-b28c-c621e664e8be@HIDDEN> Date: Fri, 19 Apr 2024 22:48:53 +0200 MIME-Version: 1.0 From: Tony Garnock-Jones <tonyg@HIDDEN> Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This appears to make the problem go away. I'm new at working with `lightening` so I'm not confident I've covered everything that needs covering, particularly wrt the implementation of cas_atomic. But perhaps this can be a foundation for someone who knows more than I do to work from. --- libguile/lightening/lightening/aarch64-cpu.c | 41 ++++++-------------- 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/libguile/lightening/lightening/aarch64-cpu.c b/libguile/lightening/lightening/aarch64-cpu.c index 13aa351e9..30766652f 100644 --- a/libguile/lightening/lightening/aarch64-cpu.c +++ b/libguile/lightening/lightening/aarch64-cpu.c @@ -223,8 +223,8 @@ oxxrs(jit_state_t *_jit, int32_t Op, #define A64_UMULH 0x9bc07c00 #define A64_LDAR 0xc8dffc00 #define A64_STLR 0xc89ffc00 -#define A64_LDAXR 0xc85ffc00 -#define A64_STLXR 0xc800fc00 +#define A64_SWPAL 0xf8e08000 +#define A64_CASAL 0xc8e0fc00 #define A64_STRBI 0x39000000 #define A64_LDRBI 0x39400000 #define A64_LDRSBI 0x39800000 @@ -664,15 +664,15 @@ STLR(jit_state_t *_jit, int32_t Rt, int32_t Rn) } static void -LDAXR(jit_state_t *_jit, int32_t Rt, int32_t Rn) +SWPAL(jit_state_t *_jit, int32_t Rt, int32_t Rn, int32_t Rs) { - return o_xx(_jit, A64_LDAXR, Rt, Rn); + return oxxx(_jit, A64_SWPAL, Rt, Rn, Rs); } static void -STLXR(jit_state_t *_jit, int32_t Rt, int32_t Rn, int32_t Rm) +CASAL(jit_state_t *_jit, int32_t Rt, int32_t Rn, int32_t Rs) { - return oxxx(_jit, A64_STLXR, Rt, Rn, Rm); + return oxxx(_jit, A64_CASAL, Rt, Rn, Rs); } static void @@ -2532,36 +2532,17 @@ str_atomic(jit_state_t *_jit, int32_t loc, int32_t val) static void swap_atomic(jit_state_t *_jit, int32_t dst, int32_t loc, int32_t val) { - void *retry = jit_address(_jit); - int32_t result = jit_gpr_regno(get_temp_gpr(_jit)); - int32_t val_or_tmp = dst == val ? jit_gpr_regno(get_temp_gpr(_jit)) : val; - movr(_jit, val_or_tmp, val); - LDAXR(_jit, dst, loc); - STLXR(_jit, val_or_tmp, loc, result); - jit_patch_there(_jit, bnei(_jit, result, 0), retry); - if (dst == val) unget_temp_gpr(_jit); - unget_temp_gpr(_jit); + SWPAL(_jit, dst, loc, val); } static void cas_atomic(jit_state_t *_jit, int32_t dst, int32_t loc, int32_t expected, int32_t desired) { - int32_t dst_or_tmp; - if (dst == loc || dst == expected || dst == expected) - dst_or_tmp = jit_gpr_regno(get_temp_gpr(_jit)); - else - dst_or_tmp = dst; - void *retry = jit_address(_jit); - LDAXR(_jit, dst_or_tmp, loc); - jit_reloc_t bad = bner(_jit, dst_or_tmp, expected); - int result = jit_gpr_regno(get_temp_gpr(_jit)); - STLXR(_jit, desired, loc, result); - jit_patch_there(_jit, bnei(_jit, result, 0), retry); - unget_temp_gpr(_jit); - jit_patch_here(_jit, bad); - movr(_jit, dst, dst_or_tmp); - unget_temp_gpr(_jit); + if (dst != expected) { + movr(_jit, dst, expected); + } + CASAL(_jit, desired, loc, dst); } static void -- 2.44.0
X-Loop: help-debbugs@HIDDEN Subject: bug#70474: Just adding DMB doesn't help References: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> In-Reply-To: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> Resent-From: Tony Garnock-Jones <tonyg@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Mon, 22 Apr 2024 07:54:01 +0000 Resent-Message-ID: <handler.70474.B70474.171377239424236 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 70474 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 70474 <at> debbugs.gnu.org Received: via spool by 70474-submit <at> debbugs.gnu.org id=B70474.171377239424236 (code B ref 70474); Mon, 22 Apr 2024 07:54:01 +0000 Received: (at 70474) by debbugs.gnu.org; 22 Apr 2024 07:53:14 +0000 Received: from localhost ([127.0.0.1]:45637 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ryoUD-0006Il-0I for submit <at> debbugs.gnu.org; Mon, 22 Apr 2024 03:53:14 -0400 Received: from smoke.leastfixedpoint.com ([81.4.107.66]:41394 helo=mail.leastfixedpoint.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <tonyg@HIDDEN>) id 1ryoU9-0006HK-Ju for 70474 <at> debbugs.gnu.org; Mon, 22 Apr 2024 03:53:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leastfixedpoint.com; s=default; t=1713772367; bh=7MU1dsnc1qNK5XthnQOqkb774yf23sbvNjr1s32zjno=; h=Date:To:From:Subject; b=X1+TDD+yROkRSDEKUgz2xntbwYZHcuEa28qd8Vd1bNJIbTE99UUkmKTyWS0FHAW04 AEPCju8nrFVIWMrHcHcTJnbxyRjx8xrPpwVdY0+boWly4foicD4GS+kooRdVtbOmri GQ3jxgFm9FhxWwp0NJuO4sDtyKxE5l8/wEkn3Y50= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.leastfixedpoint.com (Postfix) with ESMTPSA id 84ED43FB85 for <70474 <at> debbugs.gnu.org>; Mon, 22 Apr 2024 09:52:47 +0200 (CEST) Content-Type: multipart/mixed; boundary="------------uzzYWvSAmkTVY95d3Hmaf6VX" Message-ID: <be393d49-cf57-4099-a75a-f540bb8c338d@HIDDEN> Date: Mon, 22 Apr 2024 09:52:47 +0200 MIME-Version: 1.0 Content-Language: en-US From: Tony Garnock-Jones <tonyg@HIDDEN> X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------uzzYWvSAmkTVY95d3Hmaf6VX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit As an alternative to changing the JIT to produce SWPAL/CASAL, because I wasn't sure if *all* aarch64 targets support these, I tried adding DMB ISH or DMB SY to the end of the generated code sequences. Surprisingly, this did not fix the issue! So there's perhaps something fishy about the LDAXR-STLXR sequences themselves? So for now I'll stick on my own machine with SWPAL/CASAL, since this does seem to work well enough to let both my own code and fibers run. Tony --------------uzzYWvSAmkTVY95d3Hmaf6VX Content-Type: text/plain; charset=UTF-8; name="add-dmb-does-not-help.patch" Content-Disposition: attachment; filename="add-dmb-does-not-help.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYmd1aWxlL2xpZ2h0ZW5pbmcvbGlnaHRlbmluZy9hYXJjaDY0LWNw dS5jIGIvbGliZ3VpbGUvbGlnaHRlbmluZy9saWdodGVuaW5nL2FhcmNoNjQtY3B1LmMKaW5k ZXggMTNhYTM1MWU5Li5iZmY1ODNlMzMgMTAwNjQ0Ci0tLSBhL2xpYmd1aWxlL2xpZ2h0ZW5p bmcvbGlnaHRlbmluZy9hYXJjaDY0LWNwdS5jCisrKyBiL2xpYmd1aWxlL2xpZ2h0ZW5pbmcv bGlnaHRlbmluZy9hYXJjaDY0LWNwdS5jCkBAIC0yMjUsNiArMjI1LDcgQEAgb3h4cnMoaml0 X3N0YXRlX3QgKl9qaXQsIGludDMyX3QgT3AsCiAjZGVmaW5lIEE2NF9TVExSICAgICAgICAg ICAgICAgICAgICAgIDB4Yzg5ZmZjMDAKICNkZWZpbmUgQTY0X0xEQVhSICAgICAgICAgICAg ICAgICAgICAgMHhjODVmZmMwMAogI2RlZmluZSBBNjRfU1RMWFIgICAgICAgICAgICAgICAg ICAgICAweGM4MDBmYzAwCisjZGVmaW5lIEE2NF9ETUIgICAgICAgICAgICAgICAgICAgICAg IDB4ZDUwMzMwYmYKICNkZWZpbmUgQTY0X1NUUkJJICAgICAgICAgICAgICAgICAgICAgMHgz OTAwMDAwMAogI2RlZmluZSBBNjRfTERSQkkgICAgICAgICAgICAgICAgICAgICAweDM5NDAw MDAwCiAjZGVmaW5lIEE2NF9MRFJTQkkgICAgICAgICAgICAgICAgICAgIDB4Mzk4MDAwMDAK QEAgLTY3NSw2ICs2NzYsMzEgQEAgU1RMWFIoaml0X3N0YXRlX3QgKl9qaXQsIGludDMyX3Qg UnQsIGludDMyX3QgUm4sIGludDMyX3QgUm0pCiAgIHJldHVybiBveHh4KF9qaXQsIEE2NF9T VExYUiwgUnQsIFJuLCBSbSk7CiB9CiAKK3N0YXRpYyB2b2lkCitETUIoaml0X3N0YXRlX3Qg Kl9qaXQsIGludDMyX3QgQ1JtKQoreworICB1aW50MzJfdCBpbnN0ID0gQTY0X0RNQjsKKyAg aW5zdCA9IHdyaXRlX3Vuc2lnbmVkX2JpdGZpZWxkKGluc3QsIENSbSwgNCwgOCk7CisgIGVt aXRfdTMyX3dpdGhfcG9vbChfaml0LCBpbnN0KTsKK30KKworc3RhdGljIHZvaWQKK0RNQl9J U0goaml0X3N0YXRlX3QgKl9qaXQpCit7CisgIERNQihfaml0LCAxMSk7CisgIC8vIF4gMTEg PSBJU0gsICJJbm5lciBTaGFyZWFibGUiLiBUaGlzIGlzIHdoYXQgSmF2YSBhcHBhcmVudGx5 IHVzZXMKKyAgLy8gU2VlCisgIC8vICAtIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL1JhYXNB aHNhbi84ZTM1NTRhNDFlMDcwNjg1MzY0MjVjYTBkZTQ2YzllOAorICAvLyAgLSBodHRwczov L21haWwub3Blbmpkay5vcmcvcGlwZXJtYWlsL2hvdHNwb3QtZGV2LzIwMjEtTWFyY2gvMDQ5 Njk0Lmh0bWwKKyAgLy8gIC0gaHR0cHM6Ly9idWdzLm9wZW5qZGsub3JnL2Jyb3dzZS9KREst ODI2MjUxOQorfQorCitzdGF0aWMgdm9pZAorRE1CX1NZKGppdF9zdGF0ZV90ICpfaml0KQor eworICBETUIoX2ppdCwgMTUpOworfQorCiBzdGF0aWMgdm9pZAogTERSU0Ioaml0X3N0YXRl X3QgKl9qaXQsIGludDMyX3QgUnQsIGludDMyX3QgUm4sIGludDMyX3QgUm0pIAogewpAQCAt MjU0MSw2ICsyNTY3LDcgQEAgc3dhcF9hdG9taWMoaml0X3N0YXRlX3QgKl9qaXQsIGludDMy X3QgZHN0LCBpbnQzMl90IGxvYywgaW50MzJfdCB2YWwpCiAgIGppdF9wYXRjaF90aGVyZShf aml0LCBibmVpKF9qaXQsIHJlc3VsdCwgMCksIHJldHJ5KTsKICAgaWYgKGRzdCA9PSB2YWwp IHVuZ2V0X3RlbXBfZ3ByKF9qaXQpOwogICB1bmdldF90ZW1wX2dwcihfaml0KTsKKyAgRE1C X1NZKF9qaXQpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjU2Miw2ICsyNTg5LDcgQEAgY2Fz X2F0b21pYyhqaXRfc3RhdGVfdCAqX2ppdCwgaW50MzJfdCBkc3QsIGludDMyX3QgbG9jLCBp bnQzMl90IGV4cGVjdGVkLAogICBqaXRfcGF0Y2hfaGVyZShfaml0LCBiYWQpOwogICBtb3Zy KF9qaXQsIGRzdCwgZHN0X29yX3RtcCk7CiAgIHVuZ2V0X3RlbXBfZ3ByKF9qaXQpOworICBE TUJfU1koX2ppdCk7CiB9CiAKIHN0YXRpYyB2b2lkCg== --------------uzzYWvSAmkTVY95d3Hmaf6VX--
X-Loop: help-debbugs@HIDDEN Subject: bug#70474: [PATCH] Move the spin loop target to the LDAXR instruction. References: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> In-Reply-To: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> Resent-From: Tony Garnock-Jones <tonyg@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Mon, 22 Apr 2024 08:20:02 +0000 Resent-Message-ID: <handler.70474.B70474.17137739562738 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 70474 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 70474 <at> debbugs.gnu.org Received: via spool by 70474-submit <at> debbugs.gnu.org id=B70474.17137739562738 (code B ref 70474); Mon, 22 Apr 2024 08:20:02 +0000 Received: (at 70474) by debbugs.gnu.org; 22 Apr 2024 08:19:16 +0000 Received: from localhost ([127.0.0.1]:45642 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ryotP-0000i6-8S for submit <at> debbugs.gnu.org; Mon, 22 Apr 2024 04:19:15 -0400 Received: from smoke.leastfixedpoint.com ([81.4.107.66]:39476 helo=mail.leastfixedpoint.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <tonyg@HIDDEN>) id 1ryotJ-0000ge-7a for 70474 <at> debbugs.gnu.org; Mon, 22 Apr 2024 04:19:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leastfixedpoint.com; s=default; t=1713773927; bh=eqRGAiv3Djr96GNGF8SD8LVx+qk5Jdtgafhsk5njnK0=; h=Date:From:Subject:To; b=LmkVaSMu/lvY9ziesY85NbeboKjoAhCkiOud0cSF1yqpuc7/UGWrYlNQ7w4YVVojO l0nmf6tvmgAzTdxhUyQrESzqHCvYhyL6WjuRGha8t80B+6CfmL8umTdUZkjgGV2eRr /vDJTm9lwZ/TN61wty+U9LJ0+dn6tU0rpe98b690= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.leastfixedpoint.com (Postfix) with ESMTPSA id 013CD3FB85 for <70474 <at> debbugs.gnu.org>; Mon, 22 Apr 2024 10:18:46 +0200 (CEST) Message-ID: <35ead1ce-582e-4378-b894-c9ca1deb8cc2@HIDDEN> Date: Mon, 22 Apr 2024 10:18:46 +0200 MIME-Version: 1.0 From: Tony Garnock-Jones <tonyg@HIDDEN> Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Oh man. This little patch all by itself makes the problem behaviour go away. No switching to SWPAL/CASAL, just tightening the spinloop. (And no changes at all to the CAS code, so nothing to do with the fibers bug I guess.) With the patch, the spinloop goes LDAXR-STLXR-CBNZ (which is what GCC does when SWPAL isn't there) instead of potentially MOV-LDAXR-STLXR-CBNZ (which isn't). Could the machine really be so sensitive to the target of the CBNZ? --- libguile/lightening/lightening/aarch64-cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libguile/lightening/lightening/aarch64-cpu.c b/libguile/lightening/lightening/aarch64-cpu.c index 13aa351e9..4df712a0e 100644 --- a/libguile/lightening/lightening/aarch64-cpu.c +++ b/libguile/lightening/lightening/aarch64-cpu.c @@ -2532,10 +2532,10 @@ str_atomic(jit_state_t *_jit, int32_t loc, int32_t val) static void swap_atomic(jit_state_t *_jit, int32_t dst, int32_t loc, int32_t val) { - void *retry = jit_address(_jit); int32_t result = jit_gpr_regno(get_temp_gpr(_jit)); int32_t val_or_tmp = dst == val ? jit_gpr_regno(get_temp_gpr(_jit)) : val; movr(_jit, val_or_tmp, val); + void *retry = jit_address(_jit); LDAXR(_jit, dst, loc); STLXR(_jit, val_or_tmp, loc, result); jit_patch_there(_jit, bnei(_jit, result, 0), retry); -- 2.44.0
X-Loop: help-debbugs@HIDDEN Subject: bug#70474: [PATCH] Move the spin loop target to the LDAXR instruction. Resent-From: Tony Garnock-Jones <tonyg@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Mon, 22 Apr 2024 11:24:02 +0000 Resent-Message-ID: <handler.70474.B70474.17137850193524 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 70474 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 70474 <at> debbugs.gnu.org Received: via spool by 70474-submit <at> debbugs.gnu.org id=B70474.17137850193524 (code B ref 70474); Mon, 22 Apr 2024 11:24:02 +0000 Received: (at 70474) by debbugs.gnu.org; 22 Apr 2024 11:23:39 +0000 Received: from localhost ([127.0.0.1]:45806 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ryrlq-0000um-OJ for submit <at> debbugs.gnu.org; Mon, 22 Apr 2024 07:23:39 -0400 Received: from smoke.leastfixedpoint.com ([81.4.107.66]:52074 helo=mail.leastfixedpoint.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <tonyg@HIDDEN>) id 1ryrln-0000uO-EZ for 70474 <at> debbugs.gnu.org; Mon, 22 Apr 2024 07:23:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leastfixedpoint.com; s=default; t=1713784993; bh=Ck32pH87pFOGYtKIy4+yzqNsU8sjfbEP/jkKxmP0M5U=; h=Date:Subject:From:To:References:In-Reply-To; b=WTgApe6D4PpJSlfeYtP5CPySeL7PsJYdguVxhyysPqY5fpcxNAFlPX1Jpk8hs4qXA AKQan0WaqWhtHvWlgFatLSn3LPBTdq02quvc6/YEiPYNONWe2EP0yrC8If0Vd0fgKW u3B2oN4+8HUK2dDzOZ6Y75g135w7OgFukn06BLqA= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.leastfixedpoint.com (Postfix) with ESMTPSA id 86AF63FB85 for <70474 <at> debbugs.gnu.org>; Mon, 22 Apr 2024 13:23:13 +0200 (CEST) Message-ID: <976a4750-7006-462f-b158-cf4d6687cad9@HIDDEN> Date: Mon, 22 Apr 2024 13:23:13 +0200 MIME-Version: 1.0 From: Tony Garnock-Jones <tonyg@HIDDEN> References: <825897f1-19fa-4f6a-b459-8db93791d1c3@HIDDEN> <35ead1ce-582e-4378-b894-c9ca1deb8cc2@HIDDEN> Content-Language: en-US In-Reply-To: <35ead1ce-582e-4378-b894-c9ca1deb8cc2@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Andy Wingo in IRC pointed out that the reason the patch appears to work is that the `movr` isn't idempotent! By the time it comes round again, `val` has already been overwritten by LDAXR in the case that `dst == val`. On 22/04/2024 10:18, Tony Garnock-Jones wrote: > Oh man. This little patch all by itself makes the problem behaviour go > away. No switching to SWPAL/CASAL, just tightening the spinloop. (And no > changes at all to the CAS code, so nothing to do with the fibers bug I > guess.) > > With the patch, the spinloop goes LDAXR-STLXR-CBNZ (which is what GCC > does when SWPAL isn't there) instead of potentially MOV-LDAXR-STLXR-CBNZ > (which isn't). > > Could the machine really be so sensitive to the target of the CBNZ? > > --- > libguile/lightening/lightening/aarch64-cpu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libguile/lightening/lightening/aarch64-cpu.c > b/libguile/lightening/lightening/aarch64-cpu.c > index 13aa351e9..4df712a0e 100644 > --- a/libguile/lightening/lightening/aarch64-cpu.c > +++ b/libguile/lightening/lightening/aarch64-cpu.c > @@ -2532,10 +2532,10 @@ str_atomic(jit_state_t *_jit, int32_t loc, > int32_t val) > static void > swap_atomic(jit_state_t *_jit, int32_t dst, int32_t loc, int32_t val) > { > - void *retry = jit_address(_jit); > int32_t result = jit_gpr_regno(get_temp_gpr(_jit)); > int32_t val_or_tmp = dst == val ? jit_gpr_regno(get_temp_gpr(_jit)) > : val; > movr(_jit, val_or_tmp, val); > + void *retry = jit_address(_jit); > LDAXR(_jit, dst, loc); > STLXR(_jit, val_or_tmp, loc, result); > jit_patch_there(_jit, bnei(_jit, result, 0), retry);
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.