From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 91F17C10F05 for ; Wed, 6 Dec 2023 14:20:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=KWnc9zteZigZzSTonyA7x3JtXNFzDppNQ3ufqbZg0NQ=; b=hozwK/Korof5K5 KYPdtk3kQ1xonnwQA77L7dFKeO8c2XxdmjaPeHSOtyJDBchjooZIyz18PkFbKo+hRVMioxHrf1iDc VQGtYvIq2lSc6qRj0oXbHMpE9SCB/bAdOK+1Ea/brVCp5xq6HH6Yj1u6pcoYZQEaC131IpIAWhfPJ V71hFLu9GGaDVy+3sIZfcmhPCpenpURoC0QSbk72CrwWRXsssDdMPtl0SNT63HXxum76JBEYSmdj8 JrzN1rx1tdXvNTkc1TNdgfRbRWIGHVI2AqMgfCvWgRnPpBLaUwbYQjsAMT/fS9Cmd5K15hqVIjJv/ KKcxvqJAGfeYVQroBWig==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rAskz-00ATRw-0r; Wed, 06 Dec 2023 14:20:09 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rAskw-00ATRG-0S for linux-arm-kernel@lists.infradead.org; Wed, 06 Dec 2023 14:20:08 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3DA2D1474; Wed, 6 Dec 2023 06:20:48 -0800 (PST) Received: from [10.57.73.130] (unknown [10.57.73.130]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BF5CC3F5A1; Wed, 6 Dec 2023 06:19:58 -0800 (PST) Message-ID: Date: Wed, 6 Dec 2023 14:19:57 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v8 04/10] mm: thp: Support allocation of anonymous multi-size THP Content-Language: en-GB To: David Hildenbrand , Andrew Morton , Matthew Wilcox , Yin Fengwei , Yu Zhao , Catalin Marinas , Anshuman Khandual , Yang Shi , "Huang, Ying" , Zi Yan , Luis Chamberlain , Itaru Kitayama , "Kirill A. Shutemov" , John Hubbard , David Rientjes , Vlastimil Babka , Hugh Dickins , Kefeng Wang , Barry Song <21cnbao@gmail.com>, Alistair Popple Cc: linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20231204102027.57185-1-ryan.roberts@arm.com> <20231204102027.57185-5-ryan.roberts@arm.com> <71040a8c-4ea1-4f21-8ac8-65f7c25c217e@redhat.com> From: Ryan Roberts In-Reply-To: <71040a8c-4ea1-4f21-8ac8-65f7c25c217e@redhat.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231206_062006_272975_D8280792 X-CRM114-Status: GOOD ( 52.81 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMDUvMTIvMjAyMyAxNjozMiwgRGF2aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4gT24gMDQuMTIu MjMgMTE6MjAsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4gSW50cm9kdWNlIHRoZSBsb2dpYyB0byBh bGxvdyBUSFAgdG8gYmUgY29uZmlndXJlZCAodGhyb3VnaCB0aGUgbmV3IHN5c2ZzCj4+IGludGVy ZmFjZSB3ZSBqdXN0IGFkZGVkKSB0byBhbGxvY2F0ZSBsYXJnZSBmb2xpb3MgdG8gYmFjayBhbm9u eW1vdXMKPj4gbWVtb3J5LCB3aGljaCBhcmUgbGFyZ2VyIHRoYW4gdGhlIGJhc2UgcGFnZSBzaXpl IGJ1dCBzbWFsbGVyIHRoYW4KPj4gUE1ELXNpemUuIFdlIGNhbGwgdGhpcyBuZXcgVEhQIGV4dGVu c2lvbiAibXVsdGktc2l6ZSBUSFAiIChtVEhQKS4KPj4KPj4gbVRIUCBjb250aW51ZXMgdG8gYmUg UFRFLW1hcHBlZCwgYnV0IGluIG1hbnkgY2FzZXMgY2FuIHN0aWxsIHByb3ZpZGUKPj4gc2ltaWxh ciBiZW5lZml0cyB0byB0cmFkaXRpb25hbCBQTUQtc2l6ZWQgVEhQOiBQYWdlIGZhdWx0cyBhcmUK Pj4gc2lnbmlmaWNhbnRseSByZWR1Y2VkIChieSBhIGZhY3RvciBvZiBlLmcuIDQsIDgsIDE2LCBl dGMuIGRlcGVuZGluZyBvbgo+PiB0aGUgY29uZmlndXJlZCBvcmRlciksIGJ1dCBsYXRlbmN5IHNw aWtlcyBhcmUgbXVjaCBsZXNzIHByb21pbmVudAo+PiBiZWNhdXNlIHRoZSBzaXplIG9mIGVhY2gg cGFnZSBpc24ndCBhcyBodWdlIGFzIHRoZSBQTUQtc2l6ZWQgdmFyaWFudCBhbmQKPj4gdGhlcmUg aXMgbGVzcyBtZW1vcnkgdG8gY2xlYXIgaW4gZWFjaCBwYWdlIGZhdWx0LiBUaGUgbnVtYmVyIG9m IHBlci1wYWdlCj4+IG9wZXJhdGlvbnMgKGUuZy4gcmVmIGNvdW50aW5nLCBybWFwIG1hbmFnZW1l bnQsIGxydSBsaXN0IG1hbmFnZW1lbnQpIGFyZQo+PiBhbHNvIHNpZ25pZmljYW50bHkgcmVkdWNl ZCBzaW5jZSB0aG9zZSBvcHMgbm93IGJlY29tZSBwZXItZm9saW8uCj4+Cj4+IFNvbWUgYXJjaGl0 ZWN0dXJlcyBhbHNvIGVtcGxveSBUTEIgY29tcHJlc3Npb24gbWVjaGFuaXNtcyB0byBzcXVlZXpl Cj4+IG1vcmUgZW50cmllcyBpbiB3aGVuIGEgc2V0IG9mIFBURXMgYXJlIHZpcnR1YWxseSBhbmQg cGh5c2ljYWxseQo+PiBjb250aWd1b3VzIGFuZCBhcHByb3BvcmlhdGVseSBhbGlnbmVkLiBJbiB0 aGlzIGNhc2UsIFRMQiBtaXNzZXMgd2lsbAo+PiBvY2N1ciBsZXNzIG9mdGVuLgo+Pgo+PiBUaGUg bmV3IGJlaGF2aW91ciBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LCBidXQgY2FuIGJlIGVuYWJsZWQg YXQgcnVudGltZQo+PiBieSB3cml0aW5nIHRvIC9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1 Z2VwYWdlL2h1Z2VwYWdlLVhYa2IvZW5hYmxlZAo+PiAoc2VlIGRvY3VtZW50YXRpb24gaW4gcHJl dmlvdXMgY29tbWl0KS4gVGhlIGxvbmcgdGVybSBhaW0gaXMgdG8gY2hhbmdlCj4+IHRoZSBkZWZh dWx0IHRvIGluY2x1ZGUgc3VpdGFibGUgbG93ZXIgb3JkZXJzLCBidXQgdGhlcmUgYXJlIHNvbWUg cmlza3MKPj4gYXJvdW5kIGludGVybmFsIGZyYWdtZW50YXRpb24gdGhhdCBuZWVkIHRvIGJlIGJl dHRlciB1bmRlcnN0b29kIGZpcnN0Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBSeWFuIFJvYmVydHMg PHJ5YW4ucm9iZXJ0c0Bhcm0uY29tPgo+IAo+IEluIGdlbmVyYWwsIGxvb2tzIGdvb2QgdG8gbWUs IHNvbWUgY29tbWVudHMvbml0cy4gQW5kIHRoZSB1c3VhbCAibGV0J3MgbWFrZSBzdXJlCj4gd2Ug ZG9uJ3QgZGVncmFkZSBvcmRlci0wIGFuZCBrZWVwIHRoYXQgYXMgZmFzdCBhcyBwb3NzaWJsZSIg Y29tbWVudC4KPiAKPj4gLS0tCj4+IMKgIGluY2x1ZGUvbGludXgvaHVnZV9tbS5oIHzCoMKgIDYg KystCj4+IMKgIG1tL21lbW9yeS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTA2ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPj4gwqAgMiBmaWxlcyBjaGFuZ2Vk LCAxMDEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L2h1Z2VfbW0uaCBiL2luY2x1ZGUvbGludXgvaHVnZV9tbS5oCj4+IGluZGV4 IGJkMGVhZGQzYmVmYi4uOTFhNTNiOTgzNWE0IDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL2xpbnV4 L2h1Z2VfbW0uaAo+PiArKysgYi9pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaAo+PiBAQCAtNjgsOSAr NjgsMTEgQEAgZXh0ZXJuIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBzaG1lbV9lbmFibGVkX2F0dHI7 Cj4+IMKgICNkZWZpbmUgSFBBR0VfUE1EX05SICgxPDxIUEFHRV9QTURfT1JERVIpCj4+IMKgIMKg IC8qCj4+IC0gKiBNYXNrIG9mIGFsbCBsYXJnZSBmb2xpbyBvcmRlcnMgc3VwcG9ydGVkIGZvciBh bm9ueW1vdXMgVEhQLgo+PiArICogTWFzayBvZiBhbGwgbGFyZ2UgZm9saW8gb3JkZXJzIHN1cHBv cnRlZCBmb3IgYW5vbnltb3VzIFRIUDsgYWxsIG9yZGVycyB1cCB0bwo+PiArICogYW5kIGluY2x1 ZGluZyBQTURfT1JERVIsIGV4Y2VwdCBvcmRlci0wICh3aGljaCBpcyBub3QgImh1Z2UiKSBhbmQg b3JkZXItMQo+PiArICogKHdoaWNoIGlzIGEgbGltaXRhdGlvbiBvZiB0aGUgVEhQIGltcGxlbWVu dGF0aW9uKS4KPj4gwqDCoCAqLwo+PiAtI2RlZmluZSBUSFBfT1JERVJTX0FMTF9BTk9OwqDCoMKg IEJJVChQTURfT1JERVIpCj4+ICsjZGVmaW5lIFRIUF9PUkRFUlNfQUxMX0FOT07CoMKgwqAgKChC SVQoUE1EX09SREVSICsgMSkgLSAxKSAmIH4oQklUKDApIHwgQklUKDEpKSkKPj4gwqAgwqAgLyoK Pj4gwqDCoCAqIE1hc2sgb2YgYWxsIGxhcmdlIGZvbGlvIG9yZGVycyBzdXBwb3J0ZWQgZm9yIGZp bGUgVEhQLgo+PiBkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnkuYwo+PiBpbmRl eCAzY2VlYjBmNDViZjUuLmJmN2U5MzgxMzAxOCAxMDA2NDQKPj4gLS0tIGEvbW0vbWVtb3J5LmMK Pj4gKysrIGIvbW0vbWVtb3J5LmMKPj4gQEAgLTQxMjUsNiArNDEyNSw4NCBAQCB2bV9mYXVsdF90 IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPj4gwqDCoMKgwqDCoCByZXR1cm4g cmV0Owo+PiDCoCB9Cj4+IMKgICtzdGF0aWMgYm9vbCBwdGVfcmFuZ2Vfbm9uZShwdGVfdCAqcHRl LCBpbnQgbnJfcGFnZXMpCj4+ICt7Cj4+ICvCoMKgwqAgaW50IGk7Cj4+ICsKPj4gK8KgwqDCoCBm b3IgKGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFw dGVfbm9uZShwdGVwX2dldF9sb2NrbGVzcyhwdGUgKyBpKSkpCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiBmYWxzZTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4g dHJ1ZTsKPj4gK30KPj4gKwo+PiArI2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRQo+ PiArc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYW5vbl9mb2xpbyhzdHJ1Y3Qgdm1fZmF1bHQg KnZtZikKPj4gK3sKPj4gK8KgwqDCoCBnZnBfdCBnZnA7Cj4+ICvCoMKgwqAgcHRlX3QgKnB0ZTsK Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGFkZHI7Cj4+ICvCoMKgwqAgc3RydWN0IGZvbGlvICpm b2xpbzsKPj4gK8KgwqDCoCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi0+dm1hOwo+ PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgb3JkZXJzOwo+PiArwqDCoMKgIGludCBvcmRlcjsKPiAK PiBOaXQ6IHJldmVyc2UgY2hyaXN0bWFzIHRyZWUgZW5jb3VyYWdlZCA7KQoKQUNLIHdpbGwgZml4 LgoKPiAKPj4gKwo+PiArwqDCoMKgIC8qCj4+ICvCoMKgwqDCoCAqIElmIHVmZmQgaXMgYWN0aXZl IGZvciB0aGUgdm1hIHdlIG5lZWQgcGVyLXBhZ2UgZmF1bHQgZmlkZWxpdHkgdG8KPj4gK8KgwqDC oMKgICogbWFpbnRhaW4gdGhlIHVmZmQgc2VtYW50aWNzLgo+PiArwqDCoMKgwqAgKi8KPj4gK8Kg wqDCoCBpZiAodXNlcmZhdWx0ZmRfYXJtZWQodm1hKSkKPiAKPiBOaXQ6IHVubGlrZWx5KCkKCkFD SyB3aWxsIGZpeC4KCj4gCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGZhbGxiYWNrOwo+PiArCj4+ ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICogR2V0IGEgbGlzdCBvZiBhbGwgdGhlIChsYXJnZSkg b3JkZXJzIGJlbG93IFBNRF9PUkRFUiB0aGF0IGFyZSBlbmFibGVkCj4+ICvCoMKgwqDCoCAqIGZv ciB0aGlzIHZtYS4gVGhlbiBmaWx0ZXIgb3V0IHRoZSBvcmRlcnMgdGhhdCBjYW4ndCBiZSBhbGxv Y2F0ZWQgb3Zlcgo+PiArwqDCoMKgwqAgKiB0aGUgZmF1bHRpbmcgYWRkcmVzcyBhbmQgc3RpbGwg YmUgZnVsbHkgY29udGFpbmVkIGluIHRoZSB2bWEuCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKg IG9yZGVycyA9IHRocF92bWFfYWxsb3dhYmxlX29yZGVycyh2bWEsIHZtYS0+dm1fZmxhZ3MsIGZh bHNlLCB0cnVlLCB0cnVlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEJJVChQTURfT1JERVIpIC0gMSk7Cj4+ICvCoMKgwqAgb3JkZXJzID0gdGhwX3ZtYV9z dWl0YWJsZV9vcmRlcnModm1hLCB2bWYtPmFkZHJlc3MsIG9yZGVycyk7Cj4gCj4gQ29tbWVudDog Qm90aCB3aWxsIGV2ZW50dWFsbHkgbG9vcCBvdmVyIGFsbCBvcmRlcnMsIGNvcnJlY3Q/IENvdWxk IGV2ZW50dWFsbHkgYmUKPiBzcGVkIHVwIGluIHRoZSBmdXR1cmUuCgpObyBvbmx5IHRocF92bWFf c3VpdGFibGVfb3JkZXJzKCkgd2lsbCBsb29wLiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoKSBv bmx5Cmxvb3BzIGlmIGluX3BmPWZhbHNlIChpdCdzIHRydWUgaGVyZSkuCgo+IAo+IE5pdDogdGhl IG9yZGVycyA9IC4uLiBvcmRlciA9IC4uLiBsb29rcyBsaWtlIHRoaXMgbWlnaHQgZGVzZXJ2ZSBh IGhlbHBlcgo+IGZ1bmN0aW9uIHRoYXQgbWFrZXMgdGhpcyBlYXNpZXIgdG8gcmVhZC4KClRvIGJl IGhvbmVzdCwgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uIHRoYXQgSSd2ZSBtb2RpZmllZCBpcyBhIGJp dCBvZiBhIG1lc3MuCnRocF92bWFfYWxsb3dhYmxlX29yZGVycygpIGNhbGxzIHRocF92bWFfc3Vp dGFibGVfb3JkZXJzKCkgaWYgd2UgYXJlIG5vdCBpbiBhCnBhZ2UgZmF1bHQsIGJlY2F1c2UgdGhl IHBhZ2UgZmF1bHQgaGFuZGxlcnMgYWxyZWFkeSBkbyB0aGF0IGNoZWNrIHRoZW1zZWx2ZXMuIEl0 CndvdWxkIGJlIG5pY2UgdG8gcmVmYWN0b3IgdGhlIHdob2xlIHRoaW5nIHNvIHRoYXQgdGhwX3Zt YV9hbGxvd2FibGVfb3JkZXJzKCkgaXMKYSBzdHJpY3Qgc3VwZXJzZXQgb2YgdGhwX3ZtYV9zdWl0 YWJsZV9vcmRlcnMoKS4gVGhlbiB0aGlzIGNhbiBqdXN0IGNhbGwKdGhwX3ZtYV9hbGxvd2FibGVf b3JkZXJzKCkuIEJ1dCB0aGF0J3MgZ29pbmcgdG8gc3RhcnQgdG91Y2hpbmcgdGhlIFBNRCBhbmQg UFVECmhhbmRsZXJzLCBzbyBwcmVmZXIgaWYgd2UgbGVhdmUgdGhhdCBmb3IgYSBzZXBhcmF0ZSBw YXRjaCBzZXQuCgo+IAo+IE5pdDogV2h5IGNhbGwgdGhwX3ZtYV9zdWl0YWJsZV9vcmRlcnMgaWYg dGhlIG9yZGVycyBhcmUgYWxyZWFkeSAwPyBBZ2Fpbiwgc29tZQo+IGhlbHBlciBtaWdodCBiZSBy ZWFzb25hYmxlIHdoZXJlIHRoYXQgaXMgaGFuZGxlZCBpbnRlcm5hbGx5LgoKQmVjYXVzZSB0aHBf dm1hX3N1aXRhYmxlX29yZGVycygpIHdpbGwgaGFuZGxlIGl0IHNhZmVseSBhbmQgaXMgaW5saW5l LCBzbyBpdApzaG91bGQganVzdCBhcyBlZmZpY2llbnQ/IFRoaXMgd291bGQgZ28gYXdheSB3aXRo IHRoZSByZWZhY3RvcmluZyBkZXNjcmliZWQgYWJvdmUuCgo+IAo+IENvbW1lbnQ6IEZvciBvcmRl ci0wIHdlJ2xsIGFsd2F5cyBwZXJmb3JtIGEgZnVuY3Rpb24gY2FsbCB0byBib3RoCj4gdGhwX3Zt YV9hbGxvd2FibGVfb3JkZXJzKCkgLyB0aHBfdm1hX3N1aXRhYmxlX29yZGVycygpLiBXZSBzaG91 bGQgcGVyZm9ybSBzb21lCj4gZmFzdCBhbmQgZWZmaWNpZW50IGNoZWNrIGlmIGFueSA8UE1EIFRI UCBhcmUgZXZlbiBlbmFibGVkIGluIHRoZSBzeXN0ZW0gLyBmb3IKPiB0aGlzIFZNQSwgYW5kIGlu IHRoYXQgY2FzZSBqdXN0IGZhbGxiYWNrIGJlZm9yZSBkb2luZyBtb3JlIGV4cGVuc2l2ZSBjaGVj a3MuCgp0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoKSBpcyBpbmxpbmUgYXMgeW91IG1lbnRpb25l ZC4KCkkgd2FzIGRlbGliZXJhdGVseSB0cnlpbmcgdG8ga2VlcCBhbGwgdGhlIGRlY2lzaW9uIGxv Z2ljIGluIG9uZSBwbGFjZQoodGhwX3ZtYV9zdWl0YWJsZV9vcmRlcnMpIGJlY2F1c2UgaXQncyBh bHJlYWR5IHByZXR0eSBjb21wbGljYXRlZC4gQnV0IGlmIHlvdQppbnNpc3QsIGhvdyBhYm91dCB0 aGlzIGluIHRoZSBoZWFkZXI6CgpzdGF0aWMgaW5saW5lCnVuc2lnbmVkIGxvbmcgdGhwX3ZtYV9h bGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAoJCQkJICAgICAgIHVu c2lnbmVkIGxvbmcgdm1fZmxhZ3MsIGJvb2wgc21hcHMsCgkJCQkgICAgICAgYm9vbCBpbl9wZiwg Ym9vbCBlbmZvcmNlX3N5c2ZzLAoJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgb3JkZXJzKQp7Cgkv KiBPcHRpbWl6YXRpb24gdG8gY2hlY2sgaWYgcmVxdWlyZWQgb3JkZXJzIGFyZSBlbmFibGVkIGVh cmx5LiAqLwoJaWYgKGVuZm9yY2Vfc3lzZnMgJiYgdm1hX2lzX2Fub255bW91cyh2bWEpKSB7CgkJ dW5zaWduZWQgbG9uZyBtYXNrID0gUkVBRF9PTkNFKGh1Z2VfYW5vbl9vcmRlcnNfYWx3YXlzKTsK CgkJaWYgKHZtX2ZsYWdzICYgVk1fSFVHRVBBR0UpCgkJCW1hc2sgfD0gUkVBRF9PTkNFKGh1Z2Vf YW5vbl9vcmRlcnNfbWFkdmlzZSk7CgkJaWYgKGh1Z2VwYWdlX2dsb2JhbF9hbHdheXMoKSB8fAoJ CQkoKHZtX2ZsYWdzICYgVk1fSFVHRVBBR0UpICYmIGh1Z2VwYWdlX2dsb2JhbF9lbmFibGVkKCkp KQoJCQltYXNrIHw9IFJFQURfT05DRShodWdlX2Fub25fb3JkZXJzX2luaGVyaXQpOwoKCQlvcmRl cnMgJj0gbWFzazsKCQlpZiAoIW9yZGVycykKCQkJcmV0dXJuIDA7CgkJCgkJZW5mb3JjZV9zeXNm cyA9IGZhbHNlOwoJfQoKCXJldHVybiBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyh2bWEsIHZt X2ZsYWdzLCBzbWFwcywgaW5fcGYsCgkJCQkJICBlbmZvcmNlX3N5c2ZzLCBvcmRlcnMpOwp9CgpU aGVuIHRoZSBhYm92ZSBjaGVjayBjYW4gYmUgcmVtb3ZlZCBmcm9tIF9fdGhwX3ZtYV9hbGxvd2Fi bGVfb3JkZXJzKCkgLSBpdCB3aWxsCnN0aWxsIHJldGFpbiB0aGUgYGlmIChlbmZvcmNlX3N5c2Zz ICYmICF2bWFfaXNfYW5vbnltb3VzKHZtYSkpYCBwYXJ0LgoKCj4gCj4+ICsKPj4gK8KgwqDCoCBp ZiAoIW9yZGVycykKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZmFsbGJhY2s7Cj4+ICsKPj4gK8Kg wqDCoCBwdGUgPSBwdGVfb2Zmc2V0X21hcCh2bWYtPnBtZCwgdm1mLT5hZGRyZXNzICYgUE1EX01B U0spOwo+PiArwqDCoMKgIGlmICghcHRlKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9Q VFIoLUVBR0FJTik7Cj4+ICsKPj4gK8KgwqDCoCBvcmRlciA9IGZpcnN0X29yZGVyKG9yZGVycyk7 Cj4+ICvCoMKgwqAgd2hpbGUgKG9yZGVycykgewo+PiArwqDCoMKgwqDCoMKgwqAgYWRkciA9IEFM SUdOX0RPV04odm1mLT5hZGRyZXNzLCBQQUdFX1NJWkUgPDwgb3JkZXIpOwo+PiArwqDCoMKgwqDC oMKgwqAgdm1mLT5wdGUgPSBwdGUgKyBwdGVfaW5kZXgoYWRkcik7Cj4+ICvCoMKgwqDCoMKgwqDC oCBpZiAocHRlX3JhbmdlX25vbmUodm1mLT5wdGUsIDEgPDwgb3JkZXIpKQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBicmVhazsKPiAKPiBDb21tZW50OiBMaWtlbHkgaXQgd291bGQgbWFrZSBz ZW5zZSB0byBzY2FuIG9ubHkgb25jZSBhbmQgZGV0ZXJtaW5lIHRoZSAibGFyZ2VzdAo+IG5vbmUg cmFuZ2UiIGFyb3VuZCB0aGF0IGFkZHJlc3MsIGhhdmluZyB0aGUgbGFyZ2VzdCBzdWl0YWJsZSBv cmRlciBpbiBtaW5kLgoKWWVzLCB0aGF0J3MgaG93IEkgdXNlZCB0byBkbyBpdCwgYnV0IFl1IFpo b3UgcmVxdWVzdGVkIHNpbXBsaWZ5aW5nIHRvIHRoaXMsCklJUkMuIFBlcmhhcHMgdGhpcyBhbiBv cHRpbWl6YXRpb24gb3Bwb3J0dW5pdHkgZm9yIGxhdGVyPwoKPiAKPj4gK8KgwqDCoMKgwqDCoMKg IG9yZGVyID0gbmV4dF9vcmRlcigmb3JkZXJzLCBvcmRlcik7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ ICvCoMKgwqAgdm1mLT5wdGUgPSBOVUxMOwo+IAo+IE5pdDogQ2FuIHlvdSBlbGFib3JhdGUgd2h5 IHlvdSBhcmUgbWVzc2luZyB3aXRoIHZtZi0+cHRlIGhlcmU/IEEgc2ltcGxlIGhlbHBlcgo+IHZh cmlhYmxlIHdpbGwgbWFrZSB0aGlzIGNvZGUgbG9vayBsZXNzIG1hZ2ljYWwuIFVubGVzcyBJIGFt IG1pc3Npbmcgc29tZXRoaW5nCj4gaW1wb3J0YW50IDopCgpHYWhoLCBJIHVzZWQgdG8gcGFzcyB0 aGUgdm1mIHRvIHdoYXQgcHRlX3JhbmdlX25vbmUoKSB3YXMgcmVmYWN0b3JlZCBpbnRvIChhbgph cHByb2FjaCB0aGF0IHdhcyBzdWdnZXN0ZWQgYnkgWXUgWmhvdSBJSVJDKS4gQnV0IHNpbmNlIEkg ZGlkIHNvbWUgcmVmYWN0b3JpbmcKYmFzZWQgb24gc29tZSBjb21tZW50cyBmcm9tIEpvaG5ILCBJ IHNlZSBJIGRvbid0IG5lZWQgdGhhdCBhbnltb3JlLiBBZ3JlZWQ7IGl0CndpbGwgYmUgbXVjaCBj bGVhcmVyIGp1c3QgdG8gdXNlIGEgbG9jYWwgdmFyaWFibGUuIFdpbGwgZml4LgoKPiAKPj4gK8Kg wqDCoCBwdGVfdW5tYXAocHRlKTsKPj4gKwo+PiArwqDCoMKgIGdmcCA9IHZtYV90aHBfZ2ZwX21h c2sodm1hKTsKPj4gKwo+PiArwqDCoMKgIHdoaWxlIChvcmRlcnMpIHsKPj4gK8KgwqDCoMKgwqDC oMKgIGFkZHIgPSBBTElHTl9ET1dOKHZtZi0+YWRkcmVzcywgUEFHRV9TSVpFIDw8IG9yZGVyKTsK Pj4gK8KgwqDCoMKgwqDCoMKgIGZvbGlvID0gdm1hX2FsbG9jX2ZvbGlvKGdmcCwgb3JkZXIsIHZt YSwgYWRkciwgdHJ1ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZm9saW8pIHsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY2xlYXJfaHVnZV9wYWdlKCZmb2xpby0+cGFnZSwgYWRkciwgMSA8 PCBvcmRlcik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBmb2xpbzsKPj4gK8Kg wqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgIG9yZGVyID0gbmV4dF9vcmRlcigmb3Jk ZXJzLCBvcmRlcik7Cj4+ICvCoMKgwqAgfQo+PiArCj4gCj4gUXVlZXN0aW9uOiB3b3VsZCBpdCBt YWtlIHNlbnNlIHRvIGNvbWJpbmUgYm90aCBsb29wcz8gSSBzdXNwZWN0IG1lbW9yeQo+IGFsbG9j YXRpb25zIHdpdGggcHRlX29mZnNldF9tYXAoKS9rbWFvIGFyZSBwcm9ibGVtYXRpYy4KClRoZXkg YXJlIGJvdGggb3BlcmF0aW5nIG9uIHNlcGFyYXRlIG9yZGVyczsgbmV4dF9vcmRlcigpIGlzICJj b25zdW1pbmciIGFuIG9yZGVyCmJ5IHJlbW92aW5nIHRoZSBjdXJyZW50IG9uZSBmcm9tIHRoZSBv cmRlcnMgYml0ZmllbGQgYW5kIHJldHVybmluZyB0aGUgbmV4dCBvbmUuCgpTbyB0aGUgZmlyc3Qg bG9vcCBzdGFydHMgYXQgdGhlIGhpZ2hlc3Qgb3JkZXIgYW5kIGtlZXBzIGNoZWNraW5nIGxvd2Vy IG9yZGVycwp1bnRpbCBvbmUgZnVsbHkgZml0cyBpbiB0aGUgVk1BLiBBbmQgdGhlIHNlY29uZCBs b29wIHN0YXJ0cyBhdCB0aGUgZmlyc3Qgb3JkZXIKdGhhdCB3YXMgZm91bmQgdG8gZnVsbHkgZml0 cyBhbmQgbG9vcHMgdG8gbG93ZXIgb3JkZXJzIHVudGlsIGFuIGFsbG9jYXRpb24gaXMKc3VjY2Vz c2Z1bC4KClNvIEkgZG9uJ3Qgc2VlIGEgbmVlZCB0byBjb21iaW5lIHRoZSBsb29wcy4KCj4gCj4+ ICtmYWxsYmFjazoKPj4gK8KgwqDCoCByZXR1cm4gdm1hX2FsbG9jX3plcm9lZF9tb3ZhYmxlX2Zv bGlvKHZtYSwgdm1mLT5hZGRyZXNzKTsKPj4gK30KPj4gKyNlbHNlCj4+ICsjZGVmaW5lIGFsbG9j X2Fub25fZm9saW8odm1mKSBcCj4+ICvCoMKgwqDCoMKgwqDCoCB2bWFfYWxsb2NfemVyb2VkX21v dmFibGVfZm9saW8oKHZtZiktPnZtYSwgKHZtZiktPmFkZHJlc3MpCj4+ICsjZW5kaWYKPj4gKwo+ PiDCoCAvKgo+PiDCoMKgICogV2UgZW50ZXIgd2l0aCBub24tZXhjbHVzaXZlIG1tYXBfbG9jayAo dG8gZXhjbHVkZSB2bWEgY2hhbmdlcywKPj4gwqDCoCAqIGJ1dCBhbGxvdyBjb25jdXJyZW50IGZh dWx0cyksIGFuZCBwdGUgbWFwcGVkIGJ1dCBub3QgeWV0IGxvY2tlZC4KPj4gQEAgLTQxMzIsNiAr NDIxMCw5IEBAIHZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ PiDCoMKgICovCj4+IMKgIHN0YXRpYyB2bV9mYXVsdF90IGRvX2Fub255bW91c19wYWdlKHN0cnVj dCB2bV9mYXVsdCAqdm1mKQo+PiDCoCB7Cj4+ICvCoMKgwqAgaW50IGk7Cj4+ICvCoMKgwqAgaW50 IG5yX3BhZ2VzID0gMTsKPj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGFkZHIgPSB2bWYtPmFkZHJl c3M7Cj4+IMKgwqDCoMKgwqAgYm9vbCB1ZmZkX3dwID0gdm1mX29yaWdfcHRlX3VmZmRfd3Aodm1m KTsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi0+dm1hOwo+ PiDCoMKgwqDCoMKgIHN0cnVjdCBmb2xpbyAqZm9saW87Cj4gCj4gTml0OiByZXZlcnNlIGNocmlz dG1hcyB0cmVlIDopCgpBQ0sKCj4gCj4+IEBAIC00MTc2LDEwICs0MjU3LDE1IEBAIHN0YXRpYyB2 bV9mYXVsdF90IGRvX2Fub255bW91c19wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+PiDCoMKg wqDCoMKgIC8qIEFsbG9jYXRlIG91ciBvd24gcHJpdmF0ZSBwYWdlLiAqLwo+PiDCoMKgwqDCoMKg IGlmICh1bmxpa2VseShhbm9uX3ZtYV9wcmVwYXJlKHZtYSkpKQo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgZ290byBvb207Cj4+IC3CoMKgwqAgZm9saW8gPSB2bWFfYWxsb2NfemVyb2VkX21vdmFibGVf Zm9saW8odm1hLCB2bWYtPmFkZHJlc3MpOwo+PiArwqDCoMKgIGZvbGlvID0gYWxsb2NfYW5vbl9m b2xpbyh2bWYpOwo+PiArwqDCoMKgIGlmIChJU19FUlIoZm9saW8pKQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIDA7Cj4+IMKgwqDCoMKgwqAgaWYgKCFmb2xpbykKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGdvdG8gb29tOwo+PiDCoCArwqDCoMKgIG5yX3BhZ2VzID0gZm9saW9fbnJfcGFnZXMoZm9s aW8pOwo+PiArwqDCoMKgIGFkZHIgPSBBTElHTl9ET1dOKHZtZi0+YWRkcmVzcywgbnJfcGFnZXMg KiBQQUdFX1NJWkUpOwo+PiArCj4+IMKgwqDCoMKgwqAgaWYgKG1lbV9jZ3JvdXBfY2hhcmdlKGZv bGlvLCB2bWEtPnZtX21tLCBHRlBfS0VSTkVMKSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8g b29tX2ZyZWVfcGFnZTsKPj4gwqDCoMKgwqDCoCBmb2xpb190aHJvdHRsZV9zd2FwcmF0ZShmb2xp bywgR0ZQX0tFUk5FTCk7Cj4+IEBAIC00MTk2LDEyICs0MjgyLDEzIEBAIHN0YXRpYyB2bV9mYXVs dF90IGRvX2Fub255bW91c19wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+PiDCoMKgwqDCoMKg IGlmICh2bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBlbnRy eSA9IHB0ZV9ta3dyaXRlKHB0ZV9ta2RpcnR5KGVudHJ5KSwgdm1hKTsKPj4gwqAgLcKgwqDCoCB2 bWYtPnB0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sodm1hLT52bV9tbSwgdm1mLT5wbWQsIHZtZi0+ YWRkcmVzcywKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnZtZi0+cHRsKTsKPj4gK8KgwqDC oCB2bWYtPnB0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sodm1hLT52bV9tbSwgdm1mLT5wbWQsIGFk ZHIsICZ2bWYtPnB0bCk7Cj4+IMKgwqDCoMKgwqAgaWYgKCF2bWYtPnB0ZSkKPj4gwqDCoMKgwqDC oMKgwqDCoMKgIGdvdG8gcmVsZWFzZTsKPj4gLcKgwqDCoCBpZiAodm1mX3B0ZV9jaGFuZ2VkKHZt ZikpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHVwZGF0ZV9tbXVfdGxiKHZtYSwgdm1mLT5hZGRyZXNz LCB2bWYtPnB0ZSk7Cj4+ICvCoMKgwqAgaWYgKChucl9wYWdlcyA9PSAxICYmIHZtZl9wdGVfY2hh bmdlZCh2bWYpKSB8fAo+PiArwqDCoMKgwqDCoMKgwqAgKG5yX3BhZ2VzwqAgPiAxICYmICFwdGVf cmFuZ2Vfbm9uZSh2bWYtPnB0ZSwgbnJfcGFnZXMpKSkgewo+PiArwqDCoMKgwqDCoMKgwqAgZm9y IChpID0gMDsgaSA8IG5yX3BhZ2VzOyBpKyspCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVw ZGF0ZV9tbXVfdGxiKHZtYSwgYWRkciArIFBBR0VfU0laRSAqIGksIHZtZi0+cHRlICsgaSk7Cj4g Cj4gQ29tbWVudDogc2VwYXJhdGluZyB0aGUgb3JkZXItMCBjYXNlIGZyb20gdGhlIG90aGVyIGNh c2UgbWlnaHQgbWFrZSB0aGlzIGVhc2llcgo+IHRvIHJlYWQuCgpZZWFoIGZhaXIgZW5vdWdoLiBX aWxsIGZpeC4KCj4gCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIHJlbGVhc2U7Cj4+IMKgwqDC oMKgwqAgfQo+PiDCoCBAQCAtNDIxNiwxNiArNDMwMywxNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBk b19hbm9ueW1vdXNfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQKPj4gKnZtZikKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiBoYW5kbGVfdXNlcmZhdWx0KHZtZiwgVk1fVUZGRF9NSVNTSU5HKTsKPj4g wqDCoMKgwqDCoCB9Cj4+IMKgIC3CoMKgwqAgaW5jX21tX2NvdW50ZXIodm1hLT52bV9tbSwgTU1f QU5PTlBBR0VTKTsKPj4gLcKgwqDCoCBmb2xpb19hZGRfbmV3X2Fub25fcm1hcChmb2xpbywgdm1h LCB2bWYtPmFkZHJlc3MpOwo+PiArwqDCoMKgIGZvbGlvX3JlZl9hZGQoZm9saW8sIG5yX3BhZ2Vz IC0gMSk7Cj4+ICvCoMKgwqAgYWRkX21tX2NvdW50ZXIodm1hLT52bV9tbSwgTU1fQU5PTlBBR0VT LCBucl9wYWdlcyk7Cj4+ICvCoMKgwqAgZm9saW9fYWRkX25ld19hbm9uX3JtYXAoZm9saW8sIHZt YSwgYWRkcik7Cj4+IMKgwqDCoMKgwqAgZm9saW9fYWRkX2xydV92bWEoZm9saW8sIHZtYSk7Cj4+ IMKgIHNldHB0ZToKPj4gwqDCoMKgwqDCoCBpZiAodWZmZF93cCkKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGVudHJ5ID0gcHRlX21rdWZmZF93cChlbnRyeSk7Cj4+IC3CoMKgwqAgc2V0X3B0ZV9hdCh2 bWEtPnZtX21tLCB2bWYtPmFkZHJlc3MsIHZtZi0+cHRlLCBlbnRyeSk7Cj4+ICvCoMKgwqAgc2V0 X3B0ZXModm1hLT52bV9tbSwgYWRkciwgdm1mLT5wdGUsIGVudHJ5LCBucl9wYWdlcyk7Cj4+IMKg IMKgwqDCoMKgwqAgLyogTm8gbmVlZCB0byBpbnZhbGlkYXRlIC0gaXQgd2FzIG5vbi1wcmVzZW50 IGJlZm9yZSAqLwo+PiAtwqDCoMKgIHVwZGF0ZV9tbXVfY2FjaGVfcmFuZ2Uodm1mLCB2bWEsIHZt Zi0+YWRkcmVzcywgdm1mLT5wdGUsIDEpOwo+PiArwqDCoMKgIHVwZGF0ZV9tbXVfY2FjaGVfcmFu Z2Uodm1mLCB2bWEsIGFkZHIsIHZtZi0+cHRlLCBucl9wYWdlcyk7Cj4+IMKgIHVubG9jazoKPj4g wqDCoMKgwqDCoCBpZiAodm1mLT5wdGUpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwdGVfdW5tYXBf dW5sb2NrKHZtZi0+cHRlLCB2bWYtPnB0bCk7Cj4gCj4gQmVuY2htYXJraW5nIG9yZGVyLTAgYWxs b2NhdGlvbnMgbWlnaHQgYmUgaW50ZXJlc3RpbmcuIFRoZXJlIHdpbGwgYmUgc29tZSBhZGRlZAo+ IGNoZWNrcyArIG11bHRpcGxlIGxvb3BzL2NvbmRpdGlvbmFscyBmb3Igb3JkZXItMCB0aGF0IGNv dWxkIGJlIGF2b2lkZWQgYnkgaGF2aW5nCj4gdHdvIHNlcGFyYXRlIGNvZGUgcGF0aHMuIElmIHdl IGNhbid0IG1lYXN1cmUgYSBkaWZmZXJlbmNlLCBhbGwgZ29vZC4KClllcCB3aWxsIGRvIC0gd2ls bCBwb3N0IG51bWJlcnMgb25jZSBJIGhhdmUgdGhlbS4gSSd2ZSBiZWVuIGFzc3VtaW5nIHRoYXQg dGhlCm1ham9yIGNvc3QgaXMgY2xlYXJpbmcgdGhlIHBhZ2UsIGJ1dCBwZXJoYXBzIEknbSB3cm9u Zy4KCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=