From patchwork Wed Aug 16 18:40:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 136250 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp2434838vqi; Sun, 20 Aug 2023 04:38:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF03OejFs/2FQmKvzHfzCyYyxsCLNHmS31Ozfz3pqsMyA79pQBignIwnFG5mJDj6KQgospp X-Received: by 2002:a0d:e606:0:b0:579:e8de:3580 with SMTP id p6-20020a0de606000000b00579e8de3580mr4775055ywe.9.1692531489709; Sun, 20 Aug 2023 04:38:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692531489; cv=none; d=google.com; s=arc-20160816; b=w0voCzcJaHyNi1lQO8OsYULDfG8Hx2hIdjY3O1qNhzuBfF4pVsK5TwrVLLy9UnUgM4 XDBN82etOrmBCXe+Y9wTXYkKzTkoiE8xPO6h5fLu+Zor9M2rKcq4qtitNAp0W4OlFpBz cGeMeNvZvXgnSKLDfaTh5P2us6ValylauqcN+wkxWkkNMXDYN1KconQuK9awVPt+5l9R G0Zkx6uAYn6P9n4ayVeIEKiapuup/HilPAQwljgIrGIvM7N+2r7JR1ls6ZaRRKMVC1U7 3veLkY+G3qL+FCSa8exTl+e1r8zzwa4AT5CzTHPaPxs8/mToNI/67T/s4J/P9zTU/dSy 3DZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:message-id:content-transfer-encoding :mime-version:subject:date:from:dkim-signature; bh=JoHy6yQMdFmmlV4zBju5DOD2w14somK0moOXccUeM3E=; fh=F/l+Wd5pJOGctlfOCB28jI3AtlqUSXhttgA5zL3jIQY=; b=DRlxJzKxbQ47kPdQ0I4bq5RQpWxb36pM7OBMeMI7aQIA4BHRjysUYmzoZ2qnrZ2mdz cohNW/ao6C6TTjXswSh7buppCuAGHoU0zb9ClTnEh1R1czjIow7NHVLfFZqLDEAeTpvw jAmA2+YreU7ephjupBrPvbG/D/863LXPiuBhNbdybtg5ZYD19/ea/z2fVYeIVmOqVf1I t/qB+nz4s00paJcwcm02sryy9xunw9tp1g2YZ5B/4Wqv3s9SjvKLUMrpWP1E9nq4oJoS ycq6yV2nrJZcdDo/P4tczzi5W3R14gzY7f5UuR57ph5flA4oEfz+0ZVUrVQ6Z0qD+cJD h4YA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=lYadnspx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id a23-20020a631a57000000b00563dde13953si5032553pgm.739.2023.08.20.04.38.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Aug 2023 04:38:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=lYadnspx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 19DB5247125; Sat, 19 Aug 2023 11:36:20 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345618AbjHPSkm (ORCPT + 99 others); Wed, 16 Aug 2023 14:40:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41000 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345656AbjHPSkf (ORCPT ); Wed, 16 Aug 2023 14:40:35 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB2A31B2 for ; Wed, 16 Aug 2023 11:40:34 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 795C16238B for ; Wed, 16 Aug 2023 18:40:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A0D03C433C7; Wed, 16 Aug 2023 18:40:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692211233; bh=QxvQN53CzFgOBeqWZdUvI6VyFWSQsjCkpHyDHIq9UwA=; h=From:Date:Subject:To:Cc:From; b=lYadnspxDVRYe7N0hysyQhckggUajPtDyS4kXqm3c3oZPGqSL39EUsxRUeEHgln/8 QhzV+KdPLpwQrq/Lb2lXp7xPU8cBizT4fJSOK6XRaq3sru/g+s5hEZs8eDlHvFSue7 6lAtypElIDCunLFlKQCQSlQ18zpE52PvLJPS+vXdxarH5Vr/VVrskpBpq90E7L8bje +9E3QFNvq9j2sE04DPxoCnxB4kBcxNlU2G8/aK3IdBj3ZB5cdksIRV2iYMuZhsKgyI adbZrcZYayLtMBQyQqfnVbxqyy7Ph56kw4Fq8RA8zWrYqpIhpzXVh9E8yCP0FhN1LT FI29ILZOLJpPg== From: Mark Brown Date: Wed, 16 Aug 2023 19:40:07 +0100 Subject: [PATCH v2] arm64/ptrace: Ensure that the task sees ZT writes on first use MIME-Version: 1.0 Message-Id: <20230816-arm64-zt-ptrace-first-use-v2-1-00aa82847e28@kernel.org> X-B4-Tracking: v=1; b=H4sIAAYY3WQC/42NQQ6CMBBFr0Jm7Zh2BIKuuIdhgXUKExXItBKVc HcrJ3D5XvLfXyCwCgc4ZQsozxJkHBLQLgPXt0PHKNfEQIYOprI5tvooc/xEnKK2jtGLhojPwMh lcSwuZEvyDtJ+Uvby2trnJnEvIY763q5m+7P/VGeLFr2ruDJENje+vrEOfN+P2kGzrusXX8oFs 8MAAAA= To: Catalin Marinas , Will Deacon Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, David Spickett , Mark Brown X-Mailer: b4 0.13-dev-034f2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1937; i=broonie@kernel.org; h=from:subject:message-id; bh=QxvQN53CzFgOBeqWZdUvI6VyFWSQsjCkpHyDHIq9UwA=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBk3RgfaK/KBaIRvP4k5Pb2gkrSBV+bA+Ah7Fow0EES ESO1BveJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCZN0YHwAKCRAk1otyXVSH0KUoB/ 9xW6gxAJnln9XdwuTggxEtZRV6Ql33wTyGIoIU2yfego1rWChUyX/fa6xKbVBnisCvBdbQmkD33bS7 oajnsavN6q2GahonyAzjUj5JPk6O7uMiFdCGm/pS9/HILFB8eNUafS5R0FZ1HsLGea3cMkcBiJVBsg sLotxT9FLhpgi4sRBmeg77V9Z59+Y0kC9y1peiwNgxBdT+Dpwqx9Gkw6zvf6KFxTtyo9GG6RoIDiQS A1ReQtYOVhmM9AsAoqofjm9fYMjln5pNQN2T+prqWnbgdQFZgD2gU60PcHbx/uXGnv3QTxnzbooMzG OkzkjDYuBdIGNlFIDny+pMc/oA9MRT X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774246326787107426 X-GMAIL-MSGID: 1774747899065249677 When the value of ZT is set via ptrace we don't disable traps for SME. This means that when a the task has never used SME before then the value set via ptrace will never be seen by the target task since it will trigger a SME access trap which will flush the register state. Disable SME traps when setting ZT, this means we also need to allocate storage for SVE if it is not already allocated, for the benefit of streaming SVE. Fixes: f90b529bcbe5 ("arm64/sme: Implement ZT0 ptrace support") Signed-off-by: Mark Brown --- Changes in v2: - Only set TIF_SME if we copied in data successfully to match ZA. - Link to v1: https://lore.kernel.org/r/20230814-arm64-zt-ptrace-first-use-v1-1-fc8e8022140f@kernel.org --- arch/arm64/kernel/ptrace.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) --- base-commit: 2ccdd1b13c591d306f0401d98dedc4bdcd02b421 change-id: 20230814-arm64-zt-ptrace-first-use-e6595b2162fc Best regards, diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c index 5b9b4305248b..8206127d6e19 100644 --- a/arch/arm64/kernel/ptrace.c +++ b/arch/arm64/kernel/ptrace.c @@ -1170,6 +1170,11 @@ static int zt_set(struct task_struct *target, if (!system_supports_sme2()) return -EINVAL; + /* Ensure SVE storage in case this is first use of SME */ + sve_alloc(target, false); + if (!target->thread.sve_state) + return -ENOMEM; + if (!thread_za_enabled(&target->thread)) { sme_alloc(target); if (!target->thread.sme_state) @@ -1179,8 +1184,10 @@ static int zt_set(struct task_struct *target, ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, thread_zt_state(&target->thread), 0, ZT_SIG_REG_BYTES); - if (ret == 0) + if (ret == 0) { target->thread.svcr |= SVCR_ZA_MASK; + set_tsk_thread_flag(target, TIF_SME); + } fpsimd_flush_task_state(target);