From patchwork Sat Mar 25 12:28:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1761113 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=EaefCviK; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PkJLP4Yjdz1yY7 for ; Sat, 25 Mar 2023 23:29:48 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PkJLL1Qk1z2xkm for ; Sat, 25 Mar 2023 23:29:46 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=EaefCviK; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::431; helo=mail-pf1-x431.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=EaefCviK; dkim-atps=neutral Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com [IPv6:2607:f8b0:4864:20::431]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PkJKs65Ytz3cfj for ; Sat, 25 Mar 2023 23:29:21 +1100 (AEDT) Received: by mail-pf1-x431.google.com with SMTP id c4so2887029pfl.0 for ; Sat, 25 Mar 2023 05:29:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679747359; 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=dOAE0LfC8v9Fabm4DbALlqVBZ7oNXCb+n8WmskpuF0I=; b=EaefCviKs7Qh/iwp59UyZREHI/vKEHpRyaq2iox/9MeuY96gkS6kdt6iGiToNPQzaQ l7Pk1da+YU7RoCpBkbD3gsxTUdi82ql+PoZ+IdWMz/gBEEfbXY04HVj6jgmVD/EP6UHr e3CPlyBMj9XkG0rECXMvpY1jlBAEZNU4V0JfhslLw3EBy76ltMkSws7LDbOOf2GoGxMC 8DON9HpTm5SQ6cG6v3bIjhJbeF1dh7nYVzEsE1gnuSm4bzphuqYt4lOi5yhJitNWTEc3 mhDdCQ39Fff8yBEGV89O9RVds2RIu3fKh/43OL2pIpTX4mjXOje97OZLcYX77najcSfw tj0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679747359; 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=dOAE0LfC8v9Fabm4DbALlqVBZ7oNXCb+n8WmskpuF0I=; b=Osf+eZmf8kU6ZaxCWRsfHqpxbxOVk0vPbtvG/cN0tovsqyU4Qw8SVhBjoRzsKlc4JU BIAFgwxx5wY5xzIa9J4CrEpJ2tiNZ1pHhEM5TqcgzhJprH9pBNz5D/f7ihrh/IteKHmR RPvDgx/S6r8ESYFzdt7X7Jv+I1P66jCyOY83q8bZ5wD42j4mEY6kSPZrWPfGyfytKeT3 UGV5LzRj060rJxsFiPemVTaIUtrQRxDwRpKvXbVe7fob7mwhcIvPBzTUxFYxV0Wyk0oQ Fi5GrhCnAMPGpVNlz7P2f7B1aakubXS91uImumbh/CvDRT8n5wySxfirBNPYOTM2mmwk VFfA== X-Gm-Message-State: AAQBX9fMrPe/tjRjrLJbXD24Fwz6Wv8K3LqeVEpZ+pfJs/Jx/Io2MX0H ZuGJ7MBc/H+XjF0xO0qbAM6GvvZtgag= X-Google-Smtp-Source: AKy350YW3C+w8XiYTw4CDeTWCPqwFdZn8sgy1R9VFAIr3LR0JUdjuyqG3ImxvH+uH798QWBHPCa3UQ== X-Received: by 2002:aa7:958f:0:b0:625:fe95:f120 with SMTP id z15-20020aa7958f000000b00625fe95f120mr6426073pfj.8.1679747359062; Sat, 25 Mar 2023 05:29:19 -0700 (PDT) Received: from bobo.ozlabs.ibm.com ([124.170.18.191]) by smtp.gmail.com with ESMTPSA id a13-20020a63d20d000000b0050376cedb3asm14923643pgg.24.2023.03.25.05.29.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 05:29:18 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 1/8] powerpc: copy_thread remove unused pkey code Date: Sat, 25 Mar 2023 22:28:57 +1000 Message-Id: <20230325122904.2375060-2-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230325122904.2375060-1-npiggin@gmail.com> References: <20230325122904.2375060-1-npiggin@gmail.com> MIME-Version: 1.0 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" The pkey registers (AMR, IAMR) do not get loaded from the switch frame so it is pointless to save anything there. Remove the dead code. Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/process.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 4b29ac5ddac6..9b4431651ed5 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1813,6 +1813,7 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) sp -= STACK_SWITCH_FRAME_SIZE; ((unsigned long *)sp)[0] = sp + STACK_SWITCH_FRAME_SIZE; kregs = (struct pt_regs *)(sp + STACK_SWITCH_FRAME_REGS); + kregs->nip = ppc_function_entry(f); p->thread.ksp = sp; #ifdef CONFIG_HAVE_HW_BREAKPOINT @@ -1845,17 +1846,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) p->thread.tidr = 0; #endif - /* - * Run with the current AMR value of the kernel - */ -#ifdef CONFIG_PPC_PKEY - if (mmu_has_feature(MMU_FTR_BOOK3S_KUAP)) - kregs->amr = AMR_KUAP_BLOCKED; - - if (mmu_has_feature(MMU_FTR_BOOK3S_KUEP)) - kregs->iamr = AMR_KUEP_BLOCKED; -#endif - kregs->nip = ppc_function_entry(f); return 0; } From patchwork Sat Mar 25 12:28:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1761116 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=112.213.38.117; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=LX/J/7Aj; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PkJNL6rZSz1yYN for ; Sat, 25 Mar 2023 23:31:30 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PkJNL3lhvz3fX1 for ; Sat, 25 Mar 2023 23:31:30 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=LX/J/7Aj; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::632; helo=mail-pl1-x632.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=LX/J/7Aj; dkim-atps=neutral Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PkJKw1RlQz3cdr for ; Sat, 25 Mar 2023 23:29:24 +1100 (AEDT) Received: by mail-pl1-x632.google.com with SMTP id kq3so4151121plb.13 for ; Sat, 25 Mar 2023 05:29:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679747361; 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=cXo1dPspstfP5ZAYPyDqZZjqWAGBLPym1egNZgkn+94=; b=LX/J/7AjMtiLNMUdcrQulKCFA0WpOrvc6U8UOvIvGGY2qPdvutB3TxebIUKmO3kB11 mtBgYOzALS6wi9UvJEwHk/CiCAsiTpyExTYvEF13PwZXipBWLO+0M4iawzj4shvT4Mb6 icEt+HeWLa415KPquSFl84cHxCoZa2Cv20/w2I9i8B/GZwOtDQBFIg2OayFOPuWbtQLP CNcC5TbFG4lo7a6CVtHodkSH3iG2RynSPVl5ZsUDQ+e4kN0BJk2zEfdYDMuCPYf53Hfu 1sL6X5JydLwOCTFO6GLs5gqtnW7zbQSnNdzGcaL7TZaezfNqw1KxWLZDzzoDZFTZKBJs y6pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679747361; 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=cXo1dPspstfP5ZAYPyDqZZjqWAGBLPym1egNZgkn+94=; b=sovahZ98yuGRPKUYX/8shymaGY5P1kXKqBvErvIq8ufpK+0BtmijYztJCoK8lQN1zf /77axwEjIbJr8v0uWVh4ePeZaSqm8JV4ReP6XUx0zgXEik3pQ6bQ4FFezIg9JUobFrCv 5++Fr2MH9gNQtVa7ed+EKLR9xVu/2vo/tOnghyCig3Koy1HcmhPsEqzKqTUTSdpyRcZ2 95xdAOa2tct9Xs8GuCBXNPPlPCAn5V9BrNJTbjQwg3OMJdC/e5JYHidy9TOVLliaiMzt UEp3g3DS0ZPLI46Vbcv8bIgk2c2F0UYavEydJDoY4C8JJ03HrBoaje7R4bCK/wyaHO3W ZcEg== X-Gm-Message-State: AAQBX9csghOm6kpk79cuFGZHMK9jLrGSBxrU8a3QVoNuKzPcmkADCQ8A jIIPAentFpdvGhz2mfpAAUUnnH7DM9A= X-Google-Smtp-Source: AKy350bgeBBMZNchXvd12aFlBMYENTdDDpUU/8pVeLY2jDVMzph4MUedPwA3+MKfZ6dJATyniDG81Q== X-Received: by 2002:a17:90b:2241:b0:23d:3698:8ed3 with SMTP id hk1-20020a17090b224100b0023d36988ed3mr6335774pjb.22.1679747361234; Sat, 25 Mar 2023 05:29:21 -0700 (PDT) Received: from bobo.ozlabs.ibm.com ([124.170.18.191]) by smtp.gmail.com with ESMTPSA id a13-20020a63d20d000000b0050376cedb3asm14923643pgg.24.2023.03.25.05.29.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 05:29:20 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 2/8] powerpc: copy_thread make ret_from_fork register setup consistent Date: Sat, 25 Mar 2023 22:28:58 +1000 Message-Id: <20230325122904.2375060-3-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230325122904.2375060-1-npiggin@gmail.com> References: <20230325122904.2375060-1-npiggin@gmail.com> MIME-Version: 1.0 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" The ret_from_fork code for 64e and 32-bit set r3 for syscall_exit_prepare the same way that 64s does, so there should be no need to special-case them in copy_thread. Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/entry_32.S | 2 +- arch/powerpc/kernel/process.c | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 5604c9a1ac22..755408c63be8 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S @@ -183,7 +183,7 @@ syscall_exit_finish: ret_from_fork: REST_NVGPRS(r1) bl schedule_tail - li r3,0 + li r3,0 /* fork() return value */ b ret_from_syscall .globl ret_from_kernel_thread diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 9b4431651ed5..46e2c3f3a2e9 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1784,9 +1784,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) childregs->gpr[1] = usp; ((unsigned long *)sp)[0] = childregs->gpr[1]; p->thread.regs = childregs; - /* 64s sets this in ret_from_fork */ - if (!IS_ENABLED(CONFIG_PPC_BOOK3S_64)) - childregs->gpr[3] = 0; /* Result from fork() */ if (clone_flags & CLONE_SETTLS) { if (!is_32bit_task()) childregs->gpr[13] = tls; From patchwork Sat Mar 25 12:28:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1761117 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=aoYcE4ti; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PkJPM0rT0z1yXq for ; Sat, 25 Mar 2023 23:32:23 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PkJPL6hTwz3f5G for ; Sat, 25 Mar 2023 23:32:22 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=aoYcE4ti; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::1030; helo=mail-pj1-x1030.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=aoYcE4ti; dkim-atps=neutral Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com [IPv6:2607:f8b0:4864:20::1030]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PkJKy1clVz3cdr for ; Sat, 25 Mar 2023 23:29:26 +1100 (AEDT) Received: by mail-pj1-x1030.google.com with SMTP id o6-20020a17090a9f8600b0023f32869993so7478392pjp.1 for ; Sat, 25 Mar 2023 05:29:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679747363; 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=WZGIjktS5oEZc17NluB8C45p3bjbS565MX+Fvz0y5OY=; b=aoYcE4timUO6xXYZD231YpYwWVZoUNwLLZO+e3ckNts/crarGQjLTwOqnvEyCCn9Ca mZb4ZQ8xpQOBAdCe6I+onE9HVhPk8qAX0fWnxyqN0Ol8t0kCSCa3/OCpJr2EIDDg/8+B O0LE3DMaFqqfiLKhHR9iq35p3PCiW7yL6chEzDTwWyv6X9Yzc56aeeQhCeXSeoAYydF2 L4A54xuHdTzzdeIaYgGeWg+9+/ji0BjPAi10n/g9mcfVwHj9JXGti/EF2fgGpo8DU8cZ X+e/p1BA3PkWuKlbGsV+jKbdoAAwXE7UEYJbLnQvG8OlTAgG442C1mkpBKnPAJHu4Vmq JE9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679747363; 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=WZGIjktS5oEZc17NluB8C45p3bjbS565MX+Fvz0y5OY=; b=ZgzZ7s9XffDsFmtFUCTSQsK+K2CFZoQ36jocOlC+5tSPWUBy7pgffVc8THxPHty5YW t041DgB26a1Z8wcMUB6PVNW2x3JzSOMaHGceuePfH09fWXLJhrGsd9t3OxwiFMnTchbu JLTNkKkvDW+s8mSWCYKdcu57CN9wZrKjUNZ+/cuqCLiqGYKCFbW4GRtE0u88kUPvyqTJ KxvTx9WXnG1BotyRmd/FUk8m6iSgLDyFneaDSAsP0zkBROmh+e4LXQjOjMNCu8SNf5q4 IWRynvM5+KhaNaWRS76GhG2yNPT2kWTcmro782J2auFUkTZakfIPEL3FbTsTuRikDSyw XArQ== X-Gm-Message-State: AAQBX9eBpYJNNs4dsozGrSUxPyyd9aK0bhlnU3b5G3qK/n37EbKpXrPl iRszwVcSZ/Tco/ll5qlmPLh3XpeDOw8= X-Google-Smtp-Source: AKy350ZDHBCQypp1kzowhH0GOHtpNe7BuSsQL2rqZhRshguYLTLwS7v5nBgznxlLgY10xut62JgnQA== X-Received: by 2002:a17:90b:38d2:b0:23f:3b89:7f16 with SMTP id nn18-20020a17090b38d200b0023f3b897f16mr6395466pjb.0.1679747363516; Sat, 25 Mar 2023 05:29:23 -0700 (PDT) Received: from bobo.ozlabs.ibm.com ([124.170.18.191]) by smtp.gmail.com with ESMTPSA id a13-20020a63d20d000000b0050376cedb3asm14923643pgg.24.2023.03.25.05.29.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 05:29:23 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 3/8] powerpc: use switch frame for ret_from_kernel_thread parameters Date: Sat, 25 Mar 2023 22:28:59 +1000 Message-Id: <20230325122904.2375060-4-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230325122904.2375060-1-npiggin@gmail.com> References: <20230325122904.2375060-1-npiggin@gmail.com> MIME-Version: 1.0 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" The kernel thread path in copy_thread creates a user interrupt frame on stack and stores the function and arg parameters there, and ret_from_kernel_thread loads them. This is a slightly confusing way to overload that frame. Non-volatile registers are loaded from the switch frame, so the parameters can be stored there. The user interrupt frame is now only used by user threads when they return to user. Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/entry_32.S | 1 - arch/powerpc/kernel/interrupt_64.S | 1 - arch/powerpc/kernel/process.c | 13 +++++++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 755408c63be8..c3fdb3081d3d 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S @@ -188,7 +188,6 @@ ret_from_fork: .globl ret_from_kernel_thread ret_from_kernel_thread: - REST_NVGPRS(r1) bl schedule_tail mtctr r14 mr r3,r15 diff --git a/arch/powerpc/kernel/interrupt_64.S b/arch/powerpc/kernel/interrupt_64.S index fccc34489add..d60e7e7564df 100644 --- a/arch/powerpc/kernel/interrupt_64.S +++ b/arch/powerpc/kernel/interrupt_64.S @@ -741,7 +741,6 @@ _GLOBAL(ret_from_fork) _GLOBAL(ret_from_kernel_thread) bl schedule_tail - REST_NVGPRS(r1) mtctr r14 mr r3,r15 #ifdef CONFIG_PPC64_ELF_ABI_V2 diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 46e2c3f3a2e9..c537bebb5dd2 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1765,14 +1765,10 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) ((unsigned long *)sp)[0] = 0; memset(childregs, 0, sizeof(struct pt_regs)); childregs->gpr[1] = sp + STACK_USER_INT_FRAME_SIZE; - /* function */ - if (args->fn) - childregs->gpr[14] = ppc_function_entry((void *)args->fn); #ifdef CONFIG_PPC64 clear_tsk_thread_flag(p, TIF_32BIT); childregs->softe = IRQS_ENABLED; #endif - childregs->gpr[15] = (unsigned long)args->fn_arg; p->thread.regs = NULL; /* no user register state */ ti->flags |= _TIF_RESTOREALL; f = ret_from_kernel_thread; @@ -1811,6 +1807,15 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) ((unsigned long *)sp)[0] = sp + STACK_SWITCH_FRAME_SIZE; kregs = (struct pt_regs *)(sp + STACK_SWITCH_FRAME_REGS); kregs->nip = ppc_function_entry(f); + if (unlikely(args->fn)) { + /* + * Put kthread fn, arg parameters in non-volatile GPRs in the + * switch frame so they are loaded by _switch before it returns + * to ret_from_kernel_thread. + */ + kregs->gpr[14] = ppc_function_entry((void *)args->fn); + kregs->gpr[15] = (unsigned long)args->fn_arg; + } p->thread.ksp = sp; #ifdef CONFIG_HAVE_HW_BREAKPOINT From patchwork Sat Mar 25 12:29:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1761118 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=SfoYHG20; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PkJQN00ysz1yXq for ; Sat, 25 Mar 2023 23:33:15 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PkJQM472yz3fV6 for ; Sat, 25 Mar 2023 23:33:15 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=SfoYHG20; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::102e; helo=mail-pj1-x102e.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=SfoYHG20; dkim-atps=neutral Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PkJL026XGz3cdr for ; Sat, 25 Mar 2023 23:29:28 +1100 (AEDT) Received: by mail-pj1-x102e.google.com with SMTP id q102so3663978pjq.3 for ; Sat, 25 Mar 2023 05:29:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679747366; 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=NRvp7QfXAr/JrBcDP8ItRy/9hpkMUm429uD7EjGj5Qo=; b=SfoYHG20btHyWhL8Gg5wNLxPBpBeK/qTTjuE+qi9Y/ZU+jjqJRSfG+PKn02ngFGv4A WAveWOEnx61UwG5TldTVOgdssPQS8gUxe4ourUSZaO/s95/cmF+QL/29wYATnQC0JUMj FsJQCVkkcAAa5sMIqg01KN0vt5eKihYsOa27wTKCGJntb6OKqSeGitK1piAzpKNqhx5E DAkuPSFBcL8LCmo4pTccaa7RUTloRzrSS5ZTiJMB9U+ZqbMc2tjWOf1u11YA3YUmX/iW ph6UxyS61lXzGmF38T7BlreTZNtm0Yq3ewxPTTyyDgwpx1tAmulRc2NWfYrbFSRlo1k2 utwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679747366; 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=NRvp7QfXAr/JrBcDP8ItRy/9hpkMUm429uD7EjGj5Qo=; b=bTKwGueKUphUQQZYtA8I8SFPIWtchGA06oOZVioopKughR7V7srbsBmWQ+AHNZigS9 CVal7wfr1A7VhrbNOAIKqs4GJwoloEmdfqBFTqKHJmaqDZl/MY4w6XJcPALQ0Bvr2MgO yzXi+mdgyzYpQ5EunF86huCi1vbucNV2LB4L5CQdUnSwV/6ywQZPasQwOyItN/0Ikc82 1+7hjsd5A3+jV3uIDIi6fZkGU3vtmcDZGnfnEPLL92HfcB4dsrmJy250B0mzKo+IktSl Ph7AIw3gmCasCoZrDyue/q5jsKFDSZH5X5qEHR8whqQHS7/rTEwW5N/bN3moO1IBXodt FloQ== X-Gm-Message-State: AO0yUKVgS1Xc/Xi9CPuNHApSKoHSpAUW9faXhHgRe6I0XKe3em5WFQ0K ulWnV1qwvvKmL0SFjvDI+qCPLBs0wmg= X-Google-Smtp-Source: AK7set+sCLoE5QTzQNMeUm11T9fMMDpH3xJHf4n5Yqpxzd/QZ4l8+Ik9I8z8Jfgn4a8KAzpXN4KJ8A== X-Received: by 2002:a05:6a20:8b26:b0:d8:d061:96ec with SMTP id l38-20020a056a208b2600b000d8d06196ecmr6316763pzh.27.1679747365782; Sat, 25 Mar 2023 05:29:25 -0700 (PDT) Received: from bobo.ozlabs.ibm.com ([124.170.18.191]) by smtp.gmail.com with ESMTPSA id a13-20020a63d20d000000b0050376cedb3asm14923643pgg.24.2023.03.25.05.29.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 05:29:25 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 4/8] powerpc/64: ret_from_fork avoid restoring regs twice Date: Sat, 25 Mar 2023 22:29:00 +1000 Message-Id: <20230325122904.2375060-5-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230325122904.2375060-1-npiggin@gmail.com> References: <20230325122904.2375060-1-npiggin@gmail.com> MIME-Version: 1.0 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" If the system call return path always restores NVGPRs then there is no need for ret_from_fork to do it. The HANDLER_RESTORE_NVGPRS does the right thing for this. Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/interrupt_64.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kernel/interrupt_64.S b/arch/powerpc/kernel/interrupt_64.S index d60e7e7564df..bac1f89501ac 100644 --- a/arch/powerpc/kernel/interrupt_64.S +++ b/arch/powerpc/kernel/interrupt_64.S @@ -728,14 +728,14 @@ DEFINE_FIXED_SYMBOL(__end_soft_masked, text) #ifdef CONFIG_PPC_BOOK3S _GLOBAL(ret_from_fork_scv) bl schedule_tail - REST_NVGPRS(r1) + HANDLER_RESTORE_NVGPRS() li r3,0 /* fork() return value */ b .Lsyscall_vectored_common_exit #endif _GLOBAL(ret_from_fork) bl schedule_tail - REST_NVGPRS(r1) + HANDLER_RESTORE_NVGPRS() li r3,0 /* fork() return value */ b .Lsyscall_exit From patchwork Sat Mar 25 12:29:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1761120 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=E8fvuzyZ; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PkJRX08P8z1yXq for ; Sat, 25 Mar 2023 23:34:16 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PkJRW6LTJz3fRS for ; Sat, 25 Mar 2023 23:34:15 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=E8fvuzyZ; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::62f; helo=mail-pl1-x62f.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=E8fvuzyZ; dkim-atps=neutral Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PkJL25PXNz3chX for ; Sat, 25 Mar 2023 23:29:30 +1100 (AEDT) Received: by mail-pl1-x62f.google.com with SMTP id o2so4189212plg.4 for ; Sat, 25 Mar 2023 05:29:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679747368; 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=Y2A9do+TSYK9KAEttZVaT+GeggOEBYv8Hp/gahNDOw0=; b=E8fvuzyZhHLXSoJacm+adZ/pH99DQVqr5XJQBgjOYgzul4KUo4we57tIosxO6LGtRB Lv1HFPSoQ7Otzruuxr1c9W9Nlw9KwxD3/+0KLjVKk7931xIqgKNXzYjL6+1eUUR5IMLJ 6goauAaJsiYIujEcz6wimDNoJ+uPje8cl+lJQsLQeexSrEIexEV3vOSP6Sqc1RNAKrFC jgiTncRgn2iWLYVGv5ldf+sZaDGSsNrVeaM0mbgYcxBnEXzn4tygYgzACZIgmuFEWWia lHZ5CVyglOrymdTJC+cW2noEN0F866nJ5znzDNU4rY8gELnG/wGFV+gxLql6jgO+aiKZ 8uow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679747368; 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=Y2A9do+TSYK9KAEttZVaT+GeggOEBYv8Hp/gahNDOw0=; b=6R4pRp/1ikktZnsGrf7NBYSrZxtwD6ad8052jVRXNZbx5+kMfraXuOy8CpvUEjLyo2 aguxp8W3jjMhxP6nU8N7kYUcRBKNQjlz5s3nguXricE4KnM0EO2soS1HBjQ4aKt6eUew 0j3FSPse6Hc/5pohuWcMvx7Kp02mpqVsAylx3oIbulncVUBCQH4MWm7xWbmf403RTHwm 5dY1Tw87DfX90qpxTY6/MvELFJ22gJ3oIZAQsVJXZV5PSJgFlYfQIo93QtMDtkwIXELY cNSros1sLGg3V0C5qaB1MsyVBBME2wnk3MzpUvlXLw9FoZXQyOj97t5QQfJOAltb9QFu qHtw== X-Gm-Message-State: AAQBX9cxrbKvwLMMaLadJ3RGCIFPwkyHBJlhNF8DW0EoPeCRtCUP6was 6t+PMN9LlAAT/cf1Go1QLd9sZNyUX0g= X-Google-Smtp-Source: AKy350aXravIVA1fvnI+LAFAWeKwtIz2DdQFFY6MeRVCksG83QfD+yJqWdusja/7CXejR41zrHYFqw== X-Received: by 2002:a17:90b:38cf:b0:233:feb4:895f with SMTP id nn15-20020a17090b38cf00b00233feb4895fmr6231969pjb.44.1679747367977; Sat, 25 Mar 2023 05:29:27 -0700 (PDT) Received: from bobo.ozlabs.ibm.com ([124.170.18.191]) by smtp.gmail.com with ESMTPSA id a13-20020a63d20d000000b0050376cedb3asm14923643pgg.24.2023.03.25.05.29.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 05:29:27 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 5/8] powerpc: copy_thread differentiate kthreads and user mode threads Date: Sat, 25 Mar 2023 22:29:01 +1000 Message-Id: <20230325122904.2375060-6-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230325122904.2375060-1-npiggin@gmail.com> References: <20230325122904.2375060-1-npiggin@gmail.com> MIME-Version: 1.0 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" When copy_thread is given a kernel function to run in arg->fn, this does not necessarily mean it is a kernel thread. User threads can be created this way (e.g., kernel_init, see also x86's copy_thread()). These threads run a kernel function which may call kernel_execve() and return, which returns like a userspace exec(2) syscall. Kernel threads are to be differentiated with PF_KTHREAD, will always have arg->fn set, and should never return from that function, instead calling kthread_exit() to exit. Create separate paths for the kthread and user kernel thread creation logic. The kthread path will never exit and does not require a user interrupt frame, so it gets a minimal stack frame. Signed-off-by: Nicholas Piggin --- arch/powerpc/include/asm/thread_info.h | 2 + arch/powerpc/kernel/process.c | 98 ++++++++++++++++---------- 2 files changed, 64 insertions(+), 36 deletions(-) diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h index af58f1ed3952..6c9e70402922 100644 --- a/arch/powerpc/include/asm/thread_info.h +++ b/arch/powerpc/include/asm/thread_info.h @@ -175,9 +175,11 @@ static inline bool test_thread_local_flags(unsigned int flags) #ifdef CONFIG_COMPAT #define is_32bit_task() (test_thread_flag(TIF_32BIT)) #define is_tsk_32bit_task(tsk) (test_tsk_thread_flag(tsk, TIF_32BIT)) +#define clear_tsk_compat_task(tsk) (clear_tsk_thread_flag(p, TIF_32BIT)) #else #define is_32bit_task() (IS_ENABLED(CONFIG_PPC32)) #define is_tsk_32bit_task(tsk) (IS_ENABLED(CONFIG_PPC32)) +#define clear_tsk_compat_task(tsk) do { } while (0) #endif #if defined(CONFIG_PPC64) diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index c537bebb5dd2..7b016f958e8b 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1738,10 +1738,7 @@ static void setup_ksp_vsid(struct task_struct *p, unsigned long sp) */ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) { - unsigned long clone_flags = args->flags; - unsigned long usp = args->stack; - unsigned long tls = args->tls; - struct pt_regs *childregs, *kregs; + struct pt_regs *kregs; /* Switch frame regs */ extern void ret_from_fork(void); extern void ret_from_fork_scv(void); extern void ret_from_kernel_thread(void); @@ -1754,45 +1751,76 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) klp_init_thread_info(p); - /* Create initial stack frame. */ - sp -= STACK_USER_INT_FRAME_SIZE; - *(unsigned long *)(sp + STACK_INT_FRAME_MARKER) = STACK_FRAME_REGS_MARKER; - - /* Copy registers */ - childregs = (struct pt_regs *)(sp + STACK_INT_FRAME_REGS); - if (unlikely(args->fn)) { + if (unlikely(p->flags & PF_KTHREAD)) { /* kernel thread */ + + /* Create initial minimum stack frame. */ + sp -= STACK_FRAME_MIN_SIZE; ((unsigned long *)sp)[0] = 0; - memset(childregs, 0, sizeof(struct pt_regs)); - childregs->gpr[1] = sp + STACK_USER_INT_FRAME_SIZE; -#ifdef CONFIG_PPC64 - clear_tsk_thread_flag(p, TIF_32BIT); - childregs->softe = IRQS_ENABLED; -#endif - p->thread.regs = NULL; /* no user register state */ - ti->flags |= _TIF_RESTOREALL; + f = ret_from_kernel_thread; + p->thread.regs = NULL; /* no user register state */ + clear_tsk_compat_task(p); } else { /* user thread */ - struct pt_regs *regs = current_pt_regs(); - *childregs = *regs; - if (usp) - childregs->gpr[1] = usp; - ((unsigned long *)sp)[0] = childregs->gpr[1]; - p->thread.regs = childregs; - if (clone_flags & CLONE_SETTLS) { - if (!is_32bit_task()) - childregs->gpr[13] = tls; + struct pt_regs *childregs; + + /* Create initial user return stack frame. */ + sp -= STACK_USER_INT_FRAME_SIZE; + *(unsigned long *)(sp + STACK_INT_FRAME_MARKER) = STACK_FRAME_REGS_MARKER; + + childregs = (struct pt_regs *)(sp + STACK_INT_FRAME_REGS); + + if (unlikely(args->fn)) { + /* + * A user space thread, but it first runs a kernel + * thread, and then returns as though it had called + * execve rather than fork, so user regs will be + * filled in (e.g., by kernel_execve()). + */ + ((unsigned long *)sp)[0] = 0; + memset(childregs, 0, sizeof(struct pt_regs)); +#ifdef CONFIG_PPC64 + childregs->softe = IRQS_ENABLED; +#endif + ti->flags |= _TIF_RESTOREALL; + f = ret_from_kernel_thread; + } else { + struct pt_regs *regs = current_pt_regs(); + unsigned long clone_flags = args->flags; + unsigned long usp = args->stack; + + /* Copy registers */ + *childregs = *regs; + if (usp) + childregs->gpr[1] = usp; + ((unsigned long *)sp)[0] = childregs->gpr[1]; +#ifdef CONFIG_PPC_IRQ_SOFT_MASK_DEBUG + WARN_ON_ONCE(childregs->softe != IRQS_ENABLED); +#endif + if (clone_flags & CLONE_SETTLS) { + unsigned long tls = args->tls; + + if (!is_32bit_task()) + childregs->gpr[13] = tls; + else + childregs->gpr[2] = tls; + } + + if (trap_is_scv(regs)) + f = ret_from_fork_scv; else - childregs->gpr[2] = tls; + f = ret_from_fork; } - if (trap_is_scv(regs)) - f = ret_from_fork_scv; - else - f = ret_from_fork; +#ifdef CONFIG_PPC64 + if (cpu_has_feature(CPU_FTR_HAS_PPR)) + childregs->ppr = DEFAULT_PPR; +#endif + + childregs->msr &= ~(MSR_FP|MSR_VEC|MSR_VSX); + p->thread.regs = childregs; } - childregs->msr &= ~(MSR_FP|MSR_VEC|MSR_VSX); /* * The way this works is that at some point in the future @@ -1843,8 +1871,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) p->thread.dscr_inherit = current->thread.dscr_inherit; p->thread.dscr = mfspr(SPRN_DSCR); } - if (cpu_has_feature(CPU_FTR_HAS_PPR)) - childregs->ppr = DEFAULT_PPR; p->thread.tidr = 0; #endif From patchwork Sat Mar 25 12:29:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1761122 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=112.213.38.117; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=R5Jc62zu; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PkJSY0xfpz1yY7 for ; Sat, 25 Mar 2023 23:35:09 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PkJSX5Pkrz3fXZ for ; Sat, 25 Mar 2023 23:35:08 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=R5Jc62zu; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::1034; helo=mail-pj1-x1034.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=R5Jc62zu; dkim-atps=neutral Received: from mail-pj1-x1034.google.com (mail-pj1-x1034.google.com [IPv6:2607:f8b0:4864:20::1034]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PkJL51Db3z3fS1 for ; Sat, 25 Mar 2023 23:29:32 +1100 (AEDT) Received: by mail-pj1-x1034.google.com with SMTP id qe8-20020a17090b4f8800b0023f07253a2cso4043220pjb.3 for ; Sat, 25 Mar 2023 05:29:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679747370; 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=vB2OFPDjoM6aB2FqnFtvEQ73ZNAfekYDKZqddNso9qU=; b=R5Jc62zudyp3aHQoUJegsrIL7fSTV0Ewz2ouuWjOqPJThl/k1uvQr/sxEZwm5/F2qp 6ErxQ2ImJTo5exdbSySP7AtQt+K+Mylnlh/5xi3jBJxbYEvoRxYURjpWbaUit5XPLxu1 vT78myJkdsZUvZbWPTwcrfKZK1QdOuwDLQRVWdQxal6mrf33zet+tvKB4GG54j/4vJpG mYnsIn1ipODrMECt/VRZU5HiOKlFZBAKQBStP9zOuFUiPBJnhAKkjudWQz/H4vAgV7Ey L2JChpG/OLR375LWTxEuGKqptvDK/0Qlg+ODzoU6w25+XGpuopC9znbPkjUUitRWkMNd mdow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679747370; 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=vB2OFPDjoM6aB2FqnFtvEQ73ZNAfekYDKZqddNso9qU=; b=dWW+gWiT991dbAW2n1k/9nl7ZUwbvf180jAFiILjYP26jJ0xwD+ubcCvuhuMzyEbh3 BOvjJxG9EtLmfMW9S+iGfN0RW6ov9Iws943epCieZeJNIaG3sHL6tEPzA4ywiXmh3EGh MczbsA0G3wN/9fbgDRHlQWCfJFIBXGzShlN8p9OXssxPP5A12NS9QDZou8slidNW5W4L KOFIO5WfKqDQAoeflTLeISNJrrJeMgZCeBGsp5qquFKF/9opzEozj7PXzZUItNb6ddnK NxyxG3nPhqzy+gBMlheBGFVEZ//vwDicexu85yY7bQr6qrjfLdIH5nVny18+oURu9RxY lDTA== X-Gm-Message-State: AO0yUKUkPLZCD+FVRC/64uDr5ZdVtxblOXsA3gmg+CWsPkcXEJfiP2hq peWq81Eknl4Xpo1S+XNscVM0aqyUkZ0= X-Google-Smtp-Source: AK7set+z6uTn2YYmtBDl96i/ttsUszSeWmDNIJyGIxgqKUfLMjDLg48ic4CDL6vJxf8O9DIgDgqssw== X-Received: by 2002:a05:6a20:9305:b0:d8:cfcc:555d with SMTP id r5-20020a056a20930500b000d8cfcc555dmr5328499pzh.17.1679747370219; Sat, 25 Mar 2023 05:29:30 -0700 (PDT) Received: from bobo.ozlabs.ibm.com ([124.170.18.191]) by smtp.gmail.com with ESMTPSA id a13-20020a63d20d000000b0050376cedb3asm14923643pgg.24.2023.03.25.05.29.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 05:29:29 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 6/8] powerpc: differentiate kthread from user kernel thread start Date: Sat, 25 Mar 2023 22:29:02 +1000 Message-Id: <20230325122904.2375060-7-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230325122904.2375060-1-npiggin@gmail.com> References: <20230325122904.2375060-1-npiggin@gmail.com> MIME-Version: 1.0 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Kernel created user threads start similarly to kernel threads in that they call a kernel function after first returning from _switch, so they share ret_from_kernel_thread for this. Kernel threads never return from that function though, whereas user threads often do (although some don't, e.g., IO threads). Split these startup functions in two, and catch kernel threads that improperly return from their function. This is intended to make the complicated code a little bit easier to understand. Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/entry_32.S | 20 ++++++++++++++++++-- arch/powerpc/kernel/interrupt_64.S | 18 +++++++++++++++++- arch/powerpc/kernel/process.c | 7 ++++--- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index c3fdb3081d3d..47f0dd9a45ad 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S @@ -186,8 +186,8 @@ ret_from_fork: li r3,0 /* fork() return value */ b ret_from_syscall - .globl ret_from_kernel_thread -ret_from_kernel_thread: + .globl ret_from_kernel_user_thread +ret_from_kernel_user_thread: bl schedule_tail mtctr r14 mr r3,r15 @@ -196,6 +196,22 @@ ret_from_kernel_thread: li r3,0 b ret_from_syscall + .globl start_kernel_thread +start_kernel_thread: + bl schedule_tail + mtctr r14 + mr r3,r15 + PPC440EP_ERR42 + bctrl + /* + * This must not return. We actually want to BUG here, not WARN, + * because BUG will exit the process which is what the kernel thread + * should have done, which may give some hope of continuing. + */ +100: trap + EMIT_BUG_ENTRY 100b,__FILE__,__LINE__,0 + + /* * This routine switches between two different tasks. The process * state of one is saved on its kernel stack. Then the state diff --git a/arch/powerpc/kernel/interrupt_64.S b/arch/powerpc/kernel/interrupt_64.S index bac1f89501ac..a44c8aab63ec 100644 --- a/arch/powerpc/kernel/interrupt_64.S +++ b/arch/powerpc/kernel/interrupt_64.S @@ -739,7 +739,7 @@ _GLOBAL(ret_from_fork) li r3,0 /* fork() return value */ b .Lsyscall_exit -_GLOBAL(ret_from_kernel_thread) +_GLOBAL(ret_from_kernel_user_thread) bl schedule_tail mtctr r14 mr r3,r15 @@ -749,3 +749,19 @@ _GLOBAL(ret_from_kernel_thread) bctrl li r3,0 b .Lsyscall_exit + +_GLOBAL(start_kernel_thread) + bl schedule_tail + mtctr r14 + mr r3,r15 +#ifdef CONFIG_PPC64_ELF_ABI_V2 + mr r12,r14 +#endif + bctrl + /* + * This must not return. We actually want to BUG here, not WARN, + * because BUG will exit the process which is what the kernel thread + * should have done, which may give some hope of continuing. + */ +100: trap + EMIT_BUG_ENTRY 100b,__FILE__,__LINE__,0 diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 7b016f958e8b..307639948691 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1741,7 +1741,8 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) struct pt_regs *kregs; /* Switch frame regs */ extern void ret_from_fork(void); extern void ret_from_fork_scv(void); - extern void ret_from_kernel_thread(void); + extern void ret_from_kernel_user_thread(void); + extern void start_kernel_thread(void); void (*f)(void); unsigned long sp = (unsigned long)task_stack_page(p) + THREAD_SIZE; struct thread_info *ti = task_thread_info(p); @@ -1758,7 +1759,7 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) sp -= STACK_FRAME_MIN_SIZE; ((unsigned long *)sp)[0] = 0; - f = ret_from_kernel_thread; + f = start_kernel_thread; p->thread.regs = NULL; /* no user register state */ clear_tsk_compat_task(p); } else { @@ -1784,7 +1785,7 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) childregs->softe = IRQS_ENABLED; #endif ti->flags |= _TIF_RESTOREALL; - f = ret_from_kernel_thread; + f = ret_from_kernel_user_thread; } else { struct pt_regs *regs = current_pt_regs(); unsigned long clone_flags = args->flags; From patchwork Sat Mar 25 12:29:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1761123 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=hDJNrBr1; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PkJTY2WVwz1yY7 for ; Sat, 25 Mar 2023 23:36:01 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PkJTX70QKz3fhM for ; Sat, 25 Mar 2023 23:36:00 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=hDJNrBr1; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::62c; helo=mail-pl1-x62c.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=hDJNrBr1; dkim-atps=neutral Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PkJL66wNYz3fSX for ; Sat, 25 Mar 2023 23:29:34 +1100 (AEDT) Received: by mail-pl1-x62c.google.com with SMTP id ix20so4192414plb.3 for ; Sat, 25 Mar 2023 05:29:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679747372; 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=upXccQ0m7RyNQSSayQoOkHrCXCXeyS8pm3WAGvKhfnM=; b=hDJNrBr1zvZWRNYwwc4KMWknOi6i3e/Y/n67pXSu1dJ0fexioffY/e65uvp7vCkf1P WDmZSIGN0cfVb2uEDDLuvrSOOx/kC2i3Qr14jNv/A2beTKWKkBUWr9fVOTKq6x6baLCq 8EXah7KD6wU52VDl4qqzTL9VXGEdMD/5VOvShnMIYd/ajtz6Y/CG+FjeeiZJuto8Z6EZ wWrK5AUU0SXS5SPfC2gOzuBQ9Hm42SS8N6+uu5cfly/eA5b6QxgD4AeOBkLGKLGKqf+x da5JhJthQOfZkGanbkZiNq0X8sB44HrO/dntVwtd9Z9uI3UYbQtKZ2SJ2gaR8w1sYoUO TlGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679747372; 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=upXccQ0m7RyNQSSayQoOkHrCXCXeyS8pm3WAGvKhfnM=; b=RvYYCCOEGVP+P7NJxfNs0MkuwNuP3sj10sP8AfKT5yssRF/Z5+2zTA14UpPfDs7QXL iAj3GCZXW/bxFrPE3XNXmpZBVEcE5tM12IhsXFC4o67/N8f1sIhrDxzvFnojaD01Y5QL qSf85ZZdz4b57nRLR/zofsvS578Adud1CZDbRiFaFKyHoQUOFMxrDrA9BgUd0SpGZg+m 4Be2p0idEtt5oD3EEu3Z7MJhlmnQrRfircqrY/pUg941rrl+6zeov3pfxthAvJjuaQJu 7htSU21ow9cekjGWQrMRpA3I5qOnpwZ/xFDsaKsWnnFNh+Wg1ZBrkqYnnZlU1Kl9MBCH unvw== X-Gm-Message-State: AAQBX9fN3kZm4A2JgpS1zNeE3uZb5Bc+u21wdyywSIkWxzTEFgCufmLJ bEdNYSemdDPZSu6iMSeal2DTf6EWUWE= X-Google-Smtp-Source: AKy350aVBb/kOpJtr24Pn/BbPwHFqAqhRZpzZAWYruosjGzLlyv2xib+WgC3bPJdV2t1rkIOHwyktw== X-Received: by 2002:a17:90b:3eca:b0:237:5a3c:e86c with SMTP id rm10-20020a17090b3eca00b002375a3ce86cmr6681865pjb.24.1679747372408; Sat, 25 Mar 2023 05:29:32 -0700 (PDT) Received: from bobo.ozlabs.ibm.com ([124.170.18.191]) by smtp.gmail.com with ESMTPSA id a13-20020a63d20d000000b0050376cedb3asm14923643pgg.24.2023.03.25.05.29.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 05:29:31 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 7/8] powerpc: copy_thread don't set _TIF_RESTOREALL Date: Sat, 25 Mar 2023 22:29:03 +1000 Message-Id: <20230325122904.2375060-8-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230325122904.2375060-1-npiggin@gmail.com> References: <20230325122904.2375060-1-npiggin@gmail.com> MIME-Version: 1.0 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" In the kernel user thread path, don't set _TIF_RESTOREALL because the thread is required to call kernel_execve() before it returns, which will set _TIF_RESTOREALL if necessary via start_thread(). Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/interrupt_64.S | 5 +++++ arch/powerpc/kernel/process.c | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kernel/interrupt_64.S b/arch/powerpc/kernel/interrupt_64.S index a44c8aab63ec..2a059214c1a9 100644 --- a/arch/powerpc/kernel/interrupt_64.S +++ b/arch/powerpc/kernel/interrupt_64.S @@ -748,6 +748,11 @@ _GLOBAL(ret_from_kernel_user_thread) #endif bctrl li r3,0 + /* + * It does not matter whether this returns via the scv or sc path + * because it returns as execve() and therefore has no calling ABI + * (i.e., it sets registers according to the exec()ed entry point). + */ b .Lsyscall_exit _GLOBAL(start_kernel_thread) diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 307639948691..4140b25f489f 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1745,7 +1745,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) extern void start_kernel_thread(void); void (*f)(void); unsigned long sp = (unsigned long)task_stack_page(p) + THREAD_SIZE; - struct thread_info *ti = task_thread_info(p); #ifdef CONFIG_HAVE_HW_BREAKPOINT int i; #endif @@ -1784,7 +1783,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) #ifdef CONFIG_PPC64 childregs->softe = IRQS_ENABLED; #endif - ti->flags |= _TIF_RESTOREALL; f = ret_from_kernel_user_thread; } else { struct pt_regs *regs = current_pt_regs(); From patchwork Sat Mar 25 12:29:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1761125 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=112.213.38.117; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=pQEmmwMN; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PkJVY6D43z1yY7 for ; Sat, 25 Mar 2023 23:36:53 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PkJVY54fbz3fWR for ; Sat, 25 Mar 2023 23:36:53 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=pQEmmwMN; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::102e; helo=mail-pj1-x102e.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=pQEmmwMN; dkim-atps=neutral Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PkJL84Vv4z3fRv for ; Sat, 25 Mar 2023 23:29:36 +1100 (AEDT) Received: by mail-pj1-x102e.google.com with SMTP id f6-20020a17090ac28600b0023b9bf9eb63so4042344pjt.5 for ; Sat, 25 Mar 2023 05:29:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679747374; 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=QOK4ybUKKCVHpKeHMuf8AKxoCnSk6jA5Jd/sQGaKtjM=; b=pQEmmwMNYwdElM+lwFHCZgellVkrIBOO0IX5WJTsSWdCayyFHibzld4IV7zzoBpf1p FaMorEo6Lp6N3Spd7j2eYesgunER+6/aHr2XrLiZ476QAok143/noOPRDVXZrfVeb/h7 cLRRpzGCmxRyc1GB0G0qYcilucThlSxSh28OL3XiHbqnvISGy/nc180TJwuy8i/hlfuU UQf10eT4RMweoBzmdgOMTOnaUoMO0A6k4wDPGA1iV1FoBfke1Zbbdk1PDkc/oxzCq5zf g4Ek4RUFx/f9blsZRQ2/KjvNi0viKnEDEsLhTM7TrXikMZigFIz7F24s66WA6UKjQlMo oWCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679747374; 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=QOK4ybUKKCVHpKeHMuf8AKxoCnSk6jA5Jd/sQGaKtjM=; b=y27cjwsKPu9+zY1/uWpjfHhMVMjFMtEyJYOFDO8vk64Vqaf6d0euhEL61Tq7YW19tc XrgZnGMwDp6Up8sKyN3uNLAHgFb3bSpPyPD8Hk8Yg/UUTl1ENuQxtR2++RsWZD9KzLZz E3glmMfO2iqsOe7BqzoqN7l2Jwucyi16FVBO1hz7+MXflxJTQKmSUS71GwsMuJjqK1Tm ZQ0uIGOBFZRKu0oUonO1pIZxHy+Ck1ph8QEdeAtg/m7028f+hJRF43s+iKqA0XeEa8Hc CTzbbyKYhSjJPYv0Fb6YgnOZqBGb8eN8SjeEbxEuyg2jIdvvmZ557UqkZAPwoXJni+sS HM8w== X-Gm-Message-State: AO0yUKWeCYoVYaMYtqqgiNc89hYcyT5P3JYffuag1zEm/gmtjbwgEHGb ItPvjbrTjBaBneqchnb4BPHmm3Wf//c= X-Google-Smtp-Source: AK7set/hT5Cp2zqJ+YJn/8f2Dvj8WnkIam+lJcbQ7Rk1dv792ajO7Bqgs0IqW9RDYZ1LdKtqUvGcTw== X-Received: by 2002:a05:6a20:b191:b0:c2:b6cf:96db with SMTP id ee17-20020a056a20b19100b000c2b6cf96dbmr4914437pzb.39.1679747374586; Sat, 25 Mar 2023 05:29:34 -0700 (PDT) Received: from bobo.ozlabs.ibm.com ([124.170.18.191]) by smtp.gmail.com with ESMTPSA id a13-20020a63d20d000000b0050376cedb3asm14923643pgg.24.2023.03.25.05.29.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 05:29:34 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 8/8] powerpc: copy_thread don't set PPR in user interrupt frame regs Date: Sat, 25 Mar 2023 22:29:04 +1000 Message-Id: <20230325122904.2375060-9-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230325122904.2375060-1-npiggin@gmail.com> References: <20230325122904.2375060-1-npiggin@gmail.com> MIME-Version: 1.0 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" syscalls do not set the PPR field in their interrupt frame and return from syscall always sets the default PPR for userspace, so setting the value in the ret_from_fork frame is not necessary and mildly inconsistent. Remove it. Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/process.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 4140b25f489f..52e18cec865b 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1812,11 +1812,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) f = ret_from_fork; } -#ifdef CONFIG_PPC64 - if (cpu_has_feature(CPU_FTR_HAS_PPR)) - childregs->ppr = DEFAULT_PPR; -#endif - childregs->msr &= ~(MSR_FP|MSR_VEC|MSR_VSX); p->thread.regs = childregs; }