From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 44E8232C8B for ; Wed, 6 May 2026 10:58:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778065130; cv=none; b=nDaKZppdaUiPFb81i33dJbu8nkb+dNddWdWc7d0g4vW7GbdvR5mMRPS1BV0FWeB25RIGUqpsd4oVexS1KVKkDw6bdum9rxtu1ek8DBs/X62RczhqpZmGiIdpAyfkyfg5ypUNg98G1osf40cjkVMIQOnc1DpVqbqSNjcwv6pfCj4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778065130; c=relaxed/simple; bh=aQfsV2SqE6kU4SVIid6MOpxYl3B3Uko4bftEJ8oCdog=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=FAJ1ZLuY+B+rTVA8dQj0YKmLsQltZZ3re+hII/x5t5fCdHkGi0gDrcLL3TiQiZwl6R9C2yDoz7S8aA4uyRS2Q3RiXMoTHY482l5joACzgpljUO26l9cZxb+ffFRzoTv4TdYqtz8ViGiUEYEwEvZUcbA2yxhZkfqF0RyvYHnoeUo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=kpI7YXBx; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="kpI7YXBx" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 46BBF3319; Wed, 6 May 2026 03:58:43 -0700 (PDT) Received: from arm.com (usa-sjc-mx-foss1.foss.arm.com [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9E06A3F836; Wed, 6 May 2026 03:58:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1778065128; bh=aQfsV2SqE6kU4SVIid6MOpxYl3B3Uko4bftEJ8oCdog=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=kpI7YXBx7bQ0HlHyprN3ILWivU+ISemkX0wJ31Ad1W6z7Qlkutk71D+vaoCehQjEY bdO0wfarRKzrWvnQnoIOtNnFC6sVjeMJsKwCpzC7Hi4TnkZmrwvvImqjV7s7sPFVYG vhJ+Ca76Us05zKFsGC+F4zuxEuSDOWW2raT2IyO4= Date: Wed, 6 May 2026 11:58:44 +0100 From: Catalin Marinas To: David Sauerwein Cc: Will Deacon , Mark Rutland , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, nh-open-source@amazon.com Subject: Re: [PATCH] arm64: Fix garbled logs caused by race between multiple stack traces Message-ID: References: <20260430084738.73909-1-dssauerw@amazon.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260430084738.73909-1-dssauerw@amazon.de> On Thu, Apr 30, 2026 at 08:47:38AM +0000, David Sauerwein wrote: > When multiple stack traces are printed at the same time, the lines that > contain register values may get split into multiple separate lines. > Some stray empty lines may appear as well. > > [ 2013.814455] ------------[ cut here ]------------ > [ 2013.814455] ------------[ cut here ]------------ > [ 2013.814459] WARNING: CPU: 12 PID: 626 at src/arch/arm64/kvm/../../../virt/kvm/kvm_main.c:3860 mark_page_dirty_in_slot+0x5c/0xd8 > [ 2013.814457] WARNING: CPU: 3 PID: 620 at src/arch/arm64/kvm/../../../virt/kvm/kvm_main.c:3860 mark_page_dirty_in_slot+0x5c/0xd8 > [...] > [ 2013.814483] x29: ffff8000873b3b10 > [ 2013.814484] x29: ffff800083fd3b10 > [ 2013.814484] x28: ffff00001d71e300 x27: 0000000000000001 > [ 2013.814486] x26: ffff800080c63b80 x25: ffff800080c63000 > [ 2013.814487] x28: ffff00001d71a100 x27: 0000000000000001 > [ 2013.814488] x24: 0000000000401b14 > [ 2013.814489] > [ 2013.814489] x26: ffff800080f5bb80 x25: ffff800080f5b000 > [ 2013.814491] > [ 2013.814491] x23: ffff0000117b2000 x22: ffff00001e22bd88 x21: 0000ff9cc1b14000 > [ 2013.814493] x24: 0000000000402230 > [ 2013.814494] > [ 2013.814495] x20: ffff800080c63000 > [ 2013.814495] x23: ffff00001d916f00 > [ 2013.814496] x19: 0000000000000000 x18: ffff8000808c1660 > [ 2013.814497] x17: 0000000000000000 > [...] [...] > @@ -235,12 +235,22 @@ void __show_regs(struct pt_regs *regs) > i = top_reg; > > while (i >= 0) { > - printk("x%-2d: %016llx", i, regs->regs[i]); > + /* > + * Buffer is big enough to hold the output for 3 register > + * plus some extra. > + */ > + char buf[80]; > + int len; > + > + len = scnprintf(buf, sizeof(buf), "x%-2d: %016llx", > + i, regs->regs[i]); > > while (i-- % 3) > - pr_cont(" x%-2d: %016llx", i, regs->regs[i]); > + len += scnprintf(buf + len, sizeof(buf) - len, > + " x%-2d: %016llx", > + i, regs->regs[i]); > > - pr_cont("\n"); > + printk("%s\n", buf); While the above does solve the line splitting, the trace is still not that readable as we get line interleaving. I wonder whether we could do something like dump_stack_lvl() at the show_regs() level to synchronise the printing. If that works, we wouldn't need the above change (which isn't incorrect but maybe we can do better). Thanks. -- Catalin