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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 143F2C43219 for ; Wed, 9 Mar 2022 01:13:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230219AbiCIBOH (ORCPT ); Tue, 8 Mar 2022 20:14:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46462 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230264AbiCIBMT (ORCPT ); Tue, 8 Mar 2022 20:12:19 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37E2C154D29 for ; Tue, 8 Mar 2022 16:54:58 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id c14-20020a17090a674e00b001bf1c750f9bso2674132pjm.9 for ; Tue, 08 Mar 2022 16:54:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc:content-transfer-encoding; bh=rg3wku5xl2PL1N8SWaxt6E1BdTA98F4PakQ3p281Xms=; b=O64hORryFW0PuVuYKrnQl8oNSa4OGbfGckwZFC6nKrQkABNaZwPbHS2td2uADd2eZH r1INm/Xlv3kHI5ucB1SlOrh5nZt8oPjA7jMN3wcMLX8FiG+T8hVz0t6/BPdYZNm7QlEx 6rOaZlgdUJq/EvR5lSl8mT5/H9PmRz9JItr33y9PnUs83iBp3/X+ZVMhofDvVkOSand8 5nD1gKQMo1crl6fpOIt5iQAA3wE3L7ZWlaxefDbjhbzR4AHf7oR8P8YkDvIESTegqxPD Q3MSNJxddUTcyDQ1MHBLL4jZATzOwhcOQOp7p6S+awYx3C/q/CcYKaKIK0p9BcZm7eI5 Ctgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc:content-transfer-encoding; bh=rg3wku5xl2PL1N8SWaxt6E1BdTA98F4PakQ3p281Xms=; b=XUHsCLbZ4e/ruDV5KuQUcIDL+H+MthmVWW+FZckQXHgiJgrudUzs7/5YcSya5mn+qL fc+FhJ5nwcU1bUwHsNeiLlSFyecZx9qCB4qAr5pioARrQ1YVVcrpi2TQTF5QF8d01+5Q 4YC7FhzbV7bw6JyQ93KsNe3BXmlnlnk1gupIlANZWFOvx5BsGiLZQFVTe5NdibzRlwi2 wZbGvjFIF1oKeRr5TK0YHI/wIG4fBHCSwUjOBSqNL8tc7HgJgC77JLpa38e1/vVpLXak E8inUQmKFWwJL0ZARkm4P/4AUUaWlGsA7tbhi8DcXRMjpNXNlAND7Qh8T+ufRjtlaQrx F0oQ== X-Gm-Message-State: AOAM5310oQYAKLf56Na2vSlBbJQoMeAuctJgbcU4aM6Dx3+MqqPkEQQD B7NrduMw1pwXzIWzSqWyRGMTOxVIz64= X-Google-Smtp-Source: ABdhPJx2Wz0gCLpU/Cb3g6spmRzUflTMCrVxePalS3HpuV0FsFmfWj4JRbLWXQl61RBEoVEf1MoFqyQ5WaM= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:57a6:54a6:aad1:c0a8]) (user=yuzhao job=sendgmr) by 2002:a05:6e02:1aaf:b0:2c5:3cc5:af7d with SMTP id l15-20020a056e021aaf00b002c53cc5af7dmr16764355ilv.32.1646783305487; Tue, 08 Mar 2022 15:48:25 -0800 (PST) Date: Tue, 8 Mar 2022 16:47:11 -0700 In-Reply-To: <20220308234723.3834941-1-yuzhao@google.com> Message-Id: <20220308234723.3834941-2-yuzhao@google.com> Mime-Version: 1.0 References: <20220308234723.3834941-1-yuzhao@google.com> X-Mailer: git-send-email 2.35.1.616.g0bdcbb4464-goog Subject: [PATCH v8 01/14] mm: x86, arm64: add arch_has_hw_pte_young() From: Yu Zhao To: Andrew Morton Cc: Andi Kleen , Aneesh Kumar , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Jesse Barnes , Johannes Weiner , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Rik van Riel , Vlastimil Babka , Will Deacon , Ying Huang , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, page-reclaim@google.com, x86@kernel.org, Yu Zhao , Brian Geffon , Jan Alexander Steffens , Oleksandr Natalenko , Steven Barrett , Suleiman Souhlal , Daniel Byrne , Donald Carr , "=?UTF-8?q?Holger=20Hoffst=C3=A4tte?=" , Konstantin Kharlamov , Shuang Zhai , Sofia Trinh , Vaibhav Jain Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some architectures automatically set the accessed bit in PTEs, e.g., x86 and arm64 v8.2. On architectures that do not have this capability, clearing the accessed bit in a PTE usually triggers a page fault following the TLB miss of this PTE (to emulate the accessed bit). Being aware of this capability can help make better decisions, e.g., whether to spread the work out over a period of time to reduce bursty page faults when trying to clear the accessed bit in many PTEs. Note that theoretically this capability can be unreliable, e.g., hotplugged CPUs might be different from builtin ones. Therefore it should not be used in architecture-independent code that involves correctness, e.g., to determine whether TLB flushes are required (in combination with the accessed bit). Signed-off-by: Yu Zhao Acked-by: Brian Geffon Acked-by: Jan Alexander Steffens (heftig) Acked-by: Oleksandr Natalenko Acked-by: Steven Barrett Acked-by: Suleiman Souhlal Acked-by: Will Deacon Tested-by: Daniel Byrne Tested-by: Donald Carr Tested-by: Holger Hoffst=C3=A4tte Tested-by: Konstantin Kharlamov Tested-by: Shuang Zhai Tested-by: Sofia Trinh Tested-by: Vaibhav Jain --- arch/arm64/include/asm/pgtable.h | 14 ++------------ arch/x86/include/asm/pgtable.h | 6 +++--- include/linux/pgtable.h | 13 +++++++++++++ mm/memory.c | 14 +------------- 4 files changed, 19 insertions(+), 28 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgta= ble.h index c4ba047a82d2..990358eca359 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -999,23 +999,13 @@ static inline void update_mmu_cache(struct vm_area_st= ruct *vma, * page after fork() + CoW for pfn mappings. We don't always have a * hardware-managed access flag on arm64. */ -static inline bool arch_faults_on_old_pte(void) -{ - WARN_ON(preemptible()); - - return !cpu_has_hw_af(); -} -#define arch_faults_on_old_pte arch_faults_on_old_pte +#define arch_has_hw_pte_young cpu_has_hw_af =20 /* * Experimentally, it's cheap to set the access flag in hardware and we * benefit from prefaulting mappings as 'old' to start with. */ -static inline bool arch_wants_old_prefaulted_pte(void) -{ - return !arch_faults_on_old_pte(); -} -#define arch_wants_old_prefaulted_pte arch_wants_old_prefaulted_pte +#define arch_wants_old_prefaulted_pte cpu_has_hw_af =20 static inline pgprot_t arch_filter_pgprot(pgprot_t prot) { diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.= h index 8a9432fb3802..60b6ce45c2e3 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1423,10 +1423,10 @@ static inline bool arch_has_pfn_modify_check(void) return boot_cpu_has_bug(X86_BUG_L1TF); } =20 -#define arch_faults_on_old_pte arch_faults_on_old_pte -static inline bool arch_faults_on_old_pte(void) +#define arch_has_hw_pte_young arch_has_hw_pte_young +static inline bool arch_has_hw_pte_young(void) { - return false; + return true; } =20 #endif /* __ASSEMBLY__ */ diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index f4f4077b97aa..79f64dcff07d 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -259,6 +259,19 @@ static inline int pmdp_clear_flush_young(struct vm_are= a_struct *vma, #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ #endif =20 +#ifndef arch_has_hw_pte_young +/* + * Return whether the accessed bit is supported on the local CPU. + * + * This stub assumes accessing through an old PTE triggers a page fault. + * Architectures that automatically set the access bit should overwrite it= . + */ +static inline bool arch_has_hw_pte_young(void) +{ + return false; +} +#endif + #ifndef __HAVE_ARCH_PTEP_CLEAR static inline void ptep_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) diff --git a/mm/memory.c b/mm/memory.c index c125c4969913..a7379196a47e 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -122,18 +122,6 @@ int randomize_va_space __read_mostly =3D 2; #endif =20 -#ifndef arch_faults_on_old_pte -static inline bool arch_faults_on_old_pte(void) -{ - /* - * Those arches which don't have hw access flag feature need to - * implement their own helper. By default, "true" means pagefault - * will be hit on old pte. - */ - return true; -} -#endif - #ifndef arch_wants_old_prefaulted_pte static inline bool arch_wants_old_prefaulted_pte(void) { @@ -2778,7 +2766,7 @@ static inline bool cow_user_page(struct page *dst, st= ruct page *src, * On architectures with software "accessed" bits, we would * take a double page fault, so mark it accessed here. */ - if (arch_faults_on_old_pte() && !pte_young(vmf->orig_pte)) { + if (!arch_has_hw_pte_young() && !pte_young(vmf->orig_pte)) { pte_t entry; =20 vmf->pte =3D pte_offset_map_lock(mm, vmf->pmd, addr, &vmf->ptl); --=20 2.35.1.616.g0bdcbb4464-goog 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 64999C433EF for ; Tue, 8 Mar 2022 23:50:01 +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:Cc:To:From:Subject:References: Mime-Version:Message-Id:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=s+K7NXuEWO1JyqmINM5PmsJ30Grfp5D74UIz4tr57tE=; b=yMF+vIqdx06t+Vi6y720f9QHax pt9eM12oNDyyWooGEZ3lW+PrAmZYyOFZe57XwJxlxDLy9ylubBw5iJFwGpNSDvYWtGpMQCbfdMcAY 3dFAMrdCbwx1AjyyfTKlMAsZIIo/w05kn0YpuMQZKMS1NMW90yWjwRjlyMAjAK2cxkI4oYfmvBfX4 R7ghzLxb7plmrSqJXB/OJhqV8BYdy9kpm/Vm1ZXNl8dn6X39yZS7yw1BPIikWzliRlccEfc6JsuXL EVkKZRS4/xB7rWRsVaMl0G7Yq92siHYaq7/sObCG1zlCmN0+0dU1FwGEt3Z65v23g6XRHq3LnH3k9 /3npJ7mQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nRjZQ-006aTu-1h; Tue, 08 Mar 2022 23:48:48 +0000 Received: from mail-io1-xd49.google.com ([2607:f8b0:4864:20::d49]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nRjZ5-006aHS-4c for linux-arm-kernel@lists.infradead.org; Tue, 08 Mar 2022 23:48:30 +0000 Received: by mail-io1-xd49.google.com with SMTP id z16-20020a05660217d000b006461c7cbee3so549560iox.21 for ; Tue, 08 Mar 2022 15:48:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc:content-transfer-encoding; bh=rg3wku5xl2PL1N8SWaxt6E1BdTA98F4PakQ3p281Xms=; b=O64hORryFW0PuVuYKrnQl8oNSa4OGbfGckwZFC6nKrQkABNaZwPbHS2td2uADd2eZH r1INm/Xlv3kHI5ucB1SlOrh5nZt8oPjA7jMN3wcMLX8FiG+T8hVz0t6/BPdYZNm7QlEx 6rOaZlgdUJq/EvR5lSl8mT5/H9PmRz9JItr33y9PnUs83iBp3/X+ZVMhofDvVkOSand8 5nD1gKQMo1crl6fpOIt5iQAA3wE3L7ZWlaxefDbjhbzR4AHf7oR8P8YkDvIESTegqxPD Q3MSNJxddUTcyDQ1MHBLL4jZATzOwhcOQOp7p6S+awYx3C/q/CcYKaKIK0p9BcZm7eI5 Ctgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc:content-transfer-encoding; bh=rg3wku5xl2PL1N8SWaxt6E1BdTA98F4PakQ3p281Xms=; b=TF04W7UKu4meMeDbu8/lrmHcrVFVAv3IqMsmYev/DPszftfL03+mIfjvW89FnbOf1p OZRE8Y+C+jcOr6HnYsHeL12hpoClhnMYuj14O90IBldY+sXy0qpDuKRribciiyrnFi+M dDwMfJPBCVnJQkcZ2JQtHgX+VBDMuKWMeTe5/rfueYGR9eEyt/grhBvTezR0boxaNEK9 AcznY+cdkKXGI/eI5PPgBw8BNkRp8yCrMuKwQR3y6dEBCbz6Q74lisiZu2O6Au+FVt0I MbCopo6lOzBcovfvMk4iX0qoNUrliVXhXXXwexD3pq+ERnyZ2GBEhOqtFwbf0pcpoxnl 1P6Q== X-Gm-Message-State: AOAM532tg5F75R91gQOls0qPo+L7EfoZtIcHYdXHUbjqC5QqZ9XAD5Bi SE624zh8jdIepKaSXDQIoopOXVAW3IQ= X-Google-Smtp-Source: ABdhPJx2Wz0gCLpU/Cb3g6spmRzUflTMCrVxePalS3HpuV0FsFmfWj4JRbLWXQl61RBEoVEf1MoFqyQ5WaM= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:57a6:54a6:aad1:c0a8]) (user=yuzhao job=sendgmr) by 2002:a05:6e02:1aaf:b0:2c5:3cc5:af7d with SMTP id l15-20020a056e021aaf00b002c53cc5af7dmr16764355ilv.32.1646783305487; Tue, 08 Mar 2022 15:48:25 -0800 (PST) Date: Tue, 8 Mar 2022 16:47:11 -0700 In-Reply-To: <20220308234723.3834941-1-yuzhao@google.com> Message-Id: <20220308234723.3834941-2-yuzhao@google.com> Mime-Version: 1.0 References: <20220308234723.3834941-1-yuzhao@google.com> X-Mailer: git-send-email 2.35.1.616.g0bdcbb4464-goog Subject: [PATCH v8 01/14] mm: x86, arm64: add arch_has_hw_pte_young() From: Yu Zhao To: Andrew Morton Cc: Andi Kleen , Aneesh Kumar , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Jesse Barnes , Johannes Weiner , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Rik van Riel , Vlastimil Babka , Will Deacon , Ying Huang , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, page-reclaim@google.com, x86@kernel.org, Yu Zhao , Brian Geffon , Jan Alexander Steffens , Oleksandr Natalenko , Steven Barrett , Suleiman Souhlal , Daniel Byrne , Donald Carr , "=?UTF-8?q?Holger=20Hoffst=C3=A4tte?=" , Konstantin Kharlamov , Shuang Zhai , Sofia Trinh , Vaibhav Jain X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220308_154827_220925_E7482E7A X-CRM114-Status: GOOD ( 18.49 ) 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 U29tZSBhcmNoaXRlY3R1cmVzIGF1dG9tYXRpY2FsbHkgc2V0IHRoZSBhY2Nlc3NlZCBiaXQgaW4g UFRFcywgZS5nLiwKeDg2IGFuZCBhcm02NCB2OC4yLiBPbiBhcmNoaXRlY3R1cmVzIHRoYXQgZG8g bm90IGhhdmUgdGhpcyBjYXBhYmlsaXR5LApjbGVhcmluZyB0aGUgYWNjZXNzZWQgYml0IGluIGEg UFRFIHVzdWFsbHkgdHJpZ2dlcnMgYSBwYWdlIGZhdWx0CmZvbGxvd2luZyB0aGUgVExCIG1pc3Mg b2YgdGhpcyBQVEUgKHRvIGVtdWxhdGUgdGhlIGFjY2Vzc2VkIGJpdCkuCgpCZWluZyBhd2FyZSBv ZiB0aGlzIGNhcGFiaWxpdHkgY2FuIGhlbHAgbWFrZSBiZXR0ZXIgZGVjaXNpb25zLCBlLmcuLAp3 aGV0aGVyIHRvIHNwcmVhZCB0aGUgd29yayBvdXQgb3ZlciBhIHBlcmlvZCBvZiB0aW1lIHRvIHJl ZHVjZSBidXJzdHkKcGFnZSBmYXVsdHMgd2hlbiB0cnlpbmcgdG8gY2xlYXIgdGhlIGFjY2Vzc2Vk IGJpdCBpbiBtYW55IFBURXMuCgpOb3RlIHRoYXQgdGhlb3JldGljYWxseSB0aGlzIGNhcGFiaWxp dHkgY2FuIGJlIHVucmVsaWFibGUsIGUuZy4sCmhvdHBsdWdnZWQgQ1BVcyBtaWdodCBiZSBkaWZm ZXJlbnQgZnJvbSBidWlsdGluIG9uZXMuIFRoZXJlZm9yZSBpdApzaG91bGQgbm90IGJlIHVzZWQg aW4gYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGNvZGUgdGhhdCBpbnZvbHZlcwpjb3JyZWN0bmVz cywgZS5nLiwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgVExCIGZsdXNoZXMgYXJlIHJlcXVpcmVkIChp bgpjb21iaW5hdGlvbiB3aXRoIHRoZSBhY2Nlc3NlZCBiaXQpLgoKU2lnbmVkLW9mZi1ieTogWXUg WmhhbyA8eXV6aGFvQGdvb2dsZS5jb20+CkFja2VkLWJ5OiBCcmlhbiBHZWZmb24gPGJnZWZmb25A Z29vZ2xlLmNvbT4KQWNrZWQtYnk6IEphbiBBbGV4YW5kZXIgU3RlZmZlbnMgKGhlZnRpZykgPGhl ZnRpZ0BhcmNobGludXgub3JnPgpBY2tlZC1ieTogT2xla3NhbmRyIE5hdGFsZW5rbyA8b2xla3Nh bmRyQG5hdGFsZW5rby5uYW1lPgpBY2tlZC1ieTogU3RldmVuIEJhcnJldHQgPHN0ZXZlbkBsaXF1 b3JpeC5uZXQ+CkFja2VkLWJ5OiBTdWxlaW1hbiBTb3VobGFsIDxzdWxlaW1hbkBnb29nbGUuY29t PgpBY2tlZC1ieTogV2lsbCBEZWFjb24gPHdpbGxAa2VybmVsLm9yZz4KVGVzdGVkLWJ5OiBEYW5p ZWwgQnlybmUgPGRqYnlybmVAbXR1LmVkdT4KVGVzdGVkLWJ5OiBEb25hbGQgQ2FyciA8ZEBjaGFv cy1yZWlucy5jb20+ClRlc3RlZC1ieTogSG9sZ2VyIEhvZmZzdMOkdHRlIDxob2xnZXJAYXBwbGll ZC1hc3luY2hyb255LmNvbT4KVGVzdGVkLWJ5OiBLb25zdGFudGluIEtoYXJsYW1vdiA8SGktQW5n ZWxAeWFuZGV4LnJ1PgpUZXN0ZWQtYnk6IFNodWFuZyBaaGFpIDxzemhhaTJAY3Mucm9jaGVzdGVy LmVkdT4KVGVzdGVkLWJ5OiBTb2ZpYSBUcmluaCA8c29maWEudHJpbmhAZWRpLndvcmtzPgpUZXN0 ZWQtYnk6IFZhaWJoYXYgSmFpbiA8dmFpYmhhdkBsaW51eC5pYm0uY29tPgotLS0KIGFyY2gvYXJt NjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oIHwgMTQgKystLS0tLS0tLS0tLS0KIGFyY2gveDg2L2lu Y2x1ZGUvYXNtL3BndGFibGUuaCAgIHwgIDYgKysrLS0tCiBpbmNsdWRlL2xpbnV4L3BndGFibGUu aCAgICAgICAgICB8IDEzICsrKysrKysrKysrKysKIG1tL21lbW9yeS5jICAgICAgICAgICAgICAg ICAgICAgIHwgMTQgKy0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9u cygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9wZ3RhYmxlLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaAppbmRleCBjNGJh MDQ3YTgyZDIuLjk5MDM1OGVjYTM1OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9wZ3RhYmxlLmgKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKQEAgLTk5 OSwyMyArOTk5LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfbW11X2NhY2hlKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogICogcGFnZSBhZnRlciBmb3JrKCkgKyBDb1cgZm9yIHBm biBtYXBwaW5ncy4gV2UgZG9uJ3QgYWx3YXlzIGhhdmUgYQogICogaGFyZHdhcmUtbWFuYWdlZCBh Y2Nlc3MgZmxhZyBvbiBhcm02NC4KICAqLwotc3RhdGljIGlubGluZSBib29sIGFyY2hfZmF1bHRz X29uX29sZF9wdGUodm9pZCkKLXsKLQlXQVJOX09OKHByZWVtcHRpYmxlKCkpOwotCi0JcmV0dXJu ICFjcHVfaGFzX2h3X2FmKCk7Ci19Ci0jZGVmaW5lIGFyY2hfZmF1bHRzX29uX29sZF9wdGUJCWFy Y2hfZmF1bHRzX29uX29sZF9wdGUKKyNkZWZpbmUgYXJjaF9oYXNfaHdfcHRlX3lvdW5nCQljcHVf aGFzX2h3X2FmCiAKIC8qCiAgKiBFeHBlcmltZW50YWxseSwgaXQncyBjaGVhcCB0byBzZXQgdGhl IGFjY2VzcyBmbGFnIGluIGhhcmR3YXJlIGFuZCB3ZQogICogYmVuZWZpdCBmcm9tIHByZWZhdWx0 aW5nIG1hcHBpbmdzIGFzICdvbGQnIHRvIHN0YXJ0IHdpdGguCiAgKi8KLXN0YXRpYyBpbmxpbmUg Ym9vbCBhcmNoX3dhbnRzX29sZF9wcmVmYXVsdGVkX3B0ZSh2b2lkKQotewotCXJldHVybiAhYXJj aF9mYXVsdHNfb25fb2xkX3B0ZSgpOwotfQotI2RlZmluZSBhcmNoX3dhbnRzX29sZF9wcmVmYXVs dGVkX3B0ZQlhcmNoX3dhbnRzX29sZF9wcmVmYXVsdGVkX3B0ZQorI2RlZmluZSBhcmNoX3dhbnRz X29sZF9wcmVmYXVsdGVkX3B0ZQljcHVfaGFzX2h3X2FmCiAKIHN0YXRpYyBpbmxpbmUgcGdwcm90 X3QgYXJjaF9maWx0ZXJfcGdwcm90KHBncHJvdF90IHByb3QpCiB7CmRpZmYgLS1naXQgYS9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxl LmgKaW5kZXggOGE5NDMyZmIzODAyLi42MGI2Y2U0NWMyZTMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3BndGFibGUuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxl LmgKQEAgLTE0MjMsMTAgKzE0MjMsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGFyY2hfaGFzX3Bm bl9tb2RpZnlfY2hlY2sodm9pZCkKIAlyZXR1cm4gYm9vdF9jcHVfaGFzX2J1ZyhYODZfQlVHX0wx VEYpOwogfQogCi0jZGVmaW5lIGFyY2hfZmF1bHRzX29uX29sZF9wdGUgYXJjaF9mYXVsdHNfb25f b2xkX3B0ZQotc3RhdGljIGlubGluZSBib29sIGFyY2hfZmF1bHRzX29uX29sZF9wdGUodm9pZCkK KyNkZWZpbmUgYXJjaF9oYXNfaHdfcHRlX3lvdW5nIGFyY2hfaGFzX2h3X3B0ZV95b3VuZworc3Rh dGljIGlubGluZSBib29sIGFyY2hfaGFzX2h3X3B0ZV95b3VuZyh2b2lkKQogewotCXJldHVybiBm YWxzZTsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCS8qIF9fQVNTRU1CTFlfXyAqLwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmggYi9pbmNsdWRlL2xpbnV4L3BndGFibGUu aAppbmRleCBmNGY0MDc3Yjk3YWEuLjc5ZjY0ZGNmZjA3ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9s aW51eC9wZ3RhYmxlLmgKKysrIGIvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmgKQEAgLTI1OSw2ICsy NTksMTkgQEAgc3RhdGljIGlubGluZSBpbnQgcG1kcF9jbGVhcl9mbHVzaF95b3VuZyhzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSwKICNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBB R0UgKi8KICNlbmRpZgogCisjaWZuZGVmIGFyY2hfaGFzX2h3X3B0ZV95b3VuZworLyoKKyAqIFJl dHVybiB3aGV0aGVyIHRoZSBhY2Nlc3NlZCBiaXQgaXMgc3VwcG9ydGVkIG9uIHRoZSBsb2NhbCBD UFUuCisgKgorICogVGhpcyBzdHViIGFzc3VtZXMgYWNjZXNzaW5nIHRocm91Z2ggYW4gb2xkIFBU RSB0cmlnZ2VycyBhIHBhZ2UgZmF1bHQuCisgKiBBcmNoaXRlY3R1cmVzIHRoYXQgYXV0b21hdGlj YWxseSBzZXQgdGhlIGFjY2VzcyBiaXQgc2hvdWxkIG92ZXJ3cml0ZSBpdC4KKyAqLworc3RhdGlj IGlubGluZSBib29sIGFyY2hfaGFzX2h3X3B0ZV95b3VuZyh2b2lkKQoreworCXJldHVybiBmYWxz ZTsKK30KKyNlbmRpZgorCiAjaWZuZGVmIF9fSEFWRV9BUkNIX1BURVBfQ0xFQVIKIHN0YXRpYyBp bmxpbmUgdm9pZCBwdGVwX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25n IGFkZHIsCiAJCQkgICAgICBwdGVfdCAqcHRlcCkKZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIv bW0vbWVtb3J5LmMKaW5kZXggYzEyNWM0OTY5OTEzLi5hNzM3OTE5NmE0N2UgMTAwNjQ0Ci0tLSBh L21tL21lbW9yeS5jCisrKyBiL21tL21lbW9yeS5jCkBAIC0xMjIsMTggKzEyMiw2IEBAIGludCBy YW5kb21pemVfdmFfc3BhY2UgX19yZWFkX21vc3RseSA9CiAJCQkJCTI7CiAjZW5kaWYKIAotI2lm bmRlZiBhcmNoX2ZhdWx0c19vbl9vbGRfcHRlCi1zdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9mYXVs dHNfb25fb2xkX3B0ZSh2b2lkKQotewotCS8qCi0JICogVGhvc2UgYXJjaGVzIHdoaWNoIGRvbid0 IGhhdmUgaHcgYWNjZXNzIGZsYWcgZmVhdHVyZSBuZWVkIHRvCi0JICogaW1wbGVtZW50IHRoZWly IG93biBoZWxwZXIuIEJ5IGRlZmF1bHQsICJ0cnVlIiBtZWFucyBwYWdlZmF1bHQKLQkgKiB3aWxs IGJlIGhpdCBvbiBvbGQgcHRlLgotCSAqLwotCXJldHVybiB0cnVlOwotfQotI2VuZGlmCi0KICNp Zm5kZWYgYXJjaF93YW50c19vbGRfcHJlZmF1bHRlZF9wdGUKIHN0YXRpYyBpbmxpbmUgYm9vbCBh cmNoX3dhbnRzX29sZF9wcmVmYXVsdGVkX3B0ZSh2b2lkKQogewpAQCAtMjc3OCw3ICsyNzY2LDcg QEAgc3RhdGljIGlubGluZSBib29sIGNvd191c2VyX3BhZ2Uoc3RydWN0IHBhZ2UgKmRzdCwgc3Ry dWN0IHBhZ2UgKnNyYywKIAkgKiBPbiBhcmNoaXRlY3R1cmVzIHdpdGggc29mdHdhcmUgImFjY2Vz c2VkIiBiaXRzLCB3ZSB3b3VsZAogCSAqIHRha2UgYSBkb3VibGUgcGFnZSBmYXVsdCwgc28gbWFy ayBpdCBhY2Nlc3NlZCBoZXJlLgogCSAqLwotCWlmIChhcmNoX2ZhdWx0c19vbl9vbGRfcHRlKCkg JiYgIXB0ZV95b3VuZyh2bWYtPm9yaWdfcHRlKSkgeworCWlmICghYXJjaF9oYXNfaHdfcHRlX3lv dW5nKCkgJiYgIXB0ZV95b3VuZyh2bWYtPm9yaWdfcHRlKSkgewogCQlwdGVfdCBlbnRyeTsKIAog CQl2bWYtPnB0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sobW0sIHZtZi0+cG1kLCBhZGRyLCAmdm1m LT5wdGwpOwotLSAKMi4zNS4xLjYxNi5nMGJkY2JiNDQ2NC1nb29nCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=