Received: by 2002:ab2:1149:0:b0:1f3:1f8c:d0c6 with SMTP id z9csp5163lqz; Fri, 29 Mar 2024 07:01:09 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWGS/kLt6gSzk3raCpf++u9BnR2gumy2pLUikRLZdmuEEFxfD58es5DSL7Nb6u393pF8QG8pMtVjEhEqciyl9TZm5+HioQC8ErxUILeAw== X-Google-Smtp-Source: AGHT+IHZa0mp7XLJU0Wgk4gwIEPJvpeNr9bbdzw1wrEVI9ezyD6gZGH1ODcPTlkQrw/am/F/enF+ X-Received: by 2002:a9d:69c4:0:b0:6e4:f51d:c487 with SMTP id v4-20020a9d69c4000000b006e4f51dc487mr2416290oto.32.1711720869418; Fri, 29 Mar 2024 07:01:09 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711720869; cv=pass; d=google.com; s=arc-20160816; b=AjPRkiW1DNkXQ8lu7/X2iSx6k9Ag+6KS/WJEd7xATKh0hR2G8D1YAki0qDSei5NyKh XQ58nroALqFvT1hjlINgROe6BNEhfD2wROhuf05WhCVDxifUuRp64zNqx7moxRaPe0gP qeBcr6l7Nig/beQMyBIpbgaVuffDU3R8hK2vN1TbCl4TOMjdZn+NGVYKzkB0bqvCIUJ8 Lnah5Omogc1l4D2NHVEdKioNa6W69//ASQ8pG3gmk+cuY/VKbVq1fjL4XKqfa8kl1wUz uvTIEpE3Z55oWnjTwLD7pPsb+0nnFm55cJ2/Dk2cAdCgVAj4A7JM4ElBk0dZ2cIft7l6 X6sA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=U+6MYtS+l70clr2XupU9n/chcsNR9kRGx7lOIgNRH/4=; fh=j+aMbK7eLMI2KMaRmGMOCTxfEkIc4TPOnxEcnsSirNc=; b=D2a9BtFb+WtmP+0MiKg7ZVkdOdP46t9bOdcixzaktjOQwL5xMy16FJDP2CeJIxlGLf y960IyB/IJqS/UdKtD080Bx22+4jHxELRwWF2mTthrC/5KkMHyrDTjNHtb1iMNcGf5Pq e06/hb2ygfsZfBUEuZ4qm5b7kLHH53Dao5UpQsHt1DsvcZAR+UoXKD0E/od6aQqeiKNR //tZB1N3octWL3ZQcjmo5o1kaqDht/suBGDihmpCKbFpT3TSzjzoyDPyecYcw0RtndQJ szUhqRwwSRoPNXUPRvht2GK9Ad2SnvpfXEtgY8PPS9GsGQv1Juu9eooMeSC6IRVLnjMR hAyw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qmY+Ms5N; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-124823-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-124823-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id e14-20020a056214110e00b00690197c48e2si3696387qvs.236.2024.03.29.07.01.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Mar 2024 07:01:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-124823-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qmY+Ms5N; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-124823-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-124823-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 24ABD1C2719D for ; Fri, 29 Mar 2024 14:01:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C34891B04B9; Fri, 29 Mar 2024 12:43:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qmY+Ms5N" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DDE261B04A7; Fri, 29 Mar 2024 12:43:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711716235; cv=none; b=BURatPvR/8OhDOtqQh7il45DRWcnkNKGYTKx4Fn+zV8iZxiM1o8tZGR25iS2J8OI1dzTQC1nmJjRC8AFxhbVDEx+yqaOJoozmBU8MRIzyH+4bOW5fQWX0LaMsKMOHLMnrvI11UUK+8GwEIN2Pz8aAlgzqk8l3/5aZFeaj3060oI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711716235; c=relaxed/simple; bh=ghWvWuRyBoA+ffzSyeviljL2BGDxZHcPUQhtXe9HSw4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jhWcMj24C1kad7XP7Zin4s+rM9TL9fX8YLYEOZ54bvJWIzASCP1Ow1PJgbR9ehiyPIb9Q54axq+BpxqJuhL8i5UHrzKIL4koAz9rkAlxLpaGaz9wBcncKfxSh+Z0owyRKloHUBQ8qaAPg3D91biz3nxwMwQBoVG0MgIiw6wreiY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qmY+Ms5N; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id C898CC433C7; Fri, 29 Mar 2024 12:43:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711716234; bh=ghWvWuRyBoA+ffzSyeviljL2BGDxZHcPUQhtXe9HSw4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qmY+Ms5NM5C657IDXkRk2gjLSOLtSCG7DhMUiPjtryfBkP2s1JX30dlkmaueOd+Um MazlmRjYUBGD+2HGukIos6xB0bFODxel0yiWts6VUzhHkIPlunKOQUjaDBxq2yDf3F oFq1AWGd2AmH7tkA2Wbx7gelEk+A1uQUR1ZpWunAgMb/5myGw56RXIrceZTwkXwQVx V1ZYfgFdNFxCtSTTBY8HSBsOePmaNuflzygdMrTOKYr8j90Pt5neVMYONVv9qMbtOJ 251itTByKfK2C4JPsR42VB5gxc3NTfuaDbeoPAiwyNHn8tRw6mWYO6O/g2zW2lgt2C n1FOS4lFLSsIA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: John Ogness , Petr Mladek , Sasha Levin Subject: [PATCH AUTOSEL 6.6 14/75] printk: Avoid non-panic CPUs writing to ringbuffer Date: Fri, 29 Mar 2024 08:41:55 -0400 Message-ID: <20240329124330.3089520-14-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240329124330.3089520-1-sashal@kernel.org> References: <20240329124330.3089520-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.6.23 Content-Transfer-Encoding: 8bit From: John Ogness [ Upstream commit 779dbc2e78d746250f07c463e13ac603b349f6f3 ] Commit 13fb0f74d702 ("printk: Avoid livelock with heavy printk during panic") introduced a mechanism to silence non-panic CPUs if too many messages are being dropped. Aside from trying to workaround the livelock bugs of legacy consoles, it was also intended to avoid losing panic messages. However, if non-panic CPUs are writing to the ringbuffer, then reacting to dropped messages is too late. Another motivation is that non-finalized messages already might be skipped in panic(). In other words, random messages from non-panic CPUs might already get lost. It is better to ignore all to avoid confusion. To avoid losing panic CPU messages, silence non-panic CPUs immediately on panic. Signed-off-by: John Ogness Reviewed-by: Petr Mladek Link: https://lore.kernel.org/r/20240207134103.1357162-13-john.ogness@linutronix.de Signed-off-by: Petr Mladek Signed-off-by: Sasha Levin --- kernel/printk/printk.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 9ca10507f7c47..713c14843609c 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2274,7 +2274,12 @@ asmlinkage int vprintk_emit(int facility, int level, if (unlikely(suppress_printk)) return 0; - if (unlikely(suppress_panic_printk) && other_cpu_in_panic()) + /* + * The messages on the panic CPU are the most important. If + * non-panic CPUs are generating any messages, they will be + * silently dropped. + */ + if (other_cpu_in_panic()) return 0; if (level == LOGLEVEL_SCHED) { @@ -2789,8 +2794,6 @@ static void console_prepend_dropped(struct printk_message *pmsg, unsigned long d static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, bool is_extended, bool may_suppress) { - static int panic_console_dropped; - struct printk_buffers *pbufs = pmsg->pbufs; const size_t scratchbuf_sz = sizeof(pbufs->scratchbuf); const size_t outbuf_sz = sizeof(pbufs->outbuf); @@ -2818,17 +2821,6 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, pmsg->seq = r.info->seq; pmsg->dropped = r.info->seq - seq; - /* - * Check for dropped messages in panic here so that printk - * suppression can occur as early as possible if necessary. - */ - if (pmsg->dropped && - panic_in_progress() && - panic_console_dropped++ > 10) { - suppress_panic_printk = 1; - pr_warn_once("Too many dropped messages. Suppress messages on non-panic CPUs to prevent livelock.\n"); - } - /* Skip record that has level above the console loglevel. */ if (may_suppress && suppress_message_printing(r.info->level)) goto out; -- 2.43.0