Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vVCNw-00FhPH-06 for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Dec 2025 17:29:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vVCNu-001Uxv-3C for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Dec 2025 17:29:23 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vVCNt-001Uxm-2t for pgsql-hackers@lists.postgresql.org; Mon, 15 Dec 2025 17:29:23 +0000 Received: from fout-a2-smtp.messagingengine.com ([103.168.172.145]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vVCNs-000p23-2r for pgsql-hackers@lists.postgresql.org; Mon, 15 Dec 2025 17:29:21 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id 9989CEC011D; Mon, 15 Dec 2025 12:29:19 -0500 (EST) Received: from phl-imap-14 ([10.202.2.87]) by phl-compute-02.internal (MEProxy); Mon, 15 Dec 2025 12:29:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1765819759; x=1765906159; bh=0PelVDRoBq zxduUQIIkB0PsyW/5jAOlCv40AIu7msRU=; b=gkuNp2YtcZT1HpVm80LeAeQbRp u1UXdc1f551IMntFtiVLhG19F6TiN4XmYcyzgs7NgiR0gLRfjMh+gsjkYi57ExT/ P86A4pWHCEsTIUsqBsbGx6hbm+sob6KymItw/j12qJWyHBQQ0l+PJ0Qd1wLcBHc+ jXqaWdIOY1MHpxF/vcDTRuq5RChH5piq0up8MQ5MDEhEPqzrYjGJw94Y7z8aCg1g dWbioVX+/2FHMQfIHcKIR9thkxQ5EeyGuYVM23yJqwU8aiOigM6+WEJdKjieYlpU f9GwPQSW+ms7Ctqxt4pD+6bQYHd6Iozrw0vPyhN71ysybjnsU1zxltVd4new== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1765819759; x=1765906159; bh=0PelVDRoBqzxduUQIIkB0PsyW/5jAOlCv40 AIu7msRU=; b=qoqwRyafmGMYfHdRqT9JhtR5n3ZGHVMPm6AnDIKV/6gnvWyIjid re1tcBZkKOfHgV3PzM/AXYGSikx4IxRCj3odsbVqty3dkiXbByMOG10UboSBWS18 eEm26avmEmXxp79iIW9d2Lja+7yOAsWEyPACB9XbAplSyOO6R2Kt1Sp84fhdSS6g UDQFvyKqY9YRFm3PbUON+0JR+qciXqvcDGnl+/vkticeEeoxLIPj7Wg+0Sj9cXez EFO1HrBX09He2EyAvNAe8Nop2VyKYVrzruJhtmfuWDPjFMYXtSfElX+NfTWJV61f crxfKIqKrIcuyxXWUeUsH4XHsPn/K0fwAKQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefjeegudcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefoggffhffvvefkjghfufgtsehmtderreertddtnecuhfhrohhmpedfifhrvghguceu uhhrugdfuceoghhrvghgsegsuhhrugdrmhgvqeenucggtffrrghtthgvrhhnpefhveelhe effeffudelvddutdfghfeileeikeeufefhhfelvdffuddvvdejleekleenucevlhhushht vghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehgrhgvghessghurhgurd hmvgdpnhgspghrtghpthhtohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohep rghnughrvghssegrnhgrrhgriigvlhdruggvpdhrtghpthhtohepphgvthgvrhesvghish gvnhhtrhgruhhtrdhorhhgpdhrtghpthhtohepuggrvhgvtghrrghmvghrsehgmhgrihhl rdgtohhmpdhrtghpthhtohepnhgrthhhrghnuggsohhsshgrrhhtsehgmhgrihhlrdgtoh hmpdhrtghpthhtohepthhhohhmrghsrdhmuhhnrhhosehgmhgrihhlrdgtohhmpdhrtghp thhtohepphhgshhqlhdqhhgrtghkvghrsheslhhishhtshdrphhoshhtghhrvghsqhhlrd horhhg X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 6304AC4006D; Mon, 15 Dec 2025 12:29:19 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: Atr_W4N1XYlB Date: Mon, 15 Dec 2025 12:27:25 -0500 From: "Greg Burd" To: "Andres Freund" Cc: "Nathan Bossart" , "Thomas Munro" , "PostgreSQL Hackers" , "Peter Eisentraut" , "Dave Cramer" Message-Id: <6646f9f4-3609-41e2-8d9f-dcd63e9f915e@app.fastmail.com> In-Reply-To: References: <63d07b91-a55a-4c5f-bf62-d3506acfdb5b@app.fastmail.com> <5e169c16-9e54-4325-8027-1f52a5bb5c1e@app.fastmail.com> <1c2a29b8-5b1e-44f7-a871-71ec5fefc120@app.fastmail.com> <8e926f26-0a97-434f-a665-8bb6f9159b08@app.fastmail.com> Subject: Re: [PATCH] Fix ARM64/MSVC atomic memory ordering issues on Win11 by adding explicit DMB ?barriers Content-Type: multipart/mixed; boundary=3ea77c44aef34486920ef46976b5fbfd List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --3ea77c44aef34486920ef46976b5fbfd Content-Type: text/plain Content-Transfer-Encoding: 7bit On Fri, Dec 12, 2025, at 2:32 PM, Andres Freund wrote: > Hi, > > On 2025-12-12 14:21:47 -0500, Greg Burd wrote: >> >> On Fri, Dec 12, 2025, at 11:03 AM, Nathan Bossart wrote: >> > +/* >> > + * _InterlockedExchange() generates a full memory barrier (or release >> > + * semantics that ensures all prior memory operations are visible to >> > + * other cores before the lock is released. >> > + */ >> > +#define S_UNLOCK(lock) (InterlockedExchange(lock, 0)) >> >> Nathan, thanks for looking at the patch! >> >> > This seems to change the implementation from >> > >> > #define S_UNLOCK(lock) \ >> > do { _ReadWriteBarrier(); (*(lock)) = 0; } while (0) >> > >> > in some cases, but I am insufficiently caffeinated to figure out what >> > platforms use which implementation. In any case, it looks like we are >> > changing it for some currently-supported platforms, and I'm curious why. >> >> This change is within _MSC_VER, but AFAICT this intrinsic is available >> across their supported platforms. The previous implementation of S_UNLOCK() >> boils down to a no-op because the _ReadWriteBarrier()[1] is a hint to the >> compiler and does not emit any instruction on any platform and it's also >> deprecated. So, on MSVC S_UNLOCK is an unguarded assignment and then a loop >> that will be optimized out, not really what we wanted I'd imagine. Thanks Andres for the comments. > I don't think it can be optimized out, that should be prevented by > _ReadWriteBarrier() being a compiler barrier. While the documentation does mention that this has been deprecated, I tend to agree with you. This has been in place for a while, no need to change what works at this time. A new thread might be a better forum if there is some evidence that we should revisit this in the future. I'd like to land the ARM64/MSVC changes and enable that platform in this thread. >> My tests with godbolt showed this to be true, no instruction barriers >> emitted. I think it was Andres[2] who suggested replacing it with >> _InterlockedExchange()[3]. So, given that _ReadWriteBarrier() is deprecated >> I decided not to specialize this change to only the ARM64 platform, sorry >> for not making that clear in the commit or email. > > I don't think that's a good idea - the _ReadWriteBarrier() is sufficient on > x86 to implement a spinlock release (due to x86 being a total store order > architecture, once the lock is observed as being released, all the effects > protected by the lock are also guaranteed to be visible). Making the > spinlocks use an atomic op for both acquire and release does cause measurable > slowdowns on x86 with gcc, so I'd expect the same to be true on windows. Got it, fixed in v9. best. -greg > Greetings, > > Andres Freund --3ea77c44aef34486920ef46976b5fbfd Content-Disposition: attachment; filename*0="v9-0001-Enable-the-Microsoft-Windows-ARM64-MSVC-platform.patc"; filename*1="h" Content-Type: application/octet-stream; name="=?UTF-8?Q?v9-0001-Enable-the-Microsoft-Windows-ARM64-MSVC-platform.patch?=" Content-Transfer-Encoding: base64 RnJvbSAzOTZlNWU1YWI2NDRhYWUyNjFmODUyZDYxNmZlNjQ0ZjI1MjM4YzM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENyYW1lciA8ZGF2ZWNyYW1lckBnbWFpbC5j b20+CkRhdGU6IFN1biwgMTMgSnVsIDIwMjUgMDY6MzM6MTcgLTA0MDAKU3ViamVjdDogW1BB VENIIHY5XSBFbmFibGUgdGhlIE1pY3Jvc29mdCBXaW5kb3dzIEFSTTY0L01TVkMgcGxhdGZv cm0KCkFkZCBzdXBwb3J0IGZvciB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlIG9uIFdpbmRvd3Mg MTEgdXNpbmcgTVNWQyBjb21waWxlcgphZGRyZXNzaW5nIGJ1aWxkIGlzc3VlcyBhbmQgaW1w bGVtZW50aW5nIHByb3BlciBtZW1vcnkgc3luY2hyb25pemF0aW9uCnNlbWFudGljcyBmb3Ig dGhpcyBwbGF0Zm9ybS4KCiogSW1wbGVtZW50IHNwaW5fZGVsYXkoKSB3aXRoIF9faXNiKF9B Uk02NF9CQVJSSUVSX1NZKSBpbnRyaW5zaWMgdG8gZW1pdAogIHRoZSAiSVNCIFNZIiBpbnN0 cnVjdGlvbiB3aGljaCBtYXRjaGVzIHRoZSBHQ0MvQ2xhbmcgYXBwcm9hY2ggdG8KICBzcGlu bG9vcCBkZWxheSBhbmQgZW1wZXJpY2FsIGV2aWRlbmNlIHRoYXQgaXQgb3V0LXNjYWxlcyB0 aGUgWUlFTEQKICBpbnN0cnVjdGlvbiBpbiBwcmFjdGljZS4KCiogVW5jb25kaXRpb25hbGx5 IGNob29zZSB0byB1c2UgdGhlIE1TVkMgc3VwcGxpZWQgaW50cmluc2ljCiAgZm9yIENSQzMy IG9uIEFSTTY0LgoKKiBJbXBsZW1lbnQgdGhlIFNfVU5MT0NLKCkgbWFjcm8gdXNpbmcgdGhl IEludGVybG9ja2VkRXhjaGFuZ2UoKQogIGludHJpbnNpYyBvbiBBUk02NC4KCkF1dGhvcjog R3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+CkF1dGhvcjogRGF2ZSBDcmFtZXIgPGRhdmVjcmFt ZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzNjNTc2YWQ3 LWQyZGEtNDEzNy1iNzkxLTU4MjFkYTdjYzM3MCU0MGFwcC5mYXN0bWFpbC5jb20KLS0tCiBk b2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwgfCAgMiArLQogbWVzb24uYnVpbGQgICAg ICAgICAgICAgICAgICAgIHwgIDkgKysrKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc19sb2Nr LmggICB8IDcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9wb3J0 L3BnX2NyYzMyY19hcm12OC5jICAgICB8ICA2ICsrKwogc3JjL3Rvb2xzL21zdmNfZ2VuZGVm LnBsICAgICAgIHwgIDggKystLQogNSBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCsp LCAyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0 aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwKaW5kZXggZmU4ZDcz ZTFmOGMuLjNmOGQ1MTJhOTA2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5zZ21sCkBAIC0zOTY3 LDcgKzM5NjcsNyBAQCBjb25maWd1cmUgLi4uIExERkxBR1M9Ii1SIC91c3Ivc2Z3L2xpYjov b3B0L3Nmdy9saWI6L3Vzci9sb2NhbC9saWIiCiAgICA8c2VjdDMgaWQ9Imluc3RhbGwtd2lu ZG93cy1mdWxsLTY0LWJpdCI+CiAgICAgPHRpdGxlPlNwZWNpYWwgQ29uc2lkZXJhdGlvbnMg Zm9yIDY0LUJpdCBXaW5kb3dzPC90aXRsZT4KICAgICA8cGFyYT4KLSAgICAgUG9zdGdyZVNR TCB3aWxsIG9ubHkgYnVpbGQgZm9yIHRoZSB4NjQgYXJjaGl0ZWN0dXJlIG9uIDY0LWJpdCBX aW5kb3dzLgorICAgICBQb3N0Z3JlU1FMIHdpbGwgb25seSBidWlsZCBmb3IgdGhlIHg2NCBh bmQgQVJNNjQgYXJjaGl0ZWN0dXJlcyBvbiA2NC1iaXQgV2luZG93cy4KICAgICA8L3BhcmE+ CiAgICAgPHBhcmE+CiAgICAgIE1peGluZyAzMi0gYW5kIDY0LWJpdCB2ZXJzaW9ucyBpbiB0 aGUgc2FtZSBidWlsZCB0cmVlIGlzIG5vdCBzdXBwb3J0ZWQuCmRpZmYgLS1naXQgYS9tZXNv bi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IGQ3YzUxOTNkNGNlLi41NzY3OWUyODQ0MyAx MDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTI1MjMsNyAr MjUyMywxMiBAQCBpbnQgbWFpbih2b2lkKQogfQogJycnCiAKLSAgaWYgY2MubGlua3MocHJv ZywgbmFtZTogJ19fY3JjMzJjYiwgX19jcmMzMmNoLCBfX2NyYzMyY3csIGFuZCBfX2NyYzMy Y2Qgd2l0aG91dCAtbWFyY2g9YXJtdjgtYStjcmMnLAorICAjIENoZWNrIGZpcnN0IGZvciBh IE1TVkMvQVJNNjQgY29tYm8gYmVjYXVzZSB0aGUgdGVzdCBwcm9nIGFib3ZlIHdvbid0Cisg ICMgY29tcGlsZSAoYXMgaXQgZG9lc24ndCAnI2lmZGVmIF9NU0NfVkVSICNpbmNsdWRlIDxp bnRyaW4uaD4nKSwgd2hpY2gKKyAgIyBpcyBva2F5IGFzIHdlIGtub3cgZm9yIGEgZmFjdCB0 aGF0IHRoaXMgcGxhdGZvcm0gY29tYm8gc3VwcG9ydHMgdGhlCisgICMgaW50cmluc2ljIGZv ciBBUk02NCBDUkMgdGhlIHRlc3QgcGVyZm9ybXMsIHNvIHVzZSB0aGF0IHVuY29uZGl0aW9u YWxseS4KKyAgaWYgKGhvc3RfY3B1ID09ICdhYXJjaDY0JyBhbmQgY2MuZ2V0X2lkKCkgPT0g J21zdmMnKSBvciBcCisgICAgICAgIGNjLmxpbmtzKHByb2csIG5hbWU6ICdfX2NyYzMyY2Is IF9fY3JjMzJjaCwgX19jcmMzMmN3LCBhbmQgX19jcmMzMmNkIHdpdGhvdXQgLW1hcmNoPWFy bXY4LWErY3JjJywKICAgICAgIGFyZ3M6IHRlc3RfY19hcmdzKQogICAgICMgVXNlIEFSTSBD UkMgRXh0ZW5zaW9uIHVuY29uZGl0aW9uYWxseQogICAgIGNkYXRhLnNldCgnVVNFX0FSTVY4 X0NSQzMyQycsIDEpCkBAIC0yNTQyLDcgKzI1NDcsNyBAQCBpbnQgbWFpbih2b2lkKQogICAg IGNkYXRhLnNldCgnVVNFX0FSTVY4X0NSQzMyQycsIGZhbHNlKQogICAgIGNkYXRhLnNldCgn VVNFX0FSTVY4X0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0snLCAxKQogICAgIGhhdmVfb3B0 aW1pemVkX2NyYyA9IHRydWUKLSAgZW5kaWYKK2VuZGlmCiAKIGVsaWYgaG9zdF9jcHUgPT0g J2xvb25nYXJjaDY0JwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NfbG9j ay5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zX2xvY2suaAppbmRleCA3ZjhmNTY2YmQ0MC4u ODcwMDEwYzY3ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc19sb2NrLmgK KysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zX2xvY2suaApAQCAtNTk0LDcgKzU5NCw4IEBA IHRhcyh2b2xhdGlsZSBzbG9ja190ICpsb2NrKQogCiAjaWYgIWRlZmluZWQoSEFTX1RFU1Rf QU5EX1NFVCkJLyogV2UgZGlkbid0IHRyaWdnZXIgYWJvdmUsIGxldCdzIHRyeSBoZXJlICov CiAKLSNpZmRlZiBfTVNDX1ZFUgorLyogV2hlbiBjb21waWxpbmcgZm9yIE1pY3Jvc29mdCBX aW5kb3dzIHVzaW5nIE1TVkMgKi8KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQogdHlwZWRlZiBM T05HIHNsb2NrX3Q7CiAKICNkZWZpbmUgSEFTX1RFU1RfQU5EX1NFVApAQCAtNjAyLDM0ICs2 MDMsNzUgQEAgdHlwZWRlZiBMT05HIHNsb2NrX3Q7CiAKICNkZWZpbmUgU1BJTl9ERUxBWSgp IHNwaW5fZGVsYXkoKQogCi0vKiBJZiB1c2luZyBWaXN1YWwgQysrIG9uIFdpbjY0LCBpbmxp bmUgYXNzZW1ibHkgaXMgdW5hdmFpbGFibGUuCi0gKiBVc2UgYSBfbW1fcGF1c2UgaW50cmlu c2ljIGluc3RlYWQgb2YgcmVwIG5vcC4KKy8qCisgKiBXaGVuIHVzaW5nIE1TVkMgb24gYW55 IG5vbi1BUk02NCAoYWFyY2g2NCkgcGxhdGZvcm1zICh4ODYtNjQgYW5kIHg4NikKKyAqIF9S ZWFkV3JpdGVCYXJyaWVyIGlzIHVzZWQgdG8gcHJldmVudCB0aGUgY29tcGlsZXIgZnJvbSBy ZW9yZGVyaW5nCisgKiBtZW1vcnkgb3BlcmF0aW9ucyBhY3Jvc3MgdGhlIGxvY2sgb3BlcmF0 aW9uLgogICovCisjaWYgIWRlZmluZWQoX01fQVJNNjQpCisKKyNpbmNsdWRlIDxpbnRyaW4u aD4KKyNwcmFnbWEgaW50cmluc2ljKF9SZWFkV3JpdGVCYXJyaWVyKQorCisjZGVmaW5lIFNf VU5MT0NLKGxvY2spIFwKKwlkbyB7IF9SZWFkV3JpdGVCYXJyaWVyKCk7ICgqKGxvY2spKSA9 IDA7IH0gd2hpbGUgKDApCisKKyNlbmRpZiAvKiAhZGVmaW5lZChfTV9BUk02NCkgKi8KKwog I2lmIGRlZmluZWQoX1dJTjY0KQorI2lmIGRlZmluZWQoX01fQVJNNjQpCisKKy8qCisgKiBf SW50ZXJsb2NrZWRFeGNoYW5nZSgpIGdlbmVyYXRlcyBhIGZ1bGwgbWVtb3J5IGJhcnJpZXIg KG9yIHJlbGVhc2UKKyAqIHNlbWFudGljcyB0aGF0IGVuc3VyZXMgYWxsIHByaW9yIG1lbW9y eSBvcGVyYXRpb25zIGFyZSB2aXNpYmxlIHRvCisgKiBvdGhlciBjb3JlcyBiZWZvcmUgdGhl IGxvY2sgaXMgcmVsZWFzZWQuCisgKi8KKyNkZWZpbmUgU19VTkxPQ0sobG9jaykgKEludGVy bG9ja2VkRXhjaGFuZ2UobG9jaywgMCkpCisKKy8qCisgKiBXaGlsZSB0aGVyZSBpcyBzdXBw b3J0IGZvciBhIF9feWllbGQoKSBpbnRyaW5zaWMgZm9yIE1TVkMvQVJNNjRbMV0sIHRoZXJl CisgKiBpcyBhIHdlYWx0aCBvZiByZWFsLXdvcmxkIHRlc3RpbmcgYWNyb3NzIGRhdGFiYXNl cyBhbmQgbGFuZ3VhZ2VzIGFzIHdlbGwKKyAqIGFzIGEgYmxvZyBwb3N0IGJ5IEFSTVsyXSBz dWdnZXN0IHRoYXQgSVNCIGlzIHRoZSBtb3N0IHNjYWxhYmxlIGFuZCBwb3dlcgorICogZnJp ZW5kbHkgaW5zdHJ1Y3Rpb24gdG8gdXNlIGZvciBzcGlubG9jayBkZWxheSBsb29wcy4gU28g d2UgdXNlIHRoZSBvbmx5CisgKiBzdXBwb3J0ZWQgaW50cmluc2ljL2ZsYWcgY29tYmluYXRp b24gYXZhaWxibGUgZm9yIHRoaXMgcGxhdGZvcm0gY29tYm9bM10uCisgKiBUaGlzIG1hdGNo ZXMgd2hhdCB3ZSBkbyBhYm92ZSB3aGVuIGNvbXBpbGluZyB3aXRoIGVpdGhlciBHQ0Mgb3Ig Q2xhbmcuCisgKgorICogWzFdIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9j cHAvaW50cmluc2ljcy9hcm02NC1pbnRyaW5zaWNzCisgKiBbMl0gaHR0cHM6Ly9kZXZlbG9w ZXIuYXJtLmNvbS9jb21tdW5pdHkvYXJtLWNvbW11bml0eS1ibG9ncy9iL2FyY2hpdGVjdHVy ZXMtYW5kLXByb2Nlc3NvcnMtYmxvZy9wb3N0cy9tdWx0aS10aHJlYWRlZC1hcHBsaWNhdGlv bnMtYXJtCisgKiBbM10gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdERvY3MvY3BwLWRv Y3MvYmxvYi9tYWluL2RvY3MvaW50cmluc2ljcy9hcm02NC1pbnRyaW5zaWNzLm1kCisgKi8K K3N0YXRpYyBfX2ZvcmNlaW5saW5lIHZvaWQKK3NwaW5fZGVsYXkodm9pZCkKK3sKKwlfX2lz YihfQVJNNjRfQkFSUklFUl9TWSk7Cit9CisKKyNlbHNlIC8qICFkZWZpbmVkKF9NX0FSTTY0 KSAqLworCisvKgorICogSWYgdXNpbmcgVmlzdWFsIEMrKyBvbiBXaW42NCwgaW5saW5lIGFz c2VtYmx5IGlzIHVuYXZhaWxhYmxlLiBVc2UgdGhlCisgKiBfbW1fcGF1c2UgaW50cmluc2lj IGluc3RlYWQgb2YgcmVwIG5vcC4KKyAqLwogc3RhdGljIF9fZm9yY2VpbmxpbmUgdm9pZAog c3Bpbl9kZWxheSh2b2lkKQogewogCV9tbV9wYXVzZSgpOwogfQotI2Vsc2UKKworI2VuZGlm IC8qIGRlZmluZWQoX01fQVJNNjQpICovCisjZWxzZSAvKiAhZGVmaW5lZChfV0lONjQpICov CisKKy8qIE9uIDMyYml0IHN5c3RlbXMgKHg4NikgdXNlIGEgbm8tb3AgaW5zdHJ1Y3Rpb24g Ki8KIHN0YXRpYyBfX2ZvcmNlaW5saW5lIHZvaWQKIHNwaW5fZGVsYXkodm9pZCkKIHsKIAkv KiBTZWUgY29tbWVudCBmb3IgZ2NjIGNvZGUuIFNhbWUgY29kZSwgTUFTTSBzeW50YXggKi8K IAlfX2FzbSByZXAgbm9wOwogfQotI2VuZGlmCi0KLSNpbmNsdWRlIDxpbnRyaW4uaD4KLSNw cmFnbWEgaW50cmluc2ljKF9SZWFkV3JpdGVCYXJyaWVyKQotCi0jZGVmaW5lIFNfVU5MT0NL KGxvY2spCVwKLQlkbyB7IF9SZWFkV3JpdGVCYXJyaWVyKCk7ICgqKGxvY2spKSA9IDA7IH0g d2hpbGUgKDApCiAKLSNlbmRpZgotCi0KLSNlbmRpZgkvKiAhZGVmaW5lZChIQVNfVEVTVF9B TkRfU0VUKSAqLworI2VuZGlmIC8qICFkZWZpbmVkKF9XSU42NCkgKi8KKyNlbmRpZiAvKiBk ZWZpbmVkKF9NU0NfVkVSKSAqLworI2VuZGlmIC8qICFkZWZpbmVkKEhBU19URVNUX0FORF9T RVQpICovCiAKIAogLyogQmxvdyB1cCBpZiB3ZSBkaWRuJ3QgaGF2ZSBhbnkgd2F5IHRvIGRv IHNwaW5sb2NrcyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdfY3JjMzJjX2FybXY4LmMg Yi9zcmMvcG9ydC9wZ19jcmMzMmNfYXJtdjguYwppbmRleCA1YmEwNzBiYjk5ZC4uMjlhOTFk Y2E2MmYgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX2NyYzMyY19hcm12OC5jCisrKyBiL3Ny Yy9wb3J0L3BnX2NyYzMyY19hcm12OC5jCkBAIC0xNCw3ICsxNCwxMyBAQAogICovCiAjaW5j bHVkZSAiYy5oIgogCisjaWZkZWYgX01TQ19WRVIKKyAvKiBNU1ZDIEFSTTY0IGludHJpbnNp Y3MgKi8KKyNpbmNsdWRlIDxpbnRyaW4uaD4KKyNlbHNlCisgLyogR0NDL0NsYW5nOiBVc2Ug QUNMRSBpbnRyaW5zaWNzIGZyb20gYXJtX2FjbGUuaCAqLwogI2luY2x1ZGUgPGFybV9hY2xl Lmg+CisjZW5kaWYKIAogI2luY2x1ZGUgInBvcnQvcGdfY3JjMzJjLmgiCiAKZGlmZiAtLWdp dCBhL3NyYy90b29scy9tc3ZjX2dlbmRlZi5wbCBiL3NyYy90b29scy9tc3ZjX2dlbmRlZi5w bAppbmRleCA4NjhhYWQ1MWIwOS4uYzkyYzk0YzQ3NzUgMTAwNjQ0Ci0tLSBhL3NyYy90b29s cy9tc3ZjX2dlbmRlZi5wbAorKysgYi9zcmMvdG9vbHMvbXN2Y19nZW5kZWYucGwKQEAgLTEx OCw5ICsxMTgsOSBAQCBzdWIgd3JpdGVkZWYKIAl7CiAJCW15ICRpc2RhdGEgPSAkZGVmLT57 JGZ9IGVxICdkYXRhJzsKIAotCQkjIFN0cmlwIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgZm9y IHdpbjMyLCBidXQgbm90IHg2NAorCQkjIFN0cmlwIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUg Zm9yIHdpbjMyLCBidXQgbm90IHg2NCBhbmQgYWFyY2g2NAogCQkkZiA9fiBzL15fLy8KLQkJ ICB1bmxlc3MgKCRhcmNoIGVxICJ4ODZfNjQiKTsKKwkJICB1bmxlc3MgKCRhcmNoIGVxICJ4 ODZfNjQiIHx8ICRhcmNoIGVxICJhYXJjaDY0Iik7CiAKIAkJIyBFbWl0IGp1c3QgdGhlIG5h bWUgaWYgaXQncyBhIGZ1bmN0aW9uIHN5bWJvbCwgb3IgZW1pdCB0aGUgbmFtZQogCQkjIGRl Y29yYXRlZCB3aXRoIHRoZSBEQVRBIG9wdGlvbiBmb3IgdmFyaWFibGVzLgpAQCAtMTQxLDcg KzE0MSw3IEBAIHN1YiB3cml0ZWRlZgogc3ViIHVzYWdlCiB7CiAJZGllKCJVc2FnZTogbXN2 Y19nZW5kZWYucGwgLS1hcmNoIDxhcmNoPiAtLWRlZmZpbGUgPGRlZmZpbGU+IC0tdGVtcGRp ciA8dGVtcGRpcj4gZmlsZXMtb3ItZGlyZWN0b3JpZXNcbiIKLQkJICAuICIgICAgYXJjaDog eDg2IHwgeDg2XzY0XG4iCisJCSAgLiAiICAgIGFyY2g6IHg4NiB8IHg4Nl82NCB8IGFhcmNo NjRcbiIKIAkJICAuICIgICAgZGVmZmlsZTogcGF0aCBvZiB0aGUgZ2VuZXJhdGVkIGZpbGVc biIKIAkJICAuICIgICAgdGVtcGRpcjogZGlyZWN0b3J5IGZvciB0ZW1wb3JhcnkgZmlsZXNc biIKIAkJICAuICIgICAgZmlsZXMgb3IgZGlyZWN0b3JpZXM6IG9iamVjdCBmaWxlcyBvciBk aXJlY3RvcnkgY29udGFpbmluZyBvYmplY3QgZmlsZXNcbiIKQEAgLTE1OCw3ICsxNTgsNyBA QCBHZXRPcHRpb25zKAogCSd0ZW1wZGlyOnMnID0+IFwkdGVtcGRpciwpIG9yIHVzYWdlKCk7 CiAKIHVzYWdlKCJhcmNoOiAkYXJjaCIpCi0gIHVubGVzcyAoJGFyY2ggZXEgJ3g4NicgfHwg JGFyY2ggZXEgJ3g4Nl82NCcpOworICB1bmxlc3MgKCRhcmNoIGVxICd4ODYnIHx8ICRhcmNo IGVxICd4ODZfNjQnIHx8ICRhcmNoIGVxICdhYXJjaDY0Jyk7CiAKIG15IEBmaWxlczsKIAot LSAKMi41Mi4wLndpbmRvd3MuMQoK --3ea77c44aef34486920ef46976b5fbfd--