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 E5EADC433EF for ; Thu, 7 Apr 2022 03:16:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239924AbiDGDSK (ORCPT ); Wed, 6 Apr 2022 23:18:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42458 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239848AbiDGDR6 (ORCPT ); Wed, 6 Apr 2022 23:17:58 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77A256D38A for ; Wed, 6 Apr 2022 20:15:59 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-2e9e838590dso38553277b3.5 for ; Wed, 06 Apr 2022 20:15:59 -0700 (PDT) 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=6QY+PPZkM5UJQ/884cqbyYi9s5Db7D9+e+0IVeUY5fQ=; b=nEPxSLtg6u4TgWQt9dabuzaYb492tcGE/akVOfwlqqKDhm1WBbQVTjchieVCMk096+ QxLTwM3kLYao+8DrrUbo8GMwSwC+Pmu86VbFJnpkgMBR2q37Sh0STzsOeUa3QmpYPVEk FvgxylFKoR/boI7JQzm2RECj5DtEgFpoh4W7V6PMF6zksJZOLx/jXPhqtxhg0exMjaLg boVS7UveGqDvF65A/m7yuY6yau4Co94admCY6acoFxNVUB5ONDQ01hHxsRtQXiOBeAGK Gkk/5QYqRfrT5LiMNQP6h08lz+DK33sY+hp7FQGWIr8CNN5LhmglxzRTj4Zcj+tbbx5+ zlJg== 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=6QY+PPZkM5UJQ/884cqbyYi9s5Db7D9+e+0IVeUY5fQ=; b=PHNUpjP2A42st67+jbr83HNxdI1yn1tm4fSrXrY9dU4bX6fJKkuUeLpPcSxdZW0+g9 YoN4VB1xRfV3REpi/NfYrawYPANwFdYSCOhY9x9Ypo+5Zqf7dMVUkcym1h7FWc7NkMFO R8bSeJSpPdMNF3LrvPGIKjuTrGHyg0PWyt0sxcbBHIQWbweHFiBbPFx/5fqTP+F5X9j9 ba3WtwGTPb3i3TRa7bsZrdF8je4gmcYtyxjMivXNuEYHWv1s+b0NmTzagZUL7Z5FwTYM 545RD90E43TtthEZNoz/gevRkPYCQ7L3raH3T/4Qd/9L3oyFTv2qkdRmo1My1GnTIdWX UG5Q== X-Gm-Message-State: AOAM531Z1fPAKhBK9CLcFDFWLlME0i81xRUIHDJXmDJEkOTH6fWYMCSy +0XT/f89J/lQPC/fDUmrgHq4162/kXs= X-Google-Smtp-Source: ABdhPJwR9OjNDn2vZMD26M53z4jjUPTvPaXB7634uHguYxB0WKstJRhyJ2jygpZ+/OqInF6hyJUDfHyP68g= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:9ea2:c755:ae22:6862]) (user=yuzhao job=sendgmr) by 2002:a25:7388:0:b0:63d:9a0f:cc33 with SMTP id o130-20020a257388000000b0063d9a0fcc33mr8066047ybc.415.1649301358643; Wed, 06 Apr 2022 20:15:58 -0700 (PDT) Date: Wed, 6 Apr 2022 21:15:13 -0600 In-Reply-To: <20220407031525.2368067-1-yuzhao@google.com> Message-Id: <20220407031525.2368067-2-yuzhao@google.com> Mime-Version: 1.0 References: <20220407031525.2368067-1-yuzhao@google.com> X-Mailer: git-send-email 2.35.1.1094.g7c7d902a7c-goog Subject: [PATCH v10 01/14] mm: x86, arm64: add arch_has_hw_pte_young() From: Yu Zhao To: Stephen Rothwell , linux-mm@kvack.org Cc: Andi Kleen , Andrew Morton , Aneesh Kumar , Barry Song <21cnbao@gmail.com>, 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, page-reclaim@google.com, x86@kernel.org, Yu Zhao , Barry Song , 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 Reviewed-by: Barry Song 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 94e147e5456c..85d509a08ce3 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 bool pud_sect_supported(void) { diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.= h index 62ab07e24aef..016606a0cf20 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1424,10 +1424,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 76e3af9639d9..44a1ec7a2cac 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) { @@ -2784,7 +2772,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.1094.g7c7d902a7c-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 35B73C433EF for ; Thu, 7 Apr 2022 03:22:44 +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=v8HskydTDi3Lggr09a57e4QJjKICe1HjohG8Afe1c/Q=; b=LWIrh695e8egw0Mjtm31Wh+HqY B9YebuA/Tx4qc1eM4eBkYDIt+MMbKNi3tetmxyKkYagcdsUdk+EZHhow2BBZzWSF5sfEBw0d/LBb/ JN6lnUenxBT3ebEs7dqcSDHXoFZx7fsu4fJnGCCilUM9aKROZ6voUD/AF+G180/kSSIvZkRroiKUh VJVPMNgtv8WsAd+G/PSXi6UqS6uP/tdZ48MU8KbG3UaRsxniDhWw/wzdiY6l4lMsccUgcIpDz30Ct KULmp3bzdtWkObslAqXS9ATSX5os0p/h453BAClUJ3Hul1+kEq0lpCpI2JWtv8POuF2xImk9ezZw1 KgGEEZCQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ncIhB-0093NR-Ea; Thu, 07 Apr 2022 03:20:30 +0000 Received: from mail-yb1-xb49.google.com ([2607:f8b0:4864:20::b49]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ncIcq-0091VS-3P for linux-arm-kernel@lists.infradead.org; Thu, 07 Apr 2022 03:16:02 +0000 Received: by mail-yb1-xb49.google.com with SMTP id h16-20020a056902009000b00628a70584b2so3257880ybs.6 for ; Wed, 06 Apr 2022 20:15:59 -0700 (PDT) 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=6QY+PPZkM5UJQ/884cqbyYi9s5Db7D9+e+0IVeUY5fQ=; b=nEPxSLtg6u4TgWQt9dabuzaYb492tcGE/akVOfwlqqKDhm1WBbQVTjchieVCMk096+ QxLTwM3kLYao+8DrrUbo8GMwSwC+Pmu86VbFJnpkgMBR2q37Sh0STzsOeUa3QmpYPVEk FvgxylFKoR/boI7JQzm2RECj5DtEgFpoh4W7V6PMF6zksJZOLx/jXPhqtxhg0exMjaLg boVS7UveGqDvF65A/m7yuY6yau4Co94admCY6acoFxNVUB5ONDQ01hHxsRtQXiOBeAGK Gkk/5QYqRfrT5LiMNQP6h08lz+DK33sY+hp7FQGWIr8CNN5LhmglxzRTj4Zcj+tbbx5+ zlJg== 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=6QY+PPZkM5UJQ/884cqbyYi9s5Db7D9+e+0IVeUY5fQ=; b=aJsqHft4LpRd+qIbzdecoGR4Cf67ePYEa7hdz+XvF8aDxpuCCFDuUYLvAa8Dd2EFW0 zaeNMY8k0kf+xZH1WslVeUbFb5GZ8tLAKKUXagPNj64liJjF1QkiynzKPHz+yhg8VZ2x ZKQnL60L8nAEFcgUOUlQAi/9Onwh2cg/yC/J9o3GYH5x5Z44iecz8l6+GkOI8PL8HkoS it5VqClf0EnAu3lf7OOhdD7LkFUZc9N+gBfw8uC5IO3OqhBLo+5DzDl2vz+mWrXSiX2j YZ2rdSUk5ziqayDteoP9qnKA/rXo/gG9NZ7ySYqExnZSmyaElN3J24coNU9D1jmsB7aY OVVg== X-Gm-Message-State: AOAM530Nf/JSkA0MW913SO/ern9RO5twc4J4/cOgoulGt6bM0BGjF6q9 tazTm9EvXf0zO4S3YSHrexQKhqq1Su4= X-Google-Smtp-Source: ABdhPJwR9OjNDn2vZMD26M53z4jjUPTvPaXB7634uHguYxB0WKstJRhyJ2jygpZ+/OqInF6hyJUDfHyP68g= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:9ea2:c755:ae22:6862]) (user=yuzhao job=sendgmr) by 2002:a25:7388:0:b0:63d:9a0f:cc33 with SMTP id o130-20020a257388000000b0063d9a0fcc33mr8066047ybc.415.1649301358643; Wed, 06 Apr 2022 20:15:58 -0700 (PDT) Date: Wed, 6 Apr 2022 21:15:13 -0600 In-Reply-To: <20220407031525.2368067-1-yuzhao@google.com> Message-Id: <20220407031525.2368067-2-yuzhao@google.com> Mime-Version: 1.0 References: <20220407031525.2368067-1-yuzhao@google.com> X-Mailer: git-send-email 2.35.1.1094.g7c7d902a7c-goog Subject: [PATCH v10 01/14] mm: x86, arm64: add arch_has_hw_pte_young() From: Yu Zhao To: Stephen Rothwell , linux-mm@kvack.org Cc: Andi Kleen , Andrew Morton , Aneesh Kumar , Barry Song <21cnbao@gmail.com>, 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, page-reclaim@google.com, x86@kernel.org, Yu Zhao , Barry Song , 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-20220406_201600_225692_4A4A27D5 X-CRM114-Status: GOOD ( 17.28 ) 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+ClJldmlld2VkLWJ5OiBCYXJyeSBTb25nIDxiYW9odWFA a2VybmVsLm9yZz4KQWNrZWQtYnk6IEJyaWFuIEdlZmZvbiA8YmdlZmZvbkBnb29nbGUuY29tPgpB Y2tlZC1ieTogSmFuIEFsZXhhbmRlciBTdGVmZmVucyAoaGVmdGlnKSA8aGVmdGlnQGFyY2hsaW51 eC5vcmc+CkFja2VkLWJ5OiBPbGVrc2FuZHIgTmF0YWxlbmtvIDxvbGVrc2FuZHJAbmF0YWxlbmtv Lm5hbWU+CkFja2VkLWJ5OiBTdGV2ZW4gQmFycmV0dCA8c3RldmVuQGxpcXVvcml4Lm5ldD4KQWNr ZWQtYnk6IFN1bGVpbWFuIFNvdWhsYWwgPHN1bGVpbWFuQGdvb2dsZS5jb20+CkFja2VkLWJ5OiBX aWxsIERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgpUZXN0ZWQtYnk6IERhbmllbCBCeXJuZSA8ZGpi eXJuZUBtdHUuZWR1PgpUZXN0ZWQtYnk6IERvbmFsZCBDYXJyIDxkQGNoYW9zLXJlaW5zLmNvbT4K VGVzdGVkLWJ5OiBIb2xnZXIgSG9mZnN0w6R0dGUgPGhvbGdlckBhcHBsaWVkLWFzeW5jaHJvbnku Y29tPgpUZXN0ZWQtYnk6IEtvbnN0YW50aW4gS2hhcmxhbW92IDxIaS1BbmdlbEB5YW5kZXgucnU+ ClRlc3RlZC1ieTogU2h1YW5nIFpoYWkgPHN6aGFpMkBjcy5yb2NoZXN0ZXIuZWR1PgpUZXN0ZWQt Ynk6IFNvZmlhIFRyaW5oIDxzb2ZpYS50cmluaEBlZGkud29ya3M+ClRlc3RlZC1ieTogVmFpYmhh diBKYWluIDx2YWliaGF2QGxpbnV4LmlibS5jb20+Ci0tLQogYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9wZ3RhYmxlLmggfCAxNCArKy0tLS0tLS0tLS0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0 YWJsZS5oICAgfCAgNiArKystLS0KIGluY2x1ZGUvbGludXgvcGd0YWJsZS5oICAgICAgICAgIHwg MTMgKysrKysrKysrKysrKwogbW0vbWVtb3J5LmMgICAgICAgICAgICAgICAgICAgICAgfCAxNCAr LS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAyOCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaCBi L2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oCmluZGV4IDk0ZTE0N2U1NDU2Yy4uODVk NTA5YTA4Y2UzIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaAor KysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaApAQCAtOTk5LDIzICs5OTksMTMg QEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZV9tbXVfY2FjaGUoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsCiAgKiBwYWdlIGFmdGVyIGZvcmsoKSArIENvVyBmb3IgcGZuIG1hcHBpbmdzLiBX ZSBkb24ndCBhbHdheXMgaGF2ZSBhCiAgKiBoYXJkd2FyZS1tYW5hZ2VkIGFjY2VzcyBmbGFnIG9u IGFybTY0LgogICovCi1zdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9mYXVsdHNfb25fb2xkX3B0ZSh2 b2lkKQotewotCVdBUk5fT04ocHJlZW1wdGlibGUoKSk7Ci0KLQlyZXR1cm4gIWNwdV9oYXNfaHdf YWYoKTsKLX0KLSNkZWZpbmUgYXJjaF9mYXVsdHNfb25fb2xkX3B0ZQkJYXJjaF9mYXVsdHNfb25f b2xkX3B0ZQorI2RlZmluZSBhcmNoX2hhc19od19wdGVfeW91bmcJCWNwdV9oYXNfaHdfYWYKIAog LyoKICAqIEV4cGVyaW1lbnRhbGx5LCBpdCdzIGNoZWFwIHRvIHNldCB0aGUgYWNjZXNzIGZsYWcg aW4gaGFyZHdhcmUgYW5kIHdlCiAgKiBiZW5lZml0IGZyb20gcHJlZmF1bHRpbmcgbWFwcGluZ3Mg YXMgJ29sZCcgdG8gc3RhcnQgd2l0aC4KICAqLwotc3RhdGljIGlubGluZSBib29sIGFyY2hfd2Fu dHNfb2xkX3ByZWZhdWx0ZWRfcHRlKHZvaWQpCi17Ci0JcmV0dXJuICFhcmNoX2ZhdWx0c19vbl9v bGRfcHRlKCk7Ci19Ci0jZGVmaW5lIGFyY2hfd2FudHNfb2xkX3ByZWZhdWx0ZWRfcHRlCWFyY2hf d2FudHNfb2xkX3ByZWZhdWx0ZWRfcHRlCisjZGVmaW5lIGFyY2hfd2FudHNfb2xkX3ByZWZhdWx0 ZWRfcHRlCWNwdV9oYXNfaHdfYWYKIAogc3RhdGljIGlubGluZSBib29sIHB1ZF9zZWN0X3N1cHBv cnRlZCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5o IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oCmluZGV4IDYyYWIwN2UyNGFlZi4uMDE2 NjA2YTBjZjIwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKKysr IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oCkBAIC0xNDI0LDEwICsxNDI0LDEwIEBA IHN0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2hhc19wZm5fbW9kaWZ5X2NoZWNrKHZvaWQpCiAJcmV0 dXJuIGJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19MMVRGKTsKIH0KIAotI2RlZmluZSBhcmNoX2Zh dWx0c19vbl9vbGRfcHRlIGFyY2hfZmF1bHRzX29uX29sZF9wdGUKLXN0YXRpYyBpbmxpbmUgYm9v bCBhcmNoX2ZhdWx0c19vbl9vbGRfcHRlKHZvaWQpCisjZGVmaW5lIGFyY2hfaGFzX2h3X3B0ZV95 b3VuZyBhcmNoX2hhc19od19wdGVfeW91bmcKK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2hhc19o d19wdGVfeW91bmcodm9pZCkKIHsKLQlyZXR1cm4gZmFsc2U7CisJcmV0dXJuIHRydWU7CiB9CiAK ICNlbmRpZgkvKiBfX0FTU0VNQkxZX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGd0 YWJsZS5oIGIvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmgKaW5kZXggZjRmNDA3N2I5N2FhLi43OWY2 NGRjZmYwN2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGd0YWJsZS5oCisrKyBiL2luY2x1 ZGUvbGludXgvcGd0YWJsZS5oCkBAIC0yNTksNiArMjU5LDE5IEBAIHN0YXRpYyBpbmxpbmUgaW50 IHBtZHBfY2xlYXJfZmx1c2hfeW91bmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAjZW5k aWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovCiAjZW5kaWYKIAorI2lmbmRlZiBh cmNoX2hhc19od19wdGVfeW91bmcKKy8qCisgKiBSZXR1cm4gd2hldGhlciB0aGUgYWNjZXNzZWQg Yml0IGlzIHN1cHBvcnRlZCBvbiB0aGUgbG9jYWwgQ1BVLgorICoKKyAqIFRoaXMgc3R1YiBhc3N1 bWVzIGFjY2Vzc2luZyB0aHJvdWdoIGFuIG9sZCBQVEUgdHJpZ2dlcnMgYSBwYWdlIGZhdWx0Lgor ICogQXJjaGl0ZWN0dXJlcyB0aGF0IGF1dG9tYXRpY2FsbHkgc2V0IHRoZSBhY2Nlc3MgYml0IHNo b3VsZCBvdmVyd3JpdGUgaXQuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2hhc19od19w dGVfeW91bmcodm9pZCkKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogI2lmbmRlZiBf X0hBVkVfQVJDSF9QVEVQX0NMRUFSCiBzdGF0aWMgaW5saW5lIHZvaWQgcHRlcF9jbGVhcihzdHJ1 Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQkJICAgICAgcHRlX3QgKnB0 ZXApCmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IDc2ZTNhZjk2 MzlkOS4uNDRhMWVjN2EyY2FjIDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYworKysgYi9tbS9tZW1v cnkuYwpAQCAtMTIyLDE4ICsxMjIsNiBAQCBpbnQgcmFuZG9taXplX3ZhX3NwYWNlIF9fcmVhZF9t b3N0bHkgPQogCQkJCQkyOwogI2VuZGlmCiAKLSNpZm5kZWYgYXJjaF9mYXVsdHNfb25fb2xkX3B0 ZQotc3RhdGljIGlubGluZSBib29sIGFyY2hfZmF1bHRzX29uX29sZF9wdGUodm9pZCkKLXsKLQkv KgotCSAqIFRob3NlIGFyY2hlcyB3aGljaCBkb24ndCBoYXZlIGh3IGFjY2VzcyBmbGFnIGZlYXR1 cmUgbmVlZCB0bwotCSAqIGltcGxlbWVudCB0aGVpciBvd24gaGVscGVyLiBCeSBkZWZhdWx0LCAi dHJ1ZSIgbWVhbnMgcGFnZWZhdWx0Ci0JICogd2lsbCBiZSBoaXQgb24gb2xkIHB0ZS4KLQkgKi8K LQlyZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiAjaWZuZGVmIGFyY2hfd2FudHNfb2xkX3ByZWZh dWx0ZWRfcHRlCiBzdGF0aWMgaW5saW5lIGJvb2wgYXJjaF93YW50c19vbGRfcHJlZmF1bHRlZF9w dGUodm9pZCkKIHsKQEAgLTI3ODQsNyArMjc3Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb3df dXNlcl9wYWdlKHN0cnVjdCBwYWdlICpkc3QsIHN0cnVjdCBwYWdlICpzcmMsCiAJICogT24gYXJj aGl0ZWN0dXJlcyB3aXRoIHNvZnR3YXJlICJhY2Nlc3NlZCIgYml0cywgd2Ugd291bGQKIAkgKiB0 YWtlIGEgZG91YmxlIHBhZ2UgZmF1bHQsIHNvIG1hcmsgaXQgYWNjZXNzZWQgaGVyZS4KIAkgKi8K LQlpZiAoYXJjaF9mYXVsdHNfb25fb2xkX3B0ZSgpICYmICFwdGVfeW91bmcodm1mLT5vcmlnX3B0 ZSkpIHsKKwlpZiAoIWFyY2hfaGFzX2h3X3B0ZV95b3VuZygpICYmICFwdGVfeW91bmcodm1mLT5v cmlnX3B0ZSkpIHsKIAkJcHRlX3QgZW50cnk7CiAKIAkJdm1mLT5wdGUgPSBwdGVfb2Zmc2V0X21h cF9sb2NrKG1tLCB2bWYtPnBtZCwgYWRkciwgJnZtZi0+cHRsKTsKLS0gCjIuMzUuMS4xMDk0Lmc3 YzdkOTAyYTdjLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==