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 1wVcTV-0025Nu-1E for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 21:53:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVcTU-00EtHV-0T for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 21:53:08 +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 1wVcTT-00EtHN-1i for pgsql-hackers@lists.postgresql.org; Fri, 05 Jun 2026 21:53:07 +0000 Received: from iad-out-010.esa.us-east-1.outbound.mail-perimeter.amazon.com ([34.197.254.9]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wVcTQ-00000001Iqn-2sVp for pgsql-hackers@postgresql.org; Fri, 05 Jun 2026 21:53:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1780696384; x=1812232384; h=from:to:subject:date:message-id:mime-version; bh=oBPmV92aDO1Iy0mOWOOAgH8qVaUVeVKJZUeoijRiliU=; b=gfP9TJONYDWASczyU4ZDPB8BwPalPzhBku90F6/7HM/nDcgbE8UfEVh9 iYZ8iAKujP8VD/Kh8gqNpOJ78nBGJTfLwhsLfU89/nhdN8b+2JXlqp5mb 4mt1nztzfzazJqRkeG/0WnakA2WKPcWlkhqHmtz+aboU1twRo62WF+gNL ugdMslOBVkcBHkp7SfEllmNft1O9bzjjEs5TMmEz+IjsyhU5DuuW3mip2 cw/S/zK9z02aMIbV8dVrbYQbfV0VCNWEXliPfSgEhB+qhwsBEZ0NWf2Sj AnxS/oF+Q81w8vS95Lw6vRT9JZMtdsRu72xX0KW6Ode1PVmGhQ0kFQJEx w==; X-CSE-ConnectionGUID: nl3e198GS+GrBmk2bcDYvQ== X-CSE-MsgGUID: 6G+LH/w7Qmac4SGJIU8xSA== X-Amazon-filename: LWLockWaitListLock-futex-mutex-Linux-aarch64-v1.patch X-Secure-Attach-Ingestion: ProdSecureAttachHeaderAddedFromMessageFilter X-IronPort-AV: E=Sophos;i="6.24,189,1774310400"; d="scan'208,223";a="20050943" Received: from ip-10-4-13-79.ec2.internal (HELO smtpout.naws.us-east-1.prod.farcaster.email.amazon.dev) ([10.4.13.79]) by internal-iad-out-010.esa.us-east-1.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Jun 2026 21:53:00 +0000 Received: from EX19MTAUEC001.ant.amazon.com [52.94.133.134:19071] by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.86.41:2525] with esmtp (Farcaster) id 80cbf133-ebfa-48ac-bfac-2c4d9a64d7ca; Fri, 5 Jun 2026 21:53:00 +0000 (UTC) X-Farcaster-Flow-ID: 80cbf133-ebfa-48ac-bfac-2c4d9a64d7ca Received: from EX19EXOUEA001.ant.amazon.com (10.252.134.47) by EX19MTAUEC001.ant.amazon.com (10.252.135.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.37; Fri, 5 Jun 2026 21:53:00 +0000 Received: from BL0PR07CU001.outbound.protection.outlook.com (10.252.135.42) by EX19EXOUEA001.ant.amazon.com (10.252.134.47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.37 via Frontend Transport; Fri, 5 Jun 2026 21:53:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z6lXoPFfmu4PYMuCWFh3IMCCI7lJpJ4p8zA/AcJ4QMP4juMup/3E/zfOS5KlrsipK63UDn4Ziq9vHJ/9hF3B9o5ltJRu1huGqAP6MWTnr3arT145p53eqASGo7IWfLWVrVbHaUs4/6f8fTWhwiMzPGBVtDziQbDEdAF7lxyZKY50OussuDdkxfFxg6LeI6l0P7CzpdU0vShOVWef7qJWXvqNtTDEnBjETId/+sJBG7bLzf5dFvlXP8y8s2rwX3ewu/jRbEH/LjkJxuYLLAcmm7yUdkDYQ5LsbJj3hkavams7LK01kP6VMu3vUJ6sMUSZrwsFkXXQFz3fKPEF/vI2ZA== 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=oBPmV92aDO1Iy0mOWOOAgH8qVaUVeVKJZUeoijRiliU=; b=mxUEXwzrJcEYL+qdXWOoXudK/WWHZi7f65u7joW+kfKPqtQUmJ1hAHKlunHPp15Z0XCVDGazgzkBk7WYTm4EPvc94hCFPTGRhlLh6xiErBk5+5PTC2X6CvBwp7MjH5ehwTIxBxYiMmCQQLNM+nhx+HY0zH4fqiEidxgYl0Iwdia7AK/mB0EHwIdtS36vwRv1fQHDGatc+nthpy8aZbJ7CKU7KsIIiuytc1+n5q1OTwpDmR/6T4wwikDP4Gd8YsbB5upi6FoGRUyBcFZgIL8CIB07VhEYehaEDXFgU4f78s2n1McMkD7DvEFY5ZQmOgsPdlk/XdHHUVGGL3wYhKu1gQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amazon.com; dmarc=pass action=none header.from=amazon.com; dkim=pass header.d=amazon.com; arc=none Received: from DM6PR18MB2908.namprd18.prod.outlook.com (2603:10b6:5:168::12) by LV3PR18MB6175.namprd18.prod.outlook.com (2603:10b6:408:27c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Fri, 5 Jun 2026 21:52:58 +0000 Received: from DM6PR18MB2908.namprd18.prod.outlook.com ([fe80::891e:d582:cf5d:9db8]) by DM6PR18MB2908.namprd18.prod.outlook.com ([fe80::891e:d582:cf5d:9db8%4]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 21:52:58 +0000 From: "Okanovic, Haris" To: "pgsql-hackers@postgresql.org" Subject: Replace spin-wait with futex-mutex in LWLockWaitListLock() on Linux aarch64 Thread-Topic: Replace spin-wait with futex-mutex in LWLockWaitListLock() on Linux aarch64 Thread-Index: AQHc9TTaCR2eX+nJI0+bWfPxKUVSQA== Date: Fri, 5 Jun 2026 21:52:58 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amazon.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR18MB2908:EE_|LV3PR18MB6175:EE_ x-ms-office365-filtering-correlation-id: ed10ce72-be42-4162-46d5-08dec34cceba x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|6049299003|376014|1800799024|38070700021|4053099003|11063799006|56012099006|18002099003; x-microsoft-antispam-message-info: Zy8wz/uwbpNnOAqDe504VuGd1oGNjwMtul2vy8+7qiA8/c+T0au44sAUzhSdPKkM56BWtufBL7e4kLh8uyCnBkOBTssEpac+Mh8tkcTbwJxxD3KANi0krOa/1cQd0n5fTDtfkZNZowmLQeYaB/7/ziNktKj4xfIMRs+i9dPLLQhVh6h1NFtrl0J2X4WLeXJ9oydozOjI0ATDE2Cyp2ZKLAokpa0DazTiB7xy74FRCA+/zIJD/oWV/Tucoty3Aw/GEtTpNs3Uo9Le0PKDhcOce2TKT9VtlTgy+UT+3a5Ym7iBgIH8qZxFLVALEIDYttZ1ROwdmfDXnej+Kjws2PJ9ffISqvdxseO8jmjtdhN8wyhQRX59osBmGbMX6KQaLXIMjP6FuloNH02mLeRqsSvPnQGbSASn/CTFXdypuqvsG0aQk1m4FQmoix1u8drzEWX0I4bHSWt7kFV9Q8D6LQWkAD+J2JXX1BFZMw3KlCVhz4cfurKc63oyUUEVRGroSreNs+2mC2I9cVPsaluyLFRPyddVvXo1D7kmJpsWU0hfyKzoiY+Y6hwfgf9Xh+D8psI5pj2DUxG+kI6WvWEJTnr9JNFft96UB8IHMntpArv0tq9RzVv+8ETFO0ikMNyA4FReAzFyR5wtKfF9GhxVZRrEXjARCh5uhpz7isYyATO5QVxP0Z79sZGRSU7EOpVUQQ+Dw6Cs7TtI8bCpRcHZUetGg/6Hbq4lfaqtYVvIBwWBMta/m4eGfVblJwRRgNNba2+9 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR18MB2908.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(6049299003)(376014)(1800799024)(38070700021)(4053099003)(11063799006)(56012099006)(18002099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?tJSUeTgrAoWE64DgkGbyeEsVopQE+1qTj7ED4qy6Gv+lUFZ0s1S29E8/L1?= =?iso-8859-1?Q?XVN/dOL7BZ4kwmGt1ci0iuowyIjjqudhkjLGnXsZ40Io8FxOlKpL0liQ2P?= =?iso-8859-1?Q?580/jbWJ15Rs4iSCYR8pnPrQTVZsKOm/n+jHcCRNbml20NX7Ja+g4OAvBb?= =?iso-8859-1?Q?Buya8qF7mPxxWTh+7WS7RSwO9JIXF9fm+OzffvJADerQtIYu8IpbFKvGpp?= =?iso-8859-1?Q?im88JNHnEwW0lxz8kiu+1T6mYtDk/1pCmHUOXVa94uym9sZk9+vUvEYDcU?= =?iso-8859-1?Q?5A2l4B0cv4KMmplyfzwYS5yWCn2XUAUE8aZETl1j87py+3+ms7yTsS79O+?= =?iso-8859-1?Q?VNTae/7+S0Ifc9Qo8PA1hnSRoYfdrtmaGt8yTGcofxAfkWVX0s1WwiHV6X?= =?iso-8859-1?Q?g/KlXbRxMcDwmyH2Yvg0fM8Pmg+YTKqk/kE2xC+UH2WcKAF+DqpZxPRGOk?= =?iso-8859-1?Q?oZ1bts6rdXClc1Rz0gQYMcwDNKt6RZKfoVjeov6AO+GNkvn3FlXe3x6Ulr?= =?iso-8859-1?Q?a7hsp/Op25i6uafpQ4xdjqnXzaLLp1Ggv3mj4Jm/M7iE6vDilSI/nvPzoH?= =?iso-8859-1?Q?tl/fBqnXZSM7hu2Cdx9bj/9ZyDztqAmHrapzi57CcIa3wnCU5CPZ2vmSAG?= =?iso-8859-1?Q?c8yrvU8u4p5Zv7MHrlRkJ2+pj82wjIoxRFJmI2dnXZwL7omtqCo70Rd6Wa?= =?iso-8859-1?Q?3HaFKYi0NyXEI1HklZj96vUQZMfjh5iF6p5pyZjOe80N6KrPh1j8jE6bAH?= =?iso-8859-1?Q?Rsxu6qz9cfn0uzscYrJmXwBFvFv8CCI/JXBQ52rUK+HrJBPySfKVr+XTsp?= =?iso-8859-1?Q?njFaLaTN1XrBCTAzrfakvxz5EWvu4/qReqUU2KejrSub/YaPmJ4ydAAq0/?= =?iso-8859-1?Q?Qnq6F+DbJO+1TXPwUXcSnp8A5OJMjI+e6UDu+aN0TwXWF0Lr0kW1NzjoGk?= =?iso-8859-1?Q?iv0c4pHA3DG2MhRIn0zj8GG9XfUgLTJC6ovWBYuI9gOn6tniqY/yxMCoSG?= =?iso-8859-1?Q?8myiUfTVDFcmc6ZrooKWe7JqCIp94DXBCO6TjZ1sWo/i6PfpOD+37/LRbX?= =?iso-8859-1?Q?qlYQG9Uwjz29grRdHpsEs7mNzanwRv5TfG+dJex6Y4+SsutOHlwLeSImIk?= =?iso-8859-1?Q?Qm2UyXoHOma9qyDqFUTxOpXE9IEBIVWkhktGQtJosyQGmLRsxvjDZQVF51?= =?iso-8859-1?Q?Q6SlMtk5YfGZrkwglVRJoIDOkd338Sh9DkOKdQqqbDXMM0GoLqqLfDOKNC?= =?iso-8859-1?Q?H7bHPuJ71541S1SDZqm4+Yl+AMW3kgQKLOaoqMQqEaJqqwaVrdbDtIwoCi?= =?iso-8859-1?Q?CbIyCaCzrI+ppakwcgmMWvKBht5dPbvva0xP1PHtIGDwF/Z+TbMl9z8M/E?= =?iso-8859-1?Q?8s501OsV+U8hYGWD5e6adPG8joL8M7s6AtfO2JcUeX67q34pq95Fwy8NaW?= =?iso-8859-1?Q?nmJlxTMAjprXt9MiLAeCcnYCKuVSsJjBtTdXC8ZI8/jp0UFLNuPxJZcnL7?= =?iso-8859-1?Q?Rh8GWeYFXn8eeePz5vetSWQriVVEITvLtmgIM0N/EekWeDmUVi9Za+ZRpc?= =?iso-8859-1?Q?h3N9ndaM+xzm86Mji8MI+/bPzDNSE23yOQ9O6GUsePY9zvCTzEvKZeBPXi?= =?iso-8859-1?Q?3XlaFPgSLNfo9LsszOVR349yNseGygo/wPwVMpASlIMzYlbUNBQC24bbM4?= =?iso-8859-1?Q?eB5a4+BN1jpMrk9PBnAX5BlxuwPlF5coTHd8673nkHXhg428JS6TcNgoh6?= =?iso-8859-1?Q?utBkn4N8vGHhvMnc6YGC+9lKRk/XfB1j8PvOccRibZwWt8?= Content-Type: multipart/mixed; boundary="_002_DM6PR18MB29081469262A7BBCE85220B3A8112DM6PR18MB2908namp_" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: XiSSdsEccQYBJFVsaasd+0Et3nmPIir1q/pzcSuNLQux7Y0Iv+PEVhl5Pp/RWzjAeB9Ci65WE8bi9FPnnqdzvVBm+PPsK07AmMUO7gRBvpp4ETfc047GS1FQ5iyeimHxeN4f3YRpIWqxIUwUkSyMdI/HM4r6kNBBzHiG5sYPDEdGB1y/cZODBkcQq8AGD3PBFbXpLDncfinRWJ+se+Ecl2Efo+1SsJSPLE91r1dHaGCCfJLozGJRZeIqD/+tbDygZRP8RHT0HgDh8a9W/MfdYArXize1IAKjo1sO1J6ZHfFmldT8Ujb24qzZUFKOMs9QQ03V3eDQo9SzwtTch4YnrA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR18MB2908.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ed10ce72-be42-4162-46d5-08dec34cceba X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jun 2026 21:52:58.3001 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5280104a-472d-4538-9ccf-1e1d0efe8b1b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: wrkbSFqfftsXauPVs3o4Df/GNi8NsqTG8gJk7s0OvyQDOkXxmbXxQyJofwJsMGXm5ZWhynj3W6PbYTMx2riQhA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR18MB6175 X-OriginatorOrg: amazon.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_DM6PR18MB29081469262A7BBCE85220B3A8112DM6PR18MB2908namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Hackers,=0A= =0A= The attached patch replaces LWLockWaitListLock()'s spin-polling loop=0A= with a futex-mutex on Linux aarch64 to address a scalability bottleneck=0A= on large Arm systems. I'd appreciate the community's perspective on=0A= whether platform-specific logic in LWLock is an acceptable approach to=0A= improve Arm performance, or any alternative suggestions.=0A= =0A= Problem:=0A= On large Arm Neoverse V3 machines (192 cores), we observe excessive=0A= time spent in LWLockWaitListLock() under high concurrency. For example,=0A= pgbench TPC-B at 1000+ clients shows 40%+ of CPU time is consumed=0A= spinning on atomic operations acquiring wait-list locks. PMU profiles=0A= show this to be causing excessive cache-line bouncing.=0A= =0A= Benchmarks:=0A= Pgbench results show 55% improvement on Neoverse V3 at large scale, and=0A= marginal improvements or no change on Neoverse V2, V1, and N1. Max=0A= client count the server can handle also doubles on Neoverse V3 and V2 -=0A= that is peak throughput is at ~1000 clients instead of ~500.=0A= =0A= Intel Granite Rapids and AMD Turin (x86_64) both show minor degradation=0A= with the change, which is the reason the patch is currently limited to=0A= aarch64 only.=0A= =0A= Benchmark results can be found in these plots:=0A= https://github.com/harisokanovic/harismisc/tree/master/postgres/pgsqlscalin= g/2026-06-05/=0A= =0A= - 9g/8g/7g/6g are Arm Neoverse V3/V2/V1/N1 systems at different AWS sizes.= =0A= - 8i are Intel Granite Rapids systems at different sizes.=0A= - 8a are AMD Turin systems at different sizes.=0A= - m*.48xl are 192 cores, 768 GB DRAM.=0A= - m*.24xl are 96 cores, 384 GB DRAM.=0A= - m*.16xl are 64 cores, 256 GB DRAM.=0A= - m*.4xl are 16 cores, 64 GB DRAM.=0A= =0A= Thanks,=0A= Haris Okanovic=0A= AWS Graviton Software=0A= --_002_DM6PR18MB29081469262A7BBCE85220B3A8112DM6PR18MB2908namp_ Content-Type: text/x-patch; name="LWLockWaitListLock-futex-mutex-Linux-aarch64-v1.patch" Content-Description: LWLockWaitListLock-futex-mutex-Linux-aarch64-v1.patch Content-Disposition: attachment; filename="LWLockWaitListLock-futex-mutex-Linux-aarch64-v1.patch"; size=4058; creation-date="Fri, 05 Jun 2026 21:52:35 GMT"; modification-date="Fri, 05 Jun 2026 21:52:35 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMzI2MDhmYjkzMjM3YTk0OThiNzZhODc1ZTdmNWZhYTg1YjBhN2M5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJpcyBPa2Fub3ZpYyA8aGFyaXNva25AYW1hem9uLmNvbT4K RGF0ZTogVHVlLCAyIEp1biAyMDI2IDE3OjE3OjAwIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gQ2hh bmdlIExXTG9ja1dhaXRMaXN0TG9jaygpIHRvIGZ1dGV4LW11dGV4IG9uIExpbnV4IGFhcmNoNjQK CldhaXQgb24gdGhlIGxpc3QgbG9jayB3aXRoIGZ1dGV4KCkgc3lzdGVtIGNhbGwgb24gTGludXgg aW5zdGVhZCBvZiBwb2xsaW5nLAp3aGljaCBwZXJmb3JtcyBiZXR0ZXIgYXQgc2NhbGUgKDEwMCsg Q1BVcywgMTAwMCsgY2xpZW50cykgb24gYWFyY2g2NCBzeXN0ZW1zLgpPdGhlciBwbGF0Zm9ybXMg Y29udGludWUgdG8gcG9sbCwgYXMgZnV0ZXgoKSBpcyBvbmx5IGF2YWlsYWJsZSBvbiBMaW51eCwg YW5kCkludGVsL0FNRCB4ODZfNjQgZGVtb25zdHJhdGUgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGgg cG9sbGluZy4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgfCA2OSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNjggaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sd2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwppbmRleCBiMWFk Mzk2YmE3OS4uMjljYTE0N2U1MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sd2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKQEAgLTky LDYgKzkyLDE3IEBACiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2VuZGlmCiAKKyNpZiBk ZWZpbmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyNkZWZpbmUgTFdMT0NL X0hBU19GVVRFWAorI2VuZGlmCisKKyNpZmRlZiBMV0xPQ0tfSEFTX0ZVVEVYCisjaW5jbHVkZSA8 ZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9mdXRleC5oPgorI2luY2x1ZGUgPHN5cy9zeXNjYWxs Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKwogCiAjZGVmaW5lIExXX0ZMQUdfSEFT X1dBSVRFUlMJCQkoKHVpbnQzMikgMSA8PCAzMSkKICNkZWZpbmUgTFdfRkxBR19XQUtFX0lOX1BS T0dSRVNTCSgodWludDMyKSAxIDw8IDMwKQpAQCAtODIzLDYgKzgzNCwyOCBAQCBMV0xvY2tBdHRl bXB0TG9jayhMV0xvY2sgKmxvY2ssIExXTG9ja01vZGUgbW9kZSkKIAlwZ191bnJlYWNoYWJsZSgp OwogfQogCisjaWZkZWYgTFdMT0NLX0hBU19GVVRFWAorLyoKKyAqIGh0dHBzOi8vd3d3Lm1hbjcu b3JnL2xpbnV4L21hbi1wYWdlcy9tYW4yL0ZVVEVYX1dBSVQuMmNvbnN0Lmh0bWwKKyAqIE5vdCB1 c2luZyBGVVRFWF9QUklWQVRFX0ZMQUcvRlVURVhfV0FJVF9QUklWQVRFIHNvIHRoYXQgdWFkZHIg Y2FuCisgKiByZXNpZGUgaW4gc2hhcmVkIG1lbW9yeSBiZXR3ZWVuIHByb2Nlc3Nlcy4KKyAqLwor c3RhdGljIGlubGluZSBsb25nIGludCBzeXNfZnV0ZXhfd2FpdCh2b2xhdGlsZSB1aW50MzIgKnVh ZGRyLCBjb25zdCB1aW50MzIgdmFsKQoreworCXJldHVybiBzeXNjYWxsKFNZU19mdXRleCwgdWFk ZHIsIEZVVEVYX1dBSVQsIHZhbCwgKHZvaWQqKU5VTEwgLyogbm8gdGltZW91dCAqLyk7Cit9CisK Ky8qCisgKiBodHRwczovL3d3dy5tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMi9GVVRFWF9X QUtFLjJjb25zdC5odG1sCisgKiBOb3QgdXNpbmcgRlVURVhfUFJJVkFURV9GTEFHL0ZVVEVYX1dB S0VfUFJJVkFURSBzbyB0aGF0IHVhZGRyIGNhbgorICogcmVzaWRlIGluIHNoYXJlZCBtZW1vcnkg YmV0d2VlbiBwcm9jZXNzZXMuCisgKi8KK3N0YXRpYyBpbmxpbmUgbG9uZyBpbnQgc3lzX2Z1dGV4 X3dha2Uodm9sYXRpbGUgdWludDMyICp1YWRkciwgY29uc3QgdWludDMyIGNvdW50KQoreworCXJl dHVybiBzeXNjYWxsKFNZU19mdXRleCwgdWFkZHIsIEZVVEVYX1dBS0UsIGNvdW50KTsKK30KKyNl bmRpZgorCiAvKgogICogTG9jayB0aGUgTFdMb2NrJ3Mgd2FpdCBsaXN0IGFnYWluc3QgY29uY3Vy cmVudCBhY3Rpdml0eS4KICAqCkBAIC04MzUsNiArODY4LDkgQEAgc3RhdGljIHZvaWQKIExXTG9j a1dhaXRMaXN0TG9jayhMV0xvY2sgKmxvY2spCiB7CiAJdWludDMyCQlvbGRfc3RhdGU7CisjaWZk ZWYgTFdMT0NLX0hBU19GVVRFWAorCWxvbmcgaW50IGZ1dGV4X3JlcyBQR19VU0VEX0ZPUl9BU1NF UlRTX09OTFk7CisjZW5kaWYKICNpZmRlZiBMV0xPQ0tfU1RBVFMKIAlsd2xvY2tfc3RhdHMgKmx3 c3RhdHM7CiAJdWludDMyCQlkZWxheXMgPSAwOwpAQCAtODUzLDcgKzg4OSwyNCBAQCBMV0xvY2tX YWl0TGlzdExvY2soTFdMb2NrICpsb2NrKQogCQlpZiAobGlrZWx5KCEob2xkX3N0YXRlICYgTFdf RkxBR19MT0NLRUQpKSkKIAkJCWJyZWFrOwkJCQkvKiBnb3QgbG9jayAqLwogCi0JCS8qIGFuZCB0 aGVuIHNwaW4gd2l0aG91dCBhdG9taWMgb3BlcmF0aW9ucyB1bnRpbCBsb2NrIGlzIHJlbGVhc2Vk ICovCisjaWZkZWYgTFdMT0NLX0hBU19GVVRFWAorCisjaWZkZWYgTFdMT0NLX1NUQVRTCisJCWRl bGF5cyArPSAxOworI2VuZGlmCisKKwkJLyoKKwkJICogQ2FsbGluZyB0YXNrIGlzIHB1dCB0byBz bGVlcCB1bnRpbCBzaWduYWxlZCBieSBMV0xvY2tXYWl0TGlzdFVubG9jaygpLgorCQkgKiBGdXRl eCBvcGVyYXRpb24gY2FuIHNwdXJpb3VzbHkgd2FrZSwgZS5nLiBpZiBgc3RhdGVgIGNoYW5nZXMg YmVmb3JlCisJCSAqIHRoZSBrZXJuZWwgc2NoZWR1bGVyIGFjdHMgb3IgYW4gaW50ZXJydXB0IG9j Y3VyczsgcmV0cnkgaW4gdGhvc2UgY2FzZXMuCisJCSAqIFdlIGFzc2VydCB0aGUgZnV0ZXggcmV0 dXJucyBhIHJlYXNvbmFibGUgcmVzdWx0IHZhbHVlLgorIAkJICovCisJCWZ1dGV4X3JlcyA9IHN5 c19mdXRleF93YWl0KCZsb2NrLT5zdGF0ZS52YWx1ZSwgb2xkX3N0YXRlKTsKKwkJQXNzZXJ0KGZ1 dGV4X3JlcyA9PSAwIHx8IGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFV09VTERCTE9DSyB8 fCBlcnJubyA9PSBFSU5UUik7CisKKyNlbHNlCisKKwkJLyogU3BpbiB1bnRpbCBsb2NrIGlzIHJl bGVhc2VkIGlmIHdlIGRvbid0IGhhdmUgZnV0ZXguICovCiAJCXsKIAkJCVNwaW5EZWxheVN0YXR1 cyBkZWxheVN0YXR1czsKIApAQCAtODcwLDYgKzkyMyw4IEBAIExXTG9ja1dhaXRMaXN0TG9jayhM V0xvY2sgKmxvY2spCiAJCQlmaW5pc2hfc3Bpbl9kZWxheSgmZGVsYXlTdGF0dXMpOwogCQl9CiAK KyNlbmRpZgorCiAJCS8qCiAJCSAqIFJldHJ5LiBUaGUgbG9jayBtaWdodCBvYnZpb3VzbHkgYWxy ZWFkeSBiZSByZS1hY3F1aXJlZCBieSB0aGUgdGltZQogCQkgKiB3ZSdyZSBhdHRlbXB0aW5nIHRv IGdldCBpdCBhZ2Fpbi4KQEAgLTg5NSw2ICs5NTAsMTEgQEAgTFdMb2NrV2FpdExpc3RVbmxvY2so TFdMb2NrICpsb2NrKQogCW9sZF9zdGF0ZSA9IHBnX2F0b21pY19mZXRjaF9hbmRfdTMyKCZsb2Nr LT5zdGF0ZSwgfkxXX0ZMQUdfTE9DS0VEKTsKIAogCUFzc2VydChvbGRfc3RhdGUgJiBMV19GTEFH X0xPQ0tFRCk7CisKKyNpZmRlZiBMV0xPQ0tfSEFTX0ZVVEVYCisJLyogV2FrZSB0aGUgbmV4dCB0 YXNrIHNsZWVwaW5nIG9uIGBzdGF0ZWAuICovCisJc3lzX2Z1dGV4X3dha2UoJmxvY2stPnN0YXRl LnZhbHVlLCAxKTsKKyNlbmRpZgogfQogCiAvKgpAQCAtOTgxLDcgKzEwNDEsMTQgQEAgTFdMb2Nr V2FrZXVwKExXTG9jayAqbG9jaykKIAogCQkJaWYgKHBnX2F0b21pY19jb21wYXJlX2V4Y2hhbmdl X3UzMigmbG9jay0+c3RhdGUsICZvbGRfc3RhdGUsCiAJCQkJCQkJCQkJCSAgIGRlc2lyZWRfc3Rh dGUpKQorCQkJeworI2lmZGVmIExXTE9DS19IQVNfRlVURVgKKwkJCQkvKiBXYWtlIHRoZSBuZXh0 IHRhc2sgc2xlZXBpbmcgb24gYHN0YXRlYC4gKi8KKwkJCQlzeXNfZnV0ZXhfd2FrZSgmbG9jay0+ c3RhdGUudmFsdWUsIDEpOworI2VuZGlmCisKIAkJCQlicmVhazsKKwkJCX0KIAkJfQogCX0KIAot LSAKMi4zNC4xCgo= --_002_DM6PR18MB29081469262A7BBCE85220B3A8112DM6PR18MB2908namp_--