Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp2813119iob; Fri, 6 May 2022 10:55:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzkmC9KHR4LjEFiEA2TNCNKUgW/vNya9fN5x5vQkCDh/dRgHu/xUvzRN52X29fxFnFiHxe1 X-Received: by 2002:a17:907:7f14:b0:6f4:2a57:e1df with SMTP id qf20-20020a1709077f1400b006f42a57e1dfmr4052153ejc.18.1651859726333; Fri, 06 May 2022 10:55:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651859726; cv=none; d=google.com; s=arc-20160816; b=dJoc+08y7nPKcqrgq/KtCGQLDuav+8dSxD1oWD+tlWw6RBi7whRpTo1h2dxVXN9/M7 vmYcEKpISwpNxBRuy8l3CCm/trl5O7H0rWiy0t+ZMJYlDDNrumIb5hNZjM0aQ/OO9/On uN+Pn1/+q6fPEXrQwgH4GLz+6MJ43zUAnQPgfuS9V66SLX3t6sp4O37EQZ8SssMI/gUm wtJegb9iZALrGmluS/ADA9f99vop0QvpDLT1ouNE3DoQgbnCyc+3ZX30IDzBUN6hPcZQ YFA+2kuh6BlVprgy8G6Biq1VPxbiMi9Ff/CGxy9QXrGNw7/XmGO+iwyFEvVfe+jUlCKx AFQQ== 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 :message-id:date:references:in-reply-to:subject:cc:to:dkim-signature :dkim-signature:from; bh=w4WGFGgH1Q4SMa5YoUWZ2bySKWWiAetNfZl+vB3w1g4=; b=cqMsP2Y3D1VFsMr/EF8dsXJE/dtNhlunDYfMv+uv8NG6dCZFi6D/hf085JqOwOFZ7m fMljnbR2gYwsTjr4PFDtxAQVhlKI9qdwiQAkVR8pNGJb/4+JryVYzWEe8no5Pfi9aD0u P64Gs8CT5CKCOhh9h9s4hKIWpqL0XKytd+GWp1y2jqV+bRayxtp41dNVvgdeoUpO9J3b 9lq9iikMYzUVWJBnmy3lQ8ZtlHuT1Ss+8eH/a7eJOGz7a1XB3Rqjd1nv3wA6lOemRmac KStY3EINKvHlWjPUEJ5fS38dhVYh4/HLmoBf7ka70jkDEJA5QFctvI76a9z9wEFT6AFi W9kw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=ssLWQd2T; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=riJkHFdn; 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=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id eb8-20020a0564020d0800b00427f3b0b5d6si5930583edb.57.2022.05.06.10.54.53; Fri, 06 May 2022 10:55:26 -0700 (PDT) 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=@linutronix.de header.s=2020 header.b=ssLWQd2T; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=riJkHFdn; 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=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1392099AbiEFMpd (ORCPT + 99 others); Fri, 6 May 2022 08:45:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354925AbiEFMpa (ORCPT ); Fri, 6 May 2022 08:45:30 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 553D6DF65; Fri, 6 May 2022 05:41:47 -0700 (PDT) From: John Ogness DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1651840905; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w4WGFGgH1Q4SMa5YoUWZ2bySKWWiAetNfZl+vB3w1g4=; b=ssLWQd2T52Ghu1zVHe5Qn82f4ZxDtqi1VO1p+js7k4oIIp+bx2zvTnLlGLXpTdBNvJ075x Who0Oi2gDBU41iJ+B/q+9APXQxg3J5Bxs4J6BtiYx5AqkbU3hf/BC46kxMsCqousGyZ5SY flaMOBofMnR9r0e8cp+YFPJj4NRDzye3IlpWMLuTVcP0MwhrfzxiKsQjQTWRdRvur9Xc1I FJ1JFaJdY/K0d+AmR7SzZl+OcWZVYeXRXcgyTx7OoC6B8YTm+a7BuxnHPMyhAkVxjqTd4S 5ACWA7mf2p7tM0DWDl/FAjy57DV23OhSEugu4vSxGUXt/nQ8Y4bNgqOORi8Cbw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1651840905; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w4WGFGgH1Q4SMa5YoUWZ2bySKWWiAetNfZl+vB3w1g4=; b=riJkHFdnVFzB/la1KPv0CI9r4BICMN++8Ml01ZcLYycJNNN9rraIAh2kLzIUFbKq+2BP3h sc8fjh2VPp13xbDg== To: Marek Szyprowski , Petr Mladek Cc: Sergey Senozhatsky , Steven Rostedt , Thomas Gleixner , linux-kernel@vger.kernel.org, Greg Kroah-Hartman , "linux-arm-msm@vger.kernel.org" , Bjorn Andersson , Andy Gross Subject: Re: [PATCH printk v5 1/1] printk: extend console_lock for per-console locking In-Reply-To: References: <20220421212250.565456-1-john.ogness@linutronix.de> <20220421212250.565456-15-john.ogness@linutronix.de> <878rrs6ft7.fsf@jogness.linutronix.de> <2a82eae7-a256-f70c-fd82-4e510750906e@samsung.com> Date: Fri, 06 May 2022 14:47:43 +0206 Message-ID: <87h762lto8.fsf@jogness.linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-3.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,INVALID_DATE_TZ_ABSURD, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 On 2022-05-06, Marek Szyprowski wrote: > The Amlogic Meson related issue has been investigated and fixed: > > https://lore.kernel.org/all/b7c81f02-039e-e877-d7c3-6834728d2117@samsung.= com/ > > but I just found that there is one more issue. > > It appears on QCom-based DragonBoard 410c SBC=20 > (arch/arm64/boot/dts/qcom/apq8016-sbc.dts). To see it on today's linux=20 > next-20220506, one has to revert=20 > 42cd402b8fd4672b692400fe5f9eecd55d2794ac, otherwise lockdep triggers=20 > other warning and it is turned off too early: > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D > WARNING: inconsistent lock state > 5.18.0-rc5-next-20220506+ #11869 Not tainted > -------------------------------- > inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage. > swapper/0/0 [HC1[1]:SC0[0]:HE0:SE1] takes: > ffff80000aaa8478 (&port_lock_key){?.+.}-{2:2}, at: msm_uart_irq+0x38/0x750 > {HARDIRQ-ON-W} state was registered at: > =C2=A0 lock_acquire.part.0+0xe0/0x230 > =C2=A0 lock_acquire+0x68/0x84 > =C2=A0 _raw_spin_lock+0x5c/0x80 > =C2=A0 __msm_console_write+0x1ac/0x220 > =C2=A0 msm_console_write+0x48/0x60 > =C2=A0 __console_emit_next_record+0x188/0x420 > =C2=A0 printk_kthread_func+0x3a0/0x3bc > =C2=A0 kthread+0x118/0x11c > =C2=A0 ret_from_fork+0x10/0x20 > irq event stamp: 12182 > hardirqs last=C2=A0 enabled at (12181): []=20 > cpuidle_enter_state+0xc4/0x30c > > stack backtrace: > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.18.0-rc5-next-20220506+ #11869 > Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT) > Call trace: > =C2=A0dump_backtrace.part.0+0xd0/0xe0 > =C2=A0show_stack+0x18/0x6c > =C2=A0dump_stack_lvl+0x8c/0xb8 > =C2=A0dump_stack+0x18/0x34 > =C2=A0print_usage_bug.part.0+0x208/0x22c > =C2=A0mark_lock+0x710/0x954 > =C2=A0__lock_acquire+0x9fc/0x20cc > =C2=A0lock_acquire.part.0+0xe0/0x230 > =C2=A0lock_acquire+0x68/0x84 > =C2=A0_raw_spin_lock_irqsave+0x80/0xcc > =C2=A0msm_uart_irq+0x38/0x750 > =C2=A0__handle_irq_event_percpu+0xac/0x3d0 > =C2=A0handle_irq_event+0x4c/0x120 > =C2=A0handle_fasteoi_irq+0xa4/0x1a0 > =C2=A0generic_handle_domain_irq+0x3c/0x60 > =C2=A0gic_handle_irq+0x44/0xc4 > =C2=A0call_on_irq_stack+0x2c/0x54 > =C2=A0do_interrupt_handler+0x80/0x84 > =C2=A0el1_interrupt+0x34/0x64 > =C2=A0el1h_64_irq_handler+0x18/0x24 > =C2=A0el1h_64_irq+0x64/0x68 > =C2=A0cpuidle_enter_state+0xcc/0x30c > =C2=A0cpuidle_enter+0x38/0x50 > =C2=A0do_idle+0x22c/0x2bc > =C2=A0cpu_startup_entry+0x28/0x30 > =C2=A0rest_init+0x110/0x190 > =C2=A0arch_post_acpi_subsys_init+0x0/0x18 > =C2=A0start_kernel+0x6c4/0x704 > =C2=A0__primary_switched+0xc0/0xc8 > =C2=A0INIT: version 2.88 booting > [info] Using makefile-style concurrent boot in runlevel S. The console write() callback for the msm driver (__msm_console_write) assumes interrupts are off and is doing a spin_lock(&port->lock) rather than spin_lock_irqsave(&port->lock, flags). The following change should address the issue: John diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_seria= l.c index 23c94b927776..ab3f360bd354 100644 --- a/drivers/tty/serial/msm_serial.c +++ b/drivers/tty/serial/msm_serial.c @@ -1599,6 +1599,7 @@ static inline struct uart_port *msm_get_port_from_lin= e(unsigned int line) static void __msm_console_write(struct uart_port *port, const char *s, unsigned int count, bool is_uartdm) { + unsigned long flags; int i; int num_newlines =3D 0; bool replaced =3D false; @@ -1621,7 +1622,7 @@ static void __msm_console_write(struct uart_port *por= t, const char *s, else if (oops_in_progress) locked =3D spin_trylock(&port->lock); else - spin_lock(&port->lock); + spin_lock_irqsave(&port->lock, flags); =20 if (is_uartdm) msm_reset_dm_count(port, count); @@ -1660,7 +1661,7 @@ static void __msm_console_write(struct uart_port *por= t, const char *s, } =20 if (locked) - spin_unlock(&port->lock); + spin_unlock_irqrestore(&port->lock, flags); } =20 static void msm_console_write(struct console *co, const char *s,