Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp3674575rwl; Tue, 27 Dec 2022 13:04:56 -0800 (PST) X-Google-Smtp-Source: AMrXdXvFt/Fwu3nvhqFcHPiu7VJ5fi8c1nQssGJCgCjh0r3LcL+l/NWE7DuRzbGh79KevN9Uc0bQ X-Received: by 2002:a05:6402:d5c:b0:461:68e4:15cc with SMTP id ec28-20020a0564020d5c00b0046168e415ccmr18163006edb.9.1672175095933; Tue, 27 Dec 2022 13:04:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672175095; cv=none; d=google.com; s=arc-20160816; b=DjVad5xu5/qCOzp3RaIYjPxV3DP3mB5wNUXV25rw38Tp7whUEGlwjhcfr2rWn7NQxF OViCakAN1hQDBV38svxm8x7wZfffiEUN2uisV/TFoMj/CI4KlOZvyPAJ01+I1bcSaI6c P05uJsx61fS/1m6YW8QeCucWvKqUi+zgeylV12FW1VMH5aPEZ90bH07dibhbOtYQu2pw UljhAqNVfYTlil93PmFJzoRQ+cN+bftmJ0jnlFy624wJ74mztob8NJqSKbZqX2I02RJu WqACJ35tvZzZPLQqA6onq5HNnUINWP32wAKp5kK1Zvgl3rLvDeZ2/pGO86YBnmQWE4Lo Tt1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=T8tqcXpYLtHwWIMZF0fWeJU2RnOiZVMibcDYkbqQpBk=; b=Z86X/PCLESPaBnRCb6KuxAS6ZiDL4eKNfnD00Xkb8+sQkj3pqBzKzXs/0ujYl2uzwz CAq83KQXSkQ2vDOcSHEz/gNDN7TNwko5yFoQWoG0s3cHb6HLFprPsOhoEypnTFtcDAKh g1/aVsPCr5Ixg0nVa9pVxUNd+nFMGStwgyhxxls9iRcY5PC2uWbyVaGB62gQutxouxpj HgNcBquA+ErK0UQ3igVYBmfEBr6wyDy2z8Mo7CFpBA2hAQeVAj11RqkkWwmyAnBgAuWW mtHXAksCekZsb8q28XC131BBpl2q7zFpGoiDCJ/rDVM/FhjGQYnaFA+wuAB2Ci2lm5jJ WZRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Pk336EUw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f8-20020a056402354800b004614acc0706si13185108edd.250.2022.12.27.13.04.40; Tue, 27 Dec 2022 13:04:55 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Pk336EUw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232690AbiL0Um2 (ORCPT + 66 others); Tue, 27 Dec 2022 15:42:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232783AbiL0Ujx (ORCPT ); Tue, 27 Dec 2022 15:39:53 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ABF62F5AA; Tue, 27 Dec 2022 12:35:26 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 72649B811F9; Tue, 27 Dec 2022 20:35:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0153AC433D2; Tue, 27 Dec 2022 20:35:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1672173322; bh=AG8gGGUaFOs/Ui29yHHwnLn4GTrfGt/J5o4Gf2QNaX8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Pk336EUw0jhypxuzatDT5VkAUsnmT1jlPujObmVAtcJYuGOCpMAIz7rASXeIacsK3 XPSULOSl8u+RJ4e+K/1K1bGVIUnI62hVM64gnE0RBj6lact42zOJPiCfiI6Evwsx21 a4h26ZxJiMnrNZuQHs4zP0YnOSt2/GwdKZpghQQiryglAIxQlvhJlew9jMisMs/wGB CHYomfmiLi8ursGOtybs5aqxEn84K5wx22Iq4h0Pz9Fqk5wBfE6pIma/Bga+kjn/DF 5YTzDINK8mA6tHjhpzdeQ8BujjMVb9Qy5Ir38A5e06iAdgJUMfiJ/wvtO6mVSMYUHh aft6hcGnd3uWA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Nathan Lynch , Nicholas Piggin , Andrew Donnellan , Michael Ellerman , Sasha Levin , ldufour@linux.ibm.com, paulus@ozlabs.org, christophe.leroy@csgroup.eu, sourabhjain@linux.ibm.com, linuxppc-dev@lists.ozlabs.org Subject: [PATCH AUTOSEL 5.10 4/7] powerpc/rtas: avoid scheduling in rtas_os_term() Date: Tue, 27 Dec 2022 15:35:07 -0500 Message-Id: <20221227203512.1214527-4-sashal@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20221227203512.1214527-1-sashal@kernel.org> References: <20221227203512.1214527-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Nathan Lynch [ Upstream commit 6c606e57eecc37d6b36d732b1ff7e55b7dc32dd4 ] It's unsafe to use rtas_busy_delay() to handle a busy status from the ibm,os-term RTAS function in rtas_os_term(): Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b BUG: sleeping function called from invalid context at arch/powerpc/kernel/rtas.c:618 in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 1, name: swapper/0 preempt_count: 2, expected: 0 CPU: 7 PID: 1 Comm: swapper/0 Tainted: G D 6.0.0-rc5-02182-gf8553a572277-dirty #9 Call Trace: [c000000007b8f000] [c000000001337110] dump_stack_lvl+0xb4/0x110 (unreliable) [c000000007b8f040] [c0000000002440e4] __might_resched+0x394/0x3c0 [c000000007b8f0e0] [c00000000004f680] rtas_busy_delay+0x120/0x1b0 [c000000007b8f100] [c000000000052d04] rtas_os_term+0xb8/0xf4 [c000000007b8f180] [c0000000001150fc] pseries_panic+0x50/0x68 [c000000007b8f1f0] [c000000000036354] ppc_panic_platform_handler+0x34/0x50 [c000000007b8f210] [c0000000002303c4] notifier_call_chain+0xd4/0x1c0 [c000000007b8f2b0] [c0000000002306cc] atomic_notifier_call_chain+0xac/0x1c0 [c000000007b8f2f0] [c0000000001d62b8] panic+0x228/0x4d0 [c000000007b8f390] [c0000000001e573c] do_exit+0x140c/0x1420 [c000000007b8f480] [c0000000001e586c] make_task_dead+0xdc/0x200 Use rtas_busy_delay_time() instead, which signals without side effects whether to attempt the ibm,os-term RTAS call again. Signed-off-by: Nathan Lynch Reviewed-by: Nicholas Piggin Reviewed-by: Andrew Donnellan Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20221118150751.469393-5-nathanl@linux.ibm.com Signed-off-by: Sasha Levin --- arch/powerpc/kernel/rtas.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index aa66317a9a49..014229c40435 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c @@ -732,10 +732,15 @@ void rtas_os_term(char *str) snprintf(rtas_os_term_buf, 2048, "OS panic: %s", str); + /* + * Keep calling as long as RTAS returns a "try again" status, + * but don't use rtas_busy_delay(), which potentially + * schedules. + */ do { status = rtas_call(ibm_os_term_token, 1, 1, NULL, __pa(rtas_os_term_buf)); - } while (rtas_busy_delay(status)); + } while (rtas_busy_delay_time(status)); if (status != 0) printk(KERN_EMERG "ibm,os-term call failed %d\n", status); -- 2.35.1