From patchwork Tue Jan 31 16:55:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1734970 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=QvBwW/P2; 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 4P5rnB328sz1yhq for ; Wed, 1 Feb 2023 03:57:02 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4P5rnB1W4Fz3f3L for ; Wed, 1 Feb 2023 03:57:02 +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=QvBwW/P2; 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::62b; helo=mail-pl1-x62b.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=QvBwW/P2; dkim-atps=neutral Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) (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 4P5rln6slHz2xl6 for ; Wed, 1 Feb 2023 03:55:48 +1100 (AEDT) Received: by mail-pl1-x62b.google.com with SMTP id m2so10705014plg.4 for ; Tue, 31 Jan 2023 08:55:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=WNv1NH6crUe3EWJ/2wkBhfP0j0dEvWb5r6AB12gg7pE=; b=QvBwW/P2j0VaveZDl3tGM6rFSTZEFRVhQKzCaI+X3LDzG6WmPUDZcifxdoAl2qTvBi f1o0C7EbUB2nZ8Pur/bVxP6M92MLgW0LkyLKKq4YTgudquBzfXTsctiy6WsjZZ7b46XL Wb+4qDTguSHf05ktUQzP1Q9E67OJE6a+YGf5963LDs3PGEg52PBdW+WJxcjNeI9Mj5Wo duamrGSZYlNJplpbP/Q3CC/zTfAGoLdfteBZ0UvhcHpfYEqlh6D6bYJWujxIizot0H1z o8Cc6TIGYP/LzEw9ts0yawRjPOR3PM2pf9/G1kftu5QNl7CDldkEGYoOmkCB3BotXkna YnXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=WNv1NH6crUe3EWJ/2wkBhfP0j0dEvWb5r6AB12gg7pE=; b=kiHasAleq26z48M1gjSxgWWPyjs51xnQ/+JMaIcP8qYeaSw7Jg3/xQCOQLMK2kFcDs PnrpW+C0JuYwWAMIITmaSKogkJ7m4LQcRWiPRyH8hMHmVgOz5DXf7ffqv16v8QFm8jM1 TbQYShoesEwftUzAZ69Qwfql+xkqv/htDOOtfb49lTA/4yA8XY0Hr/oj2gC+MBHciLcL YPjVljcKQXI+g/I7PR4u3X/3AguFp4qNqqNpZN+BSCKw0HuogQWo5042qJXAMJNaiQlq JusgM2Y3LYyjyk7CzGnoN/bzzQhHavFxyVw7v9F5UZSFlY2pF9ZX1nW271qS628JEdAG JsKA== X-Gm-Message-State: AO0yUKVI2m/TiHCvx7VOb7XuURS7a+8d8YEOykXj9f7Jf9qCn1RZnDGe quu9caXyvZzJu3pGSsFn18O89GFo9zo= X-Google-Smtp-Source: AK7set8OAkLbgh6wZcev+enmRG7emeYlrpKRPjlJ/t77R6Pa2rypzVsdnDwLyyi+rN1TDU7PWQUTYw== X-Received: by 2002:a17:90b:3e81:b0:22c:8636:bd66 with SMTP id rj1-20020a17090b3e8100b0022c8636bd66mr11219914pjb.37.1675184145376; Tue, 31 Jan 2023 08:55:45 -0800 (PST) Received: from bobo.ozlabs.ibm.com ([203.194.37.234]) by smtp.gmail.com with ESMTPSA id bk7-20020a17090b080700b00223f495dc28sm9029371pjb.14.2023.01.31.08.55.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Jan 2023 08:55:44 -0800 (PST) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 1/8] powerpc: copy_thread remove unused pkey code Date: Wed, 1 Feb 2023 02:55:27 +1000 Message-Id: <20230131165534.601490-2-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230131165534.601490-1-npiggin@gmail.com> References: <20230131165534.601490-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 c22cc234672f..ba10505f62c1 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1814,6 +1814,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 @@ -1846,17 +1847,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 Tue Jan 31 16:55:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1734971 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=fQFsAYQ6; 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 4P5rpC6zbKz1yhq for ; Wed, 1 Feb 2023 03:57:55 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4P5rpB6jlPz3f3y for ; Wed, 1 Feb 2023 03:57:54 +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=fQFsAYQ6; 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=fQFsAYQ6; 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 4P5rlp34clz3bWq for ; Wed, 1 Feb 2023 03:55:50 +1100 (AEDT) Received: by mail-pj1-x102e.google.com with SMTP id cl23-20020a17090af69700b0022c745bfdc3so8458918pjb.3 for ; Tue, 31 Jan 2023 08:55:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=ZZXfROAVz8xuTg2PgxztYXr2k4U6VEdE9JD5/iSQhKQ=; b=fQFsAYQ6WbCcuynv/0w+99NyElmB1Y4R5Sgit+eqyQKanAaGyW7ApZ4IQlvcUCMqUV w+7YxsiS/DU4u4LNBVNHk3gfsSQwZGIB8mHdTAIav8lM9AyHKruwaipNj7BWQgWw0weH s8J09qFpkq9e6ewdN94CPGGYN3z6Aoc5wDxbUQRLR/9BFfdZWW0qBRmAxYSpM0sUUGQ0 lCVnwip9kXgbZ1sa7th9HPDNme6++LC/7JgeE3j68fVHjJTbFmh3CR4CVN57zykdxQhQ opDHZPE+5gxAtc5zWxW4/xQSopBM86qDyoWZ1zsMiqI+hwSEg0Nqo0OhkOX6iOrtnJBB cIsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=ZZXfROAVz8xuTg2PgxztYXr2k4U6VEdE9JD5/iSQhKQ=; b=UrzYBmunD01sgFqeUPUExR6A+HWuOaL6SHy7ZGfPs/QREHVeBBEPbYH7vubkjCTFvt X8qQkAG7K613ixk1nOrM21bAIJUWFWNo0qGcahWLPKSRZ/NOS5BhDwZzp6cZ72hcdeUT kNMNhhd9UXSoHv+226esqK3M1bBmGCPweWdwhhLZwApOpzHJuizi0RcKaK5Z6fKMSNUd CiVGwJvzhybR8QDn2CUVHcRSf+PQKz4jaLdeZ/6aXl855JN6zjDAQRAuFhG7uNySUvqX H3KYwtUVizJ9p04eOOLya8RUtOeH/KGAWqb+cQzicF1oTLfkSMcAye0SFe7TRQ3XBoer eTmA== X-Gm-Message-State: AO0yUKWzYMfTocAqaglS3iPASzNrb9cJA9wA1NRt3cEJuB4pOXyoE1+n 1W932RkmSTDn7I/Wjo8bL0QWGv8WfPE= X-Google-Smtp-Source: AK7set81J+puH6pH6RbMwx8H1qdKcJjl35RCmwAQYjHOwZ/BkIADOujQMDhOzVG6NPV76hLG+EL4AA== X-Received: by 2002:a17:90b:4c91:b0:22a:33f:fb3d with SMTP id my17-20020a17090b4c9100b0022a033ffb3dmr14359678pjb.48.1675184147696; Tue, 31 Jan 2023 08:55:47 -0800 (PST) Received: from bobo.ozlabs.ibm.com ([203.194.37.234]) by smtp.gmail.com with ESMTPSA id bk7-20020a17090b080700b00223f495dc28sm9029371pjb.14.2023.01.31.08.55.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Jan 2023 08:55:47 -0800 (PST) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 2/8] powerpc: copy_thread make ret_from_fork register setup consistent Date: Wed, 1 Feb 2023 02:55:28 +1000 Message-Id: <20230131165534.601490-3-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230131165534.601490-1-npiggin@gmail.com> References: <20230131165534.601490-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 ba10505f62c1..dc66ca668b44 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1785,9 +1785,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 Tue Jan 31 16:55:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1734972 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=hzFFyjis; 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 4P5rqC3jVwz1yhq for ; Wed, 1 Feb 2023 03:58:47 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4P5rqC2XH0z3bWw for ; Wed, 1 Feb 2023 03:58:47 +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=hzFFyjis; 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::636; helo=mail-pl1-x636.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=hzFFyjis; dkim-atps=neutral Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) (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 4P5rlr2Rd6z3bW2 for ; Wed, 1 Feb 2023 03:55:52 +1100 (AEDT) Received: by mail-pl1-x636.google.com with SMTP id e6so7474716plg.12 for ; Tue, 31 Jan 2023 08:55:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=/HRo1V2plvCyYSyGsHCxdqPdu7maA25oJkY4seRjlcA=; b=hzFFyjisgqBOQ/m0vnvdOKGgnl/9zN/XN6XKahFzPV5fT/m5XmWbuON4N8bHfLBTDF doYRSIEgYAVj/kQLae8XGVQecPwjgutTd+ywhs27WQuc1PpqX5PS9Aa2vJlfzCtOFAtP 6D/1Z/jiLD965P52vRYzcEIgopI9tI+CCTEIHdxdl3TJaK5IxVHvgH0zApApqX77+Bhi 7cYbkaYnYIwUOb6TExoMB8WkQEbJ/+pFdxmSCNboWNMHYpuzIgTr7HK8jHZosVEthsLx Tue7dsbUuWvvh4eucVLizxD7qiT5PpdCBbM7vICco8OCu6tHCuD0drc8xJDY3fK7vgwV a6jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=/HRo1V2plvCyYSyGsHCxdqPdu7maA25oJkY4seRjlcA=; b=BqqbA+UBjSLcK3aknd36sk0r3+jgiJEo9X6EunGdvj0lJLhonkExHr1ExjYtEOJ2H6 BJBarNu23rPveZxfyUDJJsXtHKYq+dT8E4j/kIL9lmtrnDwv4dVdJ8mOJQB2Lk/67Ymx ypYg8cFngAetNAq3XlNJnGP74+UYL3UzBq8Sgiswi9YaEOThOVLPPFFEPaRI52c1KF9O PPfihTtFMLDtKWosKg25RZ6GooMbPDjojW2sVIj/FUDpmt20bJLPlGNqLx731/tmiH9h FhKc1fgeF6wAJxeqUka5Cdk5W/9vBwQQFQRBEHLIEtAzqoV3Xi+RXnawrc6QJpM+lYGL EAGg== X-Gm-Message-State: AO0yUKUaaJe8ct+Q9iSlyJp+Q9+zWCCcaQrbEphcrAb3A4CmM13aYh+/ zV64BEFP59IKBVVdRHzOljpHmagNWy8= X-Google-Smtp-Source: AK7set+T9CAHv0mmhZ66XfXEv+w1gaBEQSg181U4C7SIcvKpHpDfS/42Bb7V3OSV3brNAtH5+jh+GA== X-Received: by 2002:a17:90a:19c2:b0:22c:7603:3793 with SMTP id 2-20020a17090a19c200b0022c76033793mr12083105pjj.20.1675184149897; Tue, 31 Jan 2023 08:55:49 -0800 (PST) Received: from bobo.ozlabs.ibm.com ([203.194.37.234]) by smtp.gmail.com with ESMTPSA id bk7-20020a17090b080700b00223f495dc28sm9029371pjb.14.2023.01.31.08.55.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Jan 2023 08:55:49 -0800 (PST) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 3/8] powerpc: use switch frame for ret_from_kernel_thread parameters Date: Wed, 1 Feb 2023 02:55:29 +1000 Message-Id: <20230131165534.601490-4-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230131165534.601490-1-npiggin@gmail.com> References: <20230131165534.601490-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. Signed-off-by: Nicholas Piggin --- arch/powerpc/kernel/entry_32.S | 1 - arch/powerpc/kernel/interrupt_64.S | 1 - arch/powerpc/kernel/process.c | 9 +++++++++ 3 files changed, 9 insertions(+), 2 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 dc66ca668b44..6cea224b7e60 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1812,6 +1812,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 create details 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 Tue Jan 31 16:55:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1734973 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=EnaxC5oT; 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 4P5rrD4S9mz1yhq for ; Wed, 1 Feb 2023 03:59:40 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4P5rrD1pL3z3f7M for ; Wed, 1 Feb 2023 03:59:40 +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=EnaxC5oT; 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::102a; helo=mail-pj1-x102a.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=EnaxC5oT; dkim-atps=neutral Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) (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 4P5rlt6dCPz3bWw for ; Wed, 1 Feb 2023 03:55:54 +1100 (AEDT) Received: by mail-pj1-x102a.google.com with SMTP id t12-20020a17090aae0c00b00229f4cff534so1435162pjq.1 for ; Tue, 31 Jan 2023 08:55:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=EnaxC5oTj1L/P2FmQOMTzj0xQfl9U8wHSS9J0JWyr7hEGtLfxJZGDcwoKjtws/Thwo BMIdOUMvlgogRSrgsdHvhbJn9qvv8/paDGcTg7sBEHOqkVFZCV6TVgT/9a+88BXXUZjG bUSMgCn5Wpf0p+ePlBh3zYAORVjIOUlQe0XCJyB0MRhMSF54qDBAz8ouQBJIZfODlEhz 4MKbBlgRlIIZAaoH8/WG8TJi5OCpVJZf5gyidsSLaE4c/YG6yMKD2xaF4wxRulPr6lKI bUy/VyG5IS+xPV3uITVeQHL6jv/QxTr/I+M24C5nv3usaQOpwWOuO+99bwtQi61aSkHQ lQTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=fNwntNyBdaYJScvI7pRtECeRGI51HxL4LcyZIhAPwY5k6w+jNh+dxrsYHtVBaUkeGm 7M6LJw7D+QUL0PWvT5P+BTGj/UQSN1ErGcHJRvFN+oC4h/xbZJLQsu80VK5JpSslDbeb 4ueIfoydt4lNB560XGBfyArRw6/2R43ntdTUg/r/8nkNZodZhZTJVIP9jYlO+9TmFuyM dZagas35CNyU5ly2FCOvvLufi1+lEC1Dc+Bufxo1Dz+CxjCMFh5fBrWhE4z8bP2vmtCS jQiX4KGzje66vYYe7KIESYtOAyVIx/ciVxLQ8/h/wiIVQk14eUaH4ltKnfiPHDXHXnhK bhKQ== X-Gm-Message-State: AO0yUKUphEtWP0LsDb+CNl5TFS2/3SC9QpqbUbmv8J/tSQrzLc/cH99d Bv2mWpR5BZwTK2LOxdzFkqS19BXp5JQ= X-Google-Smtp-Source: AK7set/1pJBGvlEBPIy7uZkV/zlXHYuoOyBWQstkVVtT8Rq10ZCbtw7gQD9wqGhHDgp3QWYBGfMP8A== X-Received: by 2002:a17:90b:3ec2:b0:22b:ed00:1771 with SMTP id rm2-20020a17090b3ec200b0022bed001771mr29560020pjb.35.1675184152159; Tue, 31 Jan 2023 08:55:52 -0800 (PST) Received: from bobo.ozlabs.ibm.com ([203.194.37.234]) by smtp.gmail.com with ESMTPSA id bk7-20020a17090b080700b00223f495dc28sm9029371pjb.14.2023.01.31.08.55.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Jan 2023 08:55:51 -0800 (PST) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 4/8] powerpc/64: ret_from_fork avoid restoring regs twice Date: Wed, 1 Feb 2023 02:55:30 +1000 Message-Id: <20230131165534.601490-5-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230131165534.601490-1-npiggin@gmail.com> References: <20230131165534.601490-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 Tue Jan 31 16:55:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1734974 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=klPjQin1; 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 4P5rsD2lNFz23gY for ; Wed, 1 Feb 2023 04:00:32 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4P5rsD1dxSz3cck for ; Wed, 1 Feb 2023 04:00:32 +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=klPjQin1; 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::62e; helo=mail-pl1-x62e.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=klPjQin1; dkim-atps=neutral Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) (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 4P5rlx1Jnsz3cYd for ; Wed, 1 Feb 2023 03:55:56 +1100 (AEDT) Received: by mail-pl1-x62e.google.com with SMTP id m13so3801379plx.13 for ; Tue, 31 Jan 2023 08:55:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=gzr35HrrqOSBWAxdxT1MsNRn5/azWkwgTm9ZHnsTKWI=; b=klPjQin1EF74+MHDjg5BIxoKEHx1xFZzyrWDYw+LPX+vse0rJtzTICSdT6h4i52T2t oZj3xNk2zSrOepC/YXqlXaseN5gxPd04wGcGT/3CntsXizqlxd8qjcMZogit7N44KuCu Hzu5rbEKBub6+4+7nO9/miMLI8XE78XeicILlkSawWkH/lVAXYEDcpsZe/t/X4yZwstC stjpGI31CCRjN+YURQW6/IuWDFIj6b3CVKIxtu3lkrTe65eJuypd8zT6UJ0HgDMW7qkT cXkYN5CkjCs9sc2yvFczPQsZ9rzGsCVl+YiUeXoVGbSXRhzTsArqN/LOd0qAip75MToH PbZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=gzr35HrrqOSBWAxdxT1MsNRn5/azWkwgTm9ZHnsTKWI=; b=x91UI+ZAV2CE959Q+APLLqlC/sHhFFaAYurdbNE7mTSLy6AY4HzGzeJkHpxVz/VrNq 6+t4PogH8YWB7Zj9YEGgrwSl9MEvA27xMYbahcdULYG1fefOrS4bxZyeBivBKCUIKjb0 AixcivIYQIZip3fVpe4F3vVX7gd4nmdmlxNVKB7zbSwpK1NlbcJaCXVJnJEQw3A6XGO5 IckIK1AbtaPAjzQiRzHlVoimtcs6XrrT2HD0nULqM4BMiIOTlcFo651ejFl8EjZ1P4t0 267rvpsbLF7T7XqmskoC1RM79EyNZyYOM+jLzfPaesRINX2gqY0RDPaDPNWcMhK/Hd13 9lsw== X-Gm-Message-State: AO0yUKVsCp06ebXjK/5GR64InGmP1PiMPxl6/tnV+GOwsTcdFEMUjZ/5 fBm1+zKtq6J3J8RgoYJSPB8MYImh8Ss= X-Google-Smtp-Source: AK7set/84nVfYbeazK0JFrMMyACRXXHqpPx2A6PTSd1L6+tNa/uoPP5oxSl54lEM8LXhVHac7xMWmw== X-Received: by 2002:a17:90a:1da:b0:22b:e2ef:6845 with SMTP id 26-20020a17090a01da00b0022be2ef6845mr31806396pjd.41.1675184154510; Tue, 31 Jan 2023 08:55:54 -0800 (PST) Received: from bobo.ozlabs.ibm.com ([203.194.37.234]) by smtp.gmail.com with ESMTPSA id bk7-20020a17090b080700b00223f495dc28sm9029371pjb.14.2023.01.31.08.55.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Jan 2023 08:55:53 -0800 (PST) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 5/8] powerpc: copy_thread differentiate kthreads and user mode threads Date: Wed, 1 Feb 2023 02:55:31 +1000 Message-Id: <20230131165534.601490-6-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230131165534.601490-1-npiggin@gmail.com> References: <20230131165534.601490-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 user threads run a kernel function which may kernel_execve and return, which then returns like a userspace exec syscall. Kernel threads can be differentiated by PF_KTHREAD, will always have arg->fn set, and should never return from that function, but call 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/kernel/process.c | 99 +++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 38 deletions(-) diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 6cea224b7e60..82aad157c5f6 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1739,10 +1739,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); @@ -1755,49 +1752,77 @@ 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; - /* function */ - if (args->fn) - childregs->gpr[14] = ppc_function_entry((void *)args->fn); + + f = ret_from_kernel_thread; + p->thread.regs = NULL; /* no user register state */ #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; } 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. + */ + ((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 @@ -1848,8 +1873,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 Tue Jan 31 16:55:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1734975 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=mGeiLRRy; 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 4P5rtF2tQXz23gY for ; Wed, 1 Feb 2023 04:01:25 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4P5rtF1nvvz3f37 for ; Wed, 1 Feb 2023 04:01:25 +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=mGeiLRRy; 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::102a; helo=mail-pj1-x102a.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=mGeiLRRy; dkim-atps=neutral Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) (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 4P5rlx4xdGz3ccq for ; Wed, 1 Feb 2023 03:55:57 +1100 (AEDT) Received: by mail-pj1-x102a.google.com with SMTP id t12-20020a17090aae0c00b00229f4cff534so1435348pjq.1 for ; Tue, 31 Jan 2023 08:55:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=kzlUO/iIGu/f/w3nE4/a7M6akCNoHwRlGBbDvHNWpKE=; b=mGeiLRRywuyTPItbaaBd75hTGqRSW/UZJ30Dr+W1vGADUk0ApsY/W0s4vFSgQhN3wU JoTih0aQN9ZkWWtqSEMFH+MHiGhQ8tQzocjv6Fovt/TiXFBNHLZ1t24N9G1y3V1a0w+y 63c6FP5sQO0Gd20wGXzxFpxn5ZZWJSwR5wxSO0ILh6ZU/JMsXn7fzfmGoXh3piI0tbIP vBPJ9cJWs8gMIQaV98nOLRZ43rBsRmDTtJb51LP/QZ80PqJ/WQlvWy2vI96hNmBcjV87 TxvZ9pkihV6nQVn+9O1xUz5o7IP0NBFFhJuS7v78x7753Y0HewdTjXH8CtdtKak8JEGo 8Q6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=kzlUO/iIGu/f/w3nE4/a7M6akCNoHwRlGBbDvHNWpKE=; b=8QPhOe+ufdB7Vkz4Ls7oFWRGN0w5Xpv/RjoHr299uqaGoodYv56eA9OaTK4eNTd29M Wj6xHk/gmvMTSoWnftWumy+/ubxv14wGeFPNB1Ez64o5CRDIrxxhjawjs5riwJVQxyhz 0Kqd85OFgDBR5B4pbNG1sEfbtNHR+1cSKXgFM1/LqpwLFzzoQowVlUi+zARxZjfH5nJ2 PcpMCipeX4c8o6RAMj6490kTuwIHVPObTkXayKwyt6Ez2QvjpQ/LzxlNn2/1+mK7yO2Q REF44UPu/5o1fZIFD0HOljWyBZ/sMF34aRl5b0uwWu1oaeHrlDtJCCbC5DjMM44bAPy7 qTiQ== X-Gm-Message-State: AO0yUKVGz6zVUs5w9qqNzlT+xpnohC9SsRbdHqJIysdnelZdShcGAkZD kK2GSPrY5SVNM6YEJfSxMwwtqCAK+cE= X-Google-Smtp-Source: AK7set8kFp4GXhF3fQ37oMmJTMHErgOpYDsRH8w4LFQ1UpSJYZdZsolmZAkxtEnwLPVoT0fiFMUekQ== X-Received: by 2002:a17:90b:3141:b0:22c:b1c5:ae87 with SMTP id ip1-20020a17090b314100b0022cb1c5ae87mr7053004pjb.45.1675184156881; Tue, 31 Jan 2023 08:55:56 -0800 (PST) Received: from bobo.ozlabs.ibm.com ([203.194.37.234]) by smtp.gmail.com with ESMTPSA id bk7-20020a17090b080700b00223f495dc28sm9029371pjb.14.2023.01.31.08.55.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Jan 2023 08:55:56 -0800 (PST) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 6/8] powerpc: differentiate kthread from user kernel thread start Date: Wed, 1 Feb 2023 02:55:32 +1000 Message-Id: <20230131165534.601490-7-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230131165534.601490-1-npiggin@gmail.com> References: <20230131165534.601490-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..c33ac0b454dc 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..90370b89905b 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 82aad157c5f6..53215cdb19dd 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1742,7 +1742,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); @@ -1759,7 +1760,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 */ #ifdef CONFIG_PPC64 clear_tsk_thread_flag(p, TIF_32BIT); @@ -1786,7 +1787,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 Tue Jan 31 16:55:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1734976 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=fT41x56x; 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 4P5rvF5Dkwz23gY for ; Wed, 1 Feb 2023 04:02:17 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4P5rvF493dz3f63 for ; Wed, 1 Feb 2023 04:02:17 +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=fT41x56x; 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::62e; helo=mail-pl1-x62e.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=fT41x56x; dkim-atps=neutral Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) (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 4P5rm008Zzz3cNR for ; Wed, 1 Feb 2023 03:56:00 +1100 (AEDT) Received: by mail-pl1-x62e.google.com with SMTP id m13so3801607plx.13 for ; Tue, 31 Jan 2023 08:55:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=vfo+8gBitn71FY78nktDeC/vcNsaSUps5A5lrIaA/U4=; b=fT41x56xjqZwSa+FhlctaZBPs7yUR9pnhWnr0/bn+WylBlXd1+6b5s05Ldpo3Bgrx1 tBmeI+Ml4YXyT+gJIN0UdYi4icdvLdlK5PK0kXUGzFBl1b760nuzJDEQfkFQIRazzoib YCbchVqAPHUAiKHD+0e83mDGcRJC+033IaOSw14uIhLj7SUtUCh8z8udEm8wHg/Yg3+C jdoeAVJi0QxBoo//WmzvlSetzn/rkFHo9SXmCBaBf9KOv8LTXqSCBeDpMBHh0s4L+xR7 ocvCdm8epQE0JTJST+iE6Thxw3DoWoIYBUPN26xSbnCE7SoFgv5cPjKXAUUBXF9R3JVn HgaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=vfo+8gBitn71FY78nktDeC/vcNsaSUps5A5lrIaA/U4=; b=Asmz5UjLB+MLyZMkGlQXrAQxwvE42b+Crz/MWmq+cdmRpZDSljHfZOfpthUd40KRUw Spo5Qh+dbaoxCBdKVp7rGKKLsq3xKcycFmjcnunXyL5YZs4mbCr7ITkICwqQn6FVgqtc RF7+afai3TUE5IgFv8POd8uusboIZR9AUGiZKkLCFGO5uUk8/cgwK4IrWrz3tDw3r11i tyucp5d0CoVxKL4XV5DVFsudD+wdy6G6LHuLcWUrMp+LY16AutwFsAjKKRitNI9s2YF3 Sk6DUskr0z2w1ZtNQqpHVtVmZXz2d/zokkigK1qF8pwhuer3fjeVsdfZ8jydFiCe+VEg Ntyw== X-Gm-Message-State: AO0yUKWGGdcwt/dClmxamGTleB55sAPnjta6mTjho0zVgbgr9jV4Ig0V sCRml2JWDmm3NfBIXAM/rmO9Aqdo0O4= X-Google-Smtp-Source: AK7set8D2eDqpTKj0N0jESavkW9W0W88ysQK6Nd9XrEN2gFyWXcSAPdcv84EyRMuvl8NmE01flbqrQ== X-Received: by 2002:a17:90a:728c:b0:22c:8ba9:4ce8 with SMTP id e12-20020a17090a728c00b0022c8ba94ce8mr11078676pjg.15.1675184159123; Tue, 31 Jan 2023 08:55:59 -0800 (PST) Received: from bobo.ozlabs.ibm.com ([203.194.37.234]) by smtp.gmail.com with ESMTPSA id bk7-20020a17090b080700b00223f495dc28sm9029371pjb.14.2023.01.31.08.55.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Jan 2023 08:55:58 -0800 (PST) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 7/8] powerpc: copy_thread don't set _TIF_RESTOREALL Date: Wed, 1 Feb 2023 02:55:33 +1000 Message-Id: <20230131165534.601490-8-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230131165534.601490-1-npiggin@gmail.com> References: <20230131165534.601490-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 90370b89905b..f53012254fca 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 53215cdb19dd..e67597fd998f 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1746,7 +1746,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 @@ -1786,7 +1785,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 Tue Jan 31 16:55:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1734977 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=ZAbdo6JO; 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 4P5rwG3188z23gY for ; Wed, 1 Feb 2023 04:03:10 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4P5rwG1mD7z3fCc for ; Wed, 1 Feb 2023 04:03:10 +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=ZAbdo6JO; 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=ZAbdo6JO; 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 4P5rm41Gyjz3cdD for ; Wed, 1 Feb 2023 03:56:03 +1100 (AEDT) Received: by mail-pj1-x1034.google.com with SMTP id m11so14794069pji.0 for ; Tue, 31 Jan 2023 08:56:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=NfzygFx2ypzeNsLPbQ7CYH7PUz0kl+onmnyCFvwRex8=; b=ZAbdo6JO83vYybM+fkSkOZ1DVNi4KNRirYIqk+jq9SPqls4ncFwzh3nMH8t9FyVyU3 wiJu5SKFEN6iUrJGMFoh2fXULx2BbxffHAZO5zNty08FB3wN8xgFHKNZdLOsDTh6jhCN KmX4I0A096s6RCcCAeu0EoPGY4mzS2Py1FxpIeV2SUi9bi0EVp3r9VjWKj+1lrZr74Ct vkbvZ22QgUkbz3bN1XIH5++buT7JL8PJ2AyjvvIls1EVeUIfgTVnX8PZofwv9kOWqWzH 52cdPKLAbDmtQvEcUTXIIdK9mYtBmThAvfP4Vm0+qDj/fDN2cn2YuFHqK6mt03feI5wv mjJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=NfzygFx2ypzeNsLPbQ7CYH7PUz0kl+onmnyCFvwRex8=; b=himWNXbHu1Hifusjw/Dm13qj67lp+NdPvkoO54hc/iY0uZJL25Q3/1KC3aV4BIhMlJ D/PBgDq6IMRznL52NwaKu87b9q31G4Vz6vAPW4vaBPUqMxIDr5crSerPn9gS2PLv4kam HUmx3Pheet+h0eDNzYwzi1aWPI7l810eVk1gwxjMtfT6duDRkNJE+UkGbkO0mZsCKpTT OZr5NhIExBlLmJqRD9zUV7TEH12IReJVrkBREtdX/VeUsUQhn1snLgPj5NxA61UTm/jy y+foU7oenZF04C+q+hcKgRgcSqRUf81fDafAg1QGOp4hztJTtKKypBWVJnCAXffBdKSA 4PmQ== X-Gm-Message-State: AFqh2koJQoJnARtzZQFl5aRgsqWVdVnlGaTx71KQG4NSSZ6Jk4gTt8D3 NU04sz1ckuPjZ3tYgV9jIu9pRE+GTWY= X-Google-Smtp-Source: AMrXdXu5MqXUl57vUjghnnf1AkqdLZBiJ2TTnGp3rmECNqHIQH1q15f4RSq7zG6lkOaRAbxERg/jqA== X-Received: by 2002:a17:90a:3cc4:b0:225:d450:2ccc with SMTP id k4-20020a17090a3cc400b00225d4502cccmr56078257pjd.30.1675184161555; Tue, 31 Jan 2023 08:56:01 -0800 (PST) Received: from bobo.ozlabs.ibm.com ([203.194.37.234]) by smtp.gmail.com with ESMTPSA id bk7-20020a17090b080700b00223f495dc28sm9029371pjb.14.2023.01.31.08.55.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Jan 2023 08:56:00 -0800 (PST) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 8/8] powerpc: copy_thread don't set ppr in user interrupt frame regs Date: Wed, 1 Feb 2023 02:55:34 +1000 Message-Id: <20230131165534.601490-9-npiggin@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230131165534.601490-1-npiggin@gmail.com> References: <20230131165534.601490-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 e67597fd998f..3685a74a9041 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1814,11 +1814,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; }