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 D7C17C433EF for ; Wed, 18 May 2022 01:47:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233830AbiERBrC (ORCPT ); Tue, 17 May 2022 21:47:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233789AbiERBq5 (ORCPT ); Tue, 17 May 2022 21:46:57 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B0F2D49F93 for ; Tue, 17 May 2022 18:46:56 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id z39-20020a25a12a000000b0064dbcd526ffso668449ybh.15 for ; Tue, 17 May 2022 18:46:56 -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=wIzudme/4B8OfAhXW9ayrH5B6l0TMc7K1sH/XdKk6Lg=; b=Ezk1gP5WC/D/1WV88OzvSzVZ4sPkJzMOxJAwd7nnYwsV2l9jLcs2v3e0kg9TQVbK+E YaSc9Ks4FZtZpalfaLJOQUXrD/YOc1tZnIOq+5D+UNEkJfQbu0pC/dA8G4O5USdxGvwH FeUsv50i+EaNusCEQjgwPIJXFN7tPxQP4vjI0NuD5dC0tjcumSXINW/Q7neSqIvb0bM/ o02sV5pM6lRXCgxoKdY3uL1EJE42SuPTi1rAPvC+xpihsPlo7zSdBvGmRoAjygmJAuZD +5Hd5VHONznzGjGEvvt+wD+KyavmAKQVFXAAGUBAKvigs4jUsz8prtj/aRMfvwIvBjK9 9kww== 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=wIzudme/4B8OfAhXW9ayrH5B6l0TMc7K1sH/XdKk6Lg=; b=mGAMoBBdCBmN4vpVnux85AKMZEd0wj+6o1yyZDokqMsgO+dADHtIwHwEhPvvVSrCJf Mid/S1bynR3dyyt6QB6or8b6EkLnGDZInKNhU7xIgWYmxVPGVa7h+wBICjlX6LaBZ0Ly Yt8XU/VmQeBr1awfBcOuaaQgvbEJPDLr6IKiGbBHX2PfkS/0fVwqkF6yubU9hjfBrnh4 /87rKXfCowAYYXBkmDYaOmdSTJEQcrck/NrIHwu6EcOKPEmNWt20PeMcUFRqprUPyfYx pW6WhVGTR4a+sPmpVWjUA6zIUyX7V5Xambh8xdDybvHSSOTMpa2ZI61WRU6h5VifmUaP rb3w== X-Gm-Message-State: AOAM533TddTXwvoy7yarzByi5uloIJZT4rHrmmwQ8SOG/W858jvKEejI QvU2zxN3f3jWBoiHNxqKuPYwuVS6jCw= X-Google-Smtp-Source: ABdhPJxeYnceCSmSU4CUNHBHtgjerhI4/gIHWEDe6JDvKsChyDSilUeyGdczcBGPDtLs45mlW8Z4BuDhLyE= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:f7bc:90c9:d86e:4ea8]) (user=yuzhao job=sendgmr) by 2002:a81:7b05:0:b0:2f1:7f75:1d1e with SMTP id w5-20020a817b05000000b002f17f751d1emr27839036ywc.520.1652838415864; Tue, 17 May 2022 18:46:55 -0700 (PDT) Date: Tue, 17 May 2022 19:46:20 -0600 In-Reply-To: <20220518014632.922072-1-yuzhao@google.com> Message-Id: <20220518014632.922072-2-yuzhao@google.com> Mime-Version: 1.0 References: <20220518014632.922072-1-yuzhao@google.com> X-Mailer: git-send-email 2.36.0.550.gb090851708-goog Subject: [PATCH v11 01/14] mm: x86, arm64: add arch_has_hw_pte_young() From: Yu Zhao To: Andrew Morton , linux-mm@kvack.org Cc: Andi Kleen , Aneesh Kumar , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Johannes Weiner , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Peter Zijlstra , Tejun Heo , Vlastimil Babka , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, page-reclaim@google.com, 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 dff2b483ea50..8e9c2c837678 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.36.0.550.gb090851708-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 96178C433EF for ; Wed, 18 May 2022 03:01:18 +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=euYPfhWg94yjNplneof+VvuoDk+GcmFlEcYgn0Eafg4=; b=3ZPg3J34nYQ7gdlE1llGypYhDQ W8DkYbUPUnSnXixjfF0UoVct81oJByFtbsKyX1xuEDVQhDdGvHaitg46mw78JBLV2X8y7qBEs3Q5H za3Re6f6hmstfamRm2t0VnO5WjJ8CMLiHQCPQbyG2OC1tQVIdord7UxBmFcjcWpgQ1d8iIMskPp2a 0ukwJrcpNijWDMxHuYLiGrnRtcyWiGMdb7gReN2BjD9oYy6aemYiDMzWz1spCC+HlUJWpyMd64npr Ru9DfZgvymLkSyD2L8QscJH3CK+CtSzTnGwa1tUwIMqu3upONpZuDQpNZkuISxe4jkyKdYaKhZX4f Qbdr4n0A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr9vJ-00GluS-Ir; Wed, 18 May 2022 03:00:29 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr8mB-00Gd4m-D8 for linux-arm-kernel@lists.infradead.org; Wed, 18 May 2022 01:47:01 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-2fed274f3fbso7977687b3.17 for ; Tue, 17 May 2022 18:46:56 -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=wIzudme/4B8OfAhXW9ayrH5B6l0TMc7K1sH/XdKk6Lg=; b=Ezk1gP5WC/D/1WV88OzvSzVZ4sPkJzMOxJAwd7nnYwsV2l9jLcs2v3e0kg9TQVbK+E YaSc9Ks4FZtZpalfaLJOQUXrD/YOc1tZnIOq+5D+UNEkJfQbu0pC/dA8G4O5USdxGvwH FeUsv50i+EaNusCEQjgwPIJXFN7tPxQP4vjI0NuD5dC0tjcumSXINW/Q7neSqIvb0bM/ o02sV5pM6lRXCgxoKdY3uL1EJE42SuPTi1rAPvC+xpihsPlo7zSdBvGmRoAjygmJAuZD +5Hd5VHONznzGjGEvvt+wD+KyavmAKQVFXAAGUBAKvigs4jUsz8prtj/aRMfvwIvBjK9 9kww== 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=wIzudme/4B8OfAhXW9ayrH5B6l0TMc7K1sH/XdKk6Lg=; b=v8abA/bcV7XpedobNvrU/eDjQs27QedZZJzPd0hAIzpQ4FwM9XuIPR4jKcNT8tGE4v NjcO701+HqA/fSr2GtnDv7fNy5SqBgdG1TrJET4R+schdPBOgWF1Arv6sqNnN5Y21LJq KwOmQpBl2Z0YMLXuKwZn8IYJQapz2yze1D/ov21VWWxOKanpt9JENTPuTo1Yqfdmxr1a GELdFWAVVaQEc5JsSge1QeLXeBtKVdHDSTBSRvI+CGrN+nEwVcEg7dj+RS2xxMLWdsyy +XK7KACoaXgjmD4z2uMWLf7eJNyU++Vjgi1WM804Nr3kib4OZxv+5OXG+RGw9avkpQNK gEww== X-Gm-Message-State: AOAM531U636eKG0FvFBDLsXQZHaSe9uh/Arhc9aYKS8DsorK2Xi2Sj6+ 3PCilVTL3o/fqRK5POWJih3uDcbFrfo= X-Google-Smtp-Source: ABdhPJxeYnceCSmSU4CUNHBHtgjerhI4/gIHWEDe6JDvKsChyDSilUeyGdczcBGPDtLs45mlW8Z4BuDhLyE= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:f7bc:90c9:d86e:4ea8]) (user=yuzhao job=sendgmr) by 2002:a81:7b05:0:b0:2f1:7f75:1d1e with SMTP id w5-20020a817b05000000b002f17f751d1emr27839036ywc.520.1652838415864; Tue, 17 May 2022 18:46:55 -0700 (PDT) Date: Tue, 17 May 2022 19:46:20 -0600 In-Reply-To: <20220518014632.922072-1-yuzhao@google.com> Message-Id: <20220518014632.922072-2-yuzhao@google.com> Mime-Version: 1.0 References: <20220518014632.922072-1-yuzhao@google.com> X-Mailer: git-send-email 2.36.0.550.gb090851708-goog Subject: [PATCH v11 01/14] mm: x86, arm64: add arch_has_hw_pte_young() From: Yu Zhao To: Andrew Morton , linux-mm@kvack.org Cc: Andi Kleen , Aneesh Kumar , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Johannes Weiner , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Peter Zijlstra , Tejun Heo , Vlastimil Babka , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, page-reclaim@google.com, 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-20220517_184659_512909_BC466212 X-CRM114-Status: GOOD ( 17.48 ) 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 L2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oCmluZGV4IGRmZjJiNDgzZWE1MC4uOGU5 YzJjODM3Njc4IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaAor 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+cHRsKTsKLS0gCjIuMzYuMC41NTAuZ2Iw OTA4NTE3MDgtZ29vZwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK