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 1sotUo-00Ebci-0o for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Sep 2024 23:45:07 +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 1sotUn-003nYm-KG for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Sep 2024 23:45:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sotUm-003nSk-FO for pgsql-hackers@lists.postgresql.org; Thu, 12 Sep 2024 23:45:05 +0000 Received: from relay1-d.mail.gandi.net ([217.70.183.193]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sotUh-000tSr-F9 for pgsql-hackers@lists.postgresql.org; Thu, 12 Sep 2024 23:45:03 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id F1188240003; Thu, 12 Sep 2024 23:44:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vondra.me; s=gm1; t=1726184699; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=e6KQgS5FDmgvTG1qGc23kqcAs/Ai/RGlVXZWPGKvBco=; b=gBs4kHykeIEhJYsEv+z2NV909RP6ZwWgOFM+/2LYCbQxbyrF4TCPFOs+sW2wpCJZptEPwJ eplHtWxTFB5mS+ckO43TscOA28JmpZrjNw7FqWzGbsUXFEMPVnDKZRXI8zMUWK0tsPBe1h ftfN91ulQElZqr4kcUbXdlRNdGc11dg38tV2ukdZSGKLGfmdm4fQ4c15JvTipSJ2e7fENd ObAtLsUqbgENbISUyqk+mFNcmoe17Q9YmibLhKPLcqZdmt1obLd9qYC6LM/m7iLcABUBE0 NXM0cZTZn6AW0K0aFIhEeAETe3FGI2nJ9s96xx5NT/oqLqvTgED1IkTQDJsxjw== Content-Type: multipart/mixed; boundary="------------i906kgiIZdnsdVGZL1cejXDT" Message-ID: Date: Fri, 13 Sep 2024 01:44:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: scalability bottlenecks with (many) partitions (and more) From: Tomas Vondra To: Robert Haas Cc: PostgreSQL Hackers , Andres Freund References: <510b887e-c0ce-4a0c-a17a-2c6abb8d9a5c@enterprisedb.com> <9266c8df-0df7-4605-ba5a-b204c5e52586@enterprisedb.com> <52afd566-d110-43ea-ae72-69349d4414f6@vondra.me> <52f026c4-6c4e-4de2-bd78-609091d7c772@vondra.me> <14cd8763-c905-4705-99c5-cbcc5db06f50@vondra.me> <0775ba8a-920c-4d37-b202-989a90b6ee4c@vondra.me> Content-Language: en-US In-Reply-To: <0775ba8a-920c-4d37-b202-989a90b6ee4c@vondra.me> X-GND-Sasl: tomas@vondra.me List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------i906kgiIZdnsdVGZL1cejXDT Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Turns out there was a bug in EXEC_BACKEND mode, causing failures on the Windows machine in CI. AFAIK the reason is pretty simple - the backends don't see the number of fast-path groups postmaster calculated from max_locks_per_transaction. Fixed that by calculating it again in AttachSharedMemoryStructs, which seems to have done the trick. With this the CI builds pass just fine, but I'm not sure if EXEC_BACKENDS may have some other issues with the PGPROC changes. Could it happen that the shared memory gets mapped differently, in which case the pointers might need to be adjusted? regards -- Tomas Vondra --------------i906kgiIZdnsdVGZL1cejXDT Content-Type: text/x-patch; charset=UTF-8; name="v20240913-0001-Increase-the-number-of-fast-path-lock-slot.patch" Content-Disposition: attachment; filename*0="v20240913-0001-Increase-the-number-of-fast-path-lock-slot.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0NWEyMTExYzUxMDE2Mzg2YTMxZDc2NjcwMGIyM2Q5ZDg4ZmY2YzBiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVGh1LCAxMiBTZXAgMjAyNCAyMzowOTo0MSArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjQwOTEzIDEvMl0gSW5jcmVhc2UgdGhlIG51bWJlciBvZiBmYXN0LXBhdGggbG9jayBz bG90cwoKVGhlIGZhc3QtcGF0aCBsb2NraW5nIGludHJvZHVjZWQgaW4gOS4yIGFsbG93ZWQg ZWFjaCBiYWNrZW5kIHRvIGFjcXVpcmUKdXAgdG8gMTYgcmVsYXRpb24gbG9ja3MgY2hlYXBs eSwgcHJvdmlkZWQgdGhlIGxvY2sgbGV2ZWwgYWxsb3dzIHRoYXQuCklmIGEgYmFja2VuZCBu ZWVkcyB0byBob2xkIG1vcmUgbG9ja3MsIGl0IGhhcyB0byBpbnNlcnQgdGhlbSBpbnRvIHRo ZQpyZWd1bGFyIGxvY2sgdGFibGUgaW4gc2hhcmVkIG1lbW9yeS4gVGhpcyBpcyBjb25zaWRl cmFibHkgbW9yZQpleHBlbnNpdmUsIGFuZCBvbiBtYW55LWNvcmUgc3lzdGVtcyBtYXkgYmUg c3ViamVjdCB0byBjb250ZW50aW9uLgoKVGhlIGxpbWl0IG9mIDE2IGVudHJpZXMgd2FzIGFs d2F5cyByYXRoZXIgbG93LCBldmVuIHdpdGggc2ltcGxlIHF1ZXJpZXMKYW5kIHNjaGVtYXMg d2l0aCBvbmx5IGEgZmV3IHRhYmxlcy4gV2UgaGF2ZSB0byBsb2NrIGFsbCByZWxhdGlvbnMg LSBub3QKanVzdCB0YWJsZXMsIGJ1dCBhbHNvIGluZGV4ZXMsIHZpZXdzLCBldGMuIE1vcmVv dmVyLCBmb3IgcGxhbm5pbmcgd2UKbmVlZCB0byBsb2NrIGFsbCByZWxhdGlvbnMgdGhhdCBt aWdodCBiZSB1c2VkIGluIHRoZSBwbGFuLCBub3QganVzdAp0aG9zZSB0aGF0IGFjdHVhbGx5 IGdldCB1c2VkIGluIHRoZSBmaW5hbCBwbGFuLiBJdCBvbmx5IHRha2VzIGEgY291cGxlCnRh YmxlcyB3aXRoIG11bHRpcGxlIGluZGV4ZXMgdG8gbmVlZCBtb3JlIHRoYW4gMTYgbG9ja3Mu IEl0IHdhcyBxdWl0ZQpjb21tb24gdG8gZmlsbCBhbGwgZmFzdC1wYXRoIHNsb3RzLgoKQXMg cGFydGl0aW9uaW5nIGdldHMgdXNlZCBtb3JlIHdpZGVseSwgd2l0aCBtb3JlIGFuZCBtb3Jl IHBhcnRpdGlvbnMsCnRoaXMgbGltaXQgaXMgdHJpdmlhbCB0byBoaXQsIHdpdGggY29tcGxl eCBxdWVyaWVzIGVhc2lseSB1c2luZyBodW5kcmVkcwpvciBldmVuIHRob3VzYW5kcyBvZiBs b2Nrcy4gRm9yIHdvcmtsb2FkcyBkb2luZyBhIGxvdCBvZiBJL08gdGhpcyBpcyBub3QKbm90 aWNlYWJsZSwgYnV0IG9uIGxhcmdlIG1hY2hpbmVzIHdpdGggZW5vdWdoIFJBTSB0byBrZWVw IHRoZSBkYXRhIGluCm1lbW9yeSwgdGhlIGFjY2VzcyB0byB0aGUgc2hhcmVkIGxvY2sgdGFi bGUgbWF5IGJlIGEgc2VyaW91cyBpc3N1ZS4KClRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhpcyBi eSBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgZmFzdC1wYXRoIHNsb3RzCmZyb20gMTYgdG8g MTAyNC4gVGhlIHNsb3RzIHJlbWFpbiBpbiBQR1BST0MsIGFuZCBhcmUgb3JnYW5pemVkIGFz IGFuCmFycmF5IG9mIDE2LXNsb3QgZ3JvdXBzIChlYWNoIGdyb3VwIGJlaW5nIGVmZmVjdGl2 ZWx5IGEgY2xvbmUgb2YgdGhlCm9yaWdpbmFsIGZhc3QtcGF0aCBhcHByb2FjaCkuIEluc3Rl YWQgb2YgYWNjZXNzaW5nIHRoaXMgYXMgYSBiaWcgaGFzaAp0YWJsZSB3aXRoIG9wZW4gYWRk cmVzc2luZywgd2UgdHJlYXQgdGhpcyBhcyBhIDE2LXdheSBzZXQgYXNzb2NpYXRpdmUKY2Fj aGUuIEVhY2ggcmVsYXRpb24gKGlkZW50aWZpZWQgYnkgYSAicmVsaWQiIE9JRCkgaXMgbWFw cGVkIHRvIGEKcGFydGljdWxhciAxNi1zbG90IGdyb3VwIGJ5IGNhbGN1bGF0aW5nIGEgaGFz aAoKICAgIGgocmVsaWQpID0gKChyZWxpZCAqIFApIG1vZCBOKQoKd2hlcmUgUCBpcyBhIGhh cmQtY29kZWQgcHJpbWUsIGFuZCBOIGlzIHRoZSBudW1iZXIgb2YgZ3JvdXBzLiBUaGlzIGlz Cm5vdCBhIGdyZWF0IGhhc2ggZnVuY3Rpb24sIGJ1dCBpdCB3b3JrcyB3ZWxsIGVub3VnaCAt IHRoZSBtYWluIHB1cnBvc2UKaXMgdG8gcHJldmVudCAiaG90IGdyb3VwcyIgd2l0aCBydW5z IG9mIGNvbnNlY3V0aXZlIE9JRHMsIHdoaWNoIG1pZ2h0CmZpbGwgc29tZSBvZiB0aGUgZmFz dC1wYXRoIGdyb3Vwcy4gVGhlIG11bHRpcGxpY2F0aW9uIGJ5IFAgZW5zdXJlcyB0aGF0LgpJ ZiB0aGUgT0lEcyBhcmUgYWxyZWFkeSBzcHJlYWQgb3V0LCB0aGUgaGFzaCBzaG91bGQgbm90 IGdyb3VwIHRoZW0uCgpUaGUgZ3JvdXBzIGFyZSBwcm9jZXNzZWQgYnkgbGluZWFyIHNlYXJj aC4gV2l0aCBvbmx5IDE2IGVudHJpZXMgdGhpcyBpcwpjaGVhcCwgYW5kIHRoZSBncm91cHMg aGF2ZSB2ZXJ5IGdvb2QgbG9jYWxpdHkuCgpUcmVhdGluZyB0aGlzIGFzIGEgc2ltcGxlIGhh c2ggdGFibGUgd2l0aCBvcGVuIGFkZHJlc3Npbmcgd291bGQgbm90IGJlCmVmZmljaWVudCwg ZXNwZWNpYWxseSBvbmNlIHRoZSBoYXNoIHRhYmxlIGlzIGdldHRpbmcgYWxtb3N0IGZ1bGwu IFRoZQp1c3VhbCBzb2x1dGlvbiBpcyB0byBncm93IHRoZSB0YWJsZSwgYnV0IGZvciBoYXNo IHRhYmxlcyBpbiBzaGFyZWQKbWVtb3J5IHRoYXQncyBub3QgdHJpdmlhbC4gSXQgd291bGQg YWxzbyBoYXZlIHdvcnNlIGxvY2FsaXR5LCBkdWUgdG8KbW9yZSByYW5kb20gYWNjZXNzLgoK THVja2lseSwgZmFzdC1wYXRoIGxvY2tpbmcgYWxyZWFkeSBoYXMgYSBzaW1wbGUgc29sdXRp b24gdG8gZGVhbCB3aXRoIGEKZnVsbCBoYXNoIHRhYmxlLiBUaGUgbG9jayBjYW4gYmUgc2lt cGx5IGluc2VydGVkIGludG8gdGhlIHNoYXJlZCBsb2NrCnRhYmxlLCBqdXN0IGxpa2UgYmVm b3JlLiBPZiBjb3Vyc2UsIGlmIHRoaXMgaGFwcGVucyB0b28gb2Z0ZW4sIHRoYXQKcmVkdWNl cyB0aGUgYmVuZWZpdCBvZiBmYXN0LXBhdGggbG9ja2luZy4KClRoaXMgcGF0Y2ggaGFyZC1j b2RlcyB0aGUgbnVtYmVyIG9mIGdyb3VwcyB0byA2NCwgd2hpY2ggbWVhbnMgMTAyNApmYXN0 LXBhdGggbG9ja3MuIEFzIGFsbCB0aGUgaW5mb3JtYXRpb24gaXMgc3RpbGwgc3RvcmVkIGlu IFBHUFJPQywgdGhpcwpncm93cyBQR1BST0MgYnkgYWJvdXQgNC41a0IgKGZyb20gfjg0MEIg dG8gfjVrQikuIFRoaXMgaXMgYSB0cmFkZSBvZmYKZXhjaGFuZ2luZyBtZW1vcnkgZm9yIGNo ZWFwZXIgbG9ja2luZy4KClVsdGltYXRlbHksIHRoZSBudW1iZXIgb2YgZmFzdC1wYXRoIHNs b3RzIHNob3VsZCBub3QgYmUgaGFyZCBjb2RlZCwgYnV0CmFkanVzdGFibGUgYmFzZWQgb24g d2hhdCB0aGUgd29ya2xvYWQgZG9lcywgcGVyaGFwcyB1c2luZyBhIEdVQy4gVGhhdApob3dl dmVyIG1lYW5zIGl0IGNhbid0IGJlIHN0b3JlZCBpbiBQR1BST0MgZGlyZWN0bHkuCi0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyB8IDExOCArKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICB8ICAg OCArKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IDgzYjk5YTk4ZjA4Li5kMDUz YWUwYzQwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCkBAIC0xNjcsNyArMTY3LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgVHdvUGhhc2VMb2NrUmVjb3JkCiAgKiBvdXIgbG9ja3MgdG8g dGhlIHByaW1hcnkgbG9jayB0YWJsZSwgYnV0IGl0IGNhbiBuZXZlciBiZSBsb3dlciB0aGFu IHRoZQogICogcmVhbCB2YWx1ZSwgc2luY2Ugb25seSB3ZSBjYW4gYWNxdWlyZSBsb2NrcyBv biBvdXIgb3duIGJlaGFsZi4KICAqLwotc3RhdGljIGludAlGYXN0UGF0aExvY2FsVXNlQ291 bnQgPSAwOworc3RhdGljIGludAlGYXN0UGF0aExvY2FsVXNlQ291bnRzW0ZQX0xPQ0tfR1JP VVBTX1BFUl9CQUNLRU5EXTsKIAogLyoKICAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIHJl bGF0aW9uIGV4dGVuc2lvbiBsb2NrIGlzIGhlbGQgYnkgdGhpcyBiYWNrZW5kLgpAQCAtMTg0 LDIzICsxODQsNTMgQEAgc3RhdGljIGludAlGYXN0UGF0aExvY2FsVXNlQ291bnQgPSAwOwog ICovCiBzdGF0aWMgYm9vbCBJc1JlbGF0aW9uRXh0ZW5zaW9uTG9ja0hlbGQgUEdfVVNFRF9G T1JfQVNTRVJUU19PTkxZID0gZmFsc2U7CiAKKy8qCisgKiBNYWNyb3MgdG8gY2FsY3VsYXRl IHRoZSBncm91cCBhbmQgaW5kZXggZm9yIGEgcmVsYXRpb24uCisgKgorICogVGhlIGZvcm11 bGEgaXMgYSBzaW1wbGUgaGFzaCBmdW5jdGlvbiwgZGVzaWduZWQgdG8gc3ByZWFkIHRoZSBP SURzIGEgYml0LAorICogc28gdGhhdCBldmVuIGNvbnRpZ3VvdXMgdmFsdWVzIGVuZCB1cCBp biBkaWZmZXJlbnQgZ3JvdXBzLiBJbiBtb3N0IGNhc2VzCisgKiB0aGVyZSB3aWxsIGJlIGdh cHMgYW55d2F5LCBidXQgdGhlIG11bHRpcGxpY2F0aW9uIHNob3VsZCBoZWxwIGEgYml0Lgor ICoKKyAqIFRoZSBzZWxlY3RlZCB2YWx1ZSAoNDkxNTcpIGlzIGEgcHJpbWUgbm90IHRvbyBj bG9zZSB0byAyXmssIGFuZCBpdCdzCisgKiBzbWFsbCBlbm91Z2ggdG8gbm90IGNhdXNlIG92 ZXJmbG93cyAoaW4gNjQtYml0KS4KKyAqLworI2RlZmluZSBGQVNUX1BBVEhfTE9DS19SRUxf R1JPVVAocmVsKSBcCisJKCgodWludDY0KSAocmVsKSAqIDQ5MTU3KSAlIEZQX0xPQ0tfR1JP VVBTX1BFUl9CQUNLRU5EKQorCisvKiBDYWxjdWxhdGUgaW5kZXggaW4gdGhlIHdob2xlIHBl ci1iYWNrZW5kIGFycmF5IG9mIGxvY2sgc2xvdHMuICovCisjZGVmaW5lIEZQX0xPQ0tfU0xP VF9JTkRFWChncm91cCwgaW5kZXgpIFwKKwkoQXNzZXJ0TWFjcm8oKChncm91cCkgPj0gMCkg JiYgKChncm91cCkgPCBGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORCkpLCBcCisJIEFzc2Vy dE1hY3JvKCgoaW5kZXgpID49IDApICYmICgoaW5kZXgpIDwgRlBfTE9DS19TTE9UU19QRVJf R1JPVVApKSwgXAorCSAoKGdyb3VwKSAqIEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQICsgKGlu ZGV4KSkpCisKKy8qCisgKiBHaXZlbiBhIGxvY2sgaW5kZXggKGludG8gdGhlIHBlci1iYWNr ZW5kIGFycmF5KSwgY2FsY3VsYXRlZCB1c2luZyB0aGUKKyAqIEZQX0xPQ0tfU0xPVF9JTkRF WCBtYWNybywgY2FsY3VsYXRlIGdyb3VwIGFuZCBpbmRleCAod2l0aGluIHRoZSBncm91cCku CisgKi8KKyNkZWZpbmUgRkFTVF9QQVRIX0xPQ0tfR1JPVVAoaW5kZXgpCVwKKwkoQXNzZXJ0 TWFjcm8oKChpbmRleCkgPj0gMCkgJiYgKChpbmRleCkgPCBGUF9MT0NLX1NMT1RTX1BFUl9C QUNLRU5EKSksIFwKKwkgKChpbmRleCkgLyBGUF9MT0NLX1NMT1RTX1BFUl9HUk9VUCkpCisj ZGVmaW5lIEZBU1RfUEFUSF9MT0NLX0lOREVYKGluZGV4KQlcCisJKEFzc2VydE1hY3JvKCgo aW5kZXgpID49IDApICYmICgoaW5kZXgpIDwgRlBfTE9DS19TTE9UU19QRVJfQkFDS0VORCkp LCBcCisJICgoaW5kZXgpICUgRlBfTE9DS19TTE9UU19QRVJfR1JPVVApKQorCiAvKiBNYWNy b3MgZm9yIG1hbmlwdWxhdGluZyBwcm9jLT5mcExvY2tCaXRzICovCiAjZGVmaW5lIEZBU1Rf UEFUSF9CSVRTX1BFUl9TTE9UCQkJMwogI2RlZmluZSBGQVNUX1BBVEhfTE9DS05VTUJFUl9P RkZTRVQJCTEKICNkZWZpbmUgRkFTVF9QQVRIX01BU0sJCQkJCSgoMSA8PCBGQVNUX1BBVEhf QklUU19QRVJfU0xPVCkgLSAxKQogI2RlZmluZSBGQVNUX1BBVEhfR0VUX0JJVFMocHJvYywg bikgXAotCSgoKHByb2MpLT5mcExvY2tCaXRzID4+IChGQVNUX1BBVEhfQklUU19QRVJfU0xP VCAqIG4pKSAmIEZBU1RfUEFUSF9NQVNLKQorCSgoKHByb2MpLT5mcExvY2tCaXRzWyhuKS8x Nl0gPj4gKEZBU1RfUEFUSF9CSVRTX1BFUl9TTE9UICogRkFTVF9QQVRIX0xPQ0tfSU5ERVgo bikpKSAmIEZBU1RfUEFUSF9NQVNLKQogI2RlZmluZSBGQVNUX1BBVEhfQklUX1BPU0lUSU9O KG4sIGwpIFwKIAkoQXNzZXJ0TWFjcm8oKGwpID49IEZBU1RfUEFUSF9MT0NLTlVNQkVSX09G RlNFVCksIFwKIAkgQXNzZXJ0TWFjcm8oKGwpIDwgRkFTVF9QQVRIX0JJVFNfUEVSX1NMT1Qr RkFTVF9QQVRIX0xPQ0tOVU1CRVJfT0ZGU0VUKSwgXAogCSBBc3NlcnRNYWNybygobikgPCBG UF9MT0NLX1NMT1RTX1BFUl9CQUNLRU5EKSwgXAotCSAoKGwpIC0gRkFTVF9QQVRIX0xPQ0tO VU1CRVJfT0ZGU0VUICsgRkFTVF9QQVRIX0JJVFNfUEVSX1NMT1QgKiAobikpKQorCSAoKGwp IC0gRkFTVF9QQVRIX0xPQ0tOVU1CRVJfT0ZGU0VUICsgRkFTVF9QQVRIX0JJVFNfUEVSX1NM T1QgKiAoRkFTVF9QQVRIX0xPQ0tfSU5ERVgobikpKSkKICNkZWZpbmUgRkFTVF9QQVRIX1NF VF9MT0NLTU9ERShwcm9jLCBuLCBsKSBcCi0JIChwcm9jKS0+ZnBMb2NrQml0cyB8PSBVSU5U NjRDT05TVCgxKSA8PCBGQVNUX1BBVEhfQklUX1BPU0lUSU9OKG4sIGwpCisJIChwcm9jKS0+ ZnBMb2NrQml0c1tGQVNUX1BBVEhfTE9DS19HUk9VUChuKV0gfD0gVUlOVDY0Q09OU1QoMSkg PDwgRkFTVF9QQVRIX0JJVF9QT1NJVElPTihuLCBsKQogI2RlZmluZSBGQVNUX1BBVEhfQ0xF QVJfTE9DS01PREUocHJvYywgbiwgbCkgXAotCSAocHJvYyktPmZwTG9ja0JpdHMgJj0gfihV SU5UNjRDT05TVCgxKSA8PCBGQVNUX1BBVEhfQklUX1BPU0lUSU9OKG4sIGwpKQorCSAocHJv YyktPmZwTG9ja0JpdHNbRkFTVF9QQVRIX0xPQ0tfR1JPVVAobildICY9IH4oVUlOVDY0Q09O U1QoMSkgPDwgRkFTVF9QQVRIX0JJVF9QT1NJVElPTihuLCBsKSkKICNkZWZpbmUgRkFTVF9Q QVRIX0NIRUNLX0xPQ0tNT0RFKHByb2MsIG4sIGwpIFwKLQkgKChwcm9jKS0+ZnBMb2NrQml0 cyAmIChVSU5UNjRDT05TVCgxKSA8PCBGQVNUX1BBVEhfQklUX1BPU0lUSU9OKG4sIGwpKSkK KwkgKChwcm9jKS0+ZnBMb2NrQml0c1tGQVNUX1BBVEhfTE9DS19HUk9VUChuKV0gJiAoVUlO VDY0Q09OU1QoMSkgPDwgRkFTVF9QQVRIX0JJVF9QT1NJVElPTihuLCBsKSkpCiAKIC8qCiAg KiBUaGUgZmFzdC1wYXRoIGxvY2sgbWVjaGFuaXNtIGlzIGNvbmNlcm5lZCBvbmx5IHdpdGgg cmVsYXRpb24gbG9ja3Mgb24KQEAgLTkyNiw3ICs5NTYsNyBAQCBMb2NrQWNxdWlyZUV4dGVu ZGVkKGNvbnN0IExPQ0tUQUcgKmxvY2t0YWcsCiAJICogZm9yIG5vdyB3ZSBkb24ndCB3b3Jy eSBhYm91dCB0aGF0IGNhc2UgZWl0aGVyLgogCSAqLwogCWlmIChFbGlnaWJsZUZvclJlbGF0 aW9uRmFzdFBhdGgobG9ja3RhZywgbG9ja21vZGUpICYmCi0JCUZhc3RQYXRoTG9jYWxVc2VD b3VudCA8IEZQX0xPQ0tfU0xPVFNfUEVSX0JBQ0tFTkQpCisJCUZhc3RQYXRoTG9jYWxVc2VD b3VudHNbRkFTVF9QQVRIX0xPQ0tfUkVMX0dST1VQKGxvY2t0YWctPmxvY2t0YWdfZmllbGQy KV0gPCBGUF9MT0NLX1NMT1RTX1BFUl9HUk9VUCkKIAl7CiAJCXVpbnQzMgkJZmFzdGhhc2hj b2RlID0gRmFzdFBhdGhTdHJvbmdMb2NrSGFzaFBhcnRpdGlvbihoYXNoY29kZSk7CiAJCWJv b2wJCWFjcXVpcmVkOwpAQCAtMTk3MCw2ICsyMDAwLDcgQEAgTG9ja1JlbGVhc2UoY29uc3Qg TE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgc2Vzc2lvbkxvY2sp CiAJUFJPQ0xPQ0sgICAqcHJvY2xvY2s7CiAJTFdMb2NrCSAgICpwYXJ0aXRpb25Mb2NrOwog CWJvb2wJCXdha2V1cE5lZWRlZDsKKwlpbnQJCQlncm91cDsKIAogCWlmIChsb2NrbWV0aG9k aWQgPD0gMCB8fCBsb2NrbWV0aG9kaWQgPj0gbGVuZ3Rob2YoTG9ja01ldGhvZHMpKQogCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGxvY2sgbWV0aG9kOiAlZCIsIGxvY2ttZXRob2Rp ZCk7CkBAIC0yMDYzLDkgKzIwOTQsMTIgQEAgTG9ja1JlbGVhc2UoY29uc3QgTE9DS1RBRyAq bG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgc2Vzc2lvbkxvY2spCiAJICovCiAJ bG9jYWxsb2NrLT5sb2NrQ2xlYXJlZCA9IGZhbHNlOwogCisJLyogZmFzdC1wYXRoIGdyb3Vw IHRoZSBsb2NrIGJlbG9uZ3MgdG8gKi8KKwlncm91cCA9IEZBU1RfUEFUSF9MT0NLX1JFTF9H Uk9VUChsb2NrdGFnLT5sb2NrdGFnX2ZpZWxkMik7CisKIAkvKiBBdHRlbXB0IGZhc3QgcmVs ZWFzZSBvZiBhbnkgbG9jayBlbGlnaWJsZSBmb3IgdGhlIGZhc3QgcGF0aC4gKi8KIAlpZiAo RWxpZ2libGVGb3JSZWxhdGlvbkZhc3RQYXRoKGxvY2t0YWcsIGxvY2ttb2RlKSAmJgotCQlG YXN0UGF0aExvY2FsVXNlQ291bnQgPiAwKQorCQlGYXN0UGF0aExvY2FsVXNlQ291bnRzW2dy b3VwXSA+IDApCiAJewogCQlib29sCQlyZWxlYXNlZDsKIApAQCAtMjYzMywxMiArMjY2Nywy MSBAQCBMb2NrUmVhc3NpZ25Pd25lcihMT0NBTExPQ0sgKmxvY2FsbG9jaywgUmVzb3VyY2VP d25lciBwYXJlbnQpCiBzdGF0aWMgYm9vbAogRmFzdFBhdGhHcmFudFJlbGF0aW9uTG9jayhP aWQgcmVsaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogewotCXVpbnQzMgkJZjsKIAl1aW50MzIJ CXVudXNlZF9zbG90ID0gRlBfTE9DS19TTE9UU19QRVJfQkFDS0VORDsKKwl1aW50MzIJCWks CisJCQkJZ3JvdXA7CisKKwkvKiBmYXN0LXBhdGggZ3JvdXAgdGhlIGxvY2sgYmVsb25ncyB0 byAqLworCWdyb3VwID0gRkFTVF9QQVRIX0xPQ0tfUkVMX0dST1VQKHJlbGlkKTsKIAogCS8q IFNjYW4gZm9yIGV4aXN0aW5nIGVudHJ5IGZvciB0aGlzIHJlbGlkLCByZW1lbWJlcmluZyBl bXB0eSBzbG90LiAqLwotCWZvciAoZiA9IDA7IGYgPCBGUF9MT0NLX1NMT1RTX1BFUl9CQUNL RU5EOyBmKyspCisJZm9yIChpID0gMDsgaSA8IEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQOyBp KyspCiAJeworCQl1aW50MzIJCWY7CisKKwkJLyogaW5kZXggaW50byB0aGUgd2hvbGUgcGVy LWJhY2tlbmQgYXJyYXkgKi8KKwkJZiA9IEZQX0xPQ0tfU0xPVF9JTkRFWChncm91cCwgaSk7 CisKIAkJaWYgKEZBU1RfUEFUSF9HRVRfQklUUyhNeVByb2MsIGYpID09IDApCiAJCQl1bnVz ZWRfc2xvdCA9IGY7CiAJCWVsc2UgaWYgKE15UHJvYy0+ZnBSZWxJZFtmXSA9PSByZWxpZCkK QEAgLTI2NTQsNyArMjY5Nyw3IEBAIEZhc3RQYXRoR3JhbnRSZWxhdGlvbkxvY2soT2lkIHJl bGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAl7CiAJCU15UHJvYy0+ZnBSZWxJZFt1bnVzZWRf c2xvdF0gPSByZWxpZDsKIAkJRkFTVF9QQVRIX1NFVF9MT0NLTU9ERShNeVByb2MsIHVudXNl ZF9zbG90LCBsb2NrbW9kZSk7Ci0JCSsrRmFzdFBhdGhMb2NhbFVzZUNvdW50OworCQkrK0Zh c3RQYXRoTG9jYWxVc2VDb3VudHNbZ3JvdXBdOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKQEAg LTI2NzAsMTIgKzI3MTMsMjEgQEAgRmFzdFBhdGhHcmFudFJlbGF0aW9uTG9jayhPaWQgcmVs aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogc3RhdGljIGJvb2wKIEZhc3RQYXRoVW5HcmFudFJl bGF0aW9uTG9jayhPaWQgcmVsaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogewotCXVpbnQzMgkJ ZjsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsKKwl1aW50MzIJCWksCisJCQkJZ3JvdXA7CiAK LQlGYXN0UGF0aExvY2FsVXNlQ291bnQgPSAwOwotCWZvciAoZiA9IDA7IGYgPCBGUF9MT0NL X1NMT1RTX1BFUl9CQUNLRU5EOyBmKyspCisJLyogZmFzdC1wYXRoIGdyb3VwIHRoZSBsb2Nr IGJlbG9uZ3MgdG8gKi8KKwlncm91cCA9IEZBU1RfUEFUSF9MT0NLX1JFTF9HUk9VUChyZWxp ZCk7CisKKwlGYXN0UGF0aExvY2FsVXNlQ291bnRzW2dyb3VwXSA9IDA7CisJZm9yIChpID0g MDsgaSA8IEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQOyBpKyspCiAJeworCQl1aW50MzIJCWY7 CisKKwkJLyogaW5kZXggaW50byB0aGUgd2hvbGUgcGVyLWJhY2tlbmQgYXJyYXkgKi8KKwkJ ZiA9IEZQX0xPQ0tfU0xPVF9JTkRFWChncm91cCwgaSk7CisKIAkJaWYgKE15UHJvYy0+ZnBS ZWxJZFtmXSA9PSByZWxpZAogCQkJJiYgRkFTVF9QQVRIX0NIRUNLX0xPQ0tNT0RFKE15UHJv YywgZiwgbG9ja21vZGUpKQogCQl7CkBAIC0yNjg1LDcgKzI3MzcsNyBAQCBGYXN0UGF0aFVu R3JhbnRSZWxhdGlvbkxvY2soT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJCS8q IHdlIGNvbnRpbnVlIGl0ZXJhdGluZyBzbyBhcyB0byB1cGRhdGUgRmFzdFBhdGhMb2NhbFVz ZUNvdW50ICovCiAJCX0KIAkJaWYgKEZBU1RfUEFUSF9HRVRfQklUUyhNeVByb2MsIGYpICE9 IDApCi0JCQkrK0Zhc3RQYXRoTG9jYWxVc2VDb3VudDsKKwkJCSsrRmFzdFBhdGhMb2NhbFVz ZUNvdW50c1tncm91cF07CiAJfQogCXJldHVybiByZXN1bHQ7CiB9CkBAIC0yNzE0LDcgKzI3 NjYsOCBAQCBGYXN0UGF0aFRyYW5zZmVyUmVsYXRpb25Mb2NrcyhMb2NrTWV0aG9kIGxvY2tN ZXRob2RUYWJsZSwgY29uc3QgTE9DS1RBRyAqbG9ja3RhZwogCWZvciAoaSA9IDA7IGkgPCBQ cm9jR2xvYmFsLT5hbGxQcm9jQ291bnQ7IGkrKykKIAl7CiAJCVBHUFJPQwkgICAqcHJvYyA9 ICZQcm9jR2xvYmFsLT5hbGxQcm9jc1tpXTsKLQkJdWludDMyCQlmOworCQl1aW50MzIJCWos CisJCQkJCWdyb3VwOwogCiAJCUxXTG9ja0FjcXVpcmUoJnByb2MtPmZwSW5mb0xvY2ssIExX X0VYQ0xVU0lWRSk7CiAKQEAgLTI3MzksOSArMjc5MiwxNiBAQCBGYXN0UGF0aFRyYW5zZmVy UmVsYXRpb25Mb2NrcyhMb2NrTWV0aG9kIGxvY2tNZXRob2RUYWJsZSwgY29uc3QgTE9DS1RB RyAqbG9ja3RhZwogCQkJY29udGludWU7CiAJCX0KIAotCQlmb3IgKGYgPSAwOyBmIDwgRlBf TE9DS19TTE9UU19QRVJfQkFDS0VORDsgZisrKQorCQkvKiBmYXN0LXBhdGggZ3JvdXAgdGhl IGxvY2sgYmVsb25ncyB0byAqLworCQlncm91cCA9IEZBU1RfUEFUSF9MT0NLX1JFTF9HUk9V UChyZWxpZCk7CisKKwkJZm9yIChqID0gMDsgaiA8IEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQ OyBqKyspCiAJCXsKIAkJCXVpbnQzMgkJbG9ja21vZGU7CisJCQl1aW50MzIJCWY7CisKKwkJ CS8qIGluZGV4IGludG8gdGhlIHdob2xlIHBlci1iYWNrZW5kIGFycmF5ICovCisJCQlmID0g RlBfTE9DS19TTE9UX0lOREVYKGdyb3VwLCBqKTsKIAogCQkJLyogTG9vayBmb3IgYW4gYWxs b2NhdGVkIHNsb3QgbWF0Y2hpbmcgdGhlIGdpdmVuIHJlbGlkLiAqLwogCQkJaWYgKHJlbGlk ICE9IHByb2MtPmZwUmVsSWRbZl0gfHwgRkFTVF9QQVRIX0dFVF9CSVRTKHByb2MsIGYpID09 IDApCkBAIC0yNzkzLDEzICsyODUzLDIxIEBAIEZhc3RQYXRoR2V0UmVsYXRpb25Mb2NrRW50 cnkoTE9DQUxMT0NLICpsb2NhbGxvY2spCiAJUFJPQ0xPQ0sgICAqcHJvY2xvY2sgPSBOVUxM OwogCUxXTG9jawkgICAqcGFydGl0aW9uTG9jayA9IExvY2tIYXNoUGFydGl0aW9uTG9jayhs b2NhbGxvY2stPmhhc2hjb2RlKTsKIAlPaWQJCQlyZWxpZCA9IGxvY2t0YWctPmxvY2t0YWdf ZmllbGQyOwotCXVpbnQzMgkJZjsKKwl1aW50MzIJCWksCisJCQkJZ3JvdXA7CisKKwkvKiBm YXN0LXBhdGggZ3JvdXAgdGhlIGxvY2sgYmVsb25ncyB0byAqLworCWdyb3VwID0gRkFTVF9Q QVRIX0xPQ0tfUkVMX0dST1VQKHJlbGlkKTsKIAogCUxXTG9ja0FjcXVpcmUoJk15UHJvYy0+ ZnBJbmZvTG9jaywgTFdfRVhDTFVTSVZFKTsKIAotCWZvciAoZiA9IDA7IGYgPCBGUF9MT0NL X1NMT1RTX1BFUl9CQUNLRU5EOyBmKyspCisJZm9yIChpID0gMDsgaSA8IEZQX0xPQ0tfU0xP VFNfUEVSX0dST1VQOyBpKyspCiAJewogCQl1aW50MzIJCWxvY2ttb2RlOworCQl1aW50MzIJ CWY7CisKKwkJLyogaW5kZXggaW50byB0aGUgd2hvbGUgcGVyLWJhY2tlbmQgYXJyYXkgKi8K KwkJZiA9IEZQX0xPQ0tfU0xPVF9JTkRFWChncm91cCwgaSk7CiAKIAkJLyogTG9vayBmb3Ig YW4gYWxsb2NhdGVkIHNsb3QgbWF0Y2hpbmcgdGhlIGdpdmVuIHJlbGlkLiAqLwogCQlpZiAo cmVsaWQgIT0gTXlQcm9jLT5mcFJlbElkW2ZdIHx8IEZBU1RfUEFUSF9HRVRfQklUUyhNeVBy b2MsIGYpID09IDApCkBAIC0yOTAzLDYgKzI5NzEsMTAgQEAgR2V0TG9ja0NvbmZsaWN0cyhj b25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwgaW50ICpjb3VudHAp CiAJTFdMb2NrCSAgICpwYXJ0aXRpb25Mb2NrOwogCWludAkJCWNvdW50ID0gMDsKIAlpbnQJ CQlmYXN0X2NvdW50ID0gMDsKKwl1aW50MzIJCWdyb3VwOworCisJLyogZmFzdC1wYXRoIGdy b3VwIHRoZSBsb2NrIGJlbG9uZ3MgdG8gKi8KKwlncm91cCA9IEZBU1RfUEFUSF9MT0NLX1JF TF9HUk9VUChsb2NrdGFnLT5sb2NrdGFnX2ZpZWxkMik7CiAKIAlpZiAobG9ja21ldGhvZGlk IDw9IDAgfHwgbG9ja21ldGhvZGlkID49IGxlbmd0aG9mKExvY2tNZXRob2RzKSkKIAkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBsb2NrIG1ldGhvZDogJWQiLCBsb2NrbWV0aG9kaWQp OwpAQCAtMjk1Nyw3ICszMDI5LDcgQEAgR2V0TG9ja0NvbmZsaWN0cyhjb25zdCBMT0NLVEFH ICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwgaW50ICpjb3VudHApCiAJCWZvciAoaSA9 IDA7IGkgPCBQcm9jR2xvYmFsLT5hbGxQcm9jQ291bnQ7IGkrKykKIAkJewogCQkJUEdQUk9D CSAgICpwcm9jID0gJlByb2NHbG9iYWwtPmFsbFByb2NzW2ldOwotCQkJdWludDMyCQlmOwor CQkJdWludDMyCQlqOwogCiAJCQkvKiBBIGJhY2tlbmQgbmV2ZXIgYmxvY2tzIGl0c2VsZiAq LwogCQkJaWYgKHByb2MgPT0gTXlQcm9jKQpAQCAtMjk3OSw5ICszMDUxLDEzIEBAIEdldExv Y2tDb25mbGljdHMoY29uc3QgTE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21vZGUs IGludCAqY291bnRwKQogCQkJCWNvbnRpbnVlOwogCQkJfQogCi0JCQlmb3IgKGYgPSAwOyBm IDwgRlBfTE9DS19TTE9UU19QRVJfQkFDS0VORDsgZisrKQorCQkJZm9yIChqID0gMDsgaiA8 IEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQOyBqKyspCiAJCQl7CiAJCQkJdWludDMyCQlsb2Nr bWFzazsKKwkJCQl1aW50MzIJCWY7CisKKwkJCQkvKiBpbmRleCBpbnRvIHRoZSB3aG9sZSBw ZXItYmFja2VuZCBhcnJheSAqLworCQkJCWYgPSBGUF9MT0NLX1NMT1RfSU5ERVgoZ3JvdXAs IGopOwogCiAJCQkJLyogTG9vayBmb3IgYW4gYWxsb2NhdGVkIHNsb3QgbWF0Y2hpbmcgdGhl IGdpdmVuIHJlbGlkLiAqLwogCQkJCWlmIChyZWxpZCAhPSBwcm9jLT5mcFJlbElkW2ZdKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3Byb2MuaAppbmRleCBkZWViMDZjOWUwMS4uODQ1MDU4ZGE5ZmEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvYy5oCkBAIC04Myw4ICs4Myw5IEBAIHN0cnVjdCBYaWRDYWNoZQogICogcmF0aGVy IHRoYW4gdGhlIG1haW4gbG9jayB0YWJsZS4gIFRoaXMgZWFzZXMgY29udGVudGlvbiBvbiB0 aGUgbG9jawogICogbWFuYWdlciBMV0xvY2tzLiAgU2VlIHN0b3JhZ2UvbG1nci9SRUFETUUg Zm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KICAqLwotI2RlZmluZQkJRlBfTE9DS19TTE9UU19Q RVJfQkFDS0VORCAxNgotCisjZGVmaW5lCQlGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORAk2 NAorI2RlZmluZQkJRlBfTE9DS19TTE9UU19QRVJfR1JPVVAJCTE2CS8qIGRvbid0IGNoYW5n ZSAqLworI2RlZmluZQkJRlBfTE9DS19TTE9UU19QRVJfQkFDS0VORAkoRlBfTE9DS19TTE9U U19QRVJfR1JPVVAgKiBGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORCkKIC8qCiAgKiBGbGFn cyBmb3IgUEdQUk9DLmRlbGF5Q2hrcHRGbGFncwogICoKQEAgLTI5Miw3ICsyOTMsOCBAQCBz dHJ1Y3QgUEdQUk9DCiAKIAkvKiBMb2NrIG1hbmFnZXIgZGF0YSwgcmVjb3JkaW5nIGZhc3Qt cGF0aCBsb2NrcyB0YWtlbiBieSB0aGlzIGJhY2tlbmQuICovCiAJTFdMb2NrCQlmcEluZm9M b2NrOwkJLyogcHJvdGVjdHMgcGVyLWJhY2tlbmQgZmFzdC1wYXRoIHN0YXRlICovCi0JdWlu dDY0CQlmcExvY2tCaXRzOwkJLyogbG9jayBtb2RlcyBoZWxkIGZvciBlYWNoIGZhc3QtcGF0 aCBzbG90ICovCisJdWludDY0CQlmcExvY2tCaXRzW0ZQX0xPQ0tfR1JPVVBTX1BFUl9CQUNL RU5EXTsgLyogbG9jayBtb2RlcyBoZWxkIGZvcgorCQkJCQkJCQkJCQkJCQkgKiBlYWNoIGZh c3QtcGF0aCBzbG90ICovCiAJT2lkCQkJZnBSZWxJZFtGUF9MT0NLX1NMT1RTX1BFUl9CQUNL RU5EXTsgLyogc2xvdHMgZm9yIHJlbCBvaWRzICovCiAJYm9vbAkJZnBWWElETG9jazsJCS8q IGFyZSB3ZSBob2xkaW5nIGEgZmFzdC1wYXRoIFZYSUQgbG9jaz8gKi8KIAlMb2NhbFRyYW5z YWN0aW9uSWQgZnBMb2NhbFRyYW5zYWN0aW9uSWQ7CS8qIGx4aWQgZm9yIGZhc3QtcGF0aCBW WElECi0tIAoyLjQ2LjAKCg== --------------i906kgiIZdnsdVGZL1cejXDT Content-Type: text/x-patch; charset=UTF-8; name="v20240913-0002-Set-fast-path-slots-using-max_locks_per_tr.patch" Content-Disposition: attachment; filename*0="v20240913-0002-Set-fast-path-slots-using-max_locks_per_tr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0NmMyZWMwMDAxNzgyMWEzMmIwZjlmYmE4ZTU2YjJhZDQ2ZDlkMjM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVGh1LCAxMiBTZXAgMjAyNCAyMzowOTo1MCArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjQwOTEzIDIvMl0gU2V0IGZhc3QtcGF0aCBzbG90cyB1c2luZwogbWF4X2xvY2tzX3Bl cl90cmFuc2FjdGlvbgoKSW5zdGVhZCBvZiB1c2luZyBhIGhhcmQtY29kZWQgdmFsdWUgb2Yg NjQgZ3JvdXBzICgxMDI0IGZhc3QtcGF0aCBzbG90cyksCmRldGVybWluZSB0aGUgdmFsdWUg YmFzZWQgb24gbWF4X2xvY2tzX3Blcl90cmFuc2FjdGlvbiBHVUMuIFRoaXMgc2l6ZQppcyBj YWxjdWxhdGVkIGF0IHN0YXJ0dXAsIGJlZm9yZSBhbGxvY2F0aW5nIHNoYXJlZCBtZW1vcnku CgpUaGUgZGVmYXVsdCB2YWx1ZSBvZiBtYXhfbG9ja3NfcGVyX3RyYW5zYWN0aW9uIHZhbHVl IGlzIDY0LCB3aGljaCBtZWFucwo0IGdyb3VwcyBvZiBmYXN0LXBhdGggbG9ja3MuCgpUaGUg cHVycG9zZSBvZiB0aGUgbWF4X2xvY2tzX3Blcl90cmFuc2FjdGlvbiBHVUMgaXMgdG8gc2l6 ZSB0aGUgc2hhcmVkCmxvY2sgdGFibGUsIGJ1dCBpdCdzIHRoZSBiZXN0IGluZm9ybWF0aW9u IGFib3V0IHRoZSBleHBlY3RlZCBudW1iZXIgb2YKbG9ja3MgYXZhaWxhYmxlLiBJdCBpcyBv ZnRlbiBzZXQgdG8gYW4gYXZlcmFnZSBudW1iZXIgb2YgbG9ja3MgbmVlZGVkIGJ5CmEgYmFj a2VuZCwgYnV0IHNvbWUgYmFja2VuZHMgbWF5IG5lZWQgc3Vic3RhbnRpYWxseSBmZXdlci9t b3JlIGxvY2tzLgoKVGhpcyBtZWFucyBmYXN0LXBhdGggY2FwYWNpdHkgY2FsY3VsYXRlZCBm cm9tIG1heF9sb2Nrc19wZXJfdHJhbnNhY3Rpb24KbWF5IG5vdCBiZSBzdWZmaWNpZW50IGZv ciBzb21lIGJhY2tlbmRzLCBmb3JjaW5nIHVzZSBvZiB0aGUgc2hhcmVkIGxvY2sKdGFibGUu IFRoZSBhc3N1bXB0aW9uIGlzIHRoaXMgaXMgbm90IGEgbWFqb3IgaXNzdWUgLSB0aGVyZSBj YW4ndCBiZSB0b28KbWFueSBvZiBzdWNoIGJhY2tlbmRzLCBvdGhlcndpc2UgdGhlIG1heF9s b2Nrc19wZXJfdHJhbnNhY3Rpb24gd291bGQKbmVlZCB0byBiZSBoaWdoZXIgYW55d2F5IChy ZXNvbHZpbmcgdGhlIGZhc3QtcGF0aCBpc3N1ZSB0b28pLgoKSWYgdGhhdCBoYXBwZW5zIHRv IGJlIGEgcHJvYmxlbSwgdGhlIG9ubHkgc29sdXRpb24gaXMgdG8gaW5jcmVhc2UgdGhlCkdV QywgZXZlbiBpZiB0aGUgc2hhcmVkIGxvY2sgdGFibGUgaGFkIHN1ZmZpY2llbnQgY2FwYWNp dHkuIFRoYXQgaXMgbm90CmZyZWUsIGJlY2F1c2UgZWFjaCBsb2NrIGluIHRoZSBzaGFyZWQg bG9jayB0YWJsZSByZXF1aXJlcyBhYm91dCA1MDBCLgpXaXRoIG1hbnkgYmFja2VuZHMgdGhp cyBtYXkgYmUgYSBzdWJzdGFudGlhbCBhbW91bnQgb2YgbWVtb3J5LCBidXQgdGhlbgphZ2Fp biAtIHRoYXQgc2hvdWxkIG9ubHkgaGFwcGVuIG9uIG1hY2hpbmVzIHdpdGggcGxlbnR5IG9m IG1lbW9yeS4KCkluIHRoZSBmdXR1cmUgd2UgY2FuIGNvbnNpZGVyIGEgc2VwYXJhdGUgR1VD IGZvciB0aGUgbnVtYmVyIG9mIGZhc3QtcGF0aApzbG90cywgYnV0IGxldCdzIHRyeSB3aXRo b3V0IG9uZSBmaXJzdC4KCkFuIGFsdGVybmF0aXZlIHNvbHV0aW9uIG1pZ2h0IGJlIHRvIHNp emUgdGhlIGZhc3QtcGF0aCBhcnJheXMgZm9yIGEKbXVsdGlwbGUgb2YgbWF4X2xvY2tzX3Bl cl90cmFuc2FjdGlvbi4gVGhlIGNvc3Qgb2YgYWRkaW5nIGEgZmFzdC1wYXRoCnNsb3QgaXMg bXVjaCBsb3dlciAob25seSB+NUIgY29tcGFyZWQgdG8gfjUwMEIgcGVyIGVudHJ5KSwgc28g dGhpcyB3b3VsZApiZSBjaGVhcGVyIHRoYW4gaW5jcmVhc2luZyBtYXhfbG9ja3NfcGVyX3Ry YW5zYWN0aW9uLiBCdXQgaXQncyBub3QgY2xlYXIKd2hhdCBtdWx0aXBsZSBvZiBtYXhfbG9j a3NfcGVyX3RyYW5zYWN0aW9uIHRvIHVzZS4KLS0tCiBzcmMvYmFja2VuZC9ib290c3RyYXAv Ym9vdHN0cmFwLmMgICB8ICAyICsrCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuYyB8ICA1ICsrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jICAgICAgfCAg NiArKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICB8IDI4ICsrKysr KysrKysrKystLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICB8IDQ3 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMgICAgICAgICB8ICAzICsrCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0 LmMgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmggICAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAgICAg ICAgICB8IDExICsrKystLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyks IDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9i b290c3RyYXAuYyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCA3 NjM3NTgxYTE4NC4uZWQ1OWRmY2U4OTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3Rz dHJhcC9ib290c3RyYXAuYworKysgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFw LmMKQEAgLTMwOSw2ICszMDksOCBAQCBCb290c3RyYXBNb2RlTWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdLCBib29sIGNoZWNrX29ubHkpCiAKIAlJbml0aWFsaXplTWF4QmFja2VuZHMo KTsKIAorCUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7CisKIAlDcmVhdGVTaGFyZWRNZW1v cnlBbmRTZW1hcGhvcmVzKCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuYwppbmRleCA5NmJjMWQxY2ZlZC4uZjRhMTY1OTVkN2YgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC05MDMsNiArOTAzLDExIEBAIFBvc3RtYXN0ZXJNYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJSW5pdGlhbGl6ZU1heEJhY2tlbmRz KCk7CiAKKwkvKgorCSAqIEFsc28gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBmYXN0LXBh dGggbG9jayBhcnJheXMgaW4gUEdQUk9DLgorCSAqLworCUluaXRpYWxpemVGYXN0UGF0aExv Y2tzKCk7CisKIAkvKgogCSAqIEdpdmUgcHJlbG9hZGVkIGxpYnJhcmllcyBhIGNoYW5jZSB0 byByZXF1ZXN0IGFkZGl0aW9uYWwgc2hhcmVkIG1lbW9yeS4KIAkgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwY2kuYwppbmRleCA2Y2FlY2EzYThlNi4uMTBmYzE4ZjI1MjkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9pcGNpLmMKQEAgLTE3OCw2ICsxNzgsMTIgQEAgQXR0YWNoU2hhcmVkTWVtb3J5 U3RydWN0cyh2b2lkKQogCUFzc2VydChNeVByb2MgIT0gTlVMTCk7CiAJQXNzZXJ0KElzVW5k ZXJQb3N0bWFzdGVyKTsKIAorCS8qCisJICogSW4gRVhFQ19CQUNLRU5EIG1vZGUsIGJhY2tl bmRzIGRvbid0IGluaGVyaXQgdGhlIG51bWJlciBvZiBmYXN0LXBhdGgKKwkgKiBncm91cHMg d2UgY2FsY3VsYXRlZCBiZWZvcmUgc2V0dGluZyB0aGUgc2htZW0gdXAsIHNvIHJlY2FsY3Vs YXRlIGl0LgorCSAqLworCUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7CisKIAlDcmVhdGVP ckF0dGFjaFNobWVtU3RydWN0cygpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9sb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5j CmluZGV4IGQwNTNhZTBjNDA5Li41MDVhYTUyNjY4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG9jay5jCkBAIC0xNjYsOCArMTY2LDEzIEBAIHR5cGVkZWYgc3RydWN0IFR3b1BoYXNlTG9j a1JlY29yZAogICogbWlnaHQgYmUgaGlnaGVyIHRoYW4gdGhlIHJlYWwgbnVtYmVyIGlmIGFu b3RoZXIgYmFja2VuZCBoYXMgdHJhbnNmZXJyZWQKICAqIG91ciBsb2NrcyB0byB0aGUgcHJp bWFyeSBsb2NrIHRhYmxlLCBidXQgaXQgY2FuIG5ldmVyIGJlIGxvd2VyIHRoYW4gdGhlCiAg KiByZWFsIHZhbHVlLCBzaW5jZSBvbmx5IHdlIGNhbiBhY3F1aXJlIGxvY2tzIG9uIG91ciBv d24gYmVoYWxmLgorICoKKyAqIFhYWCBBbGxvY2F0ZSBhIHN0YXRpYyBhcnJheSBvZiB0aGUg bWF4aW11bSBzaXplLiBXZSBjb3VsZCBoYXZlIGEgcG9pbnRlcgorICogYW5kIHRoZW4gYWxs b2NhdGUganVzdCB0aGUgcmlnaHQgc2l6ZSB0byBzYXZlIGEgY291cGxlIGtCLCBidXQgdGhh dCBkb2VzCisgKiBub3Qgc2VlbSB3b3J0aCB0aGUgZXh0cmEgY29tcGxleGl0eSBvZiBoYXZp bmcgdG8gaW5pdGlhbGl6ZSBpdCBldGMuIFRoaXMKKyAqIHdheSBpdCBnZXRzIGluaXRpYWxp emVkIGF1dG9tYXRpY2FseS4KICAqLwotc3RhdGljIGludAlGYXN0UGF0aExvY2FsVXNlQ291 bnRzW0ZQX0xPQ0tfR1JPVVBTX1BFUl9CQUNLRU5EXTsKK3N0YXRpYyBpbnQJRmFzdFBhdGhM b2NhbFVzZUNvdW50c1tGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORF9NQVhdOwogCiAvKgog ICogRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgcmVsYXRpb24gZXh0ZW5zaW9uIGxvY2sgaXMg aGVsZCBieSB0aGlzIGJhY2tlbmQuCkBAIC0xODQsNiArMTg5LDE3IEBAIHN0YXRpYyBpbnQJ RmFzdFBhdGhMb2NhbFVzZUNvdW50c1tGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORF07CiAg Ki8KIHN0YXRpYyBib29sIElzUmVsYXRpb25FeHRlbnNpb25Mb2NrSGVsZCBQR19VU0VEX0ZP Ul9BU1NFUlRTX09OTFkgPSBmYWxzZTsKIAorLyoKKyAqIE51bWJlciBvZiBmYXN0LXBhdGgg bG9ja3MgcGVyIGJhY2tlbmQgLSBzaXplIG9mIHRoZSBhcnJheXMgaW4gUEdQUk9DLgorICog VGhpcyBpcyBzZXQgb25seSBvbmNlIGR1cmluZyBzdGFydCwgYmVmb3JlIGluaXRpYWxpemlu ZyBzaGFyZWQgbWVtb3J5LAorICogYW5kIHJlbWFpbnMgY29uc3RhbnQgYWZ0ZXIgdGhhdC4K KyAqCisgKiBXZSBzZXQgdGhlIGxpbWl0IGJhc2VkIG9uIG1heF9sb2Nrc19wZXJfdHJhbnNh Y3Rpb24gR1VDLCBiZWNhdXNlIHRoYXQncworICogdGhlIGJlc3QgaW5mb3JtYXRpb24gYWJv dXQgZXhwZWN0ZWQgbnVtYmVyIG9mIGxvY2tzIHBlciBiYWNrZW5kIHdlIGhhdmUuCisgKiBT ZWUgSW5pdGlhbGl6ZUZhc3RQYXRoTG9ja3MgZm9yIGRldGFpbHMuCisgKi8KK2ludAkJCUZh c3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgPSAwOworCiAvKgogICogTWFjcm9zIHRvIGNh bGN1bGF0ZSB0aGUgZ3JvdXAgYW5kIGluZGV4IGZvciBhIHJlbGF0aW9uLgogICoKQEAgLTE5 NSwxMSArMjExLDExIEBAIHN0YXRpYyBib29sIElzUmVsYXRpb25FeHRlbnNpb25Mb2NrSGVs ZCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBmYWxzZTsKICAqIHNtYWxsIGVub3VnaCB0 byBub3QgY2F1c2Ugb3ZlcmZsb3dzIChpbiA2NC1iaXQpLgogICovCiAjZGVmaW5lIEZBU1Rf UEFUSF9MT0NLX1JFTF9HUk9VUChyZWwpIFwKLQkoKCh1aW50NjQpIChyZWwpICogNDkxNTcp ICUgRlBfTE9DS19HUk9VUFNfUEVSX0JBQ0tFTkQpCisJKCgodWludDY0KSAocmVsKSAqIDQ5 MTU3KSAlIEZhc3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQpCiAKIC8qIENhbGN1bGF0ZSBp bmRleCBpbiB0aGUgd2hvbGUgcGVyLWJhY2tlbmQgYXJyYXkgb2YgbG9jayBzbG90cy4gKi8K ICNkZWZpbmUgRlBfTE9DS19TTE9UX0lOREVYKGdyb3VwLCBpbmRleCkgXAotCShBc3NlcnRN YWNybygoKGdyb3VwKSA+PSAwKSAmJiAoKGdyb3VwKSA8IEZQX0xPQ0tfR1JPVVBTX1BFUl9C QUNLRU5EKSksIFwKKwkoQXNzZXJ0TWFjcm8oKChncm91cCkgPj0gMCkgJiYgKChncm91cCkg PCBGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5kKSksIFwKIAkgQXNzZXJ0TWFjcm8oKChp bmRleCkgPj0gMCkgJiYgKChpbmRleCkgPCBGUF9MT0NLX1NMT1RTX1BFUl9HUk9VUCkpLCBc CiAJICgoZ3JvdXApICogRlBfTE9DS19TTE9UU19QRVJfR1JPVVAgKyAoaW5kZXgpKSkKIApA QCAtMjk3Myw5ICsyOTg5LDYgQEAgR2V0TG9ja0NvbmZsaWN0cyhjb25zdCBMT0NLVEFHICps b2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwgaW50ICpjb3VudHApCiAJaW50CQkJZmFzdF9j b3VudCA9IDA7CiAJdWludDMyCQlncm91cDsKIAotCS8qIGZhc3QtcGF0aCBncm91cCB0aGUg bG9jayBiZWxvbmdzIHRvICovCi0JZ3JvdXAgPSBGQVNUX1BBVEhfTE9DS19SRUxfR1JPVVAo bG9ja3RhZy0+bG9ja3RhZ19maWVsZDIpOwotCiAJaWYgKGxvY2ttZXRob2RpZCA8PSAwIHx8 IGxvY2ttZXRob2RpZCA+PSBsZW5ndGhvZihMb2NrTWV0aG9kcykpCiAJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgbG9jayBtZXRob2Q6ICVkIiwgbG9ja21ldGhvZGlkKTsKIAlsb2Nr TWV0aG9kVGFibGUgPSBMb2NrTWV0aG9kc1tsb2NrbWV0aG9kaWRdOwpAQCAtMzAwNSw2ICsz MDE4LDkgQEAgR2V0TG9ja0NvbmZsaWN0cyhjb25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NL TU9ERSBsb2NrbW9kZSwgaW50ICpjb3VudHApCiAJcGFydGl0aW9uTG9jayA9IExvY2tIYXNo UGFydGl0aW9uTG9jayhoYXNoY29kZSk7CiAJY29uZmxpY3RNYXNrID0gbG9ja01ldGhvZFRh YmxlLT5jb25mbGljdFRhYltsb2NrbW9kZV07CiAKKwkvKiBmYXN0LXBhdGggZ3JvdXAgdGhl IGxvY2sgYmVsb25ncyB0byAqLworCWdyb3VwID0gRkFTVF9QQVRIX0xPQ0tfUkVMX0dST1VQ KGxvY2t0YWctPmxvY2t0YWdfZmllbGQyKTsKKwogCS8qCiAJICogRmFzdCBwYXRoIGxvY2tz IG1pZ2h0IG5vdCBoYXZlIGJlZW4gZW50ZXJlZCBpbiB0aGUgcHJpbWFyeSBsb2NrIHRhYmxl LgogCSAqIElmIHRoZSBsb2NrIHdlJ3JlIGRlYWxpbmcgd2l0aCBjb3VsZCBjb25mbGljdCB3 aXRoIHN1Y2ggYSBsb2NrLCB3ZSBtdXN0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRl eCBhYzY2ZGE4NjM4Zi4uYTkxYjZmOGE2YzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2Mu YwpAQCAtMTAzLDYgKzEwMyw4IEBAIFByb2NHbG9iYWxTaG1lbVNpemUodm9pZCkKIAlTaXpl CQlzaXplID0gMDsKIAlTaXplCQlUb3RhbFByb2NzID0KIAkJYWRkX3NpemUoTWF4QmFja2Vu ZHMsIGFkZF9zaXplKE5VTV9BVVhJTElBUllfUFJPQ1MsIG1heF9wcmVwYXJlZF94YWN0cykp OworCVNpemUJCWZwTG9ja0JpdHNTaXplLAorCQkJCWZwUmVsSWRTaXplOwogCiAJLyogUHJv Y0dsb2JhbCAqLwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2YoUFJPQ19IRFIpKTsK QEAgLTExMyw2ICsxMTUsMTggQEAgUHJvY0dsb2JhbFNobWVtU2l6ZSh2b2lkKQogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShUb3RhbFByb2NzLCBzaXplb2YoKlByb2NHbG9i YWwtPnN1YnhpZFN0YXRlcykpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUo VG90YWxQcm9jcywgc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0dXNGbGFncykpKTsKIAorCS8q CisJICogZmFzdC1wYXRoIGxvY2sgYXJyYXlzCisJICoKKwkgKiBYWFggVGhlIGV4cGxpY2l0 IGFsaWdubWVudCBtYXkgbm90IGJlIHN0cmljdGx5IG5lY2Vzc2FyeSwgYXMgYm90aAorCSAq IHZhbHVlcyBhcmUgYWxyZWFkeSBtdWx0aXBsZXMgb2YgOCBieXRlcywgd2hpY2ggaXMgd2hh dCBNQVhBTElHTiBkb2VzLgorCSAqIEJ1dCBiZXR0ZXIgdG8gbWFrZSB0aGF0IG9idmlvdXMu CisJICovCisJZnBMb2NrQml0c1NpemUgPSBNQVhBTElHTihGYXN0UGF0aExvY2tHcm91cHNQ ZXJCYWNrZW5kICogc2l6ZW9mKHVpbnQ2NCkpOworCWZwUmVsSWRTaXplID0gTUFYQUxJR04o RmFzdFBhdGhMb2NrR3JvdXBzUGVyQmFja2VuZCAqIHNpemVvZihPaWQpICogRlBfTE9DS19T TE9UU19QRVJfR1JPVVApOworCisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFRv dGFsUHJvY3MsIChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXplKSkpOworCiAJcmV0dXJu IHNpemU7CiB9CiAKQEAgLTE2Miw2ICsxNzYsMTAgQEAgSW5pdFByb2NHbG9iYWwodm9pZCkK IAkJCQlqOwogCWJvb2wJCWZvdW5kOwogCXVpbnQzMgkJVG90YWxQcm9jcyA9IE1heEJhY2tl bmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyArIG1heF9wcmVwYXJlZF94YWN0czsKKwljaGFy CSAgICpmcFB0ciwKKwkJCSAgICpmcEVuZFB0ciBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7 CisJU2l6ZQkJZnBMb2NrQml0c1NpemUsCisJCQkJZnBSZWxJZFNpemU7CiAKIAkvKiBDcmVh dGUgdGhlIFByb2NHbG9iYWwgc2hhcmVkIHN0cnVjdHVyZSAqLwogCVByb2NHbG9iYWwgPSAo UFJPQ19IRFIgKikKQEAgLTIxMSwxMiArMjI5LDM4IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQp CiAJUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MgPSAodWludDggKikgU2htZW1BbGxvYyhUb3Rh bFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0dXNGbGFncykpOwogCU1lbVNldChQ cm9jR2xvYmFsLT5zdGF0dXNGbGFncywgMCwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0ds b2JhbC0+c3RhdHVzRmxhZ3MpKTsKIAorCS8qCisJICogQWxsb2NhdGUgYXJyYXlzIGZvciBm YXN0LXBhdGggbG9ja3MuIFRob3NlIGFyZSB2YXJpYWJsZS1sZW5ndGgsIHNvCisJICogY2Fu J3QgYmUgaW5jbHVkZWQgaW4gUEdQUk9DLiBXZSBhbGxvY2F0ZSBhIHNlcGFyYXRlIHBpZWNl IG9mIHNoYXJlZAorCSAqIG1lbW9yeSBhbmQgdGhlbiBkaXZpZGUgdGhhdCBiZXR3ZWVuIGJh Y2tlbmRzLgorCSAqLworCWZwTG9ja0JpdHNTaXplID0gTUFYQUxJR04oRmFzdFBhdGhMb2Nr R3JvdXBzUGVyQmFja2VuZCAqIHNpemVvZih1aW50NjQpKTsKKwlmcFJlbElkU2l6ZSA9IE1B WEFMSUdOKEZhc3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgKiBzaXplb2YoT2lkKSAqIEZQ X0xPQ0tfU0xPVFNfUEVSX0dST1VQKTsKKworCWZwUHRyID0gU2htZW1BbGxvYyhUb3RhbFBy b2NzICogKGZwTG9ja0JpdHNTaXplICsgZnBSZWxJZFNpemUpKTsKKwlNZW1TZXQoZnBQdHIs IDAsIFRvdGFsUHJvY3MgKiAoZnBMb2NrQml0c1NpemUgKyBmcFJlbElkU2l6ZSkpOworCisJ LyogRm9yIGFzc2VydHMgY2hlY2tpbmcgd2UgZGlkIG5vdCBvdmVyZmxvdy4gKi8KKwlmcEVu ZFB0ciA9IGZwUHRyICsgKFRvdGFsUHJvY3MgKiAoZnBMb2NrQml0c1NpemUgKyBmcFJlbElk U2l6ZSkpOworCiAJZm9yIChpID0gMDsgaSA8IFRvdGFsUHJvY3M7IGkrKykKIAl7CiAJCVBH UFJPQwkgICAqcHJvYyA9ICZwcm9jc1tpXTsKIAogCQkvKiBDb21tb24gaW5pdGlhbGl6YXRp b24gZm9yIGFsbCBQR1BST0NzLCByZWdhcmRsZXNzIG9mIHR5cGUuICovCiAKKwkJLyoKKwkJ ICogU2V0IHRoZSBmYXN0LXBhdGggbG9jayBhcnJheXMsIGFuZCBtb3ZlIHRoZSBwb2ludGVy LiBXZSBpbnRlcmxlYXZlCisJCSAqIHRoZSB0d28gYXJyYXlzLCB0byBrZWVwIGF0IGxlYXN0 IHNvbWUgbG9jYWxpdHkuCisJCSAqLworCQlwcm9jLT5mcExvY2tCaXRzID0gKHVpbnQ2NCAq KSBmcFB0cjsKKwkJZnBQdHIgKz0gZnBMb2NrQml0c1NpemU7CisKKwkJcHJvYy0+ZnBSZWxJ ZCA9IChPaWQgKikgZnBQdHI7CisJCWZwUHRyICs9IGZwUmVsSWRTaXplOworCisJCUFzc2Vy dChmcFB0ciA8PSBmcEVuZFB0cik7CisKIAkJLyoKIAkJICogU2V0IHVwIHBlci1QR1BST0Mg c2VtYXBob3JlLCBsYXRjaCwgYW5kIGZwSW5mb0xvY2suICBQcmVwYXJlZCB4YWN0CiAJCSAq IGR1bW15IFBHUFJPQ3MgZG9uJ3QgbmVlZCB0aGVzZSB0aG91Z2ggLSB0aGV5J3JlIG5ldmVy IGFzc29jaWF0ZWQKQEAgLTI3OCw2ICszMjIsOSBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQog CQlwZ19hdG9taWNfaW5pdF91NjQoJihwcm9jLT53YWl0U3RhcnQpLCAwKTsKIAl9CiAKKwkv KiBXZSBleHBlY3QgdG8gY29uc3VtZSBleGFjdGx5IHRoZSBleHBlY3RlZCBhbW91bnQgb2Yg ZGF0YS4gKi8KKwlBc3NlcnQoZnBQdHIgPSBmcEVuZFB0cik7CisKIAkvKgogCSAqIFNhdmUg cG9pbnRlcnMgdG8gdGhlIGJsb2NrcyBvZiBQR1BST0Mgc3RydWN0dXJlcyByZXNlcnZlZCBm b3IgYXV4aWxpYXJ5CiAJICogcHJvY2Vzc2VzIGFuZCBwcmVwYXJlZCB0cmFuc2FjdGlvbnMu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggOGJjNmJlYTExMzUuLmY1NGFlMDBhYmNhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCkBAIC00MTY2LDYgKzQxNjYsOSBAQCBQb3N0Z3Jlc1NpbmdsZVVz ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sCiAJLyogSW5pdGlhbGl6ZSBNYXhCYWNr ZW5kcyAqLwogCUluaXRpYWxpemVNYXhCYWNrZW5kcygpOwogCisJLyogSW5pdGlhbGl6ZSBz aXplIG9mIGZhc3QtcGF0aCBsb2NrIGNhY2hlLiAqLworCUluaXRpYWxpemVGYXN0UGF0aExv Y2tzKCk7CisKIAkvKgogCSAqIEdpdmUgcHJlbG9hZGVkIGxpYnJhcmllcyBhIGNoYW5jZSB0 byByZXF1ZXN0IGFkZGl0aW9uYWwgc2hhcmVkIG1lbW9yeS4KIAkgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvcG9zdGluaXQuYwppbmRleCAzYjUwY2UxOWEyYy4uMWZhZjc1NmM4ZDggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTU1Nyw2ICs1NTcsNDAgQEAgSW5pdGlh bGl6ZU1heEJhY2tlbmRzKHZvaWQpCiAJCQkJCQkgICBNQVhfQkFDS0VORFMpKSk7CiB9CiAK Ky8qCisgKiBJbml0aWFsaXplIHRoZSBudW1iZXIgb2YgZmFzdC1wYXRoIGxvY2sgc2xvdHMg aW4gUEdQUk9DLgorICoKKyAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgbW9kdWxlcyBo YXZlIGhhZCB0aGUgY2hhbmNlIHRvIGFsdGVyIEdVQ3MgaW4KKyAqIHNoYXJlZF9wcmVsb2Fk X2xpYnJhcmllcyBhbmQgYmVmb3JlIHNoYXJlZCBtZW1vcnkgc2l6ZSBpcyBkZXRlcm1pbmVk LgorICoKKyAqIFRoZSBkZWZhdWx0IG1heF9sb2Nrc19wZXJfeGFjdD02NCBtZWFucyA0IGdy b3VwcyBieSBkZWZhdWx0LgorICoKKyAqIFdlIGFsbG93IGFueXRoaW5nIGJldHdlZW4gMSBh bmQgMTAyNCBncm91cHMsIHdpdGggdGhlIHVzdWFsIHBvd2VyLW9mLTIKKyAqIGxvZ2ljLiBU aGUgMSBpcyB0aGUgIm9sZCIgdmFsdWUgYmVmb3JlIGFsbG93aW5nIG11bHRpcGxlIGdyb3Vw cywgMTAyNAorICogaXMgYW4gYXJiaXRyYXJ5IGxpbWl0IChtYXRjaGluZyBtYXhfbG9ja3Nf cGVyX3hhY3QgPSAxNmspLiBWYWx1ZXMgb3ZlcgorICogMTAyNCBhcmUgdW5saWtlbHkgdG8g YmUgYmVuZWZpY2lhbCAtIHdlJ3JlIGxpa2VseSB0byBoaXQgb3RoZXIKKyAqIGJvdHRsZW5l Y2tzIGxvbmcgYmVmb3JlIHRoYXQuCisgKi8KK3ZvaWQKK0luaXRpYWxpemVGYXN0UGF0aExv Y2tzKHZvaWQpCit7CisJQXNzZXJ0KEZhc3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgPT0g MCk7CisKKwkvKiB3ZSBuZWVkIGF0IGxlYXN0IG9uZSBncm91cCAqLworCUZhc3RQYXRoTG9j a0dyb3Vwc1BlckJhY2tlbmQgPSAxOworCisJd2hpbGUgKEZhc3RQYXRoTG9ja0dyb3Vwc1Bl ckJhY2tlbmQgPCBGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORF9NQVgpCisJeworCQkvKiBz dG9wIG9uY2Ugd2UgZXhjZWVkIG1heF9sb2Nrc19wZXJfeGFjdCAqLworCQlpZiAoRmFzdFBh dGhMb2NrR3JvdXBzUGVyQmFja2VuZCAqIEZQX0xPQ0tfU0xPVFNfUEVSX0dST1VQID49IG1h eF9sb2Nrc19wZXJfeGFjdCkKKwkJCWJyZWFrOworCisJCUZhc3RQYXRoTG9ja0dyb3Vwc1Bl ckJhY2tlbmQgKj0gMjsKKwl9CisKKwlBc3NlcnQoRmFzdFBhdGhMb2NrR3JvdXBzUGVyQmFj a2VuZCA8PSBGUF9MT0NLX0dST1VQU19QRVJfQkFDS0VORF9NQVgpOworfQorCiAvKgogICog RWFybHkgaW5pdGlhbGl6YXRpb24gb2YgYSBiYWNrZW5kIChlaXRoZXIgc3RhbmRhbG9uZSBv ciB1bmRlciBwb3N0bWFzdGVyKS4KICAqIFRoaXMgaGFwcGVucyBldmVuIGJlZm9yZSBJbml0 UG9zdGdyZXMuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9p bmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDI1MzQ4ZTcxZWI5Li5lMjZkMTA4YTQ3MCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlz Y2FkbWluLmgKQEAgLTQ3NSw2ICs0NzUsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgUHJvY2Vz c2luZ01vZGUgTW9kZTsKICNkZWZpbmUgSU5JVF9QR19PVkVSUklERV9ST0xFX0xPR0lOCQkw eDAwMDQKIGV4dGVybiB2b2lkIHBnX3NwbGl0X29wdHMoY2hhciAqKmFyZ3YsIGludCAqYXJn Y3AsIGNvbnN0IGNoYXIgKm9wdHN0cik7CiBleHRlcm4gdm9pZCBJbml0aWFsaXplTWF4QmFj a2VuZHModm9pZCk7CitleHRlcm4gdm9pZCBJbml0aWFsaXplRmFzdFBhdGhMb2Nrcyh2b2lk KTsKIGV4dGVybiB2b2lkIEluaXRQb3N0Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9p ZCBkYm9pZCwKIAkJCQkJCSBjb25zdCBjaGFyICp1c2VybmFtZSwgT2lkIHVzZXJvaWQsCiAJ CQkJCQkgYml0czMyIGZsYWdzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCA4NDUwNThkYTlmYS4u MGU1NWMxNjY1MjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC04Myw5ICs4MywxMSBAQCBzdHJ1 Y3QgWGlkQ2FjaGUKICAqIHJhdGhlciB0aGFuIHRoZSBtYWluIGxvY2sgdGFibGUuICBUaGlz IGVhc2VzIGNvbnRlbnRpb24gb24gdGhlIGxvY2sKICAqIG1hbmFnZXIgTFdMb2Nrcy4gIFNl ZSBzdG9yYWdlL2xtZ3IvUkVBRE1FIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuCiAgKi8KLSNk ZWZpbmUJCUZQX0xPQ0tfR1JPVVBTX1BFUl9CQUNLRU5ECTY0CitleHRlcm4gUEdETExJTVBP UlQgaW50IEZhc3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQ7CisjZGVmaW5lCQlGUF9MT0NL X0dST1VQU19QRVJfQkFDS0VORF9NQVgJMTAyNAogI2RlZmluZQkJRlBfTE9DS19TTE9UU19Q RVJfR1JPVVAJCTE2CS8qIGRvbid0IGNoYW5nZSAqLwotI2RlZmluZQkJRlBfTE9DS19TTE9U U19QRVJfQkFDS0VORAkoRlBfTE9DS19TTE9UU19QRVJfR1JPVVAgKiBGUF9MT0NLX0dST1VQ U19QRVJfQkFDS0VORCkKKyNkZWZpbmUJCUZQX0xPQ0tfU0xPVFNfUEVSX0JBQ0tFTkQJKEZQ X0xPQ0tfU0xPVFNfUEVSX0dST1VQICogRmFzdFBhdGhMb2NrR3JvdXBzUGVyQmFja2VuZCkK KwogLyoKICAqIEZsYWdzIGZvciBQR1BST0MuZGVsYXlDaGtwdEZsYWdzCiAgKgpAQCAtMjkz LDkgKzI5NSw4IEBAIHN0cnVjdCBQR1BST0MKIAogCS8qIExvY2sgbWFuYWdlciBkYXRhLCBy ZWNvcmRpbmcgZmFzdC1wYXRoIGxvY2tzIHRha2VuIGJ5IHRoaXMgYmFja2VuZC4gKi8KIAlM V0xvY2sJCWZwSW5mb0xvY2s7CQkvKiBwcm90ZWN0cyBwZXItYmFja2VuZCBmYXN0LXBhdGgg c3RhdGUgKi8KLQl1aW50NjQJCWZwTG9ja0JpdHNbRlBfTE9DS19HUk9VUFNfUEVSX0JBQ0tF TkRdOyAvKiBsb2NrIG1vZGVzIGhlbGQgZm9yCi0JCQkJCQkJCQkJCQkJCSAqIGVhY2ggZmFz dC1wYXRoIHNsb3QgKi8KLQlPaWQJCQlmcFJlbElkW0ZQX0xPQ0tfU0xPVFNfUEVSX0JBQ0tF TkRdOyAvKiBzbG90cyBmb3IgcmVsIG9pZHMgKi8KKwl1aW50NjQJICAgKmZwTG9ja0JpdHM7 CQkvKiBsb2NrIG1vZGVzIGhlbGQgZm9yIGVhY2ggZmFzdC1wYXRoIHNsb3QgKi8KKwlPaWQJ CSAgICpmcFJlbElkOwkJLyogc2xvdHMgZm9yIHJlbCBvaWRzICovCiAJYm9vbAkJZnBWWElE TG9jazsJCS8qIGFyZSB3ZSBob2xkaW5nIGEgZmFzdC1wYXRoIFZYSUQgbG9jaz8gKi8KIAlM b2NhbFRyYW5zYWN0aW9uSWQgZnBMb2NhbFRyYW5zYWN0aW9uSWQ7CS8qIGx4aWQgZm9yIGZh c3QtcGF0aCBWWElECiAJCQkJCQkJCQkJCQkgKiBsb2NrICovCi0tIAoyLjQ2LjAKCg== --------------i906kgiIZdnsdVGZL1cejXDT--