From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (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 2BB983EDE56 for ; Fri, 24 Jul 2026 21:34:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784928847; cv=none; b=JnjzzUk4WcBV8hkM9lomzW5FtUL3coY3+HpsKhd1OWx9m8DErFIhPgwFU9BsD5HqMxayJS3fQa45dxUiIJlN/WF6zCegcYo1N0D13pSrtZQ9J+Re0SfcVJ0EkZB1/Tol3Tbu1kwQg8/KV1d4xlfDeJxIoAlnpxLzs1GBweLXgrg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784928847; c=relaxed/simple; bh=L8/5qgDEjoP17OJ0HMJ/A3XES9LvHVdVUJiHHaCp36M=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=n5J6WgYu3qDs9OLo+RttBUx1BkTyWB2JyJRno8zJKeIy7drs6LZcQ8b39ze1pLrbyV2I4TsN+Kvhce8nVLb6OtGPrSewxN0Cck6LHmtzhDlWKVGbUS9RhTLO2j+DsMhc7078j8bfCIfM406VWGokyz9tx4pCa85WPmtfjXyT5M4= 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=MztzKEnZ; arc=none smtp.client-ip=209.85.128.49 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="MztzKEnZ" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-49553515a8bso10289765e9.1 for ; Fri, 24 Jul 2026 14:34:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784928844; x=1785533644; 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=WOnGh4nCACqtC0cvfPaQrFlO41pTulyeZNkgwFh3MsI=; b=MztzKEnZrbFmabIKtUXA7T4m362qzA+q/nUZJ+Bx5fkRiQzjIBur7bomZ9Feg47sjv xVH7OSM3sGxvT1rvs6/8jAScSurDOP8ZnCaUWipHBcMzH4IuUSwen9A/IZP8hEljLeDB sF5WsOPO6Zjr/G83H/fK5GGfY+EQDBEevrhe+ug7orBoX5zC2vToyDMiXfJqsmVU9laE 7cZePTWzG/RJS8tecW0eyd+9JB6DclN3kDCAaRkeT7wZe6/+CR4Io2ocjyGWZyna6DVq I1Va2tqSMwBH1MIs+o1ZM99iF1tqSXyu06UwlVoxdw/rEUhdQp+kqBkvYCbvree0Kk8w pItQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784928844; x=1785533644; 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=WOnGh4nCACqtC0cvfPaQrFlO41pTulyeZNkgwFh3MsI=; b=JIGIyMtcYYwM/2C/Hznas0wL8e7qmuv1i8hT7F8vFIrYKoSI4lQtlGgAindxfLdJHR 6EPPbcGjhaqbXiBPdgPgOavIXMCi3UNgbGLfDv+fk5KrZzIm3CLD5TidgSkI4bnqNd0q fAqs/UIGN7uq716JIvXxX//fLn0/4WMLK5k1MLtdXlZSEhONlDXAq/GrKJvQdfWJh1FC 5GpKYB9EnvIraTk9R9pvLO3Sf+B6BxkPV+JEx79TLeleh6Xf14o1ZrHktFR1Ok01KZGn 8K/Kt+j3XZRFWcPaxs0D+G6dfXA7ESRVfmxoyS8B9OCaF9a9uYysAA/N/PvDyN/ljlwL A2kw== X-Forwarded-Encrypted: i=1; AHgh+RoVZTOitsG+j1yf9Ev0zgfau6kMsHeyZ8AdMm5y/XXpl+Hzsm4UJJ9S7ISEntKVNcI9Z77L7KzIKRLTv3Y=@vger.kernel.org X-Gm-Message-State: AOJu0Yy5/FBv2GZEfSZ6vCH1UXtRn+z8WSFLUNAauoWPdsHgArl3EXS2 zJvtTxsPi66rzWmZYU2XXEcXjCMCMLn8fQOSZFCFTKCx4q15O5UYiI65 X-Gm-Gg: AR+sD12MjP6gu+IiJ5QSYoNt4qvi5jlcD2oRknSOnYBHIImdrEGXtf7znN4lWQtDse5 KekwDjjSairQ7Px0SYhXUso0ot+gDpslEuxc3RdtAw7CU8XK/GnQ4H1ZErYUQqdJ/nFHpjRodiv Ntpme5ArUOHht9IJUMQMOdRTFi4F9qUcDMlt0oFgdquGpWvA6I6uODqbLbEhRzYmrK7lA60CLzu qWPAf+xzBvmglRfBKRM/YlWnVtYEXFemEuCLUO/8+RTOdGk+3UOOw+FqkIyDOwIPGQOzx3srCFq k0Z7UQeql0cjHenut0MwBwEQSGdJ60Dk6myKDaW2MvNOTkVmQFJacq2aB0hduT6Ggm/MJq2ZPOl I7snCdzOYKrwbQRnhssgmOIZrDPsEO8ekAGQnpzh4gM6EsBqIE4kOr6bJ+NWMXeN2Hw+yiKQVsc U0ohDjPEb0NGvUZtONmGwbVlGOUcF2CfFWPaRxq68otcVwTuJJv52dMyNMPLFF7bx64NKflJjbe S5JxNQu1hZhP687lSakXW2LQRolI2WUWSBTvrZNwyVHI53RxDYWA2oE1zsRWKAAd9PBlTPAuCyp q4L1mdUT5hFywQ== X-Received: by 2002:a05:600c:870c:b0:493:f7c8:eae2 with SMTP id 5b1f17b1804b1-496b56f9749mr527725e9.15.1784928844090; Fri, 24 Jul 2026 14:34:04 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-ae93-f301-cdd9-d5ea-080d-9131.310.pool.telefonica.de. [2a02:3100:ae93:f301:cdd9:d5ea:80d:9131]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-496b499cc49sm20754015e9.9.2026.07.24.14.34.03 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 24 Jul 2026 14:34:03 -0700 (PDT) From: Karl Mehltretter To: Russell King , Greg Kroah-Hartman , Jiri Slaby Cc: Karl Mehltretter , linux-arm-kernel@lists.infradead.org, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Sebastian Andrzej Siewior , John Ogness , Petr Mladek , Steven Rostedt , Clark Williams , Toshiyuki Sato Subject: [PATCH v2 0/2] serial: amba-pl011: fix console clock lifetime Date: Fri, 24 Jul 2026 23:33:46 +0200 Message-Id: <20260724213348.77418-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 unregister. 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. It keeps the clock enabled while the console is available for output and releases it in .exit(); it depends on patch 1. Changes in v2: - Add suspend/resume management for the persistent clock reference. - Keep the reference for no_console_suspend and RX-wakeup ports. - Document the platform-dependent power impact. Patch 1 is unchanged. Tested in QEMU on raspi1ap, raspi2b, and RealView ARMv6 SMP, and on arm64 virt under PREEMPT_RT. Actual s2idle suspend/resume (RTC-wake) dropped and restored the PL011 clock reference, balanced across repeated cycles, while wake-capable and no_console_suspend cases kept it enabled. Strict clock checking found no access while stopped, and RX behaved as expected. Toggling /sys/class/tty/ttyAMA0/console showed the prepare-count leak without patch 1 and a balanced count with it. Full-platform-sleep and actual RX-wakeup were not exercised. 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 | 53 ++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 11 deletions(-) -- 2.53.0