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 1vTjLa-009JU9-0I for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Dec 2025 16:16:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vTjLY-004KaX-25 for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Dec 2025 16:16:53 +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 1vTjLX-004KaP-2N for pgsql-hackers@lists.postgresql.org; Thu, 11 Dec 2025 16:16:52 +0000 Received: from fout-a7-smtp.messagingengine.com ([103.168.172.150]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vTjLV-000AVR-2o for pgsql-hackers@lists.postgresql.org; Thu, 11 Dec 2025 16:16:51 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id D1272EC0574; Thu, 11 Dec 2025 11:16:48 -0500 (EST) Received: from phl-imap-14 ([10.202.2.87]) by phl-compute-02.internal (MEProxy); Thu, 11 Dec 2025 11:16:48 -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=1765469808; x=1765556208; bh=xmLaRCD53g WKmWuZKsaDd4mYpFiE7xsJofIhR68uV18=; b=a1EjfhEmPnIJyeTUvP8hhygXML WDX6tQxxxJ6eRNhkRWANCv8Bc59DKm40Awx1Fo2PeHfmhhHNYqYUP435cJbE7Q+t 3EOINtXvYEWOfxUjtzShcE0IETRd8lo8ADRzoCXvEk6vJXQFt+bIrg8jHtvdwvnP KZgnVNSl6j8m5rnn/ISUDs/bY360WNp93c7eyIGZOEyh/gLJm8UeZnwLwGfEMN/L kUKR2l/lBOHm3lYqJE5l7ESBWRc0WnCAE4Fu3ir8HtuArpT9qkuSGznwHnsexBIq rsKnRXtrTEbBVrb1x2dq9Dr3nsMuznBaD+ely44fS58qOn+RacCQsic1nD+Q== 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= 1765469808; x=1765556208; bh=xmLaRCD53gWKmWuZKsaDd4mYpFiE7xsJofI hR68uV18=; b=SKeotZBpMTYl0VHbMAbvGaNhzPjGaej04+LjlRrJTb/gKGYtAJx OBWa7Ao0BZ+Q/9gU1esckbbKIYFQX0id0/AqmD0efKY8QQX6B/MPTGI7Z6KNnwNJ ZnL7EKXQVZtVHpPqh6kx258yR5rDNjeWS7AZpU0m88K5gV+UswYnBJgHaAr2DIfK 3bsjDr4vLLz9SacAHItLSTuKbiFNIUUEED8r415aA9Pg1fz/FlLw2o1kMnkfpIXE 6rI1tzWjQFPZamE0kcRTjgQtBXsRckILKweY54kIJss6NcmzUpSLZ4NSCcBsGzvj V2Sm0Agy+xrOtdMuZbPobeR1sPpuUIxZIWQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvheejjecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenogfuuh hsphgvtghtffhomhgrihhnucdlgeelmdenucfjughrpefoggffhffvvefkjghfufgtsehm tderreertdejnecuhfhrohhmpedfifhrvghguceuuhhrugdfuceoghhrvghgsegsuhhrug drmhgvqeenucggtffrrghtthgvrhhnpeekueeiudffgefhleffffejudefgfeghefftdeu ieeftdfhhffgvdfgledutefggfenucffohhmrghinhepphhoshhtghhrrdgvshdpghhith hhuhgsrdgtohhmpdgrrhhmrdgtohhmpdhmhihsqhhlrdgtohhmpdgtlhhouhguvghrrgdr ohhrghdprghprggthhgvrdhorhhgpdhrughrohhprdgtohhmpdifohhrughprhgvshhsrd gtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep ghhrvghgsegsuhhrugdrmhgvpdhnsggprhgtphhtthhopeeipdhmohguvgepshhmthhpoh huthdprhgtphhtthhopegrnhgurhgvshesrghnrghrrgiivghlrdguvgdprhgtphhtthho pehpvghtvghrsegvihhsvghnthhrrghuthdrohhrghdprhgtphhtthhopegurghvvggtrh grmhgvrhesghhmrghilhdrtghomhdprhgtphhtthhopehnrghthhgrnhgusghoshhsrghr thesghhmrghilhdrtghomhdprhgtphhtthhopehthhhomhgrshdrmhhunhhrohesghhmrg hilhdrtghomhdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehlihhsthhsrdhp ohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 5A5E3C4006D; Thu, 11 Dec 2025 11:16:48 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: ASp1z1VhzG_s Date: Thu, 11 Dec 2025 11:16:28 -0500 From: "Greg Burd" To: "Thomas Munro" Cc: "PostgreSQL Hackers" , "Nathan Bossart" , "Peter Eisentraut" , "Dave Cramer" , "Andres Freund" Message-Id: <1c2a29b8-5b1e-44f7-a871-71ec5fefc120@app.fastmail.com> In-Reply-To: References: <386595D6-0373-4E08-BC00-D8F17F5F7CAE@greg.burd.me> <63d07b91-a55a-4c5f-bf62-d3506acfdb5b@app.fastmail.com> <5e169c16-9e54-4325-8027-1f52a5bb5c1e@app.fastmail.com> Subject: =?UTF-8?Q?Re:_[PATCH]_Fix_ARM64/MSVC_atomic_memory_ordering_issues_on_Wi?= =?UTF-8?Q?n11_by_adding_explicit_DMB_=E2=80=8Bbarriers?= Content-Type: multipart/mixed; boundary=d439f1d6faa74e60b7bdf99a878090db List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --d439f1d6faa74e60b7bdf99a878090db Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Wed, Dec 10, 2025, at 4:31 PM, Thomas Munro wrote: > On Thu, Dec 11, 2025 at 5:32=E2=80=AFAM Greg Burd wrote: >> Rebased with only minor changes to meson.build this patch is ready fo= r review/commit as it is passing tests on my aarch64 Win11 MSVC system. = Also note that this system I'm testing on is ready to become a member o= f the buildfarm (application submitted) and monitor this combo in perpet= uity. > > - if cc.links(prog, name: '__crc32cb, __crc32ch, __crc32cw, and > __crc32cd without -march=3Darmv8-a+crc', > ... > + if host_machine.cpu_family() =3D=3D 'aarch64' Thanks for taking the time to review. > I think this new nesting of the CRC32 feature tests breaks the test on > "armv7" distros (in our build farm, that's a bunch of RPis running > Debian/Raspbian, but at least FreeBSD and NetBSD also support > "armv7"). Any ARM chip made since around 2011 is really an ARMv8+ > chip running Aarch32 code and can thus reach the ARMv8 instructions. > For example "grison" says: > > checking build system type... (cached) armv7l-unknown-linux-gnueabihf > ... > checking which CRC-32C implementation to use... ARMv8 CRC instructions > with runtime check That was rather silly of me to overlook, apologies. I went back to the = code that was there before written by Andres I believe and simply added = a test for this one special case. That reduces code churn and simplifie= s the logic while preserving the earlier behavior. As I was re-reading I decided to review the YEILD vs ISB question for th= is platform combo again in light of a82a5ee [1]. What I found was a wea= lth of information and work on the topic and the thread mentioned MariaD= B so I did some digging (because, why not?). Go-lang[2] uses ISB but a = comment there led me on to another resource, a blog post from ARM on the= topic of spin locks for ARM64[3]. I found that like Go-lang, Rust[4] u= ses ISB (and if you read only one thread on the topic this is the one to= dig into). The developers on the thread wrote a number of benchmarks a= nd tested a variety of approaches landing on "ISB SY" on aarch64. I fou= nd that MySQL[5][6] also went with ISB, as has Cloudera[7], Impala[8], A= erospike[9], and WebAssembly[10] at which point I stopped looking around= . There were other resources out there for understanding ARM and relaxe= d memory models such as [11], [12], and [13] for those that care to lear= n. All of this is to say that I swapped out the YEILD for "ISB SY" for the = ARM64/MSVC because that seems to make the most sense from the evidence I= found and for consistency in our code. > -#define S_UNLOCK(lock) \ > +#define S_UNLOCK(lock) \ > > Bogus whitespace change. Fixed, thanks. best. -greg [1] https://postgr.es/m/78338F29-9D7F-4DC8-BD71-E9674CE71425@amazon.com [2] https://github.com/golang/go/issues/69232 [3] https://community.arm.com/arm-community-blogs/b/architectures-and-pr= ocessors-blog/posts/multi-threaded-applications-arm [4] https://github.com/rust-lang/rust/commit/c064b6560b7ce0adeb9bbf5d7dc= f12b1acb0c807 [5] https://bugs.mysql.com/bug.php?id=3D100664 [6] https://github.com/mysql/mysql-server/pull/305/files [7] https://gerrit.cloudera.org/#/c/19865/ [8] https://issues.apache.org/jira/browse/IMPALA-12122 [9] https://github.com/aerospike/aerospike-common/pull/17 [10] https://github.com/WebAssembly/threads/issues/15 [11] https://developer.arm.com/documentation/genc007826/latest "Barrier = Litmus Tests and Cookbook" [12] http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.07.= 23a.pdf - Memory Barriers: a Hardware View for Software Hackers [13] https://randomascii.wordpress.com/2020/11/29/arm-and-lock-free-prog= ramming/ --d439f1d6faa74e60b7bdf99a878090db Content-Disposition: attachment; filename*0="v7-0001-Enable-the-Microsoft-Windows-ARM64-MSVC-platform.patc"; filename*1="h" Content-Type: application/octet-stream; name="=?UTF-8?Q?v7-0001-Enable-the-Microsoft-Windows-ARM64-MSVC-platform.patch?=" Content-Transfer-Encoding: base64 RnJvbSA4NWRjODJkN2FkNTNjMWJkMTk3MjU4ODMxMjVmNWYxOWE1MDY5NzNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENyYW1lciA8ZGF2ZWNyYW1lckBnbWFpbC5j b20+CkRhdGU6IFN1biwgMTMgSnVsIDIwMjUgMDY6MzM6MTcgLTA0MDAKU3ViamVjdDogW1BB VENIIHY3XSBFbmFibGUgdGhlIE1pY3Jvc29mdCBXaW5kb3dzIEFSTTY0L01TVkMgcGxhdGZv cm0KCkFkZCBzdXBwb3J0IGZvciB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlIG9uIFdpbmRvd3Mg MTEgdXNpbmcgTVNWQyBjb21waWxlcgphZGRyZXNzaW5nIGJ1aWxkIGlzc3VlcyBhbmQgaW1w bGVtZW50aW5nIHByb3BlciBtZW1vcnkgc3luY2hyb25pemF0aW9uCnNlbWFudGljcyBmb3Ig dGhpcyBwbGF0Zm9ybS4KCiogSW1wbGVtZW50IHNwaW5fZGVsYXkoKSB3aXRoIF9faXNiKF9B Uk02NF9CQVJSSUVSX1NZKSBpbnRyaW5zaWMgdG8gZW1pdAogIHRoZSAiSVNCIFNZIiBpbnN0 cnVjdGlvbiB3aGljaCBtYXRjaGVzIHRoZSBHQ0MvQ2xhbmcgYXBwcm9hY2ggdG8KICBzcGlu bG9vcCBkZWxheSBhbmQgZW1wZXJpY2FsIGV2aWRlbmNlIHRoYXQgaXQgb3V0LXNjYWxlcyB0 aGUgWUlFTEQKICBpbnN0cnVjdGlvbiBpbiBwcmFjdGljZS4KCiogVW5jb25kaXRpb25hbGx5 IGNob29zZSB0byB1c2UgdGhlIE1TVkMgc3VwcGxpZWQgaW50cmluc2ljCiAgZm9yIENSQzMy IG9uIEFSTTY0LgoKKiBJbXBsZW1lbnQgdGhlIFNfVU5MT0NLKCkgbWFjcm8gdXNpbmcgdGhl IEludGVybG9ja2VkRXhjaGFuZ2UoKQogIGludHJpbnNpYy4KCkF1dGhvcjogR3JlZyBCdXJk IDxncmVnQGJ1cmQubWU+CkF1dGhvcjogRGF2ZSBDcmFtZXIgPGRhdmVjcmFtZXJAZ21haWwu Y29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzNjNTc2YWQ3LWQyZGEtNDEz Ny1iNzkxLTU4MjFkYTdjYzM3MCU0MGFwcC5mYXN0bWFpbC5jb20KLS0tCiBkb2Mvc3JjL3Nn bWwvaW5zdGFsbGF0aW9uLnNnbWwgfCAgMiArLQogbWVzb24uYnVpbGQgICAgICAgICAgICAg ICAgICAgIHwgIDkgKysrLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc19sb2NrLmggICB8IDYw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9wb3J0L3BnX2NyYzMy Y19hcm12OC5jICAgICB8ICA2ICsrKysKIHNyYy90b29scy9tc3ZjX2dlbmRlZi5wbCAgICAg ICB8ICA4ICsrLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDE4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dtbAppbmRleCBmZThkNzNlMWY4Yy4u M2Y4ZDUxMmE5MDYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwKQEAgLTM5NjcsNyArMzk2 Nyw3IEBAIGNvbmZpZ3VyZSAuLi4gTERGTEFHUz0iLVIgL3Vzci9zZncvbGliOi9vcHQvc2Z3 L2xpYjovdXNyL2xvY2FsL2xpYiIKICAgIDxzZWN0MyBpZD0iaW5zdGFsbC13aW5kb3dzLWZ1 bGwtNjQtYml0Ij4KICAgICA8dGl0bGU+U3BlY2lhbCBDb25zaWRlcmF0aW9ucyBmb3IgNjQt Qml0IFdpbmRvd3M8L3RpdGxlPgogICAgIDxwYXJhPgotICAgICBQb3N0Z3JlU1FMIHdpbGwg b25seSBidWlsZCBmb3IgdGhlIHg2NCBhcmNoaXRlY3R1cmUgb24gNjQtYml0IFdpbmRvd3Mu CisgICAgIFBvc3RncmVTUUwgd2lsbCBvbmx5IGJ1aWxkIGZvciB0aGUgeDY0IGFuZCBBUk02 NCBhcmNoaXRlY3R1cmVzIG9uIDY0LWJpdCBXaW5kb3dzLgogICAgIDwvcGFyYT4KICAgICA8 cGFyYT4KICAgICAgTWl4aW5nIDMyLSBhbmQgNjQtYml0IHZlcnNpb25zIGluIHRoZSBzYW1l IGJ1aWxkIHRyZWUgaXMgbm90IHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxk IGIvbWVzb24uYnVpbGQKaW5kZXggNzE4MTUwZTNhYzAuLmU1N2MyMzNiMTI0IDEwMDY0NAot LS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtMjUxMiw3ICsyNTEyLDEy IEBAIGludCBtYWluKHZvaWQpCiB9CiAnJycKIAotICBpZiBjYy5saW5rcyhwcm9nLCBuYW1l OiAnX19jcmMzMmNiLCBfX2NyYzMyY2gsIF9fY3JjMzJjdywgYW5kIF9fY3JjMzJjZCB3aXRo b3V0IC1tYXJjaD1hcm12OC1hK2NyYycsCisgICMgQ2hlY2sgZmlyc3QgZm9yIGEgTVNWQy9B Uk02NCBjb21ibyBiZWNhdXNlIHRoZSB0ZXN0IHByb2cgYWJvdmUgd29uJ3QKKyAgIyBjb21w aWxlIChhcyBpdCBkb2Vzbid0ICcjaWZkZWYgX01TQ19WRVIgI2luY2x1ZGUgPGludHJpbi5o PicpLCB3aGljaAorICAjIGlzIG9rYXkgYXMgd2Uga25vdyBmb3IgYSBmYWN0IHRoYXQgdGhp cyBwbGF0Zm9ybSBjb21ibyBzdXBwb3J0cyB0aGUKKyAgIyBpbnRyaW5zaWMgZm9yIEFSTTY0 IENSQyB0aGUgdGVzdCBwZXJmb3Jtcywgc28gdXNlIHRoYXQgdW5jb25kaXRpb25hbGx5Lgor ICBpZiAoaG9zdF9tYWNoaW5lLmNwdV9mYW1pbHkoKSA9PSAnYWFyY2g2NCcgYW5kIGNjLmdl dF9pZCgpID09ICdtc3ZjJykgb3IKKyAgICAgICAgY2MubGlua3MocHJvZywgbmFtZTogJ19f Y3JjMzJjYiwgX19jcmMzMmNoLCBfX2NyYzMyY3csIGFuZCBfX2NyYzMyY2Qgd2l0aG91dCAt bWFyY2g9YXJtdjgtYStjcmMnLAogICAgICAgYXJnczogdGVzdF9jX2FyZ3MpCiAgICAgIyBV c2UgQVJNIENSQyBFeHRlbnNpb24gdW5jb25kaXRpb25hbGx5CiAgICAgY2RhdGEuc2V0KCdV U0VfQVJNVjhfQ1JDMzJDJywgMSkKQEAgLTI1MzEsNyArMjUzNiw3IEBAIGludCBtYWluKHZv aWQpCiAgICAgY2RhdGEuc2V0KCdVU0VfQVJNVjhfQ1JDMzJDJywgZmFsc2UpCiAgICAgY2Rh dGEuc2V0KCdVU0VfQVJNVjhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSycsIDEpCiAgICAg aGF2ZV9vcHRpbWl6ZWRfY3JjID0gdHJ1ZQotICBlbmRpZgorZW5kaWYKIAogZWxpZiBob3N0 X2NwdSA9PSAnbG9vbmdhcmNoNjQnCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2Uvc19sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NfbG9jay5oCmluZGV4IDdmOGY1 NjZiZDQwLi41MDI2MmNjYTg4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9z X2xvY2suaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NfbG9jay5oCkBAIC01OTQsNyAr NTk0LDggQEAgdGFzKHZvbGF0aWxlIHNsb2NrX3QgKmxvY2spCiAKICNpZiAhZGVmaW5lZChI QVNfVEVTVF9BTkRfU0VUKQkvKiBXZSBkaWRuJ3QgdHJpZ2dlciBhYm92ZSwgbGV0J3MgdHJ5 IGhlcmUgKi8KIAotI2lmZGVmIF9NU0NfVkVSCisvKiBXaGVuIGNvbXBpbGluZyBmb3IgTWlj cm9zb2Z0IFdpbmRvd3MgdXNpbmcgTVNWQyAqLworI2lmIGRlZmluZWQoX01TQ19WRVIpCiB0 eXBlZGVmIExPTkcgc2xvY2tfdDsKIAogI2RlZmluZSBIQVNfVEVTVF9BTkRfU0VUCkBAIC02 MDIsMzQgKzYwMyw3MSBAQCB0eXBlZGVmIExPTkcgc2xvY2tfdDsKIAogI2RlZmluZSBTUElO X0RFTEFZKCkgc3Bpbl9kZWxheSgpCiAKLS8qIElmIHVzaW5nIFZpc3VhbCBDKysgb24gV2lu NjQsIGlubGluZSBhc3NlbWJseSBpcyB1bmF2YWlsYWJsZS4KLSAqIFVzZSBhIF9tbV9wYXVz ZSBpbnRyaW5zaWMgaW5zdGVhZCBvZiByZXAgbm9wLgorLyoKKyAqIF9JbnRlcmxvY2tlZEV4 Y2hhbmdlKCkgZ2VuZXJhdGVzIGEgZnVsbCBtZW1vcnkgYmFycmllciAob3IgcmVsZWFzZQor ICogc2VtYW50aWNzIHRoYXQgZW5zdXJlcyBhbGwgcHJpb3IgbWVtb3J5IG9wZXJhdGlvbnMg YXJlIHZpc2libGUgdG8KKyAqIG90aGVyIGNvcmVzIGJlZm9yZSB0aGUgbG9jayBpcyByZWxl YXNlZC4KKyAqLworI2RlZmluZSBTX1VOTE9DSyhsb2NrKSAoSW50ZXJsb2NrZWRFeGNoYW5n ZShsb2NrLCAwKSkKKworI2lmIGRlZmluZWQoX1dJTjY0KSAvKiBNaWNyb3NvZnQgV2luZG93 cyB4NjQgKi8KKworI2lmIGRlZmluZWQoX01fQVJNNjQpIC8qIGFhcmNoNjQgKi8KKy8qCisg KiBXaGlsZSB0aGVyZSBpcyBzdXBwb3J0IGZvciBhIF9feWllbGQoKSBpbnRyaW5zaWMgZm9y IE1TVkMvQVJNNjRbMV0sIHRoZXJlCisgKiBpcyBhIHdlYWx0aCBvZiByZWFsLXdvcmxkIHRl c3RpbmcgYWNyb3NzIGRhdGFiYXNlcyBhbmQgbGFuZ3VhZ2VzIGFzIHdlbGwKKyAqIGFzIGEg YmxvZyBwb3N0IGJ5IEFSTVsyXSBzdWdnZXN0IHRoYXQgSVNCIGlzIHRoZSBtb3N0IHNjYWxh YmxlIGFuZCBwb3dlcgorICogZnJpZW5kbHkgaW5zdHJ1Y3Rpb24gdG8gdXNlIGZvciBzcGlu bG9jayBkZWxheSBsb29wcy4gU28gd2UgdXNlIHRoZSBvbmx5CisgKiBzdXBwb3J0ZWQgaW50 cmluc2ljL2ZsYWcgY29tYmluYXRpb24gYXZhaWxibGUgZm9yIHRoaXMgcGxhdGZvcm0gY29t Ym9bM10uCisgKiBUaGlzIG1hdGNoZXMgd2hhdCB3ZSBkbyBhYm92ZSB3aGVuIGNvbXBpbGlu ZyB3aXRoIGVpdGhlciBHQ0Mgb3IgQ2xhbmcuCisgKgorICogWzFdIGh0dHBzOi8vbGVhcm4u bWljcm9zb2Z0LmNvbS9lbi11cy9jcHAvaW50cmluc2ljcy9hcm02NC1pbnRyaW5zaWNzCisg KiBbMl0gaHR0cHM6Ly9kZXZlbG9wZXIuYXJtLmNvbS9jb21tdW5pdHkvYXJtLWNvbW11bml0 eS1ibG9ncy9iL2FyY2hpdGVjdHVyZXMtYW5kLXByb2Nlc3NvcnMtYmxvZy9wb3N0cy9tdWx0 aS10aHJlYWRlZC1hcHBsaWNhdGlvbnMtYXJtCisgKiBbM10gaHR0cHM6Ly9naXRodWIuY29t L01pY3Jvc29mdERvY3MvY3BwLWRvY3MvYmxvYi9tYWluL2RvY3MvaW50cmluc2ljcy9hcm02 NC1pbnRyaW5zaWNzLm1kCisgKi8KK3N0YXRpYyBfX2ZvcmNlaW5saW5lIHZvaWQKK3NwaW5f ZGVsYXkodm9pZCkKK3sKKwlfX2lzYihfQVJNNjRfQkFSUklFUl9TWSk7Cit9CisKKyNlbGlm IGRlZmluZWQoX01fWDY0KSAvKiB4ODYtNjQgKi8KKworLyoKKyAqIFVzZSBfbW1fcGF1c2Uo KSBpbnRyaW5zaWMgZm9yIHg4Ni02NC4gVGhpcyBlbWl0cyB0aGUgUEFVU0UgaW5zdHJ1Y3Rp b24sCisgKiB3aGljaCBpbXByb3ZlcyBwZXJmb3JtYW5jZSBpbiBzcGluLXdhaXQgbG9vcHMg YnkgcHJldmVudGluZyBwaXBlbGluZSBmbHVzaAorICogb24gSHlwZXItVGhyZWFkaW5nIHN5 c3RlbXMuCiAgKi8KLSNpZiBkZWZpbmVkKF9XSU42NCkKIHN0YXRpYyBfX2ZvcmNlaW5saW5l IHZvaWQKIHNwaW5fZGVsYXkodm9pZCkKIHsKIAlfbW1fcGF1c2UoKTsKIH0KLSNlbHNlCisK KyNlbmRpZiAvKiBkZWZpbmVkKF9NX0FSTTY0fF9NX1g2NCkgKi8KKworI2Vsc2UgLyogIWRl ZmluZWQoX1dJTjY0KSAqLworCisjaWZkZWYgX01fSVg4NiAvKiB4ODYtc3BlY2lmaWMgKi8K KworLyogVXNlIG5vLW9wIGZvciBNU1ZDIDMyYml0IHg4NiAqLwogc3RhdGljIF9fZm9yY2Vp bmxpbmUgdm9pZAogc3Bpbl9kZWxheSh2b2lkKQogewogCS8qIFNlZSBjb21tZW50IGZvciBn Y2MgY29kZS4gU2FtZSBjb2RlLCBNQVNNIHN5bnRheCAqLwogCV9fYXNtIHJlcCBub3A7CiB9 Ci0jZW5kaWYKIAogI2luY2x1ZGUgPGludHJpbi5oPgogI3ByYWdtYSBpbnRyaW5zaWMoX1Jl YWRXcml0ZUJhcnJpZXIpCiAKLSNkZWZpbmUgU19VTkxPQ0sobG9jaykJXAorI2RlZmluZSBT X1VOTE9DSyhsb2NrKSBcCiAJZG8geyBfUmVhZFdyaXRlQmFycmllcigpOyAoKihsb2NrKSkg PSAwOyB9IHdoaWxlICgwKQogCi0jZW5kaWYKLQotCi0jZW5kaWYJLyogIWRlZmluZWQoSEFT X1RFU1RfQU5EX1NFVCkgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKF9NX0lYODYpICovCisjZW5k aWYgLyogZGVmaW5lZChfV0lONjQpICovCisjZW5kaWYgLyogZGVmaW5lZChfTVNDX1ZFUikg Ki8KKyNlbmRpZiAvKiAhZGVmaW5lZChIQVNfVEVTVF9BTkRfU0VUKSAqLwogCiAKIC8qIEJs b3cgdXAgaWYgd2UgZGlkbid0IGhhdmUgYW55IHdheSB0byBkbyBzcGlubG9ja3MgKi8KZGlm ZiAtLWdpdCBhL3NyYy9wb3J0L3BnX2NyYzMyY19hcm12OC5jIGIvc3JjL3BvcnQvcGdfY3Jj MzJjX2FybXY4LmMKaW5kZXggNWJhMDcwYmI5OWQuLjI5YTkxZGNhNjJmIDEwMDY0NAotLS0g YS9zcmMvcG9ydC9wZ19jcmMzMmNfYXJtdjguYworKysgYi9zcmMvcG9ydC9wZ19jcmMzMmNf YXJtdjguYwpAQCAtMTQsNyArMTQsMTMgQEAKICAqLwogI2luY2x1ZGUgImMuaCIKIAorI2lm ZGVmIF9NU0NfVkVSCisgLyogTVNWQyBBUk02NCBpbnRyaW5zaWNzICovCisjaW5jbHVkZSA8 aW50cmluLmg+CisjZWxzZQorIC8qIEdDQy9DbGFuZzogVXNlIEFDTEUgaW50cmluc2ljcyBm cm9tIGFybV9hY2xlLmggKi8KICNpbmNsdWRlIDxhcm1fYWNsZS5oPgorI2VuZGlmCiAKICNp bmNsdWRlICJwb3J0L3BnX2NyYzMyYy5oIgogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvbXN2 Y19nZW5kZWYucGwgYi9zcmMvdG9vbHMvbXN2Y19nZW5kZWYucGwKaW5kZXggODY4YWFkNTFi MDkuLmM5MmM5NGM0Nzc1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2Y19nZW5kZWYucGwK KysrIGIvc3JjL3Rvb2xzL21zdmNfZ2VuZGVmLnBsCkBAIC0xMTgsOSArMTE4LDkgQEAgc3Vi IHdyaXRlZGVmCiAJewogCQlteSAkaXNkYXRhID0gJGRlZi0+eyRmfSBlcSAnZGF0YSc7CiAK LQkJIyBTdHJpcCB0aGUgbGVhZGluZyB1bmRlcnNjb3JlIGZvciB3aW4zMiwgYnV0IG5vdCB4 NjQKKwkJIyBTdHJpcCB0aGUgbGVhZGluZyB1bmRlcnNjb3JlIGZvciB3aW4zMiwgYnV0IG5v dCB4NjQgYW5kIGFhcmNoNjQKIAkJJGYgPX4gcy9eXy8vCi0JCSAgdW5sZXNzICgkYXJjaCBl cSAieDg2XzY0Iik7CisJCSAgdW5sZXNzICgkYXJjaCBlcSAieDg2XzY0IiB8fCAkYXJjaCBl cSAiYWFyY2g2NCIpOwogCiAJCSMgRW1pdCBqdXN0IHRoZSBuYW1lIGlmIGl0J3MgYSBmdW5j dGlvbiBzeW1ib2wsIG9yIGVtaXQgdGhlIG5hbWUKIAkJIyBkZWNvcmF0ZWQgd2l0aCB0aGUg REFUQSBvcHRpb24gZm9yIHZhcmlhYmxlcy4KQEAgLTE0MSw3ICsxNDEsNyBAQCBzdWIgd3Jp dGVkZWYKIHN1YiB1c2FnZQogewogCWRpZSgiVXNhZ2U6IG1zdmNfZ2VuZGVmLnBsIC0tYXJj aCA8YXJjaD4gLS1kZWZmaWxlIDxkZWZmaWxlPiAtLXRlbXBkaXIgPHRlbXBkaXI+IGZpbGVz LW9yLWRpcmVjdG9yaWVzXG4iCi0JCSAgLiAiICAgIGFyY2g6IHg4NiB8IHg4Nl82NFxuIgor CQkgIC4gIiAgICBhcmNoOiB4ODYgfCB4ODZfNjQgfCBhYXJjaDY0XG4iCiAJCSAgLiAiICAg IGRlZmZpbGU6IHBhdGggb2YgdGhlIGdlbmVyYXRlZCBmaWxlXG4iCiAJCSAgLiAiICAgIHRl bXBkaXI6IGRpcmVjdG9yeSBmb3IgdGVtcG9yYXJ5IGZpbGVzXG4iCiAJCSAgLiAiICAgIGZp bGVzIG9yIGRpcmVjdG9yaWVzOiBvYmplY3QgZmlsZXMgb3IgZGlyZWN0b3J5IGNvbnRhaW5p bmcgb2JqZWN0IGZpbGVzXG4iCkBAIC0xNTgsNyArMTU4LDcgQEAgR2V0T3B0aW9ucygKIAkn dGVtcGRpcjpzJyA9PiBcJHRlbXBkaXIsKSBvciB1c2FnZSgpOwogCiB1c2FnZSgiYXJjaDog JGFyY2giKQotICB1bmxlc3MgKCRhcmNoIGVxICd4ODYnIHx8ICRhcmNoIGVxICd4ODZfNjQn KTsKKyAgdW5sZXNzICgkYXJjaCBlcSAneDg2JyB8fCAkYXJjaCBlcSAneDg2XzY0JyB8fCAk YXJjaCBlcSAnYWFyY2g2NCcpOwogCiBteSBAZmlsZXM7CiAKLS0gCjIuNTIuMC53aW5kb3dz LjEKCg== --d439f1d6faa74e60b7bdf99a878090db--