From patchwork Wed Apr 3 23:34:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 13616765 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 49E82CD1292 for ; Wed, 3 Apr 2024 23:41:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D2B856B009A; Wed, 3 Apr 2024 19:41:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C8C956B009B; Wed, 3 Apr 2024 19:41:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B2F556B009C; Wed, 3 Apr 2024 19:41:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 9576F6B009A for ; Wed, 3 Apr 2024 19:41:36 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 557C71C0D69 for ; Wed, 3 Apr 2024 23:41:36 +0000 (UTC) X-FDA: 81969844992.10.0A40D28 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by imf30.hostedemail.com (Postfix) with ESMTP id 5DE0680006 for ; Wed, 3 Apr 2024 23:41:34 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=klz58drD; dmarc=none; spf=pass (imf30.hostedemail.com: domain of debug@rivosinc.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=debug@rivosinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712187694; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=B1lL5f6yq9LaiF8GnxAfpEDQQL4kAkav9nCQOWb1C3Y=; b=mUG7+4OYra+2dhSpP64M17n2+bFQcSm78o+m+Sy/sxHtI9O879iJLtmXL0o6boH3h6jOTq a4lvsRvK09bPYm+quwzD9T4h6+jUJpDKrZxYaxX0qnzbJyotBgYh1Da7xkdCkQUVRR0+t+ 8ZCLLWlZk7L8QlSZPCfBEZcHH+TDw90= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=klz58drD; dmarc=none; spf=pass (imf30.hostedemail.com: domain of debug@rivosinc.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=debug@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712187694; a=rsa-sha256; cv=none; b=PiJMHrljlttyaj7EQyPIW9hZNIl64xC8iZP+I89C8dWvlnG4nZjq+FaC8ewIABdNqfazq3 iPYGB2UFfw9AG42hzPCfKTQUM0dj+OcDUOzvnt84OGxdQd3mjCzJLaafESBfiwdhQ6joLf M8r5qbtTzflgta/fyx9yhY8szK6+cOs= Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-6eced1dab1fso27702b3a.1 for ; Wed, 03 Apr 2024 16:41:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1712187693; x=1712792493; darn=kvack.org; 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=B1lL5f6yq9LaiF8GnxAfpEDQQL4kAkav9nCQOWb1C3Y=; b=klz58drDpBRD0zaYLftvO1P9XhqT7veg/8xAeK8aTkmCLf+4b85mMOoaXrPMnikkMM Hn+2nuSE4BWVqb+cMmtataOLFFn7D9OA9Yu56jNl/W6YrltSp74f6nXhb3pQl+6k85XI ujsyR77YvuqsbHeaJhIjPImLoSqsNLGpfKb442pHOkjDWZzpX6HhalknIg/bGobtEgP9 D5jovzJjs+MfSoVmms/gDS4fNJf+1Blp5DHekibxeO8jqwkeRnWfxPfJUIJGYOt+5cgw jJzJeq/rIlYosjwUq4SVwKdWlPyGIon1/BOIRvfVaxssJMygjMo7X6jDK7SKjeeqJ/SR TSDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712187693; x=1712792493; 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=B1lL5f6yq9LaiF8GnxAfpEDQQL4kAkav9nCQOWb1C3Y=; b=MxsfHUlqryK9YSHu8tpDpFfmEeTuzQklAjrneDvjoCDR87i9KrGxJ4M5QGB5o9UQ6x 7W+3ttIoyTfbC3tNwMeZQX5WHX2Gkkl8B69esDoc6msHNmxLiFrvbxmqB4Mgbo9aoZWA hCkBCcO1uRiz5cZ+dClKiEA+KhEiPonXtLei7/KZncMJCFgDFbJ6NsF7vykKRfmaReYN feNwh3T1ZSxfn7Oijqga0iTovif0NHTdLTd5EJ+rV3u9IJSkUMBVub9T1RWmUxgKesEz xgD5Z/Aopbp7zt+r5UohB+GzPpoP/lGjQqB7N/2j5zsxm3VozQ0bW4abqJxizuwCTCA7 nMMg== X-Forwarded-Encrypted: i=1; AJvYcCXl8pkUf3+ITPsnNbKaxer/vnrbc4tFNpmz/U0xJOtH6w3XQDaNXWHbtE4IuGNXuUkIuLLAmSD6mBG6ZwuC+kHBYQs= X-Gm-Message-State: AOJu0Yy1X3Tb6G4asuaExaJZACdn2QcBI3o0nMeOU4p1qu/ioI7N6qCr +RahjAaKdLoNlRcs9sxrcx90tELMmoPN0SBTtyjiwFW2Whg2U/mEsXPnhG5HAGA= X-Google-Smtp-Source: AGHT+IExKU8/z/0Uf5Y5wAMW8Wut8qP6zJCIHgHh0jSkN2g23nIAgrJWZfYYYsTzy3HfTPFShjsbrQ== X-Received: by 2002:a05:6a20:de16:b0:1a7:1df5:1699 with SMTP id kz22-20020a056a20de1600b001a71df51699mr975407pzb.27.1712187693134; Wed, 03 Apr 2024 16:41:33 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id b18-20020a170902d51200b001deeac592absm13899117plg.180.2024.04.03.16.41.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Apr 2024 16:41:32 -0700 (PDT) From: Deepak Gupta To: paul.walmsley@sifive.com, rick.p.edgecombe@intel.com, broonie@kernel.org, Szabolcs.Nagy@arm.com, kito.cheng@sifive.com, keescook@chromium.org, ajones@ventanamicro.com, conor.dooley@microchip.com, cleger@rivosinc.com, atishp@atishpatra.org, alex@ghiti.fr, bjorn@rivosinc.com, alexghiti@rivosinc.com, samuel.holland@sifive.com, conor@kernel.org Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kselftest@vger.kernel.org, corbet@lwn.net, palmer@dabbelt.com, aou@eecs.berkeley.edu, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, oleg@redhat.com, akpm@linux-foundation.org, arnd@arndb.de, ebiederm@xmission.com, Liam.Howlett@oracle.com, vbabka@suse.cz, lstoakes@gmail.com, shuah@kernel.org, brauner@kernel.org, debug@rivosinc.com, andy.chiu@sifive.com, jerry.shih@sifive.com, hankuan.chen@sifive.com, greentime.hu@sifive.com, evan@rivosinc.com, xiao.w.wang@intel.com, charlie@rivosinc.com, apatel@ventanamicro.com, mchitale@ventanamicro.com, dbarboza@ventanamicro.com, sameo@rivosinc.com, shikemeng@huaweicloud.com, willy@infradead.org, vincent.chen@sifive.com, guoren@kernel.org, samitolvanen@google.com, songshuaishuai@tinylab.org, gerg@kernel.org, heiko@sntech.de, bhe@redhat.com, jeeheng.sia@starfivetech.com, cyy@cyyself.name, maskray@google.com, ancientmodern4@gmail.com, mathis.salmen@matsal.de, cuiyunhui@bytedance.com, bgray@linux.ibm.com, mpe@ellerman.id.au, baruch@tkos.co.il, alx@kernel.org, david@redhat.com, catalin.marinas@arm.com, revest@chromium.org, josh@joshtriplett.org, shr@devkernel.io, deller@gmx.de, omosnace@redhat.com, ojeda@kernel.org, jhubbard@nvidia.com Subject: [PATCH v3 01/29] riscv: envcfg save and restore on task switching Date: Wed, 3 Apr 2024 16:34:49 -0700 Message-ID: <20240403234054.2020347-2-debug@rivosinc.com> X-Mailer: git-send-email 2.43.2 In-Reply-To: <20240403234054.2020347-1-debug@rivosinc.com> References: <20240403234054.2020347-1-debug@rivosinc.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 5DE0680006 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: soyt8zqguao8t5ti1qe99zh8irbkj6nr X-HE-Tag: 1712187694-531152 X-HE-Meta: U2FsdGVkX18tTdMv0qKj9XhUMEQR+sWguHI0kX0IY13yCvCTlF9kIMBkL0xxdqkKNIXyYrfHm6f2VcoLCMaSp5qSd+0cu92HcS/ZbnQFQ810pI+p3fr+501t+Drcf7ukmtCDhrPNgWJQD80l1Z6lXl027eg4UFmG5Ga5FIDKVCjXAHa0xx3ZGYE3wcG0gDvoHKg6HrQwRRz1m82GNBFwRYg1w2z2oqhg3OCT9vOn7PQ6cIC9QtpEwXD9ipOgp1yawFjC7SvsdOLKMIzlZd4xvIWIXn8vA3DdHZP7cPnGBgVdRWpYsyRddCLvl6jQN6sbC7ktYkn7UgIfCGB7tmgqW+zMHrVGvYwzsQkqAaQ1Dy/EnOM3QzFJTmDofC19UBa5gWiRdaYwF8fuTj5UXJiLOM6aL76gzqLkesizMtLhrbfZ38U6P7VaFrB1NUci5ChAqGr5E5hGtVRMFSNnssHeeXVT3YvM8G5XYLkXBK+3aqlunbEX5Gmq5d0ZOo3otu5FasGpbv6yRaJPRnRvCFZk7kbu3t10JwdSfbg7dV95M/oILOgbN/uT0n9+2WM2nMXd+RRltIkofx3gBJ5FFTKqlFGFT/Bbk+Tj6EDAg+b6GqGycSuXb4cQE3yGNmZrHe59ighG7sijp+cqwnAnnbU/XAVYf0zzaUzP1Gy5YJTf0mODGJ4q59DJQXR0HVEn0gXq6Hqp+JoILYUgZX3emNB7go2X8Uj5Ud+jCyN7WYymoUiwfy6BhbgYcLrm2RG8DTnEPaTbcvPl3L+e/T+BSG9wQoB3wdE8qLr5xc4EzbyyuHQJhELI3syJSal1YdS4w0L8Rl4HgJms9Y7TCklAhnM6kTxmx6oPYrb04M6JghKH7pBO7TwFqVd/QzNeEHkt21VRZ5JYo4kQWbgLuQTa29b+k5ML1v0ymvQyt0xabYuH4bB9mqtinzteZ+FHuapmgeLbVvIXdwxntX9h3eux20Z lcZdzowJ AltiZ0dkPoBorqO7Ex6C+dhI4NMUp/Gx1ctNEGI0K7Pk4OuIw9sSH7ScBemW1KxoQc/RwRO/mkmCAZQiOO3jZIXoKUJAbxxPtEaxYeJOp+KuAJEC+/bvmDJ6RHaG7/z0cyhhVsl1nas+vFCf6Hw/fo5jDVzXpmLzXxx2m/mbzwY4vg2a5sK6pLS4S1EW4pfJpEPk2C/3SjqWyEOU/vSjV2UDz2IfkygCi6IoRSk3qUNMq+eNfSC6X8dHZd4ZoIDaiEVmHwma14Lv8l7Rus46B5DWNZFvI7fXQuAByZHn2yT8KkcCVc2pSwFB8xrhgTyOvB9izZ+W9hGu2lPgcY348X7EZMhM2EgwZ/UJ7e05d6Cm6gzw6z8i92QDntseKs1+nGaCg2K/Nd025OUoQfOtdh1So25mQmY00rp03Iro9eJcE4RTVof578U58cqsCxF75xDUjY9FxFu+zaHzXXi6PSmms1E4Gg6IFUp35xbsaJImWdmqtpHZKepkrIP5liVRNeKqANeOVQenp+PY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: envcfg CSR defines enabling bits for cache management instructions and soon will control enabling for control flow integrity and pointer masking features. Control flow integrity enabling for forward cfi and backward cfi are controlled via envcfg and thus need to be enabled on per thread basis. This patch creates a place holder for envcfg CSR in `thread_info` and adds logic to save and restore on task switching. Signed-off-by: Deepak Gupta --- arch/riscv/include/asm/switch_to.h | 10 ++++++++++ arch/riscv/include/asm/thread_info.h | 1 + 2 files changed, 11 insertions(+) diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/switch_to.h index 7efdb0584d47..2d9a00a30394 100644 --- a/arch/riscv/include/asm/switch_to.h +++ b/arch/riscv/include/asm/switch_to.h @@ -69,6 +69,15 @@ static __always_inline bool has_fpu(void) { return false; } #define __switch_to_fpu(__prev, __next) do { } while (0) #endif +static inline void __switch_to_envcfg(struct task_struct *next) +{ + register unsigned long envcfg = next->thread_info.envcfg; + + asm volatile (ALTERNATIVE("nop", "csrw " __stringify(CSR_ENVCFG) ", %0", 0, + RISCV_ISA_EXT_XLINUXENVCFG, 1) + :: "r" (envcfg) : "memory"); +} + extern struct task_struct *__switch_to(struct task_struct *, struct task_struct *); @@ -80,6 +89,7 @@ do { \ __switch_to_fpu(__prev, __next); \ if (has_vector()) \ __switch_to_vector(__prev, __next); \ + __switch_to_envcfg(__next); \ ((last) = __switch_to(__prev, __next)); \ } while (0) diff --git a/arch/riscv/include/asm/thread_info.h b/arch/riscv/include/asm/thread_info.h index 5d473343634b..a503bdc2f6dd 100644 --- a/arch/riscv/include/asm/thread_info.h +++ b/arch/riscv/include/asm/thread_info.h @@ -56,6 +56,7 @@ struct thread_info { long user_sp; /* User stack pointer */ int cpu; unsigned long syscall_work; /* SYSCALL_WORK_ flags */ + unsigned long envcfg; #ifdef CONFIG_SHADOW_CALL_STACK void *scs_base; void *scs_sp;