From patchwork Thu Dec 14 21:41:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Ogness X-Patchwork-Id: 178920 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:3b04:b0:fb:cd0c:d3e with SMTP id c4csp8871538dys; Thu, 14 Dec 2023 13:45:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IGm8WhBSp64G4a21pGu+PXeEuBXkW4lsiyOj7uGVCIpiiPOcpgwwZtzxHbhvhUh6jgwgC9Q X-Received: by 2002:a05:620a:495b:b0:77d:a463:e9cc with SMTP id vz27-20020a05620a495b00b0077da463e9ccmr11086842qkn.19.1702590332395; Thu, 14 Dec 2023 13:45:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702590332; cv=none; d=google.com; s=arc-20160816; b=MvQ3/x6GqhEYSwRPmxGC2ugx2M3M8PyZdiO8DZC3hEFblZu7k/s3pB25ysI70KnuxN omTcEBIjyCb5eNs20MwsGTHtfU3wPC1ucANGAWPklYmp+BIjnaWMAj6x09OlOvY8G59Z b21jjMiA08EtObLDQrC5uCC+JNWWG6xDUmc3vCStj0Ir2rrwWI0ic+1Fb6vupzy+degw Xp+y5bi4xID41HWzfU42Sn8hU7DWjUs/TAaot0wus//4n24yeh1l6ntVDckMhBz6EGfI ssTJQtjmiOEpMlY89KjaoeyBARacAiDlkd8quubvXmjy++Z9hdXjwj6hPBcaSR5ZppWc tabQ== ARC-Message-Signature: i=1; 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:dkim-signature:dkim-signature:from; bh=w+Rj9ow8fovhfkl47C5quy90KNsRy8XmYEJxuaPSPxc=; fh=pKnPKUsir0uEGSsor+4Zc2vgbu+g+ayvUgsdzkuXaoA=; b=dAJKP4274iuhd0bw0Axe/VL7pp3B5b/ADY1X3nh80HHfXolnS7CyGCyTgA/+9M14dY ng4vYY7fHDsmNKxDYtwq+/P5A/mLHFwgCdPHmT9yw1N1uAmtkkkn7OwZhsmQs+cXoGTQ FMGVUv+THW/nGRnx5IkTcyrQTu9OKl95zGwO9wY9fGlLUNixpXUu6HEjjVK8PdFYSb0v DsCfkFxUBtCOslKyVYHvAT6pLiYCGxJOVsX2Fl8DWPJYLbISNLuq+DKjH2vNYevOqkxO lno0anwQZTUswUyn0d3hcZYOlWGvpHCrfVMZ94xXVegs7m33bMF8bo+pX6VgJC/QVx68 lMwA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=rYKzl1gL; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=E4nJ9zge; spf=pass (google.com: domain of linux-kernel+bounces-151-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-151-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id v2-20020a05620a440200b0077f357665d5si17063261qkp.400.2023.12.14.13.45.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Dec 2023 13:45:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-151-ouuuleilei=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=@linutronix.de header.s=2020 header.b=rYKzl1gL; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=E4nJ9zge; spf=pass (google.com: domain of linux-kernel+bounces-151-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-151-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de 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 34A661C21BD3 for ; Thu, 14 Dec 2023 21:45:32 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A4D642C684; Thu, 14 Dec 2023 21:42:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="rYKzl1gL"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="E4nJ9zge" X-Original-To: linux-kernel@vger.kernel.org Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 4572B6E2DB for ; Thu, 14 Dec 2023 21:42:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de From: John Ogness DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1702590128; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w+Rj9ow8fovhfkl47C5quy90KNsRy8XmYEJxuaPSPxc=; b=rYKzl1gLfyiH9IJP+TFLliwyltsoWallmmQO2rIWW8Z/fGewTSWXqFjmYrmYTF+CeN4zKV wPontEoTCZuXFuB3Ybr6bj8SPuuXyeVscircT/Ol/ro4/4dtG60znLbdixzbjBmpbJlFq3 J3TKHO8N6BO1RKK25l+KflE1Xq/GC2yT5PjTw3ZWCPgmMuFfXHba9D9gMifVHVXsifgcar /6IPOTBBy9xorvPK9ZfRGwCxypgXJ6rrybFNb9io6crG3P4hKA5Ph1junGYvzLOycp+ckA d1JYd/lzSbUDSdRQ2G9pcAEg7G9bpuDMUoSFxsEw+Kaq+kojiFKqWrbCnXIIhg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1702590128; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w+Rj9ow8fovhfkl47C5quy90KNsRy8XmYEJxuaPSPxc=; b=E4nJ9zgeLAGTpX7uf+GwQSKNUOUmHjHZFCXuM4dmVdN4NYPZT8iNldWycwr5Ytv/BL7qeg JD1ZUoqpcg9ry0DQ== To: Petr Mladek Cc: Sergey Senozhatsky , Steven Rostedt , Thomas Gleixner , linux-kernel@vger.kernel.org Subject: [PATCH printk v3 11/14] printk: ringbuffer: Consider committed as finalized in panic Date: Thu, 14 Dec 2023 22:47:58 +0106 Message-Id: <20231214214201.499426-12-john.ogness@linutronix.de> In-Reply-To: <20231214214201.499426-1-john.ogness@linutronix.de> References: <20231214214201.499426-1-john.ogness@linutronix.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785295360232112656 X-GMAIL-MSGID: 1785295360232112656 A descriptor in the committed state means the record does not yet exist for the reader. However, for the panic CPU, committed records should be handled as finalized records since they contain message data in a consistent state and may contain additional hints as to the cause of the panic. Add an exception for records in the commit state to not be considered non-existing when reading from the panic CPU. Signed-off-by: John Ogness --- kernel/printk/printk_ringbuffer.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/kernel/printk/printk_ringbuffer.c b/kernel/printk/printk_ringbuffer.c index d6ed33683b8b..e7b808b829a0 100644 --- a/kernel/printk/printk_ringbuffer.c +++ b/kernel/printk/printk_ringbuffer.c @@ -1857,6 +1857,8 @@ static bool copy_data(struct prb_data_ring *data_ring, * descriptor. However, it also verifies that the record is finalized and has * the sequence number @seq. On success, 0 is returned. * + * For the panic CPU, committed descriptors are also considered finalized. + * * Error return values: * -EINVAL: A finalized record with sequence number @seq does not exist. * -ENOENT: A finalized record with sequence number @seq exists, but its data @@ -1875,16 +1877,25 @@ static int desc_read_finalized_seq(struct prb_desc_ring *desc_ring, /* * An unexpected @id (desc_miss) or @seq mismatch means the record - * does not exist. A descriptor in the reserved or committed state - * means the record does not yet exist for the reader. + * does not exist. A descriptor in the reserved state means the + * record does not yet exist for the reader. */ if (d_state == desc_miss || d_state == desc_reserved || - d_state == desc_committed || s != seq) { return -EINVAL; } + /* + * A descriptor in the committed state means the record does not yet + * exist for the reader. However, for the panic CPU, committed + * records are also handled as finalized records since they contain + * message data in a consistent state and may contain additional + * hints as to the cause of the panic. + */ + if (d_state == desc_committed && !this_cpu_in_panic()) + return -EINVAL; + /* * A descriptor in the reusable state may no longer have its data * available; report it as existing but with lost data. Or the record