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 6C55FCD13CF for ; Mon, 2 Sep 2024 18:54:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D52C98D00FD; Mon, 2 Sep 2024 14:54:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D036D8D00E7; Mon, 2 Sep 2024 14:54:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BCAF08D00FD; Mon, 2 Sep 2024 14:54:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 9E9648D00E7 for ; Mon, 2 Sep 2024 14:54:38 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 43B251C4969 for ; Mon, 2 Sep 2024 18:54:38 +0000 (UTC) X-FDA: 82520699436.18.4D46615 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf18.hostedemail.com (Postfix) with ESMTP id 912391C0012 for ; Mon, 2 Sep 2024 18:54:36 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=none; spf=pass (imf18.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 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-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725303229; a=rsa-sha256; cv=none; b=yM2ixweqCNxpcmhH+gYoBDtY85KT8TAkAL0dcKB4TW6gdr5DMrFXbfM+8ClHTxRCRJbxaV wrlKmW4bD7hljGz9Mt13sDGNK1BJHObVixETY+cZc/zX7IMFYYBx0IH0yEsLzMY2j+Ik1K 1fnakED9p+C+Oyvtg4R5M168FZRcqUc= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=none; spf=pass (imf18.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 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=1725303229; 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=Cwl10KhhgV0xpkP0gByiPjTieYcFRCOsigTujs7ouOs=; b=IPtIdreKM5YBSYz4XHPYo7nihyNZ8OAJ8Ctj6T3+1ABJAbO274b6aO5qlc6dlF3W4FaTf4 I1rAvwnnMMqVHM4xORd0OADwEH57468WZFRbqgAq/5z7hkHcS8Y8Ol5LyOkLqygv9z93Py 8S87rnw+fQzof3cY+BvuWZVNaSJIUxY= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id AD5495C58C2; Mon, 2 Sep 2024 18:54:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1B088C4CEC2; Mon, 2 Sep 2024 18:54:27 +0000 (UTC) Date: Mon, 2 Sep 2024 19:54:25 +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 v12 19/39] arm64/mm: Handle GCS data aborts Message-ID: References: <20240829-arm64-gcs-v12-0-42fec947436a@kernel.org> <20240829-arm64-gcs-v12-19-42fec947436a@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240829-arm64-gcs-v12-19-42fec947436a@kernel.org> X-Stat-Signature: qom48gmy56od4fyfs89tnas6wy8tkafn X-Rspamd-Queue-Id: 912391C0012 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1725303276-240014 X-HE-Meta: U2FsdGVkX1+pykp8y6AZ3ctTXHZynDpYTSOmDvo9y3ZSdPLJXfDb2CCvVgkjzw7QzQYuKXaZGrD6rmvyuPYH6Q7K+d8Vjmh6tMbTN8uFWfWKFfun5C8eeYr5IGz14ACagxlfRHtEkhKVj3fBDpvHMKqIf7zDLRGCYSvfbOTzhAeFVW/bSuFKn3dtpNya/YSO2tZSV7XB93s+cq4p1qqq437Id1i8P6hgVNgJkpkHHCPzmcL/uhl59DMqP/GSvuJ5J60oIpctMu0nFJTqknPBcWNSSTKCNBLbXMo40FwI67cW1SzhWZuZEUmp0TYAi9ccxizfXg1uQTjuoLPd0OxPxxTzEww2hqf1oPGymyC5ORTlaBN9HlOF6o8GafCAlDncTNSQbY9TZdDGLWgf/uoo4NILK4B7TuckvAmcjt58+4fETbt+pDvmAtcbxBQXMoSeXLIwHYLlXnjF1hzkuusmlkb32icqbqzXMPe79VQj/aGN1cRRxNHOF8GkrMcbQLi/yhHeiJbmF0wn9G+88o/a4KVodc9zJvewNyewYIgfeHmK6WHCwhpWRPsA372VsFC3Gk5sSEBWXFFdFoBJAxG3M6IyB+Mu56S7peP1b+GYd3cf1z+ra2ZFzjuAcadLStIw7eEOKfsqmnmfULddn5s9yo1fl/VpkrcKJNWkNfwn3qUCbq+vScERLAmn+1n3XNm0tH920JmAsVV/A6fdgJ938VlrOR8le7xKTdBgV0HU/fKWnDt3VSBR9WHuvr6BRC/ycM1FulWgAfA5+bbaeBRC7of0RvntaQ1AdJyXTOERGkvw+q71rm9sz9YT0mwpPZdvzEh7laQjBCFKDgMYOdaSRgMSBoGKvFpJR4X8cKXT2aIyhYVf7TrA0gTwhhh8hqOd2mJo5qVsrm98Q3KdZh9jfRgvNqjKP4Z7zeh8h8EyllgeU6jWu2HN3eUD4CwO/hi6k4GjYrPvQz5CZTp6cUV zGwjm7KI +csN81mHx2uDlMsCDu2cTaPu15rLcj+10FmAEYDomgzl9AC3v0b1z6drgwZZDGseNsxhDm5GZxJgawHPk72stJvu50u86FgexFsBwXHRbZffvq4js/qlG4PgStNbApND2imq6dfiRsjBlAPVs7bbledZFVNhLZ63oyiyXNj6X7XvbqH43XNWLUjjA0gzJ2p/SwRoXWR6HKHWPe45OyJJPfoQ+tZVMHmFE4jeA4El0x3cEvO/t4YprsIs0zddks4Sc/RIweQkz7UOimEP9y8ZzYczyQwD6c+lqL5aqMJvUilszcFqExO0Lndo0VgYfz1Mfwc2tS+XW84ziyzdZ/+eE+49lnacB+9r9am/YRY4x6Q6JGGiLQd6U0eJvy+srweJ30UZ+eqaRFKDAAKzhj7JePKbOFR3VO51OIREVd3l3Zu8QxaaS37G35rXBHlkf6UkfXdW6dV0lSYKX7Qu0fGl/mxNCN3HJMAKHg2guvgAtWT2gYbupLuZVfVvTNs48aOQIAuRDwHNT99NCZfulz9lG7t8wgCIl1dh1hlMYpjraaZ7Q+FJw/AGe97HTIQ== 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 29, 2024 at 12:27:35AM +0100, Mark Brown wrote: > All GCS operations at EL0 must happen on a page which is marked as > having UnprivGCS access, including read operations. If a GCS operation > attempts to access a page without this then it will generate a data > abort with the GCS bit set in ESR_EL1.ISS2. > > EL0 may validly generate such faults, for example due to copy on write > which will cause the GCS data to be stored in a read only page with no > GCS permissions until the actual copy happens. Since UnprivGCS allows > both reads and writes to the GCS (though only through GCS operations) we > need to ensure that the memory management subsystem handles GCS accesses > as writes at all times. Do this by adding FAULT_FLAG_WRITE to any GCS > page faults, adding handling to ensure that invalid cases are identfied > as such early so the memory management core does not think they will > succeed. The core cannot distinguish between VMAs which are generally > writeable and VMAs which are only writeable through GCS operations. > > EL1 may validly write to EL0 GCS for management purposes (eg, while > initialising with cap tokens). > > We also report any GCS faults in VMAs not marked as part of a GCS as > access violations, causing a fault to be delivered to userspace if it > attempts to do GCS operations outside a GCS. > > Reviewed-by: Thiago Jung Bauermann > Signed-off-by: Mark Brown Reviewed-by: Catalin Marinas