From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 59EB8233955 for ; Sun, 19 Jul 2026 06:36:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784442991; cv=none; b=teVXLh9bQqDsu3b4bDt0fcotm5mNMyEnzifDHwurLylIQsk1//JrPMFQ+Vt/vce5hAGqKj90EvBILxtMgC/aRpZw2kBHkUsEE2ntfQrm+7XWGm1MjzUWmHaNp7F/wJVjaV/+H8wHmVD4JrWauYUbeUSP9uu0DyRF8tf0guxE6Ro= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784442991; c=relaxed/simple; bh=3cHYNNdF0JxPczIb6stDSck7qiEQvP2yK54kglp0nTI=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=C5SRcluVBOyt2m8VnzJWWfWe1obzok6MVryC6XW6USehQZGBOFE/vEflxn8UDIBVZ0v+qt4XhBHnZQRqMgG+A3phZ7KevgQEzF0ExVTwpw6GkJZoVpzFxNCqo5IjpoJYBmQceVdqkTeFqUgOSMqCpbMvTg35sEE52Z+l8BO3q+Q= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=el0JIgOa; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="el0JIgOa" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4955158f26aso5366515e9.3 for ; Sat, 18 Jul 2026 23:36:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784442988; x=1785047788; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=gGAR8aGiBoBWo964VuxC9unxOU3E2crPFC6OtuASy+A=; b=el0JIgOa0rIT9+nzeBRB/BvqY9Gy9VgqlQOrGiJ3oba7/MsR/P2cIe0KUsZiFznULN r83U1cjKr7JW2ROtVgRsMDIYKAiGjzVu1FdTF2gFz+QEujanD3GLz0Gz1115ghW4YpnU VJ2YgXeP8IzLkg3Gc200ufGrLBS6JIhlCmWHvfVBNW/0b0Gh+JGcOVfLucUxGO1/HZLG 1lWvSa9fGKqMUYV25T7K436OaHNpKDuZ6fw1XU15UNayvo6pGPspx+s2KeRB/WcDwhpf 2mPGYRj+6Ae7sfeemOXpA9WEsEK84Tx14E4VN/mKp/3Lxq32aPuPRDpiLeC4zo/BRvKS 6TLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784442988; x=1785047788; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=gGAR8aGiBoBWo964VuxC9unxOU3E2crPFC6OtuASy+A=; b=gp3VWxXtwLfi8NfvckwxM/Y8aeQ8aZx+4hogVdpaLbWyhKnWRemizsXizDI+dmRFKW GFzeOYjv/2s5CtKMcBXCfK/HY8adC1f3zkqVB9jWiwlkYThVyif+ostHzkmD38oDdGtn bvMypk3d/lAPRQfmk69xM34jRU9mTHpXRJVeKXFY9p61tTxrfIM0Mu6oj8SQVStzajhs Ii090QJLChvtU0LGl+XZQEKSfXBFzaF8O/pEumOFoQBasKx5gsgqBNZNYdIJCEe309tU M7lloij4n1zEnWML2Q1yn6ayT3MXlu6bl9v5HPcgofo0vLFW6keWtiXVhA3cdjU7YkeX Qh5w== X-Forwarded-Encrypted: i=1; AHgh+RqknsnLPx65+MBKOa5OohsHR14qgjBlnNJ/ZdPOFGcR2ANZHmQeSviAQez6ZKTm+bGcbidfEp8p6ipQbAs=@vger.kernel.org X-Gm-Message-State: AOJu0YzkpVI5VxuBqsvE5Mnmfl0XI9Gw9e2Iga9f2LPv4aKUZ56EQPY6 h8y8ZaCJ/luSteQStmIO3VNqGqEzwJjtRFJcpLn9oCDjOCaoLI0rHIwY X-Gm-Gg: AfdE7cn2/XQDaDVOXap9soaya7jbdhrh66Lxi1/YMREgZw4ZDrZnL2rxvx03fTXkH2C T3jM8BOvo9wCLZwLPdWvGbm5fGGONs5e0Fok3+ppnwf0gFYBj3YPqrvgEGQlGNzwtF7HvJjyu1W zXlSnnuRwZmVms+vYyxYxlVn8MGRybsshIzqUL59JmOi2I3+9dJ4Qf3So+9+oByw9E3XbILM1e2 gklFy+qTRQ+J/xvB3uxVIghu8M8cEEF4rBWQ9a0xMdCUW6DKGzeu2sp0N7Gc59zzbtxLqoO3gKQ r42Ft83dukj8Omu8Z5rbGKee2LaqOsWBgfQ9oUCKJReB7k3djC92P96FumoV8RE0N78mpGFf4qu FFSK8TAZ1iTENvoshW39rs9dyAdjHEbN8c1Qc+GtYuKCYkPwaOunbdSMWOQyL22X/TlWhQYVXYO c2XmUkgkpRjMaz4U/pcHQtCN3FNUZu34iUIwX7d/fKIbZKft3AvjCU+jaKb3j8bqwAfIitYGBOL bHY5SF1/wYdYtWt8mz4PU/HFFIGuzdiWYlJ0j8= X-Received: by 2002:a05:600c:4e94:b0:495:571e:e5d3 with SMTP id 5b1f17b1804b1-495571ee75fmr23066555e9.36.1784442988176; Sat, 18 Jul 2026 23:36:28 -0700 (PDT) Received: from localhost.localdomain (dynamic-077-007-018-194.77.7.pool.telefonica.de. [77.7.18.194]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49549c96f19sm193053245e9.9.2026.07.18.23.36.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sat, 18 Jul 2026 23:36:27 -0700 (PDT) From: Karl Mehltretter To: Russell King , Greg Kroah-Hartman , Jiri Slaby Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt , linux-rt-devel@lists.linux.dev, Toshiyuki Sato , Petr Mladek , John Ogness , Karl Mehltretter Subject: [PATCH 0/2] serial: amba-pl011: fix console clock lifetime Date: Sun, 19 Jul 2026 08:35:00 +0200 Message-Id: <20260719063502.18852-1-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Patch 1 fixes an independent bug: pl011_console_setup() prepares the UART clock but nothing releases it when the console is unregistered, so the clock's prepare count leaks one reference per registration cycle (via the sysfs "console" attribute or a driver unbind). It adds the missing console .exit() and stands on its own. Patch 2 fixes a PREEMPT_RT failure: pl011_console_write_atomic() runs in nbcon atomic context but calls clk_enable(), which under RT can acquire a sleeping lock, so an atomic-context printk on a clk-backed pl011 can hit "sleeping function called from invalid context". The same lock acquisition would also be unsafe if write_atomic() is invoked from NMI context. It keeps the clock enabled while the console is registered and releases it in .exit(); it depends on patch 1. Tested on QEMU: the prepare-count leak was reproduced and fixed on bcm2835 (a gateable CPRMAN UART clock), and the PREEMPT_RT splat was reproduced and fixed on versatilepb. With the series applied, recycling the console via the sysfs attribute keeps both the prepare and enable counts balanced, and the console keeps working after re-registration. Karl Mehltretter (2): serial: amba-pl011: unprepare console clock on unregister serial: amba-pl011: keep console clock enabled for atomic writes drivers/tty/serial/amba-pl011.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) -- 2.53.0