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 94410CD5BAF for ; Fri, 22 May 2026 02:33:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=PJskQkzEXcKmwKbi50aKVJcncb0pn8mjKGrAaOB03qE=; b=qGJnjTsax7GcfXjNbcykL6SY14 1ONY9ceY7Orfxh1REhwm5T9Lj9iwdIrZfvMAMxhGZkQXaq8EdDxFyEaa8K8bYM9Uq4V20OUL5gdh1 HTSJaC4FGVApGuM7Opb9YfCyEER6EKC/IVqy7lPmC02grkJXzJCyglAa42WJ/fsQFKG5sei+wCSW2 5vVrbN5aKjadvm7NaE81xYdI788tBwiIOlQaqILByqB/gVe1utNmSy+d/bJMzzKYqfu9LeQ86H4oh IbPikrw0RTbNzrrxgEXdZuZgVKPhvuD5d/cruM8tKahuegP7qqv2qacC1kAxjXdZX6GF3rPUm8Hpo ORIIjzvA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wQFhM-00000009ZDk-1eeT; Fri, 22 May 2026 02:33:16 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wQFhK-00000009ZDF-0wIg; Fri, 22 May 2026 02:33:15 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id B82EF41976; Fri, 22 May 2026 02:33:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95D771F000E9; Fri, 22 May 2026 02:33:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779417192; bh=PJskQkzEXcKmwKbi50aKVJcncb0pn8mjKGrAaOB03qE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=VeKgLmEuttrABY4GEK31DGR0wtvJQrbUrhDPjYBD0fAY03yRd26tJZ2eDRLS+BsTj Jc8ZK+9ymsTG20hwtzOzSZUvyudQMej6Bcon1ca6XsG1grJ2wrlF+v08Krpa2XNaB9 Ogvd1UMp4/wjQovEhihOm0Mu8C20O7Ia2iMmYnfKXWWDLPzC/a4o6aaU0wXG7HysH/ 6AnP+a6YdbcY2AEFhFpvHwLkkxaP+4/nZe5g9D/5FY0ux2dCqHaAtBygGeBMOESKzX Tt0YzWQyecsO9FINPUXBNfRbkfWKeNeWGARhT827Jk3NyexG0cbCk3pdahcQv7TUVx TSkNLfO2phPKw== From: "Barry Song (Xiaomi)" To: willy@infradead.org Cc: akpm@linux-foundation.org, baohua@kernel.org, bhe@redhat.com, chentao@kylinos.cn, chrisl@kernel.org, david@kernel.org, jack@suse.cz, kasong@tencent.com, kunwu.chan@gmail.com, liam@infradead.org, lianux.mm@gmail.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, liyangouwen1@oppo.com, ljs@kernel.org, loongarch@lists.linux.dev, mhocko@suse.com, nphamcs@gmail.com, nzzhao@126.com, pfalcato@suse.de, rppt@kernel.org, shikemeng@huaweicloud.com, surenb@google.com, vbabka@kernel.org, wanglian@kylinos.cn, youngjun.park@lge.com Subject: Re: [PATCH v2 0/5] mm: reduce mmap_lock contention and improve page fault performance Date: Fri, 22 May 2026 10:33:05 +0800 Message-Id: <20260522023305.98223-1-baohua@kernel.org> X-Mailer: git-send-email 2.39.3 (Apple Git-146) In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260521_193314_304953_FD8E513E X-CRM114-Status: GOOD ( 21.00 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Thu, May 21, 2026 at 5:16 AM Matthew Wilcox wrote: > > On Thu, May 21, 2026 at 05:14:20AM +0800, Barry Song wrote: > > My understanding is that we should not blame applications here. This is 2026: > > there are basically only two kinds of applications — single-threaded and > > multi-threaded — and single-threaded applications are nearly extinct. > > all of the applications i run are either single threaded or don't fork. > what multithreaded applications call fork? As I replied to David [1], we cannot control what those apps do. Technically, I agree with you that calling fork() within a multithreaded app may not be a good idea. But in such a complex ecosystem, we cannot simply say no to those apps. Especially when our phones are improving the kernel with this fix, our customers may instead complain that our phones regress their apps first. That feels unfair. I can offer a two-step plan. For the first step, we keep the current approach of dropping the VMA lock and retrying page faults, while trying to make the smallest possible change. As discussed with Suren, the draft code is being changed from a whitelist approach to a blacklist approach. This way, we do not need to touch `filemap.c` at all (probably because you are already maintaining `filemap.c` perfectly): diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 63de8e8684f2..4101d5fa7a82 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -1322,6 +1322,7 @@ void do_user_addr_fault(struct pt_regs *regs, if (!(flags & FAULT_FLAG_USER)) goto lock_mmap; +retry_vma: vma = lock_vma_under_rcu(mm, address); if (!vma) goto lock_mmap; @@ -1351,6 +1352,8 @@ void do_user_addr_fault(struct pt_regs *regs, ARCH_DEFAULT_PKEY); return; } + if (!(fault & VM_FAULT_RETRY_HARD)) + goto retry_vma; lock_mmap: retry: diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index a308e2c23b82..eeb7d6091bef 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -1659,6 +1659,7 @@ typedef __bitwise unsigned int vm_fault_t; * @VM_FAULT_NOPAGE: ->fault installed the pte, not return page * @VM_FAULT_LOCKED: ->fault locked the returned page * @VM_FAULT_RETRY: ->fault blocked, must retry + * @VM_FAULT_RETRY_HARD: ->fault blocked, must retry via mmap_lock * @VM_FAULT_FALLBACK: huge page fault failed, fall back to small * @VM_FAULT_DONE_COW: ->fault has fully handled COW * @VM_FAULT_NEEDDSYNC: ->fault did not modify page tables and needs @@ -1678,10 +1679,11 @@ enum vm_fault_reason { VM_FAULT_NOPAGE = (__force vm_fault_t)0x000100, VM_FAULT_LOCKED = (__force vm_fault_t)0x000200, VM_FAULT_RETRY = (__force vm_fault_t)0x000400, - VM_FAULT_FALLBACK = (__force vm_fault_t)0x000800, - VM_FAULT_DONE_COW = (__force vm_fault_t)0x001000, - VM_FAULT_NEEDDSYNC = (__force vm_fault_t)0x002000, - VM_FAULT_COMPLETED = (__force vm_fault_t)0x004000, + VM_FAULT_RETRY_HARD = (__force vm_fault_t)0x000800, + VM_FAULT_FALLBACK = (__force vm_fault_t)0x001000, + VM_FAULT_DONE_COW = (__force vm_fault_t)0x002000, + VM_FAULT_NEEDDSYNC = (__force vm_fault_t)0x004000, + VM_FAULT_COMPLETED = (__force vm_fault_t)0x008000, VM_FAULT_HINDEX_MASK = (__force vm_fault_t)0x0f0000, }; diff --git a/mm/memory.c b/mm/memory.c index 7c020995eafc..b3e7ffdd83f9 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3797,7 +3797,7 @@ static inline vm_fault_t vmf_can_call_fault(const struct vm_fault *vmf) if (vma->vm_ops->map_pages || !(vmf->flags & FAULT_FLAG_VMA_LOCK)) return 0; vma_end_read(vma); - return VM_FAULT_RETRY; + return VM_FAULT_RETRY | VM_FAULT_RETRY_HARD; } /** @@ -3824,7 +3824,7 @@ vm_fault_t __vmf_anon_prepare(struct vm_fault *vmf) return 0; if (vmf->flags & FAULT_FLAG_VMA_LOCK) { if (!mmap_read_trylock(vma->vm_mm)) - return VM_FAULT_RETRY; + return VM_FAULT_RETRY | VM_FAULT_RETRY_HARD; } if (__anon_vma_prepare(vma)) ret = VM_FAULT_OOM; @@ -4778,7 +4778,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) * under VMA lock. */ vma_end_read(vma); - ret = VM_FAULT_RETRY; + ret = VM_FAULT_RETRY | VM_FAULT_RETRY_HARD; goto out; } For the second step, we can move forward with your approach of ripping out the PF retry code, after getting in touch with the owners of those popular apps one by one to understand why they are doing this and whether they can find a different approach. In short, this would allow for a one- or two-year transition period. What do you think about that? [1] https://lore.kernel.org/linux-mm/CAGsJ_4xC5LdhuoWV1=tK-RZ5rkjc8aOKOkmb1L_8BG_3gtJhDg@mail.gmail.com/ 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 92E0ECD5BAB for ; Fri, 22 May 2026 02:33:31 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Ir9yGaicfzf5a9jbjiC595g4Mt+pw+X+XjhGaKRuCI0=; b=LnfW5fKBNf9/+v uhBoJMpVju2RN90QH7oQVi5QC5whHdZIt7ryCDfazO06MvFI7RVOfQikddvZSDq0yRu909/ztPjHg l5nz4vVS3JI8j04ZwMuwVsv4bj+q3sS7mCI2EOuSuQafb/7EFdW2oI1O/ebioMHbJsslWnyzqz06G 9hlVYu0jEv8SbbEupFb4/6sO4CEps9G3P1Ag01/uJE9sFK74pQXfk8hO+EOja20b7vPaZ0+J85gj+ lUw/NqhKom3xqSPoxmJy6569Z1aI9PJgkuIn5dt8VKfOzHLOqe7GuYQ9KWClqOc7rSkfJTzI1yE2/ 8CKIP7HElT5q917MF+Vg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wQFhM-00000009ZDo-265c; Fri, 22 May 2026 02:33:16 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wQFhK-00000009ZDF-0wIg; Fri, 22 May 2026 02:33:15 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id B82EF41976; Fri, 22 May 2026 02:33:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95D771F000E9; Fri, 22 May 2026 02:33:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779417192; bh=PJskQkzEXcKmwKbi50aKVJcncb0pn8mjKGrAaOB03qE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=VeKgLmEuttrABY4GEK31DGR0wtvJQrbUrhDPjYBD0fAY03yRd26tJZ2eDRLS+BsTj Jc8ZK+9ymsTG20hwtzOzSZUvyudQMej6Bcon1ca6XsG1grJ2wrlF+v08Krpa2XNaB9 Ogvd1UMp4/wjQovEhihOm0Mu8C20O7Ia2iMmYnfKXWWDLPzC/a4o6aaU0wXG7HysH/ 6AnP+a6YdbcY2AEFhFpvHwLkkxaP+4/nZe5g9D/5FY0ux2dCqHaAtBygGeBMOESKzX Tt0YzWQyecsO9FINPUXBNfRbkfWKeNeWGARhT827Jk3NyexG0cbCk3pdahcQv7TUVx TSkNLfO2phPKw== From: "Barry Song (Xiaomi)" To: willy@infradead.org Cc: akpm@linux-foundation.org, baohua@kernel.org, bhe@redhat.com, chentao@kylinos.cn, chrisl@kernel.org, david@kernel.org, jack@suse.cz, kasong@tencent.com, kunwu.chan@gmail.com, liam@infradead.org, lianux.mm@gmail.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, liyangouwen1@oppo.com, ljs@kernel.org, loongarch@lists.linux.dev, mhocko@suse.com, nphamcs@gmail.com, nzzhao@126.com, pfalcato@suse.de, rppt@kernel.org, shikemeng@huaweicloud.com, surenb@google.com, vbabka@kernel.org, wanglian@kylinos.cn, youngjun.park@lge.com Subject: Re: [PATCH v2 0/5] mm: reduce mmap_lock contention and improve page fault performance Date: Fri, 22 May 2026 10:33:05 +0800 Message-Id: <20260522023305.98223-1-baohua@kernel.org> X-Mailer: git-send-email 2.39.3 (Apple Git-146) In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260521_193314_304953_FD8E513E X-CRM114-Status: GOOD ( 21.00 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVGh1LCBNYXkgMjEsIDIwMjYgYXQgNToxNuKAr0FNIE1hdHRoZXcgV2lsY294IDx3aWxseUBp bmZyYWRlYWQub3JnPiB3cm90ZToKPgo+IE9uIFRodSwgTWF5IDIxLCAyMDI2IGF0IDA1OjE0OjIw QU0gKzA4MDAsIEJhcnJ5IFNvbmcgd3JvdGU6Cj4gPiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQg d2Ugc2hvdWxkIG5vdCBibGFtZSBhcHBsaWNhdGlvbnMgaGVyZS4gVGhpcyBpcyAyMDI2Ogo+ID4g dGhlcmUgYXJlIGJhc2ljYWxseSBvbmx5IHR3byBraW5kcyBvZiBhcHBsaWNhdGlvbnMg4oCUIHNp bmdsZS10aHJlYWRlZCBhbmQKPiA+IG11bHRpLXRocmVhZGVkIOKAlCBhbmQgc2luZ2xlLXRocmVh ZGVkIGFwcGxpY2F0aW9ucyBhcmUgbmVhcmx5IGV4dGluY3QuCj4KPiBhbGwgb2YgdGhlIGFwcGxp Y2F0aW9ucyBpIHJ1biBhcmUgZWl0aGVyIHNpbmdsZSB0aHJlYWRlZCBvciBkb24ndCBmb3JrLgo+ IHdoYXQgbXVsdGl0aHJlYWRlZCBhcHBsaWNhdGlvbnMgY2FsbCBmb3JrPwoKQXMgSSByZXBsaWVk IHRvIERhdmlkIFsxXSwgd2UgY2Fubm90IGNvbnRyb2wgd2hhdCB0aG9zZSBhcHBzIGRvLgpUZWNo bmljYWxseSwgSSBhZ3JlZSB3aXRoIHlvdSB0aGF0IGNhbGxpbmcgZm9yaygpIHdpdGhpbiBhCm11 bHRpdGhyZWFkZWQgYXBwIG1heSBub3QgYmUgYSBnb29kIGlkZWEuIEJ1dCBpbiBzdWNoIGEgY29t cGxleAplY29zeXN0ZW0sIHdlIGNhbm5vdCBzaW1wbHkgc2F5IG5vIHRvIHRob3NlIGFwcHMuCgpF c3BlY2lhbGx5IHdoZW4gb3VyIHBob25lcyBhcmUgaW1wcm92aW5nIHRoZSBrZXJuZWwgd2l0aCB0 aGlzIGZpeCwKb3VyIGN1c3RvbWVycyBtYXkgaW5zdGVhZCBjb21wbGFpbiB0aGF0IG91ciBwaG9u ZXMgcmVncmVzcyB0aGVpcgphcHBzIGZpcnN0LiBUaGF0IGZlZWxzIHVuZmFpci4KCkkgY2FuIG9m ZmVyIGEgdHdvLXN0ZXAgcGxhbi4gRm9yIHRoZSBmaXJzdCBzdGVwLCB3ZSBrZWVwIHRoZQpjdXJy ZW50IGFwcHJvYWNoIG9mIGRyb3BwaW5nIHRoZSBWTUEgbG9jayBhbmQgcmV0cnlpbmcgcGFnZSBm YXVsdHMsCndoaWxlIHRyeWluZyB0byBtYWtlIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBjaGFuZ2Uu CkFzIGRpc2N1c3NlZCB3aXRoIFN1cmVuLCB0aGUgZHJhZnQgY29kZSBpcyBiZWluZyBjaGFuZ2Vk IGZyb20gYQp3aGl0ZWxpc3QgYXBwcm9hY2ggdG8gYSBibGFja2xpc3QgYXBwcm9hY2guIFRoaXMg d2F5LCB3ZSBkbyBub3QKbmVlZCB0byB0b3VjaCBgZmlsZW1hcC5jYCBhdCBhbGwgKHByb2JhYmx5 IGJlY2F1c2UgeW91IGFyZSBhbHJlYWR5Cm1haW50YWluaW5nIGBmaWxlbWFwLmNgIHBlcmZlY3Rs eSk6CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vZmF1bHQuYyBiL2FyY2gveDg2L21tL2ZhdWx0 LmMKaW5kZXggNjNkZThlODY4NGYyLi40MTAxZDVmYTdhODIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2 L21tL2ZhdWx0LmMKKysrIGIvYXJjaC94ODYvbW0vZmF1bHQuYwpAQCAtMTMyMiw2ICsxMzIyLDcg QEAgdm9pZCBkb191c2VyX2FkZHJfZmF1bHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCiAJaWYgKCEo ZmxhZ3MgJiBGQVVMVF9GTEFHX1VTRVIpKQogCQlnb3RvIGxvY2tfbW1hcDsKIAorcmV0cnlfdm1h OgogCXZtYSA9IGxvY2tfdm1hX3VuZGVyX3JjdShtbSwgYWRkcmVzcyk7CiAJaWYgKCF2bWEpCiAJ CWdvdG8gbG9ja19tbWFwOwpAQCAtMTM1MSw2ICsxMzUyLDggQEAgdm9pZCBkb191c2VyX2FkZHJf ZmF1bHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCiAJCQkJCQkgQVJDSF9ERUZBVUxUX1BLRVkpOwog CQlyZXR1cm47CiAJfQorCWlmICghKGZhdWx0ICYgVk1fRkFVTFRfUkVUUllfSEFSRCkpCisJCWdv dG8gcmV0cnlfdm1hOwogbG9ja19tbWFwOgogCiByZXRyeToKZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvbW1fdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaAppbmRleCBhMzA4ZTJj MjNiODIuLmVlYjdkNjA5MWJlZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5o CisrKyBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaApAQCAtMTY1OSw2ICsxNjU5LDcgQEAgdHlw ZWRlZiBfX2JpdHdpc2UgdW5zaWduZWQgaW50IHZtX2ZhdWx0X3Q7CiAgKiBAVk1fRkFVTFRfTk9Q QUdFOgkJLT5mYXVsdCBpbnN0YWxsZWQgdGhlIHB0ZSwgbm90IHJldHVybiBwYWdlCiAgKiBAVk1f RkFVTFRfTE9DS0VEOgkJLT5mYXVsdCBsb2NrZWQgdGhlIHJldHVybmVkIHBhZ2UKICAqIEBWTV9G QVVMVF9SRVRSWToJCS0+ZmF1bHQgYmxvY2tlZCwgbXVzdCByZXRyeQorICogQFZNX0ZBVUxUX1JF VFJZX0hBUkQ6CS0+ZmF1bHQgYmxvY2tlZCwgbXVzdCByZXRyeSB2aWEgbW1hcF9sb2NrCiAgKiBA Vk1fRkFVTFRfRkFMTEJBQ0s6CQlodWdlIHBhZ2UgZmF1bHQgZmFpbGVkLCBmYWxsIGJhY2sgdG8g c21hbGwKICAqIEBWTV9GQVVMVF9ET05FX0NPVzoJCS0+ZmF1bHQgaGFzIGZ1bGx5IGhhbmRsZWQg Q09XCiAgKiBAVk1fRkFVTFRfTkVFRERTWU5DOgkJLT5mYXVsdCBkaWQgbm90IG1vZGlmeSBwYWdl IHRhYmxlcyBhbmQgbmVlZHMKQEAgLTE2NzgsMTAgKzE2NzksMTEgQEAgZW51bSB2bV9mYXVsdF9y ZWFzb24gewogCVZNX0ZBVUxUX05PUEFHRSAgICAgICAgID0gKF9fZm9yY2Ugdm1fZmF1bHRfdCkw eDAwMDEwMCwKIAlWTV9GQVVMVF9MT0NLRUQgICAgICAgICA9IChfX2ZvcmNlIHZtX2ZhdWx0X3Qp MHgwMDAyMDAsCiAJVk1fRkFVTFRfUkVUUlkgICAgICAgICAgPSAoX19mb3JjZSB2bV9mYXVsdF90 KTB4MDAwNDAwLAotCVZNX0ZBVUxUX0ZBTExCQUNLICAgICAgID0gKF9fZm9yY2Ugdm1fZmF1bHRf dCkweDAwMDgwMCwKLQlWTV9GQVVMVF9ET05FX0NPVyAgICAgICA9IChfX2ZvcmNlIHZtX2ZhdWx0 X3QpMHgwMDEwMDAsCi0JVk1fRkFVTFRfTkVFRERTWU5DICAgICAgPSAoX19mb3JjZSB2bV9mYXVs dF90KTB4MDAyMDAwLAotCVZNX0ZBVUxUX0NPTVBMRVRFRCAgICAgID0gKF9fZm9yY2Ugdm1fZmF1 bHRfdCkweDAwNDAwMCwKKwlWTV9GQVVMVF9SRVRSWV9IQVJEICAgICA9IChfX2ZvcmNlIHZtX2Zh dWx0X3QpMHgwMDA4MDAsCisJVk1fRkFVTFRfRkFMTEJBQ0sgICAgICAgPSAoX19mb3JjZSB2bV9m YXVsdF90KTB4MDAxMDAwLAorCVZNX0ZBVUxUX0RPTkVfQ09XICAgICAgID0gKF9fZm9yY2Ugdm1f ZmF1bHRfdCkweDAwMjAwMCwKKwlWTV9GQVVMVF9ORUVERFNZTkMgICAgICA9IChfX2ZvcmNlIHZt X2ZhdWx0X3QpMHgwMDQwMDAsCisJVk1fRkFVTFRfQ09NUExFVEVEICAgICAgPSAoX19mb3JjZSB2 bV9mYXVsdF90KTB4MDA4MDAwLAogCVZNX0ZBVUxUX0hJTkRFWF9NQVNLICAgID0gKF9fZm9yY2Ug dm1fZmF1bHRfdCkweDBmMDAwMCwKIH07CiAKZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0v bWVtb3J5LmMKaW5kZXggN2MwMjA5OTVlYWZjLi5iM2U3ZmZkZDgzZjkgMTAwNjQ0Ci0tLSBhL21t L21lbW9yeS5jCisrKyBiL21tL21lbW9yeS5jCkBAIC0zNzk3LDcgKzM3OTcsNyBAQCBzdGF0aWMg aW5saW5lIHZtX2ZhdWx0X3Qgdm1mX2Nhbl9jYWxsX2ZhdWx0KGNvbnN0IHN0cnVjdCB2bV9mYXVs dCAqdm1mKQogCWlmICh2bWEtPnZtX29wcy0+bWFwX3BhZ2VzIHx8ICEodm1mLT5mbGFncyAmIEZB VUxUX0ZMQUdfVk1BX0xPQ0spKQogCQlyZXR1cm4gMDsKIAl2bWFfZW5kX3JlYWQodm1hKTsKLQly ZXR1cm4gVk1fRkFVTFRfUkVUUlk7CisJcmV0dXJuIFZNX0ZBVUxUX1JFVFJZIHwgVk1fRkFVTFRf UkVUUllfSEFSRDsKIH0KIAogLyoqCkBAIC0zODI0LDcgKzM4MjQsNyBAQCB2bV9mYXVsdF90IF9f dm1mX2Fub25fcHJlcGFyZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJcmV0dXJuIDA7CiAJaWYg KHZtZi0+ZmxhZ3MgJiBGQVVMVF9GTEFHX1ZNQV9MT0NLKSB7CiAJCWlmICghbW1hcF9yZWFkX3Ry eWxvY2sodm1hLT52bV9tbSkpCi0JCQlyZXR1cm4gVk1fRkFVTFRfUkVUUlk7CisJCQlyZXR1cm4g Vk1fRkFVTFRfUkVUUlkgfCBWTV9GQVVMVF9SRVRSWV9IQVJEOwogCX0KIAlpZiAoX19hbm9uX3Zt YV9wcmVwYXJlKHZtYSkpCiAJCXJldCA9IFZNX0ZBVUxUX09PTTsKQEAgLTQ3NzgsNyArNDc3OCw3 IEBAIHZtX2ZhdWx0X3QgZG9fc3dhcF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCQkJCSAq IHVuZGVyIFZNQSBsb2NrLgogCQkJCSAqLwogCQkJCXZtYV9lbmRfcmVhZCh2bWEpOwotCQkJCXJl dCA9IFZNX0ZBVUxUX1JFVFJZOworCQkJCXJldCA9IFZNX0ZBVUxUX1JFVFJZIHwgVk1fRkFVTFRf UkVUUllfSEFSRDsKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAoKRm9yIHRoZSBzZWNvbmQgc3RlcCwg d2UgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIHlvdXIgYXBwcm9hY2ggb2YKcmlwcGluZyBvdXQgdGhl IFBGIHJldHJ5IGNvZGUsIGFmdGVyIGdldHRpbmcgaW4gdG91Y2ggd2l0aCB0aGUKb3duZXJzIG9m IHRob3NlIHBvcHVsYXIgYXBwcyBvbmUgYnkgb25lIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkgYXJl CmRvaW5nIHRoaXMgYW5kIHdoZXRoZXIgdGhleSBjYW4gZmluZCBhIGRpZmZlcmVudCBhcHByb2Fj aC4gSW4Kc2hvcnQsIHRoaXMgd291bGQgYWxsb3cgZm9yIGEgb25lLSBvciB0d28teWVhciB0cmFu c2l0aW9uIHBlcmlvZC4KCldoYXQgZG8geW91IHRoaW5rIGFib3V0IHRoYXQ/CgpbMV0gaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtbW0vQ0FHc0pfNHhDNUxkaHVvV1YxPXRLLVJaNXJramM4 YU9LT2ttYjFMXzhCR18zZ3RKaERnQG1haWwuZ21haWwuY29tLwoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0Cmxp bnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=