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 6C18DC76196 for ; Mon, 10 Apr 2023 04:34:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229595AbjDJEee (ORCPT ); Mon, 10 Apr 2023 00:34:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229503AbjDJEeZ (ORCPT ); Mon, 10 Apr 2023 00:34:25 -0400 Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E51A43C32 for ; Sun, 9 Apr 2023 21:34:23 -0700 (PDT) Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-1a2b01f5ac0so4329595ad.3 for ; Sun, 09 Apr 2023 21:34:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; t=1681101263; x=1683693263; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3sV0mvKgExLa61TD4oV6e6QKH6k26NRAsPw2q/sIptY=; b=6N1Ll4lBsBO3F91bivVGG+AcRkH/V9v3SFDbYGF2cCEpBJhibNkpWfo8heKOpf7PeK F4htyxI9Dzsm08ZBmm78EnbxOq6YeSU/xBzMATpQINRRofB/lY9rqR7w4EfOWgdxksSO 2h62cr6TAWRwinrIs6rXe3mwgbVQBKnHkdeKrGdtbqOdBj5Q8XzLEnRIADWQMhWD3Aw0 hgnJkZA3EPdkulfMJjrpFVtisYNK6fIvkXo4l/MAXgRGSB7t7VtsGojckzc4x6Ii5gjV Y+IEUomUc80/qXbyC1qQvS29gLmaPgyBI9lZKl7nJwwhA9C8IKdtvysEBzrcQS3TU9OZ e+Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681101263; x=1683693263; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3sV0mvKgExLa61TD4oV6e6QKH6k26NRAsPw2q/sIptY=; b=HedksOqo7TK8nFUtSXyrzD6rEmqvVWC/sdQy85Ixk/nfjmPGYKQYUa63LsAGKW/Kn6 WZfXFuEdnYugiEGlz9R9WTL70xwq6IcTSNR2KtR7G1oMO5Xchwz0i7ir5pRQiFHsrKeS hr5XyIH3seSFAS6QnWABjKdf0FtQ6yTxTiB5bARcDscN7Ugr+UYqLZyNjQ77qjq1jzyf 7tgcPHKp4qtWzGoaI7hjtOk+tUWO+kPPCSDz7wkODzzXyGQtBBu9n/C63G/kLc8MaHuW bycLK96hUwlHChh7W7MR5Xi72Mow2I0CNpdEi3gEtfZTFASiTb2j1A+DDrxGeOPC9B7D 21Og== X-Gm-Message-State: AAQBX9dJFxxPRKILpCbAhyWsOSGB5VJoDh8SwcNbwrQEUyg+QJgjpWgi T6/oAtP2NOqlvURPRjMcT4bOwg== X-Google-Smtp-Source: AKy350Zl7sZArfG8z0rXM1frr2iQuRxz40uDjDFFAuAI50yWPI44W7Qc7LrEGEUGP/9VaFa1Oc/fsw== X-Received: by 2002:a62:5e41:0:b0:626:2ae6:31f6 with SMTP id s62-20020a625e41000000b006262ae631f6mr10982689pfb.7.1681101263359; Sun, 09 Apr 2023 21:34:23 -0700 (PDT) Received: from x1.. ([2601:1c2:1801:d250:45c0:94f2:eea7:6dc3]) by smtp.gmail.com with ESMTPSA id x24-20020aa793b8000000b00634a96493f7sm2394411pff.128.2023.04.09.21.34.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Apr 2023 21:34:22 -0700 (PDT) From: Drew Fustini To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Palmer Dabbelt , Paul Walmsley , Conor Dooley , Atish Patra , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , James Morse , =?UTF-8?q?Kornel=20Dul=C4=99ba?= , Adrien Ricciardi Cc: Drew Fustini Subject: [RFC PATCH 2/2] RISC-V: Add support for sqoscfg CSR Date: Sun, 9 Apr 2023 21:36:46 -0700 Message-Id: <20230410043646.3138446-3-dfustini@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230410043646.3138446-1-dfustini@baylibre.com> References: <20230410043646.3138446-1-dfustini@baylibre.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 Add support for the sqoscfg CSR defined in the Ssqosid ISA extension (Supervisor-mode Quality of Service ID). The CSR contains two fields: - Resource Control ID (RCID) used determine resource allocation - Monitoring Counter ID (MCID) used to track resource usage Requests from a hart to shared resources like cache will be tagged with these IDs. This allows the usage of shared resources to be associated with the task currently running on the hart. A sqoscfg field is added to thread_struct and has the same format as the sqoscfg CSR. This allows the scheduler to set the hart's sqoscfg CSR to contain the RCID and MCID for the task that is being scheduled in. The sqoscfg CSR is only written to if the thread_struct.sqoscfg is different from the current value of the CSR. A per-cpu variable cpu_sqoscfg is used to mirror that state of the CSR. This is because access to L1D hot memory should be several times faster than a CSR read. Also, in the case of virtualization, accesses to this CSR are trapped in the hypervisor. Link: https://github.com/riscv-non-isa/riscv-cmqri/blob/main/riscv-cbqri.pdf Co-developed-by: Kornel Dulęba Signed-off-by: Kornel Dulęba Signed-off-by: Drew Fustini --- Note: the Ssqosid extension and CBQRI spec are still in a draft state. The CSR address of sqoscfg is not final. Changes from the original patch [1]: - Rebase from 6.0 to 6.3 - Simplify per-cpu variable from struct to u32 with just sqoscfg - Move qoscfg to thread_struct in arch/riscv/include/asm/processor.h This avoids changing task_struct in /include/linux/sched.h - Reword commit description - Reword Kconfig description [1] https://github.com/rivosinc/linux/commit/8454b793a62be21d39e5826ef5241dfa06198ba9 arch/riscv/Kconfig | 19 ++++++++++++++ arch/riscv/include/asm/csr.h | 8 ++++++ arch/riscv/include/asm/processor.h | 3 +++ arch/riscv/include/asm/qos.h | 40 ++++++++++++++++++++++++++++++ arch/riscv/include/asm/switch_to.h | 2 ++ 5 files changed, 72 insertions(+) create mode 100644 arch/riscv/include/asm/qos.h diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index cc02eb9eee1f..03f22b7fe34b 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -418,6 +418,25 @@ config RISCV_ISA_SVNAPOT If you don't know what to do here, say Y. +config RISCV_ISA_SSQOSID + bool "Ssqosid extension support" + default y + help + Adds support for the Ssqosid ISA extension (Supervisor-mode + Quality of Service ID). + + Ssqosid defines the sqoscfg CSR which allows the system to tag + the running process with RCID (Resource Control ID) and MCID + (Monitoring Counter ID). The RCID is used determine resource + allocation. The MCID is used to track resource usage in event + counters. + + For example, a cache controller may use the RCID to apply a + cache partitioning scheme and use the MCID to track how much + cache a process, or a group of processes, is using. + + If you don't know what to do here, say Y. + config RISCV_ISA_SVPBMT bool "SVPBMT extension support" depends on 64BIT && MMU diff --git a/arch/riscv/include/asm/csr.h b/arch/riscv/include/asm/csr.h index 7c2b8cdb7b77..17d04a0cacd6 100644 --- a/arch/riscv/include/asm/csr.h +++ b/arch/riscv/include/asm/csr.h @@ -59,6 +59,13 @@ #define SATP_ASID_MASK _AC(0xFFFF, UL) #endif +/* SQOSCFG fields */ +#define SQOSCFG_RCID_MASK _AC(0x00000FFF, UL) +#define SQOSCFG_MCID_MASK SQOSCFG_RCID_MASK +#define SQOSCFG_MCID_SHIFT 16 +#define SQOSCFG_MASK ((SQOSCFG_MCID_MASK << SQOSCFG_MCID_SHIFT) | \ + SQOSCFG_RCID_MASK) + /* Exception cause high bit - is an interrupt if set */ #define CAUSE_IRQ_FLAG (_AC(1, UL) << (__riscv_xlen - 1)) @@ -245,6 +252,7 @@ #define CSR_STVAL 0x143 #define CSR_SIP 0x144 #define CSR_SATP 0x180 +#define CSR_SQOSCFG 0x181 #define CSR_STIMECMP 0x14D #define CSR_STIMECMPH 0x15D diff --git a/arch/riscv/include/asm/processor.h b/arch/riscv/include/asm/processor.h index 94a0590c6971..724b2aa2732d 100644 --- a/arch/riscv/include/asm/processor.h +++ b/arch/riscv/include/asm/processor.h @@ -39,6 +39,9 @@ struct thread_struct { unsigned long s[12]; /* s[0]: frame pointer */ struct __riscv_d_ext_state fstate; unsigned long bad_cause; +#ifdef CONFIG_RISCV_ISA_SSQOSID + u32 sqoscfg; +#endif }; /* Whitelist the fstate from the task_struct for hardened usercopy */ diff --git a/arch/riscv/include/asm/qos.h b/arch/riscv/include/asm/qos.h new file mode 100644 index 000000000000..297e7fb64d80 --- /dev/null +++ b/arch/riscv/include/asm/qos.h @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_RISCV_QOS_H +#define _ASM_RISCV_QOS_H + +#ifdef CONFIG_RISCV_ISA_SSQOSID + +#include +#include + +#include +#include +#include + +/* cached value of sqoscfg csr for each cpu */ +static DEFINE_PER_CPU(u32, cpu_sqoscfg); + +static void __qos_sched_in(struct task_struct *task) +{ + u32 *cpu_sqoscfg_ptr = this_cpu_ptr(&cpu_sqoscfg); + u32 thread_sqoscfg; + + thread_sqoscfg = READ_ONCE(task->thread.sqoscfg); + + if (thread_sqoscfg != *cpu_sqoscfg_ptr) { + *cpu_sqoscfg_ptr = thread_sqoscfg; + csr_write(CSR_SQOSCFG, thread_sqoscfg); + } +} + +static inline void qos_sched_in(struct task_struct *task) +{ + if (riscv_has_extension_likely(RISCV_ISA_EXT_SSQOSID)) + __qos_sched_in(task); +} +#else + +static inline void qos_sched_in(struct task_struct *task) {} + +#endif /* CONFIG_RISCV_ISA_SSQOSID */ +#endif /* _ASM_RISCV_QOS_H */ diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/switch_to.h index 60f8ca01d36e..75d9bfd766af 100644 --- a/arch/riscv/include/asm/switch_to.h +++ b/arch/riscv/include/asm/switch_to.h @@ -12,6 +12,7 @@ #include #include #include +#include #ifdef CONFIG_FPU extern void __fstate_save(struct task_struct *save_to); @@ -79,6 +80,7 @@ do { \ if (has_fpu()) \ __switch_to_aux(__prev, __next); \ ((last) = __switch_to(__prev, __next)); \ + qos_sched_in(__next); \ } while (0) #endif /* _ASM_RISCV_SWITCH_TO_H */ -- 2.34.1 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 24CDAC77B61 for ; Mon, 10 Apr 2023 04:34:39 +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=uAleRk0uGXoDZw298Ba2rLSCaL1YiuCYlmnVj3qAWJs=; b=JejyVhB7rvY2Gh StOhruVykEn3AoCDR9UcLLtdVjjwjwghxb1BCkayxbJMar7XNETfYaXCV2vT46ncDIancxo5wJ1aD QKDZeUVVvuLDC1c6uM8dhZTEMUFBMI3Kgq307ZVzF7caSaAqWxDcbVlPhmzJHxitc6K0owinoM+qm Rx7HUs31Oetzbut1ekUGwmICa89olbIr77NVq03096LfLhQtXBHRiVPDAcTm3jD2pr4UNeW+PsK/g PAmG1nT0NooF9DFc1lx77iY4gcaPZ80CyGhbNNoUiUHBU+8G+1upzWT77FOkFy+SrqpjhVocibKP5 K0pRD8r8Gfef9twOgIMw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pljEe-00EYYd-0J; Mon, 10 Apr 2023 04:34:32 +0000 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pljEW-00EYWL-1y for linux-riscv@lists.infradead.org; Mon, 10 Apr 2023 04:34:29 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-1a52667e35fso2283115ad.1 for ; Sun, 09 Apr 2023 21:34:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; t=1681101263; x=1683693263; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3sV0mvKgExLa61TD4oV6e6QKH6k26NRAsPw2q/sIptY=; b=6N1Ll4lBsBO3F91bivVGG+AcRkH/V9v3SFDbYGF2cCEpBJhibNkpWfo8heKOpf7PeK F4htyxI9Dzsm08ZBmm78EnbxOq6YeSU/xBzMATpQINRRofB/lY9rqR7w4EfOWgdxksSO 2h62cr6TAWRwinrIs6rXe3mwgbVQBKnHkdeKrGdtbqOdBj5Q8XzLEnRIADWQMhWD3Aw0 hgnJkZA3EPdkulfMJjrpFVtisYNK6fIvkXo4l/MAXgRGSB7t7VtsGojckzc4x6Ii5gjV Y+IEUomUc80/qXbyC1qQvS29gLmaPgyBI9lZKl7nJwwhA9C8IKdtvysEBzrcQS3TU9OZ e+Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681101263; x=1683693263; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3sV0mvKgExLa61TD4oV6e6QKH6k26NRAsPw2q/sIptY=; b=An7hboPG8Vbe/L4M41POXb/UBhnz7M7jFbvQTi7uU3ToaL81QTTi6kz1EOIF+zYTUp 86RpZplCb/yy5A0e3Pupd+VRMXrMH73NgDSDZ3gqxuM1FugbFPggzwG0QQ7JqgUsNFqP euza2ZIN/O8xsMNtW/4eps67Pnigb9JsG5Ba/4o31B0PhxZq+DZeiiC/MVD2JrSpaq80 zTLvfYUKGHXqUxbcFyOmA0fnn09oH0jewf+wxBTjfEu512SfSsxtVpOFGH2PedHXEHFe eCG3uT1VIf59vgSdhxP3xXJzZI0YcMMaRhnWd35Z9RShgP5vP4VSo4TgxMYVvEvF6tUJ xINQ== X-Gm-Message-State: AAQBX9cm7M284J0lnG5vnHVu3QS7nbEvQU0fsrZYT9OBQPHXnYyOgxc4 3DImZg2pmQhJ35RX7g20hutVEZUrJ137A7IuxH2Ebw== X-Google-Smtp-Source: AKy350Zl7sZArfG8z0rXM1frr2iQuRxz40uDjDFFAuAI50yWPI44W7Qc7LrEGEUGP/9VaFa1Oc/fsw== X-Received: by 2002:a62:5e41:0:b0:626:2ae6:31f6 with SMTP id s62-20020a625e41000000b006262ae631f6mr10982689pfb.7.1681101263359; Sun, 09 Apr 2023 21:34:23 -0700 (PDT) Received: from x1.. ([2601:1c2:1801:d250:45c0:94f2:eea7:6dc3]) by smtp.gmail.com with ESMTPSA id x24-20020aa793b8000000b00634a96493f7sm2394411pff.128.2023.04.09.21.34.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Apr 2023 21:34:22 -0700 (PDT) From: Drew Fustini To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Palmer Dabbelt , Paul Walmsley , Conor Dooley , Atish Patra , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , James Morse , =?UTF-8?q?Kornel=20Dul=C4=99ba?= , Adrien Ricciardi Cc: Drew Fustini Subject: [RFC PATCH 2/2] RISC-V: Add support for sqoscfg CSR Date: Sun, 9 Apr 2023 21:36:46 -0700 Message-Id: <20230410043646.3138446-3-dfustini@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230410043646.3138446-1-dfustini@baylibre.com> References: <20230410043646.3138446-1-dfustini@baylibre.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230409_213424_645868_60AF450A X-CRM114-Status: GOOD ( 27.41 ) 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 QWRkIHN1cHBvcnQgZm9yIHRoZSBzcW9zY2ZnIENTUiBkZWZpbmVkIGluIHRoZSBTc3Fvc2lkIElT QSBleHRlbnNpb24KKFN1cGVydmlzb3ItbW9kZSBRdWFsaXR5IG9mIFNlcnZpY2UgSUQpLiBUaGUg Q1NSIGNvbnRhaW5zIHR3byBmaWVsZHM6CgogIC0gUmVzb3VyY2UgQ29udHJvbCBJRCAoUkNJRCkg dXNlZCBkZXRlcm1pbmUgcmVzb3VyY2UgYWxsb2NhdGlvbgogIC0gTW9uaXRvcmluZyBDb3VudGVy IElEIChNQ0lEKSB1c2VkIHRvIHRyYWNrIHJlc291cmNlIHVzYWdlCgpSZXF1ZXN0cyBmcm9tIGEg aGFydCB0byBzaGFyZWQgcmVzb3VyY2VzIGxpa2UgY2FjaGUgd2lsbCBiZSB0YWdnZWQgd2l0aAp0 aGVzZSBJRHMuIFRoaXMgYWxsb3dzIHRoZSB1c2FnZSBvZiBzaGFyZWQgcmVzb3VyY2VzIHRvIGJl IGFzc29jaWF0ZWQKd2l0aCB0aGUgdGFzayBjdXJyZW50bHkgcnVubmluZyBvbiB0aGUgaGFydC4K CkEgc3Fvc2NmZyBmaWVsZCBpcyBhZGRlZCB0byB0aHJlYWRfc3RydWN0IGFuZCBoYXMgdGhlIHNh bWUgZm9ybWF0IGFzIHRoZQpzcW9zY2ZnIENTUi4gVGhpcyBhbGxvd3MgdGhlIHNjaGVkdWxlciB0 byBzZXQgdGhlIGhhcnQncyBzcW9zY2ZnIENTUiB0bwpjb250YWluIHRoZSBSQ0lEIGFuZCBNQ0lE IGZvciB0aGUgdGFzayB0aGF0IGlzIGJlaW5nIHNjaGVkdWxlZCBpbi4gVGhlCnNxb3NjZmcgQ1NS IGlzIG9ubHkgd3JpdHRlbiB0byBpZiB0aGUgdGhyZWFkX3N0cnVjdC5zcW9zY2ZnIGlzIGRpZmZl cmVudApmcm9tIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDU1IuCgpBIHBlci1jcHUgdmFyaWFi bGUgY3B1X3Nxb3NjZmcgaXMgdXNlZCB0byBtaXJyb3IgdGhhdCBzdGF0ZSBvZiB0aGUgQ1NSLgpU aGlzIGlzIGJlY2F1c2UgYWNjZXNzIHRvIEwxRCBob3QgbWVtb3J5IHNob3VsZCBiZSBzZXZlcmFs IHRpbWVzIGZhc3Rlcgp0aGFuIGEgQ1NSIHJlYWQuIEFsc28sIGluIHRoZSBjYXNlIG9mIHZpcnR1 YWxpemF0aW9uLCBhY2Nlc3NlcyB0byB0aGlzCkNTUiBhcmUgdHJhcHBlZCBpbiB0aGUgaHlwZXJ2 aXNvci4KCkxpbms6IGh0dHBzOi8vZ2l0aHViLmNvbS9yaXNjdi1ub24taXNhL3Jpc2N2LWNtcXJp L2Jsb2IvbWFpbi9yaXNjdi1jYnFyaS5wZGYKQ28tZGV2ZWxvcGVkLWJ5OiBLb3JuZWwgRHVsxJli YSA8bWluZGFsQHNlbWloYWxmLmNvbT4KU2lnbmVkLW9mZi1ieTogS29ybmVsIER1bMSZYmEgPG1p bmRhbEBzZW1paGFsZi5jb20+ClNpZ25lZC1vZmYtYnk6IERyZXcgRnVzdGluaSA8ZGZ1c3RpbmlA YmF5bGlicmUuY29tPgotLS0KTm90ZTogdGhlIFNzcW9zaWQgZXh0ZW5zaW9uIGFuZCBDQlFSSSBz cGVjIGFyZSBzdGlsbCBpbiBhIGRyYWZ0IHN0YXRlLgpUaGUgQ1NSIGFkZHJlc3Mgb2Ygc3Fvc2Nm ZyBpcyBub3QgZmluYWwuCgpDaGFuZ2VzIGZyb20gdGhlIG9yaWdpbmFsIHBhdGNoIFsxXToKLSBS ZWJhc2UgZnJvbSA2LjAgdG8gNi4zCi0gU2ltcGxpZnkgcGVyLWNwdSB2YXJpYWJsZSBmcm9tIHN0 cnVjdCB0byB1MzIgd2l0aCBqdXN0IHNxb3NjZmcKLSBNb3ZlIHFvc2NmZyB0byB0aHJlYWRfc3Ry dWN0IGluIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgKICBUaGlzIGF2b2lkcyBj aGFuZ2luZyB0YXNrX3N0cnVjdCBpbiAvaW5jbHVkZS9saW51eC9zY2hlZC5oCi0gUmV3b3JkIGNv bW1pdCBkZXNjcmlwdGlvbgotIFJld29yZCBLY29uZmlnIGRlc2NyaXB0aW9uCgpbMV0gaHR0cHM6 Ly9naXRodWIuY29tL3Jpdm9zaW5jL2xpbnV4L2NvbW1pdC84NDU0Yjc5M2E2MmJlMjFkMzllNTgy NmVmNTI0MWRmYTA2MTk4YmE5CgogYXJjaC9yaXNjdi9LY29uZmlnICAgICAgICAgICAgICAgICB8 IDE5ICsrKysrKysrKysrKysrCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2Nzci5oICAgICAgIHwg IDggKysrKysrCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIHwgIDMgKysrCiBh cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Fvcy5oICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oIHwgIDIgKysK IDUgZmlsZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFy Y2gvcmlzY3YvaW5jbHVkZS9hc20vcW9zLmgKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L0tjb25m aWcgYi9hcmNoL3Jpc2N2L0tjb25maWcKaW5kZXggY2MwMmViOWVlZTFmLi4wM2YyMmI3ZmUzNGIg MTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvS2NvbmZpZworKysgYi9hcmNoL3Jpc2N2L0tjb25maWcK QEAgLTQxOCw2ICs0MTgsMjUgQEAgY29uZmlnIFJJU0NWX0lTQV9TVk5BUE9UCiAKIAkgIElmIHlv dSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IFkuCiAKK2NvbmZpZyBSSVNDVl9JU0Ff U1NRT1NJRAorCWJvb2wgIlNzcW9zaWQgZXh0ZW5zaW9uIHN1cHBvcnQiCisJZGVmYXVsdCB5CisJ aGVscAorCSAgQWRkcyBzdXBwb3J0IGZvciB0aGUgU3Nxb3NpZCBJU0EgZXh0ZW5zaW9uIChTdXBl cnZpc29yLW1vZGUKKwkgIFF1YWxpdHkgb2YgU2VydmljZSBJRCkuCisKKwkgIFNzcW9zaWQgZGVm aW5lcyB0aGUgc3Fvc2NmZyBDU1Igd2hpY2ggYWxsb3dzIHRoZSBzeXN0ZW0gdG8gdGFnCisJICB0 aGUgcnVubmluZyBwcm9jZXNzIHdpdGggUkNJRCAoUmVzb3VyY2UgQ29udHJvbCBJRCkgYW5kIE1D SUQKKwkgIChNb25pdG9yaW5nIENvdW50ZXIgSUQpLiBUaGUgUkNJRCBpcyB1c2VkIGRldGVybWlu ZSByZXNvdXJjZQorCSAgYWxsb2NhdGlvbi4gVGhlIE1DSUQgaXMgdXNlZCB0byB0cmFjayByZXNv dXJjZSB1c2FnZSBpbiBldmVudAorCSAgY291bnRlcnMuCisKKwkgIEZvciBleGFtcGxlLCBhIGNh Y2hlIGNvbnRyb2xsZXIgbWF5IHVzZSB0aGUgUkNJRCB0byBhcHBseSBhCisJICBjYWNoZSBwYXJ0 aXRpb25pbmcgc2NoZW1lIGFuZCB1c2UgdGhlIE1DSUQgdG8gdHJhY2sgaG93IG11Y2gKKwkgIGNh Y2hlIGEgcHJvY2Vzcywgb3IgYSBncm91cCBvZiBwcm9jZXNzZXMsIGlzIHVzaW5nLgorCisJICBJ ZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBZLgorCiBjb25maWcgUklTQ1Zf SVNBX1NWUEJNVAogCWJvb2wgIlNWUEJNVCBleHRlbnNpb24gc3VwcG9ydCIKIAlkZXBlbmRzIG9u IDY0QklUICYmIE1NVQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jc3IuaCBi L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vY3NyLmgKaW5kZXggN2MyYjhjZGI3Yjc3Li4xN2QwNGEw Y2FjZDYgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vY3NyLmgKKysrIGIvYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS9jc3IuaApAQCAtNTksNiArNTksMTMgQEAKICNkZWZpbmUgU0FU UF9BU0lEX01BU0sJX0FDKDB4RkZGRiwgVUwpCiAjZW5kaWYKIAorLyogU1FPU0NGRyBmaWVsZHMg Ki8KKyNkZWZpbmUgU1FPU0NGR19SQ0lEX01BU0sJX0FDKDB4MDAwMDBGRkYsIFVMKQorI2RlZmlu ZSBTUU9TQ0ZHX01DSURfTUFTSwlTUU9TQ0ZHX1JDSURfTUFTSworI2RlZmluZSBTUU9TQ0ZHX01D SURfU0hJRlQJMTYKKyNkZWZpbmUgU1FPU0NGR19NQVNLCQkoKFNRT1NDRkdfTUNJRF9NQVNLIDw8 IFNRT1NDRkdfTUNJRF9TSElGVCkgfCBcCisJCQkJICBTUU9TQ0ZHX1JDSURfTUFTSykKKwogLyog RXhjZXB0aW9uIGNhdXNlIGhpZ2ggYml0IC0gaXMgYW4gaW50ZXJydXB0IGlmIHNldCAqLwogI2Rl ZmluZSBDQVVTRV9JUlFfRkxBRwkJKF9BQygxLCBVTCkgPDwgKF9fcmlzY3ZfeGxlbiAtIDEpKQog CkBAIC0yNDUsNiArMjUyLDcgQEAKICNkZWZpbmUgQ1NSX1NUVkFMCQkweDE0MwogI2RlZmluZSBD U1JfU0lQCQkJMHgxNDQKICNkZWZpbmUgQ1NSX1NBVFAJCTB4MTgwCisjZGVmaW5lIENTUl9TUU9T Q0ZHCQkweDE4MQogCiAjZGVmaW5lIENTUl9TVElNRUNNUAkJMHgxNEQKICNkZWZpbmUgQ1NSX1NU SU1FQ01QSAkJMHgxNUQKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcHJvY2Vz c29yLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCmluZGV4IDk0YTA1OTBj Njk3MS4uNzI0YjJhYTI3MzJkIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3By b2Nlc3Nvci5oCisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgKQEAgLTM5 LDYgKzM5LDkgQEAgc3RydWN0IHRocmVhZF9zdHJ1Y3QgewogCXVuc2lnbmVkIGxvbmcgc1sxMl07 CS8qIHNbMF06IGZyYW1lIHBvaW50ZXIgKi8KIAlzdHJ1Y3QgX19yaXNjdl9kX2V4dF9zdGF0ZSBm c3RhdGU7CiAJdW5zaWduZWQgbG9uZyBiYWRfY2F1c2U7CisjaWZkZWYgQ09ORklHX1JJU0NWX0lT QV9TU1FPU0lECisJdTMyIHNxb3NjZmc7CisjZW5kaWYKIH07CiAKIC8qIFdoaXRlbGlzdCB0aGUg ZnN0YXRlIGZyb20gdGhlIHRhc2tfc3RydWN0IGZvciBoYXJkZW5lZCB1c2VyY29weSAqLwpkaWZm IC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9xb3MuaCBiL2FyY2gvcmlzY3YvaW5jbHVk ZS9hc20vcW9zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yOTdl N2ZiNjRkODAKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Fvcy5o CkBAIC0wLDAgKzEsNDAgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICov CisjaWZuZGVmIF9BU01fUklTQ1ZfUU9TX0gKKyNkZWZpbmUgX0FTTV9SSVNDVl9RT1NfSAorCisj aWZkZWYgQ09ORklHX1JJU0NWX0lTQV9TU1FPU0lECisKKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5o PgorI2luY2x1ZGUgPGxpbnV4L2p1bXBfbGFiZWwuaD4KKworI2luY2x1ZGUgPGFzbS9iYXJyaWVy Lmg+CisjaW5jbHVkZSA8YXNtL2Nzci5oPgorI2luY2x1ZGUgPGFzbS9od2NhcC5oPgorCisvKiBj YWNoZWQgdmFsdWUgb2Ygc3Fvc2NmZyBjc3IgZm9yIGVhY2ggY3B1ICovCitzdGF0aWMgREVGSU5F X1BFUl9DUFUodTMyLCBjcHVfc3Fvc2NmZyk7CisKK3N0YXRpYyB2b2lkIF9fcW9zX3NjaGVkX2lu KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKK3sKKwl1MzIgKmNwdV9zcW9zY2ZnX3B0ciA9IHRo aXNfY3B1X3B0cigmY3B1X3Nxb3NjZmcpOworCXUzMiB0aHJlYWRfc3Fvc2NmZzsKKworCXRocmVh ZF9zcW9zY2ZnID0gUkVBRF9PTkNFKHRhc2stPnRocmVhZC5zcW9zY2ZnKTsKKworCWlmICh0aHJl YWRfc3Fvc2NmZyAhPSAqY3B1X3Nxb3NjZmdfcHRyKSB7CisJCSpjcHVfc3Fvc2NmZ19wdHIgPSB0 aHJlYWRfc3Fvc2NmZzsKKwkJY3NyX3dyaXRlKENTUl9TUU9TQ0ZHLCB0aHJlYWRfc3Fvc2NmZyk7 CisJfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcW9zX3NjaGVkX2luKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdGFzaykKK3sKKwlpZiAocmlzY3ZfaGFzX2V4dGVuc2lvbl9saWtlbHkoUklTQ1ZfSVNB X0VYVF9TU1FPU0lEKSkKKwkJX19xb3Nfc2NoZWRfaW4odGFzayk7Cit9CisjZWxzZQorCitzdGF0 aWMgaW5saW5lIHZvaWQgcW9zX3NjaGVkX2luKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykge30K KworI2VuZGlmIC8qIENPTkZJR19SSVNDVl9JU0FfU1NRT1NJRCAqLworI2VuZGlmIC8qIF9BU01f UklTQ1ZfUU9TX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNo X3RvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oCmluZGV4IDYwZjhjYTAx ZDM2ZS4uNzVkOWJmZDc2NmFmIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3 aXRjaF90by5oCisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKQEAgLTEy LDYgKzEyLDcgQEAKICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL3B0 cmFjZS5oPgogI2luY2x1ZGUgPGFzbS9jc3IuaD4KKyNpbmNsdWRlIDxhc20vcW9zLmg+CiAKICNp ZmRlZiBDT05GSUdfRlBVCiBleHRlcm4gdm9pZCBfX2ZzdGF0ZV9zYXZlKHN0cnVjdCB0YXNrX3N0 cnVjdCAqc2F2ZV90byk7CkBAIC03OSw2ICs4MCw3IEBAIGRvIHsJCQkJCQkJXAogCWlmIChoYXNf ZnB1KCkpCQkJCQlcCiAJCV9fc3dpdGNoX3RvX2F1eChfX3ByZXYsIF9fbmV4dCk7CVwKIAkoKGxh c3QpID0gX19zd2l0Y2hfdG8oX19wcmV2LCBfX25leHQpKTsJCVwKKwlxb3Nfc2NoZWRfaW4oX19u ZXh0KTsJCQkJXAogfSB3aGlsZSAoMCkKIAogI2VuZGlmIC8qIF9BU01fUklTQ1ZfU1dJVENIX1RP X0ggKi8KLS0gCjIuMzQuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtcmlzY3YK