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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63D94C5321E for ; Sun, 25 Aug 2024 18:31:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B66F18D002C; Sun, 25 Aug 2024 14:31:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B165D8D0022; Sun, 25 Aug 2024 14:31:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 98D928D002C; Sun, 25 Aug 2024 14:31:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 61F268D0022 for ; Sun, 25 Aug 2024 14:31:49 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 0DE48A0853 for ; Sun, 25 Aug 2024 18:31:49 +0000 (UTC) X-FDA: 82491611538.07.4340AEB Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf24.hostedemail.com (Postfix) with ESMTP id 83772180026 for ; Sun, 25 Aug 2024 18:31:47 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=none; spf=pass (imf24.hostedemail.com: domain of cmarinas@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=cmarinas@kernel.org; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724610622; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9xJuhXAlbeMm9rilS6gz9KQUoK10tmN3ZTIXWz7m/mY=; b=lYZz0IsvCAo99U9JQr2br8RRRSWAKBy6WakVgOigo3yVq0W2jKMQYsK+toJYP+dvw8CFTW rLWndlI/XrO4TVjpJpV/xocaSneTrCMsARIiImozw16Wg/XFp9yBqunBYaxcOaU8IqrMrB NzsXMyBeniCKcRS9TkYJtJXtkcf+1dc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724610622; a=rsa-sha256; cv=none; b=txEDl76wmpZEFhUyg5dlBHH1OSmzDcNYR4t33MMQrnHiKFXyRFldTg/wJgkWe+YufDO3De SEq7FchNtZxty1JCLydwkWtJWFoLnVx1AeNFRafbNNi8efP2huwlvyPk1tzC6r1jaKdD/A 9YzS+njzBZcZ9ZBLddbNvBbw/S/d3sY= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=none; spf=pass (imf24.hostedemail.com: domain of cmarinas@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=cmarinas@kernel.org; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 8685FA40531; Thu, 22 Aug 2024 15:44:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DDAD5C32782; Thu, 22 Aug 2024 15:44:14 +0000 (UTC) Date: Thu, 22 Aug 2024 16:44:12 +0100 From: Catalin Marinas To: Mark Brown Cc: Will Deacon , Jonathan Corbet , Andrew Morton , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Arnd Bergmann , Oleg Nesterov , Eric Biederman , Shuah Khan , "Rick P. Edgecombe" , Deepak Gupta , Ard Biesheuvel , Szabolcs Nagy , Kees Cook , "H.J. Lu" , Paul Walmsley , Palmer Dabbelt , Albert Ou , Florian Weimer , Christian Brauner , Thiago Jung Bauermann , Ross Burton , Yury Khrustalev , Wilco Dijkstra , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH v11 18/39] arm64/traps: Handle GCS exceptions Message-ID: References: <20240822-arm64-gcs-v11-0-41b81947ecb5@kernel.org> <20240822-arm64-gcs-v11-18-41b81947ecb5@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240822-arm64-gcs-v11-18-41b81947ecb5@kernel.org> X-Stat-Signature: b1tdpyfrbmxq5nupeque8tpb137wfhwf X-Rspamd-Queue-Id: 83772180026 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1724610707-498341 X-HE-Meta: U2FsdGVkX1+C5xWw86jA+C2udbtZmfBe8MGK8Pm4Vgiw+XDF1CTXaTjXhSta5YgXKpBPiCmjFKS7kFUjN5+3KOstlhQwQiQHBJsV0mSnpSBP5SEUnh2heoDXmQ2npWTTF28manPqXggyamRYBwejlJM7TtR91WqNfDa6Yry2aUkA/kYrHWY4Ur/Ttc4/Zy3B9M25NqirtDOcRt2EKgUYfuLb5sKYCcvsFyXtpxD8DkYg0r/63dKRWFXbVhn1VAnBGiUpN68RXmc8Fb/IL0PtUlkEDtkKcASE53cYvRk+oG/NOUfDqr3dAxoKwrh2bbjV3OAa6vCIMWZAdsA6u6ApISnv0b6ofG6/wbXZYyZ/fY8jM9Dd3tdiZenk6SMVtc+w5TeSNTaREwO9y4+gAzvCHH6GMGdQ5AA6tqkwstaecl+WIy1MvHovxsqQHBtpXL8YCYkCsOun5bDt0QkYWbzuy5LpRZyGBQ5vZ/JUOrR/+Z5IrDusMLaeejbFsTpredugWC/hxi3IAbak2iAWosgdl8YZyp4tpIBkE9mT0PFNWRuY4WWcqNKv43tlwpC2nN7E+fQFFYz9B4XwSuW7SzbH3sZvejZAHDq2KfAkHjBzDAC3dfv40U6v0Zqu9tWt6P5VLt+YFdshg9k7ZyFIy1ebNSAG6ko1IB7hT/0goOKo5HvHgtkn8uXuQwb+E2aj3oDU7uNGJ+kk6W+XYdOE7AwgtNKRfYQXCgRe/578jDsw7wWNu3ADUhCzYrf2p63v11hZMt+pq292e6a3xGdbwEBesuuhu2D1jf/hBjk7oWF88JpbB4Tav3iz9+gXurVCnhKTTO17Kukjf8U0QjZkVklBeBrD8CBjpN56VIw7jZeOMgmMFrPspxwHWqKks/mEWgEu4YQa0wpyKv968dDFxjlRMBYv+Aj4wTGxtzHaiPG0Kl7R+PPZQmA3WEpcsxWTUh8fW780RrDsSnEUpe9BY3P u2eCzwIr 6WvCcRrHJZ+tt7+wCzaxILP0QYMqVM9VWEXOz06RtQ0NGYFj8DyOiYrugbbVQ917vfV3bDJtfphP1iNNLGl2SNtIctvuShpP84P+i5oXnZI7JElWYxhgM6UzcKXdXkhw2c8WELmon7v6s3U21zIU0I9idMwBi7nYaWTozaZuNHRKM0jAr6MPTSlyYmBU1XRGSIfg8iirtMFxAO1eghJUs9SvxQ7x5JRl7S35ZbmQel+HexC+XWMxXVwwvBKvQmDCiv8xG6iMmhLoYlfm8yAYsb7YGIFGFLee69nb6Ko/oxnapzfUcZF67Df1zJgc7WCYBwS2AUhqJ5AlvOP+e9bW7vgZ574EPCg5uTboyKnzXLSTjbQIg+1U+yYIb4lJvMBNz91AQRav6benKZVpu2RJl1FMmkbwYRF9R9qlAZrVnwgABMlF0RVuPeI1XW2Er/656s2KDUTY79tI95HU= 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: On Thu, Aug 22, 2024 at 02:15:21AM +0100, Mark Brown wrote: > +static void noinstr el0_gcs(struct pt_regs *regs, unsigned long esr) > +{ > + enter_from_user_mode(regs); > + local_daif_restore(DAIF_PROCCTX); > + do_el0_gcs(regs, esr); > + exit_to_user_mode(regs); > +} > + > static void noinstr el0_inv(struct pt_regs *regs, unsigned long esr) > { > enter_from_user_mode(regs); > @@ -766,6 +786,9 @@ asmlinkage void noinstr el0t_64_sync_handler(struct pt_regs *regs) > case ESR_ELx_EC_MOPS: > el0_mops(regs, esr); > break; > + case ESR_ELx_EC_GCS: > + el0_gcs(regs, esr); > + break; > case ESR_ELx_EC_BREAKPT_LOW: > case ESR_ELx_EC_SOFTSTP_LOW: > case ESR_ELx_EC_WATCHPT_LOW: > diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c > index 9e22683aa921..d410dcc12ed8 100644 > --- a/arch/arm64/kernel/traps.c > +++ b/arch/arm64/kernel/traps.c > @@ -500,6 +500,16 @@ void do_el1_bti(struct pt_regs *regs, unsigned long esr) > die("Oops - BTI", regs, esr); > } > > +void do_el0_gcs(struct pt_regs *regs, unsigned long esr) > +{ > + force_signal_inject(SIGSEGV, SEGV_CPERR, regs->pc, 0); > +} Just double checking: a GCSPOPM (for example, it can be a RET) from a non-GCS page would generate a classic permission fault with ISS2.GCS set rather than a GCS exception. That's my reading from the Arm ARM pseudocode, the text isn't clear to me. -- Catalin