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.94.2) (envelope-from ) id 1v1WCw-009WOb-Pw for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Sep 2025 20:35:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v1WCt-00FbzM-Ju for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Sep 2025 20:35:19 +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.94.2) (envelope-from ) id 1v1WCs-00FbyF-Ep for pgsql-hackers@lists.postgresql.org; Wed, 24 Sep 2025 20:35:19 +0000 Received: from fhigh-b8-smtp.messagingengine.com ([202.12.124.159]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1v1WCm-002FDd-2y for pgsql-hackers@postgresql.org; Wed, 24 Sep 2025 20:35:17 +0000 Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfhigh.stl.internal (Postfix) with ESMTP id E29C17A00C5; Wed, 24 Sep 2025 16:35:11 -0400 (EDT) Received: from phl-imap-03 ([10.202.2.93]) by phl-compute-04.internal (MEProxy); Wed, 24 Sep 2025 16:35:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=compiler.org; 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=1758746111; x=1758832511; bh=PYVthqwjYm XmhdFSvUfVYmmLD9Oz0LnT7+sZ4MtXJIQ=; b=h6CaQYMD8ue+v4vAHSE/tZlDMP 49kSmPk1tbH/8AkE8mGCC5h7gNHR2+p1mwWo3rLGOPR7m0bXiUSnOr97RITn7t68 0BOg6C/CE/JK/on2xkwwyw//rCf0uHm5KAkpBHOIESfnXFDmG9bzwjCEUUD1DLi0 83BHAMmvUPqDrYUA8n35dP/IStZL6NLQ7awTZuSxQTJt29+rexLG/7o7p7f3u/M9 r0xkQHQatUuWvE6jXNfJPQX/eIxF7i1gWeYf8Dpppg0KabqVSTOPbFjok2C5zSNZ me4XXyVlApn6pUJ7OaIgMHn1Gcrvw8pyuHLD4qnEG7iDsZRUVD6qdNsaGqkg== 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= 1758746111; x=1758832511; bh=PYVthqwjYmXmhdFSvUfVYmmLD9Oz0LnT7+s Z4MtXJIQ=; b=j85VzgmHw9O53FfsyMQcuzAkII+0gnXZi+mYGZyFfML8t/hq4w+ Vczo9hoRS/s0ukPuKH0x/6Hnlw8CHWGP2IjRw9O70Z6nBkJ65Q6vAef9yWyeHG4I Er1bDbpHE1q369NXlLMc+kjis5B8H/m/0i0t1g5tAknfL2THB2aLOnKOIJ2R/ZXR L5BWvWUw3SI+INDBcRMQT3w9852iogkw78OMW9B8TxFLteA8lMqlYiKbrjldzJnF AehUO5zhCDOl/txPirNxEB60FofW0cpfd2ME0TTQhrpCQVvagXGnKz27CPZo5jgx t2KkZJ5nK5iTv49nDlGTmOf5277MbalnGeA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdeigeehkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefoggffhffvvefkjghfufgtsehmtderreertddtnecuhfhrohhmpedflfhovghlucfl rggtohgsshhonhdfuceojhhovghlsegtohhmphhilhgvrhdrohhrgheqnecuggftrfgrth htvghrnhepfffgleffffdvhefhieegfeeijedujedvieeuveeugefgveeukeevieethefh teeinecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepjh hovghlsegtohhmphhilhgvrhdrohhrghdpnhgspghrtghpthhtohephedpmhhouggvpehs mhhtphhouhhtpdhrtghpthhtoheprhhishhhuhdrphhoshhtghhrvghssehgmhgrihhlrd gtohhmpdhrtghpthhtohepthhhohhmrghsrdhmuhhnrhhosehgmhgrihhlrdgtohhmpdhr tghpthhtohephhhlihhnnhgrkhgrsehikhhirdhfihdprhgtphhtthhopehpghhsqhhlqd hhrggtkhgvrhhssehpohhsthhgrhgvshhqlhdrohhrghdprhgtphhtthhopehtghhlsehs shhsrdhpghhhrdhprgdruhhs X-ME-Proxy: Feedback-ID: ic6394509:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id E8CDB18E006C; Wed, 24 Sep 2025 16:35:10 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: AZ7XRsRLdGms Date: Wed, 24 Sep 2025 22:34:49 +0200 From: "Joel Jacobson" To: "Tom Lane" Cc: "Thomas Munro" , pgsql-hackers , "Heikki Linnakangas" , "Rishu Bagga" Message-Id: <0dc6a2cc-5216-4dc1-9dd2-430cafc6095b@app.fastmail.com> In-Reply-To: <3095599.1758644879@sss.pgh.pa.us> References: <6899c044-4a82-49be-8117-e6f669765f7e@app.fastmail.com> <165530.1752362320@sss.pgh.pa.us> <02a7cd37-e2fc-4212-8b19-f8c239c95fb8@app.fastmail.com> <96f00bf1-cc9d-4520-9d02-9e14e7767c88@app.fastmail.com> <30c2aa7d-dd6c-4b68-a2e4-f217a1a34acf@app.fastmail.com> <0b4d402a-9ac2-4aa8-acf8-8231dbe579ea@app.fastmail.com> <3095599.1758644879@sss.pgh.pa.us> Subject: Re: Optimize LISTEN/NOTIFY Content-Type: multipart/mixed; boundary=25004382ea064f4b9a27d083fbafae3e List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --25004382ea064f4b9a27d083fbafae3e Content-Type: text/plain Content-Transfer-Encoding: 7bit On Tue, Sep 23, 2025, at 18:27, Tom Lane wrote: > I concur that these are orthogonal issues, but I don't understand > why you withdrew your patches --- don't they constitute a solution > to the first scalability bottleneck? Thanks for getting back to this thread. I was unhappy with not finding a solution that would improve all use-cases, I had a feeling it would be possible to find one, and I think I've done so now. >> I guess my main question is if we think we should fix one problem first, >> then the other, both at the same time, or only one or the other? > > I imagine we'd eventually want to fix both, but it doesn't have to > be done in the same patch. I've attached a new patch with a new pragmatic approach, that specifically addresses the context switching cost. The patch is based upon the assumption that some extra LISTEN/NOTIFY latency would be acceptable by most users, as a trade-off, in order to improve throughput. One nice thing with this approach is that it has the potential to improve throughput both for users with just a single listening backend, and also for users with lots of listening backends. More details in the commit message of the patch. Curious to hear thoughts on this approach. /Joel --25004382ea064f4b9a27d083fbafae3e Content-Disposition: attachment; filename*0="0001-LISTEN-NOTIFY-make-the-latency-throughput-trade-off-.pat"; filename*1="ch" Content-Type: application/octet-stream; name="=?UTF-8?Q?0001-LISTEN-NOTIFY-make-the-latency-throughput-trade-off-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA1NDI0YTMxMzUxYzgzNDMwZWI2ZjkzYWJkM2RmY2Y5MzYxMjZlMTM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VsIEphY29ic29uIDxqb2VsQGNvbXBpbGVyLm9y Zz4KRGF0ZTogU2F0LCAxNiBBdWcgMjAyNSAxOToyODoxOCArMDIwMApTdWJqZWN0OiBbUEFU Q0hdIExJU1RFTi9OT1RJRlk6IG1ha2UgdGhlIGxhdGVuY3kvdGhyb3VnaHB1dCB0cmFkZS1v ZmYgdHVuYWJsZQoKQmFja2dyb3VuZDogQ3VycmVudGx5LCBsaXN0ZW5lcnMgYXJlIHNpZ25h bGVkIG9uIGV2ZXJ5IE5PVElGWSBhcyBzb29uIGFzCnBvc3NpYmxlLiBUaGF0IG1pbmltaXpl cyBwZXJjZWl2ZWQgbGF0ZW5jeSwgYnV0IHVuZGVyIGJ1cnN0eSB0cmFmZmljIGl0CmxlYWRz IHRvIG1hbnkgcmVkdW5kYW50IHdha2V1cHMsIGhlYXZ5IGNvbnRleHQgc3dpdGNoaW5nLCBh bmQgZGVncmFkZWQKdGhyb3VnaHB1dC4KClRoaXMgcGF0Y2ggYWRkcyBsaXN0ZW5lci1zaWRl IHdha2V1cCBjb2FsZXNjaW5nIGNvbnRyb2xsZWQgYnkgYSBuZXcgR1VDLApub3RpZnlfbGF0 ZW5jeV90YXJnZXQuICBUaGUgc2V0dGluZyBkZWZpbmVzIHRoZSBtYXhpbXVtIGFkZGl0aW9u YWwKbGF0ZW5jeSB0aGF0IGlzIGFjY2VwdGFibGUsIGFsbG93aW5nIHJlZHVuZGFudCB3YWtl dXBzIHRvIGJlIGNvYWxlc2NlZAp3aXRoaW4gdGhlIHNwZWNpZmllZCBpbnRlcnZhbC4KCkVh Y2ggbGlzdGVuZXIgaGFzIGEgc2hhcmVkICJ3YWtldXAgcGVuZGluZyIgZmxhZy4gIFNlbmRl cnMgdGhhdCBvYnNlcnZlCnRoZSBmbGFnIGlzIGFscmVhZHkgc2V0IGRvIG5vdGhpbmcsIGVm ZmVjdGl2ZWx5IGNvYWxlc2NpbmcgdGhlaXIgTk9USUZZCndpdGggdGhlIHBlbmRpbmcgd2Fr ZXVwLiAgVGhlIGxpc3RlbmVyIHJlY29yZHMgdGhlIHN0YXJ0IHRpbWUgb2YgZWFjaApwcm9j ZXNzaW5nIGN5Y2xlOyBpZiBpdCBpcyBhd2FrZW5lZCBhZ2FpbiB0b28gc29vbiwgaXQgZGVm ZXJzIHdvcmsgYW5kCmFybXMgYSB0aW1lb3V0IHRvIHJlLWF3YWtlbiBhZnRlciB0aGUgY29u ZmlndXJlZCBkZWxheS4gIFRoZSBmbGFnIGlzCmNsZWFyZWQgd2hlbiBlbnRlcmluZyBhc3lu Y1F1ZXVlUmVhZEFsbE5vdGlmaWNhdGlvbnMoKS4gIEEgbmV3IHRpbWVvdXQKcmVhc29uLCBO T1RJRllfREVGRVJSRURfV0FLRVVQX1RJTUVPVVQsIGlzIHJlZ2lzdGVyZWQgYXQgYmFja2Vu ZApzdGFydHVwLgoKVGhpcyBtYWtlcyB0aGUgaW5oZXJlbnQgbGF0ZW5jeS90aHJvdWdocHV0 IHRyYWRlLW9mZiBleHBsaWNpdCBhbmQKYWRtaW5pc3RyYXRvci1jb250cm9sbGVkLiAgTGFy Z2VyIGRlbGF5cyBpbmNyZWFzZSBiYXRjaGluZyBhbmQgcmVkdWNlCndha2V1cCBjaHVybiwg aW1wcm92aW5nIHRocm91Z2hwdXQgYXQgdGhlIGNvc3Qgb2YgYWRkaXRpb25hbCBwZXItbm90 aWZ5CmxhdGVuY3k7IGEgZGVsYXkgb2YgMCBwcmVzZXJ2ZXMgdGhlIHByZXZpb3VzIGJlaGF2 aW9yLiAgUXVldWUgb3JkZXJpbmcsCnZpc2liaWxpdHksIGFuZCBjcm9zcy1kYXRhYmFzZSBz ZW1hbnRpY3MgYXJlIHVuY2hhbmdlZC4KClVzZXItdmlzaWJsZSBjaGFuZ2U6IG5ldyBHVUMg bm90aWZ5X2xhdGVuY3lfdGFyZ2V0IChtcywgZGVmYXVsdCAwKS4KLS0tCiBkb2Mvc3JjL3Nn bWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAyOSArKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgICAgICB8IDQ3ICsr KysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyAg ICAgICAgICAgICB8ICAyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRl cnMuZGF0ICAgICB8IDEwICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSB8ICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmggICAg ICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3RpbWVvdXQuaCAgICAg ICAgICAgICAgICAgICB8ICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBlOWI0MjBmM2RkYi4uZjAxNTZi NTJhMGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTEwMjY3LDYgKzEwMjY3LDM1IEBAIENPUFkgcG9z dGdyZXNfbG9nIEZST00gJy9mdWxsL3BhdGgvdG8vbG9nZmlsZS5jc3YnIFdJVEggY3N2Owog ICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxp c3RlbnRyeSBpZD0iZ3VjLW5vdGlmeS1taW4td2FrZXVwLWRlbGF5IiB4cmVmbGFiZWw9Im5v dGlmeV9sYXRlbmN5X3RhcmdldCI+CisgICAgICA8dGVybT48dmFybmFtZT5ub3RpZnlfbGF0 ZW5jeV90YXJnZXQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxp bmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bm90aWZ5X2xhdGVuY3lfdGFy Z2V0PC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAg IDxwYXJhPgorICAgICAgICBTZXRzIHRoZSBtYXhpbXVtIGFjY2VwdGFibGUgYWRkaXRpb25h bCBsYXRlbmN5IGZvciBkZWxpdmVyaW5nCisgICAgICAgIDxjb21tYW5kPkxJU1RFTjwvY29t bWFuZD4vPGNvbW1hbmQ+Tk9USUZZPC9jb21tYW5kPgorICAgICAgICBub3RpZmljYXRpb25z LiBEdXJpbmcgYnVyc3R5IHBlcmlvZHMsIG5vdGlmaWNhdGlvbnMgdGhhdCBhcnJpdmUKKyAg ICAgICAgd2l0aGluIHRoaXMgaW50ZXJ2YWwgYXJlIGNvYWxlc2NlZCBhbmQgZGVsaXZlcmVk IHRvZ2V0aGVyLAorICAgICAgICB0cmFkaW5nIGJvdW5kZWQgZXh0cmEgbGF0ZW5jeSBmb3Ig ZmV3ZXIgd2FrZXVwcyBhbmQgaGlnaGVyCisgICAgICAgIHRocm91Z2hwdXQuCisgICAgICAg PC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIEFmdGVyIGEgbGlzdGVuaW5nIGJh Y2tlbmQgaGFzIGJlZW4gaWRsZSwgdGhlIGZpcnN0CisgICAgICAgIDxjb21tYW5kPk5PVElG WTwvY29tbWFuZD4gY2F1c2VzIGFuIGltbWVkaWF0ZWx5IHdha2V1cC4KKyAgICAgICAgSWYg YWRkaXRpb25hbCBub3RpZmljYXRpb25zIGhhcHBlbiBiZWZvcmUKKyAgICAgICAgPHZhcm5h bWU+bm90aWZ5X2xhdGVuY3lfdGFyZ2V0PC92YXJuYW1lPiBoYXMgZWxhcHNlZCBzaW5jZSB0 aGUKKyAgICAgICAgc3RhcnQgb2YgdGhhdCBwcm9jZXNzaW5nIGN5Y2xlLCB3YWtldXAgaXMg ZGVmZXJyZWQgYnkgb25lIGZ1bGwKKyAgICAgICAgPHZhcm5hbWU+bm90aWZ5X2xhdGVuY3lf dGFyZ2V0PC92YXJuYW1lPiBpbnRlcnZhbCBmcm9tIHRoZSBwb2ludAorICAgICAgICBvZiBk ZWZlcnJhbC4gV2hlbiB0aGF0IGludGVydmFsIGV4cGlyZXMsIHRoZSBsaXN0ZW5pbmcgYmFj a2VuZAorICAgICAgICB3YWtlcyBhbmQgY2F0Y2hlcyB1cCBpbiBhIHNpbmdsZSB3YWtldXAu CisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50 cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWJ5dGVhLW91dHB1dCIgeHJlZmxh YmVsPSJieXRlYV9vdXRwdXQiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+Ynl0ZWFfb3V0cHV0 PC92YXJuYW1lPiAoPHR5cGU+ZW51bTwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2FzeW5jLmMKaW5kZXggNGJkMzdkNWJlYjUuLjNmNGNlZjEwYmQ5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2FzeW5jLmMKQEAgLTE1MCw2ICsxNTAsNyBAQAogI2luY2x1ZGUgInV0aWxzL3Bz X3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAKIAogLyoKQEAg LTI0Niw2ICsyNDcsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWV1ZUJhY2tlbmRTdGF0dXMKIAlP aWQJCQlkYm9pZDsJCQkvKiBiYWNrZW5kJ3MgZGF0YWJhc2UgT0lELCBvciBJbnZhbGlkT2lk ICovCiAJUHJvY051bWJlcgluZXh0TGlzdGVuZXI7CS8qIGlkIG9mIG5leHQgbGlzdGVuZXIs IG9yIElOVkFMSURfUFJPQ19OVU1CRVIgKi8KIAlRdWV1ZVBvc2l0aW9uIHBvczsJCQkvKiBi YWNrZW5kIGhhcyByZWFkIHF1ZXVlIHVwIHRvIGhlcmUgKi8KKwlib29sCQl3YWtldXBfcGVu ZGluZ19mbGFnOwkvKiBmb3IgbGlzdGVuZXIgd2FrZXVwIHRocm90dGxpbmcgKi8KIH0gUXVl dWVCYWNrZW5kU3RhdHVzOwogCiAvKgpAQCAtMjkzLDYgKzI5NSw4IEBAIHR5cGVkZWYgc3Ry dWN0IEFzeW5jUXVldWVDb250cm9sCiAKIHN0YXRpYyBBc3luY1F1ZXVlQ29udHJvbCAqYXN5 bmNRdWV1ZUNvbnRyb2w7CiAKK3N0YXRpYyBUaW1lc3RhbXBUeiBsYXN0X3dha2V1cF9zdGFy dF90aW1lID0gMDsKKwogI2RlZmluZSBRVUVVRV9IRUFECQkJCQkoYXN5bmNRdWV1ZUNvbnRy b2wtPmhlYWQpCiAjZGVmaW5lIFFVRVVFX1RBSUwJCQkJCShhc3luY1F1ZXVlQ29udHJvbC0+ dGFpbCkKICNkZWZpbmUgUVVFVUVfU1RPUF9QQUdFCQkJCShhc3luY1F1ZXVlQ29udHJvbC0+ c3RvcFBhZ2UpCkBAIC0zMDEsNiArMzA1LDkgQEAgc3RhdGljIEFzeW5jUXVldWVDb250cm9s ICphc3luY1F1ZXVlQ29udHJvbDsKICNkZWZpbmUgUVVFVUVfQkFDS0VORF9EQk9JRChpKQkJ KGFzeW5jUXVldWVDb250cm9sLT5iYWNrZW5kW2ldLmRib2lkKQogI2RlZmluZSBRVUVVRV9O RVhUX0xJU1RFTkVSKGkpCQkoYXN5bmNRdWV1ZUNvbnRyb2wtPmJhY2tlbmRbaV0ubmV4dExp c3RlbmVyKQogI2RlZmluZSBRVUVVRV9CQUNLRU5EX1BPUyhpKQkJKGFzeW5jUXVldWVDb250 cm9sLT5iYWNrZW5kW2ldLnBvcykKKyNkZWZpbmUgUVVFVUVfQkFDS0VORF9XQUtFVVBfUEVO RElOR19GTEFHKGkpIFwKKwkoYXN5bmNRdWV1ZUNvbnRyb2wtPmJhY2tlbmRbaV0ud2FrZXVw X3BlbmRpbmdfZmxhZykKKwogCiAvKgogICogVGhlIFNMUlUgYnVmZmVyIGFyZWEgdGhyb3Vn aCB3aGljaCB3ZSBhY2Nlc3MgdGhlIG5vdGlmaWNhdGlvbiBxdWV1ZQpAQCAtNDIzLDYgKzQz MCw3IEBAIHN0YXRpYyBib29sIHRyeUFkdmFuY2VUYWlsID0gZmFsc2U7CiAKIC8qIEdVQyBw YXJhbWV0ZXJzICovCiBib29sCQlUcmFjZV9ub3RpZnkgPSBmYWxzZTsKK2ludAkJCW5vdGlm eV9sYXRlbmN5X3RhcmdldDsKIAogLyogRm9yIDggS0IgcGFnZXMgdGhpcyBnaXZlcyA4IEdC IG9mIGRpc2sgc3BhY2UgKi8KIGludAkJCW1heF9ub3RpZnlfcXVldWVfcGFnZXMgPSAxMDQ4 NTc2OwpAQCAtNTI3LDYgKzUzNSw3IEBAIEFzeW5jU2htZW1Jbml0KHZvaWQpCiAJCQlRVUVV RV9CQUNLRU5EX0RCT0lEKGkpID0gSW52YWxpZE9pZDsKIAkJCVFVRVVFX05FWFRfTElTVEVO RVIoaSkgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQkJU0VUX1FVRVVFX1BPUyhRVUVVRV9C QUNLRU5EX1BPUyhpKSwgMCwgMCk7CisJCQlRVUVVRV9CQUNLRU5EX1dBS0VVUF9QRU5ESU5H X0ZMQUcoaSkgPSBmYWxzZTsKIAkJfQogCX0KIApAQCAtMTYwMyw3ICsxNjEyLDE4IEBAIFNp Z25hbEJhY2tlbmRzKHZvaWQpCiAJCVF1ZXVlUG9zaXRpb24gcG9zOwogCiAJCUFzc2VydChw aWQgIT0gSW52YWxpZFBpZCk7CisKKwkJLyoKKwkJICogSWYgYSB3YWtldXAgaXMgYWxyZWFk eSBwZW5kaW5nIGZvciB0aGlzIGxpc3RlbmVyLCBkbyBub3RoaW5nLiBUaGUKKwkJICogcGVu ZGluZyBzaWduYWwgZ3VhcmFudGVlcyBpdCB3aWxsIHdha2UgdXAgYW5kIHByb2Nlc3MgYWxs IG1lc3NhZ2VzCisJCSAqIHVwIHRvIHRoZSBjdXJyZW50IHF1ZXVlIGhlYWQsIGluY2x1ZGlu ZyB0aGUgb25lIHdlIGp1c3Qgd3JvdGUuIFRoaXMKKwkJICogY29hbGVzY2VzIG11bHRpcGxl IHdha2V1cHMgaW50byBvbmUuCisJCSAqLworCQlpZiAoUVVFVUVfQkFDS0VORF9XQUtFVVBf UEVORElOR19GTEFHKGkpKQorCQkJY29udGludWU7CisKIAkJcG9zID0gUVVFVUVfQkFDS0VO RF9QT1MoaSk7CisKIAkJaWYgKFFVRVVFX0JBQ0tFTkRfREJPSUQoaSkgPT0gTXlEYXRhYmFz ZUlkKQogCQl7CiAJCQkvKgpAQCAtMTYyNCw2ICsxNjQ0LDcgQEAgU2lnbmFsQmFja2VuZHMo dm9pZCkKIAkJCQljb250aW51ZTsKIAkJfQogCQkvKiBPSywgbmVlZCB0byBzaWduYWwgdGhp cyBvbmUgKi8KKwkJUVVFVUVfQkFDS0VORF9XQUtFVVBfUEVORElOR19GTEFHKGkpID0gdHJ1 ZTsKIAkJcGlkc1tjb3VudF0gPSBwaWQ7CiAJCXByb2Nub3NbY291bnRdID0gaTsKIAkJY291 bnQrKzsKQEAgLTE4NjEsMTAgKzE4ODIsMTMgQEAgYXN5bmNRdWV1ZVJlYWRBbGxOb3RpZmlj YXRpb25zKHZvaWQpCiAJCUFzeW5jUXVldWVFbnRyeSBhbGlnbjsKIAl9CQkJcGFnZV9idWZm ZXI7CiAKLQkvKiBGZXRjaCBjdXJyZW50IHN0YXRlICovCisJbGFzdF93YWtldXBfc3RhcnRf dGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCS8qIEZldGNoIGN1cnJlbnQgc3Rh dGUgYW5kIGNsZWFyIHdha2V1cC1wZW5kaW5nIGZsYWcgKi8KIAlMV0xvY2tBY3F1aXJlKE5v dGlmeVF1ZXVlTG9jaywgTFdfU0hBUkVEKTsKIAkvKiBBc3NlcnQgY2hlY2tzIHRoYXQgd2Ug aGF2ZSBhIHZhbGlkIHN0YXRlIGVudHJ5ICovCiAJQXNzZXJ0KE15UHJvY1BpZCA9PSBRVUVV RV9CQUNLRU5EX1BJRChNeVByb2NOdW1iZXIpKTsKKwlRVUVVRV9CQUNLRU5EX1dBS0VVUF9Q RU5ESU5HX0ZMQUcoTXlQcm9jTnVtYmVyKSA9IGZhbHNlOwogCXBvcyA9IFFVRVVFX0JBQ0tF TkRfUE9TKE15UHJvY051bWJlcik7CiAJaGVhZCA9IFFVRVVFX0hFQUQ7CiAJTFdMb2NrUmVs ZWFzZShOb3RpZnlRdWV1ZUxvY2spOwpAQCAtMjE4OSw2ICsyMjEzLDI3IEBAIFByb2Nlc3NJ bmNvbWluZ05vdGlmeShib29sIGZsdXNoKQogCWlmIChsaXN0ZW5DaGFubmVscyA9PSBOSUwp CiAJCXJldHVybjsKIAorCS8qCisJICogVGhyb3R0bGluZyBjaGVjazogaWYgd2Ugd2VyZSBs YXN0IGFjdGl2ZSB0b28gcmVjZW50bHksIGRlZmVyLiBUaGlzCisJICogY2hlY2sgaXMgc2Fm ZSB3aXRob3V0IGEgbG9jayBiZWNhdXNlIGl0J3MgYmFzZWQgb24gYSBiYWNrZW5kLWxvY2Fs CisJICogdGltZXN0YW1wLgorCSAqLworCWlmIChub3RpZnlfbGF0ZW5jeV90YXJnZXQgPiAw ICYmCisJCSFUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyhsYXN0X3dha2V1cF9zdGFydF90 aW1lLAorCQkJCQkJCQkJR2V0Q3VycmVudFRpbWVzdGFtcCgpLAorCQkJCQkJCQkJbm90aWZ5 X2xhdGVuY3lfdGFyZ2V0KSkKKwl7CisJCS8qCisJCSAqIFRvbyBzb29uLiBXZSBsZWF2ZSB3 YWtldXBfcGVuZGluZ19mbGFnIHVudG91Y2hlZCAoaXQgbXVzdCBiZSB0cnVlLAorCQkgKiBv ciB3ZSB3b3VsZG4ndCBoYXZlIGJlZW4gc2lnbmFsZWQpIHRvIHRlbGwgc2VuZGVycyB3ZSBh cmUKKwkJICogaW50ZW50aW9uYWxseSBkZWxheWluZy4gQXJtIGEgdGltZXIgdG8gcmUtYXdh a2VuIGFuZCBwcm9jZXNzIHRoZQorCQkgKiBiYWNrbG9nIGxhdGVyLgorCQkgKi8KKwkJZW5h YmxlX3RpbWVvdXRfYWZ0ZXIoTk9USUZZX0RFRkVSUkVEX1dBS0VVUF9USU1FT1VULAorCQkJ CQkJCSBub3RpZnlfbGF0ZW5jeV90YXJnZXQpOworCQlyZXR1cm47CisJfQorCiAJaWYgKFRy YWNlX25vdGlmeSkKIAkJZWxvZyhERUJVRzEsICJQcm9jZXNzSW5jb21pbmdOb3RpZnkiKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDY0MWU1MzVhNzNjLi40YWZk NmViNzQ0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpAQCAtMzMsNiArMzMs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2RiX3JvbGVfc2V0dGluZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVz cGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAibGlicHEv YXV0aC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLWJlLmgiCiAjaW5jbHVkZSAibWIvcGdf d2NoYXIuaCIKQEAgLTc2NCw2ICs3NjUsNyBAQCBJbml0UG9zdGdyZXMoY29uc3QgY2hhciAq aW5fZGJuYW1lLCBPaWQgZGJvaWQsCiAJCVJlZ2lzdGVyVGltZW91dChUUkFOU0FDVElPTl9U SU1FT1VULCBUcmFuc2FjdGlvblRpbWVvdXRIYW5kbGVyKTsKIAkJUmVnaXN0ZXJUaW1lb3V0 KElETEVfU0VTU0lPTl9USU1FT1VULCBJZGxlU2Vzc2lvblRpbWVvdXRIYW5kbGVyKTsKIAkJ UmVnaXN0ZXJUaW1lb3V0KENMSUVOVF9DT05ORUNUSU9OX0NIRUNLX1RJTUVPVVQsIENsaWVu dENoZWNrVGltZW91dEhhbmRsZXIpOworCQlSZWdpc3RlclRpbWVvdXQoTk9USUZZX0RFRkVS UkVEX1dBS0VVUF9USU1FT1VULCBIYW5kbGVOb3RpZnlJbnRlcnJ1cHQpOwogCQlSZWdpc3Rl clRpbWVvdXQoSURMRV9TVEFUU19VUERBVEVfVElNRU9VVCwKIAkJCQkJCUlkbGVTdGF0c1Vw ZGF0ZVRpbWVvdXRIYW5kbGVyKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3BhcmFtZXRlcnMuZGF0CmluZGV4IDZiYzZiZTEzZDJhLi4yYjIzYTk1MjBiZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKQEAgLTE1NjcsNiAr MTU2NywxNiBAQAogICBtYXggPT4gJ0lOVF9NQVgnLAogfSwKIAoreyBuYW1lID0+ICdub3Rp ZnlfbGF0ZW5jeV90YXJnZXQnLCB0eXBlID0+ICdpbnQnLCBjb250ZXh0ID0+ICdQR0NfU1VT RVQnLCBncm91cCA9PiAnQ0xJRU5UX0NPTk5fT1RIRVInLAorICBzaG9ydF9kZXNjID0+ICdM YXRlbmN5IHRhcmdldCBmb3Igd2FraW5nIGxpc3RlbmVycyB0byBwcm9jZXNzIE5PVElGWS4n LAorICBsb25nX2Rlc2MgPT4gJ0ZpcnN0IG5vdGlmeSBhZnRlciBpZGxlIHdha2VzIGltbWVk aWF0ZWx5OyBhcnJpdmFscyB3aXRoaW4gdGhlIGludGVydmFsIGRlZmVyIHRoZSBuZXh0IHdh a2V1cCBieSBvbmUgZnVsbCBpbnRlcnZhbCBhbmQgYXJlIGNvYWxlc2NlZC4gMCBkaXNhYmxl cy4nLAorICBmbGFncyA9PiAnR1VDX1VOSVRfTVMnLAorICB2YXJpYWJsZSA9PiAnbm90aWZ5 X2xhdGVuY3lfdGFyZ2V0JywKKyAgYm9vdF92YWwgPT4gJzAnLAorICBtaW4gPT4gJzAnLAor ICBtYXggPT4gJ0lOVF9NQVgnLAorfSwKKwogeyBuYW1lID0+ICd3YWxfZGVjb2RlX2J1ZmZl cl9zaXplJywgdHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1BPU1RNQVNURVInLCBn cm91cCA9PiAnV0FMX1JFQ09WRVJZJywKICAgc2hvcnRfZGVzYyA9PiAnQnVmZmVyIHNpemUg Zm9yIHJlYWRpbmcgYWhlYWQgaW4gdGhlIFdBTCBkdXJpbmcgcmVjb3ZlcnkuJywKICAgbG9u Z19kZXNjID0+ICdNYXhpbXVtIGRpc3RhbmNlIHRvIHJlYWQgYWhlYWQgaW4gdGhlIFdBTCB0 byBwcmVmZXRjaCByZWZlcmVuY2VkIGRhdGEgYmxvY2tzLicsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggYzM2ZmNiOWFiNjEu LmNhOGY2MjI3YjI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlCkBAIC03NjYsNiArNzY2LDcgQEAgYXV0b3ZhY3V1bV93b3JrZXJf c2xvdHMgPSAxNgkjIGF1dG92YWN1dW0gd29ya2VyIHNsb3RzIHRvIGFsbG9jYXRlCiAjbG9j a190aW1lb3V0ID0gMAkJCQkjIGluIG1pbGxpc2Vjb25kcywgMCBpcyBkaXNhYmxlZAogI2lk bGVfaW5fdHJhbnNhY3Rpb25fc2Vzc2lvbl90aW1lb3V0ID0gMAkjIGluIG1pbGxpc2Vjb25k cywgMCBpcyBkaXNhYmxlZAogI2lkbGVfc2Vzc2lvbl90aW1lb3V0ID0gMAkJCSMgaW4gbWls bGlzZWNvbmRzLCAwIGlzIGRpc2FibGVkCisjbm90aWZ5X2xhdGVuY3lfdGFyZ2V0ID0gMAkj IGluIG1pbGxpc2Vjb25kcywgMCBpcyBkaXNhYmxlZAogI2J5dGVhX291dHB1dCA9ICdoZXgn CQkJIyBoZXgsIGVzY2FwZQogI3htbGJpbmFyeSA9ICdiYXNlNjQnCiAjeG1sb3B0aW9uID0g J2NvbnRlbnQnCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaAppbmRleCBmNzVjM2RmOTU1Ni4uZWQyNzQ1 NmU0ODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1 ZGUgPHNpZ25hbC5oPgogCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBUcmFjZV9ub3RpZnk7 CitleHRlcm4gUEdETExJTVBPUlQgaW50IG5vdGlmeV9sYXRlbmN5X3RhcmdldDsKIGV4dGVy biBQR0RMTElNUE9SVCBpbnQgbWF4X25vdGlmeV9xdWV1ZV9wYWdlczsKIGV4dGVybiBQR0RM TElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgbm90aWZ5SW50ZXJydXB0UGVuZGluZzsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvdGltZW91dC5oCmluZGV4IDdiMTliZWFmZGM5Li4zNWNjYTdjMDZiZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3RpbWVvdXQuaApAQCAtMzUsNiArMzUsNyBAQCB0eXBlZGVmIGVudW0gVGltZW91 dElkCiAJSURMRV9TRVNTSU9OX1RJTUVPVVQsCiAJSURMRV9TVEFUU19VUERBVEVfVElNRU9V VCwKIAlDTElFTlRfQ09OTkVDVElPTl9DSEVDS19USU1FT1VULAorCU5PVElGWV9ERUZFUlJF RF9XQUtFVVBfVElNRU9VVCwKIAlTVEFSVFVQX1BST0dSRVNTX1RJTUVPVVQsCiAJLyogRmly c3QgdXNlci1kZWZpbmFibGUgdGltZW91dCByZWFzb24gKi8KIAlVU0VSX1RJTUVPVVQsCi0t IAoyLjUwLjEKCg== --25004382ea064f4b9a27d083fbafae3e--