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 X-Spam-Level: X-Spam-Status: No, score=-16.0 required=3.0 tests=BAYES_00,DKIM_ADSP_ALL, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B578C433EF for ; Tue, 7 Sep 2021 22:00:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1783161106 for ; Tue, 7 Sep 2021 22:00:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347894AbhIGWCA (ORCPT ); Tue, 7 Sep 2021 18:02:00 -0400 Received: from home.keithp.com ([63.227.221.253]:56256 "EHLO elaine.keithp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347495AbhIGWBy (ORCPT ); Tue, 7 Sep 2021 18:01:54 -0400 Received: from localhost (localhost [127.0.0.1]) by elaine.keithp.com (Postfix) with ESMTP id 263123F30864; Tue, 7 Sep 2021 15:00:20 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at keithp.com Received: from elaine.keithp.com ([127.0.0.1]) by localhost (elaine.keithp.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id uccwbHGFUJ_y; Tue, 7 Sep 2021 15:00:19 -0700 (PDT) Received: from keithp.com (168-103-156-98.tukw.qwest.net [168.103.156.98]) by elaine.keithp.com (Postfix) with ESMTPSA id 655EA3F30861; Tue, 7 Sep 2021 15:00:19 -0700 (PDT) Received: by keithp.com (Postfix, from userid 1000) id DED9A1E6013C; Tue, 7 Sep 2021 15:00:40 -0700 (PDT) From: Keith Packard To: linux-kernel@vger.kernel.org Cc: Abbott Liu , Andrew Morton , Andrey Ryabinin , Anshuman Khandual , Ard Biesheuvel , Arnd Bergmann , Bjorn Andersson , Christoph Lameter , Dennis Zhou , Geert Uytterhoeven , Jens Axboe , Joe Perches , Kees Cook , Keith Packard , Krzysztof Kozlowski , Linus Walleij , linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, Manivannan Sadhasivam , Marc Zyngier , Masahiro Yamada , Mike Rapoport , Nathan Chancellor , Nick Desaulniers , Nick Desaulniers , Nicolas Pitre , Russell King , Tejun Heo , Thomas Gleixner , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Valentin Schneider , Viresh Kumar , "Wolfram Sang (Renesas)" , YiFei Zhu Subject: [PATCH 6/7] ARM: Use TPIDRPRW for current Date: Tue, 7 Sep 2021 15:00:37 -0700 Message-Id: <20210907220038.91021-7-keithpac@amazon.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210907220038.91021-1-keithpac@amazon.com> References: <20210904060908.1310204-1-keithp@keithp.com> <20210907220038.91021-1-keithpac@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Store current task pointer in CPU thread ID register TPIDRPRW so that accessing it doesn't depend on being able to locate thread_info off of the kernel stack pointer. Signed-off-by: Keith Packard --- arch/arm/Kconfig | 4 +++ arch/arm/include/asm/assembler.h | 8 +++++ arch/arm/include/asm/current.h | 52 ++++++++++++++++++++++++++++++++ arch/arm/kernel/entry-armv.S | 4 +++ arch/arm/kernel/setup.c | 1 + arch/arm/kernel/smp.c | 1 + 6 files changed, 70 insertions(+) create mode 100644 arch/arm/include/asm/current.h diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 24804f11302d..414fe23fd5ac 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1172,6 +1172,10 @@ config SMP_ON_UP If you don't know what to do here, say Y. +config CURRENT_POINTER_IN_TPIDRPRW + def_bool y + depends on (CPU_V6K || CPU_V7) && !CPU_V6 + config ARM_CPU_TOPOLOGY bool "Support cpu topology definition" depends on SMP && CPU_V7 diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index e2b1fd558bf3..ea12fe3bb589 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h @@ -209,6 +209,14 @@ mov \rd, \rd, lsl #THREAD_SIZE_ORDER + PAGE_SHIFT .endm +/* + * Set current task_info + * @src: Source register containing task_struct pointer + */ + .macro set_current src : req + mcr p15, 0, \src, c13, c0, 4 + .endm + /* * Increment/decrement the preempt count. */ diff --git a/arch/arm/include/asm/current.h b/arch/arm/include/asm/current.h new file mode 100644 index 000000000000..153a2ea18747 --- /dev/null +++ b/arch/arm/include/asm/current.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright © 2021 Keith Packard + */ + +#ifndef _ASM_ARM_CURRENT_H_ +#define _ASM_ARM_CURRENT_H_ + +#ifndef __ASSEMBLY__ + +register unsigned long current_stack_pointer asm ("sp"); + +/* + * Same as asm-generic/current.h, except that we store current + * in TPIDRPRW. TPIDRPRW only exists on V6K and V7 + */ +#ifdef CONFIG_CURRENT_POINTER_IN_TPIDRPRW + +struct task_struct; + +static inline void set_current(struct task_struct *tsk) +{ + /* Set TPIDRPRW */ + asm volatile("mcr p15, 0, %0, c13, c0, 4" : : "r" (tsk) : "memory"); +} + +static __always_inline struct task_struct *get_current(void) +{ + struct task_struct *tsk; + + /* + * Read TPIDRPRW. + * We want to allow caching the value, so avoid using volatile and + * instead use a fake stack read to hazard against barrier(). + */ + asm("mrc p15, 0, %0, c13, c0, 4" : "=r" (tsk) + : "Q" (*(const unsigned long *)current_stack_pointer)); + + return tsk; +} +#define current get_current() +#else + +#define set_current(tsk) do {} while (0) + +#include + +#endif /* CONFIG_SMP */ + +#endif /* __ASSEMBLY__ */ + +#endif /* _ASM_ARM_CURRENT_H_ */ diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 0ea8529a4872..db3947ee9c3e 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -761,6 +761,10 @@ ENTRY(__switch_to) ldr r6, [r2, #TI_CPU_DOMAIN] #endif switch_tls r1, r4, r5, r3, r7 +#ifdef CONFIG_CURRENT_POINTER_IN_TPIDRPRW + ldr r7, [r2, #TI_TASK] + set_current r7 +#endif #if defined(CONFIG_STACKPROTECTOR) && !defined(CONFIG_SMP) ldr r7, [r2, #TI_TASK] ldr r8, =__stack_chk_guard diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index d0dc60afe54f..2fdf8c31d6c9 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -586,6 +586,7 @@ void __init smp_setup_processor_id(void) u32 mpidr = is_smp() ? read_cpuid_mpidr() & MPIDR_HWID_BITMASK : 0; u32 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); + set_current(&init_task); cpu_logical_map(0) = cpu; for (i = 1; i < nr_cpu_ids; ++i) cpu_logical_map(i) = i == cpu ? 0 : i; diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 8ccf10b34f08..09771916442a 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -410,6 +410,7 @@ asmlinkage void secondary_start_kernel(unsigned int cpu, struct task_struct *tas { struct mm_struct *mm = &init_mm; + set_current(task); secondary_biglittle_init(); /* -- 2.33.0 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 X-Spam-Level: X-Spam-Status: No, score=-16.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_ALL,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F04E1C433EF for ; Tue, 7 Sep 2021 22:04:17 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id BD435610A3 for ; Tue, 7 Sep 2021 22:04:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org BD435610A3 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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=ouTb1GVSxtzbgF6kwd4SRH/XGKNILlXXlv2/fKUWW3c=; b=o7VeOcM/e6L1Oi MDvbNb+6YM51CApghiFCDn0ZP4j4UhdRVb4GXARTRrwENRngRt2BoYWOvY8Fl7X/xkiJAJNbf9WdL 5c2x9+heI0RCnP3sDEDJ4SRsJyTJmvtei6H7ls/dSZ2vKpQilMSzwnwZWnMK++/faFtSQxwZ57Yuy EOedrDC9BGl1tb/RWl5j2aLvJfh9PeQ6dBNsngddinPaZxufUm9Ftmu9OlutKP1/DL6IcE28/gVRr 5snoJ1g8PpZEzdhgcFJB8OSL/U/1TvN1Hc0VRpSdJEpgBbH+YVeyVy2fHAgmuRWlcBZaoURrcwOag /X4GvY+hhCKiQIOZMrnA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mNjA7-004qnI-TB; Tue, 07 Sep 2021 22:01:52 +0000 Received: from home.keithp.com ([63.227.221.253] helo=elaine.keithp.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mNj96-004qYB-Jh for linux-arm-kernel@lists.infradead.org; Tue, 07 Sep 2021 22:00:50 +0000 Received: from localhost (localhost [127.0.0.1]) by elaine.keithp.com (Postfix) with ESMTP id 263123F30864; Tue, 7 Sep 2021 15:00:20 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at keithp.com Received: from elaine.keithp.com ([127.0.0.1]) by localhost (elaine.keithp.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id uccwbHGFUJ_y; Tue, 7 Sep 2021 15:00:19 -0700 (PDT) Received: from keithp.com (168-103-156-98.tukw.qwest.net [168.103.156.98]) by elaine.keithp.com (Postfix) with ESMTPSA id 655EA3F30861; Tue, 7 Sep 2021 15:00:19 -0700 (PDT) Received: by keithp.com (Postfix, from userid 1000) id DED9A1E6013C; Tue, 7 Sep 2021 15:00:40 -0700 (PDT) From: Keith Packard To: linux-kernel@vger.kernel.org Cc: Abbott Liu , Andrew Morton , Andrey Ryabinin , Anshuman Khandual , Ard Biesheuvel , Arnd Bergmann , Bjorn Andersson , Christoph Lameter , Dennis Zhou , Geert Uytterhoeven , Jens Axboe , Joe Perches , Kees Cook , Keith Packard , Krzysztof Kozlowski , Linus Walleij , linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, Manivannan Sadhasivam , Marc Zyngier , Masahiro Yamada , Mike Rapoport , Nathan Chancellor , Nick Desaulniers , Nick Desaulniers , Nicolas Pitre , Russell King , Tejun Heo , Thomas Gleixner , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Valentin Schneider , Viresh Kumar , "Wolfram Sang (Renesas)" , YiFei Zhu Subject: [PATCH 6/7] ARM: Use TPIDRPRW for current Date: Tue, 7 Sep 2021 15:00:37 -0700 Message-Id: <20210907220038.91021-7-keithpac@amazon.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210907220038.91021-1-keithpac@amazon.com> References: <20210904060908.1310204-1-keithp@keithp.com> <20210907220038.91021-1-keithpac@amazon.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210907_150048_737626_6E19F9F1 X-CRM114-Status: GOOD ( 23.61 ) 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 U3RvcmUgY3VycmVudCB0YXNrIHBvaW50ZXIgaW4gQ1BVIHRocmVhZCBJRCByZWdpc3RlciBUUElE UlBSVyBzbyB0aGF0CmFjY2Vzc2luZyBpdCBkb2Vzbid0IGRlcGVuZCBvbiBiZWluZyBhYmxlIHRv IGxvY2F0ZSB0aHJlYWRfaW5mbyBvZmYgb2YKdGhlIGtlcm5lbCBzdGFjayBwb2ludGVyLgoKU2ln bmVkLW9mZi1ieTogS2VpdGggUGFja2FyZCA8a2VpdGhwYWNAYW1hem9uLmNvbT4KLS0tCiBhcmNo L2FybS9LY29uZmlnICAgICAgICAgICAgICAgICB8ICA0ICsrKwogYXJjaC9hcm0vaW5jbHVkZS9h c20vYXNzZW1ibGVyLmggfCAgOCArKysrKwogYXJjaC9hcm0vaW5jbHVkZS9hc20vY3VycmVudC5o ICAgfCA1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogYXJjaC9hcm0va2VybmVs L2VudHJ5LWFybXYuUyAgICAgfCAgNCArKysKIGFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jICAgICAg ICAgIHwgIDEgKwogYXJjaC9hcm0va2VybmVsL3NtcC5jICAgICAgICAgICAgfCAgMSArCiA2IGZp bGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bS9pbmNsdWRlL2FzbS9jdXJyZW50LmgKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9LY29uZmlnIGIv YXJjaC9hcm0vS2NvbmZpZwppbmRleCAyNDgwNGYxMTMwMmQuLjQxNGZlMjNmZDVhYyAxMDA2NDQK LS0tIGEvYXJjaC9hcm0vS2NvbmZpZworKysgYi9hcmNoL2FybS9LY29uZmlnCkBAIC0xMTcyLDYg KzExNzIsMTAgQEAgY29uZmlnIFNNUF9PTl9VUAogCiAJICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0 IHRvIGRvIGhlcmUsIHNheSBZLgogCitjb25maWcgQ1VSUkVOVF9QT0lOVEVSX0lOX1RQSURSUFJX CisJZGVmX2Jvb2wgeQorCWRlcGVuZHMgb24gKENQVV9WNksgfHwgQ1BVX1Y3KSAmJiAhQ1BVX1Y2 CisKIGNvbmZpZyBBUk1fQ1BVX1RPUE9MT0dZCiAJYm9vbCAiU3VwcG9ydCBjcHUgdG9wb2xvZ3kg ZGVmaW5pdGlvbiIKIAlkZXBlbmRzIG9uIFNNUCAmJiBDUFVfVjcKZGlmZiAtLWdpdCBhL2FyY2gv YXJtL2luY2x1ZGUvYXNtL2Fzc2VtYmxlci5oIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vYXNzZW1i bGVyLmgKaW5kZXggZTJiMWZkNTU4YmYzLi5lYTEyZmUzYmI1ODkgMTAwNjQ0Ci0tLSBhL2FyY2gv YXJtL2luY2x1ZGUvYXNtL2Fzc2VtYmxlci5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2Fz c2VtYmxlci5oCkBAIC0yMDksNiArMjA5LDE0IEBACiAJbW92CVxyZCwgXHJkLCBsc2wgI1RIUkVB RF9TSVpFX09SREVSICsgUEFHRV9TSElGVAogCS5lbmRtCiAKKy8qCisgKiBTZXQgY3VycmVudCB0 YXNrX2luZm8KKyAqIEBzcmM6IFNvdXJjZSByZWdpc3RlciBjb250YWluaW5nIHRhc2tfc3RydWN0 IHBvaW50ZXIKKyAqLworCS5tYWNybwlzZXRfY3VycmVudCBzcmMgOiByZXEKKwltY3IJcDE1LCAw LCBcc3JjLCBjMTMsIGMwLCA0CisJLmVuZG0KKwogLyoKICAqIEluY3JlbWVudC9kZWNyZW1lbnQg dGhlIHByZWVtcHQgY291bnQuCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNt L2N1cnJlbnQuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2N1cnJlbnQuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE1M2EyZWExODc0NwotLS0gL2Rldi9udWxsCisr KyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2N1cnJlbnQuaApAQCAtMCwwICsxLDUyIEBACisvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworLyoKKyAqIENvcHlyaWdodCDCqSAy MDIxIEtlaXRoIFBhY2thcmQgPGtlaXRocEBrZWl0aHAuY29tPgorICovCisKKyNpZm5kZWYgX0FT TV9BUk1fQ1VSUkVOVF9IXworI2RlZmluZSBfQVNNX0FSTV9DVVJSRU5UX0hfCisKKyNpZm5kZWYg X19BU1NFTUJMWV9fCisKK3JlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgY3VycmVudF9zdGFja19wb2lu dGVyIGFzbSAoInNwIik7CisKKy8qCisgKiBTYW1lIGFzIGFzbS1nZW5lcmljL2N1cnJlbnQuaCwg ZXhjZXB0IHRoYXQgd2Ugc3RvcmUgY3VycmVudAorICogaW4gVFBJRFJQUlcuIFRQSURSUFJXIG9u bHkgZXhpc3RzIG9uIFY2SyBhbmQgVjcKKyAqLworI2lmZGVmIENPTkZJR19DVVJSRU5UX1BPSU5U RVJfSU5fVFBJRFJQUlcKKworc3RydWN0IHRhc2tfc3RydWN0OworCitzdGF0aWMgaW5saW5lIHZv aWQgc2V0X2N1cnJlbnQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCit7CisJLyogU2V0IFRQSURS UFJXICovCisJYXNtIHZvbGF0aWxlKCJtY3IgcDE1LCAwLCAlMCwgYzEzLCBjMCwgNCIgOiA6ICJy IiAodHNrKSA6ICJtZW1vcnkiKTsKK30KKworc3RhdGljIF9fYWx3YXlzX2lubGluZSBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKmdldF9jdXJyZW50KHZvaWQpCit7CisJc3RydWN0IHRhc2tfc3RydWN0ICp0 c2s7CisKKwkvKgorCSAqIFJlYWQgVFBJRFJQUlcuCisJICogV2Ugd2FudCB0byBhbGxvdyBjYWNo aW5nIHRoZSB2YWx1ZSwgc28gYXZvaWQgdXNpbmcgdm9sYXRpbGUgYW5kCisJICogaW5zdGVhZCB1 c2UgYSBmYWtlIHN0YWNrIHJlYWQgdG8gaGF6YXJkIGFnYWluc3QgYmFycmllcigpLgorCSAqLwor CWFzbSgibXJjIHAxNSwgMCwgJTAsIGMxMywgYzAsIDQiIDogIj1yIiAodHNrKQorCQk6ICJRIiAo Kihjb25zdCB1bnNpZ25lZCBsb25nICopY3VycmVudF9zdGFja19wb2ludGVyKSk7CisKKwlyZXR1 cm4gdHNrOworfQorI2RlZmluZSBjdXJyZW50IGdldF9jdXJyZW50KCkKKyNlbHNlCisKKyNkZWZp bmUgc2V0X2N1cnJlbnQodHNrKSBkbyB7fSB3aGlsZSAoMCkKKworI2luY2x1ZGUgPGFzbS1nZW5l cmljL2N1cnJlbnQuaD4KKworI2VuZGlmIC8qIENPTkZJR19TTVAgKi8KKworI2VuZGlmIC8qIF9f QVNTRU1CTFlfXyAqLworCisjZW5kaWYgLyogX0FTTV9BUk1fQ1VSUkVOVF9IXyAqLwpkaWZmIC0t Z2l0IGEvYXJjaC9hcm0va2VybmVsL2VudHJ5LWFybXYuUyBiL2FyY2gvYXJtL2tlcm5lbC9lbnRy eS1hcm12LlMKaW5kZXggMGVhODUyOWE0ODcyLi5kYjM5NDdlZTljM2UgMTAwNjQ0Ci0tLSBhL2Fy Y2gvYXJtL2tlcm5lbC9lbnRyeS1hcm12LlMKKysrIGIvYXJjaC9hcm0va2VybmVsL2VudHJ5LWFy bXYuUwpAQCAtNzYxLDYgKzc2MSwxMCBAQCBFTlRSWShfX3N3aXRjaF90bykKIAlsZHIJcjYsIFty MiwgI1RJX0NQVV9ET01BSU5dCiAjZW5kaWYKIAlzd2l0Y2hfdGxzIHIxLCByNCwgcjUsIHIzLCBy NworI2lmZGVmIENPTkZJR19DVVJSRU5UX1BPSU5URVJfSU5fVFBJRFJQUlcKKwlsZHIJcjcsIFty MiwgI1RJX1RBU0tdCisJc2V0X2N1cnJlbnQgcjcKKyNlbmRpZgogI2lmIGRlZmluZWQoQ09ORklH X1NUQUNLUFJPVEVDVE9SKSAmJiAhZGVmaW5lZChDT05GSUdfU01QKQogCWxkcglyNywgW3IyLCAj VElfVEFTS10KIAlsZHIJcjgsID1fX3N0YWNrX2Noa19ndWFyZApkaWZmIC0tZ2l0IGEvYXJjaC9h cm0va2VybmVsL3NldHVwLmMgYi9hcmNoL2FybS9rZXJuZWwvc2V0dXAuYwppbmRleCBkMGRjNjBh ZmU1NGYuLjJmZGY4YzMxZDZjOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL3NldHVwLmMK KysrIGIvYXJjaC9hcm0va2VybmVsL3NldHVwLmMKQEAgLTU4Niw2ICs1ODYsNyBAQCB2b2lkIF9f aW5pdCBzbXBfc2V0dXBfcHJvY2Vzc29yX2lkKHZvaWQpCiAJdTMyIG1waWRyID0gaXNfc21wKCkg PyByZWFkX2NwdWlkX21waWRyKCkgJiBNUElEUl9IV0lEX0JJVE1BU0sgOiAwOwogCXUzMiBjcHUg PSBNUElEUl9BRkZJTklUWV9MRVZFTChtcGlkciwgMCk7CiAKKwlzZXRfY3VycmVudCgmaW5pdF90 YXNrKTsKIAljcHVfbG9naWNhbF9tYXAoMCkgPSBjcHU7CiAJZm9yIChpID0gMTsgaSA8IG5yX2Nw dV9pZHM7ICsraSkKIAkJY3B1X2xvZ2ljYWxfbWFwKGkpID0gaSA9PSBjcHUgPyAwIDogaTsKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL2tlcm5lbC9zbXAuYyBiL2FyY2gvYXJtL2tlcm5lbC9zbXAuYwpp bmRleCA4Y2NmMTBiMzRmMDguLjA5NzcxOTE2NDQyYSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2Vy bmVsL3NtcC5jCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9zbXAuYwpAQCAtNDEwLDYgKzQxMCw3IEBA IGFzbWxpbmthZ2Ugdm9pZCBzZWNvbmRhcnlfc3RhcnRfa2VybmVsKHVuc2lnbmVkIGludCBjcHUs IHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzCiB7CiAJc3RydWN0IG1tX3N0cnVjdCAqbW0gPSAmaW5p dF9tbTsKIAorCXNldF9jdXJyZW50KHRhc2spOwogCXNlY29uZGFyeV9iaWdsaXR0bGVfaW5pdCgp OwogCiAJLyoKLS0gCjIuMzMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK