From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qt1-f175.google.com (mail-qt1-f175.google.com [209.85.160.175]) (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 C55F932ED4E for ; Sun, 2 Aug 2026 23:35:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785713736; cv=none; b=RlxsUcfe+24QFnhHynqN2pIYm8ereEWaZ01xMWCe8Wpaq6E0PP2cdmRupqFzziBl8h8orsKDGc+64blKL9928X76HAy2s72BKBbzMjtrRPHzkEJI/7bWmpigxGVNRljedBcRKHu0H+l0GzeHW0Sg3Z1Pb4AjxPkncKUn6jWXozM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785713736; c=relaxed/simple; bh=DrC66QymEO9nAP2JwTUCuXUxnRrbolFKst7vhgyU2Sk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=VjfArduTB0owDsik1DyZ1EwAeb2NR48RTk0WQYl7H4MgMQo84ihdxIoo7a4soBXdLxZw2zAhnT+xSWYLFrXQY3zVVZyUSqJVls+YWSwsuOWFnNQbhWccb8fEaIkR7diJ9I21q5q/Joth3c1yU/4mYyPqILLiuEIE/r5wYDLrU9s= 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=Bjn4o48h; arc=none smtp.client-ip=209.85.160.175 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="Bjn4o48h" Received: by mail-qt1-f175.google.com with SMTP id d75a77b69052e-51c04bf4711so24695621cf.2 for ; Sun, 02 Aug 2026 16:35:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785713734; x=1786318534; 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=bhLsx2yXoOqDNB+btFBoUrdkWjE1+pOOwEBMJSftsog=; b=Bjn4o48hq/BRkcIPgh440idMEE/w5tCVOVLK70dwoI61DJG/Ix+Alcg2JF2uQVsfQH IFX533ns1zY/3sjuOWQHYtASa/Da3yX4sar+wd4Zd2Ew0lYKiL9JFrh0GeYdw0wmassP gYgz3aA+ZNsfO3KN/Tz3j3UajFooxNOKr9mO1G/TVQJM6nouGmyJkyPF5GasZMS0+cV6 r6G2wJNzT7nAtVjNjqa7qkf1hjT+wJwr7E20FvE/eCB5FVs60nccqdOv/ydb4CCntKUd dh7fQeNa3DzLJrxz5n7RIOWsGYjOoSX+bZjiHUTrL9GMn5F+0oE3fXVmBv+gAoRuZbcw R94g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785713734; x=1786318534; 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=bhLsx2yXoOqDNB+btFBoUrdkWjE1+pOOwEBMJSftsog=; b=KpNne54BahHbJXwQDJLSFG2bPl6qC0THWu2xK23lRKhzAH5AwLYjp0xPk92vAzqd96 MNnW83Vxdnz/V0v9e0Qr/CtKGiXNDifattTLE0yg12BiA/p24Qpmqz89gN99MCFHWX0X Pbmjf/EOBlx4MwVpWiOztuysJOtQ1i75s9rP8vQvWJ+3jCWX5/k06ISqIfYx/dOFeK2i PKpGuRztsSP5f8PDxyLsau7+SQjWl+HIQ/n328Tpt5uAIkwV4Sa0BINrdf7F8o8mD7RQ bc2QnVyeThsOgckM+WRbkTjVOIInq3CIZufTpCf4CkQxNNBoA8dMZ540CO0hElYOoWLc VdAw== X-Forwarded-Encrypted: i=1; AHgh+Rr1/7cposGzVl/B2Vv6f8EJE/XeQ9AAODlQLyJR/pHembFcJzzvCiLSH9cn3ST4/azlJqh/rBtwzihCeis=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0of52y2ePdMNlIUCJHkmV8/oEgqvmxz70Z6pD+9vFRZg+OE8f JVyYKURteHJogqtsSENLPhlTJNhJIjVtXgMaCwieveGoxQWzzmbKFQyP X-Gm-Gg: AR+sD13enfxIYiIlQhdQPAHbURi35ZbgSTgte6NQZVxL5VMVoBtqR4pBe9T3X9PzUUk mxrTy0SHzMpiHGJDiYFswpNgkokyf6mAMqUhQC6RUNq+U16DdQuRjSxJbkbOyaK46U0Ec/JhU/z p+RCl0b/9xTAUfeR6AAsw+XeGlsqbPaG8s+9JMdonPGGllGGzhMZ7P3HBS3IOBKIF3psYlJzR8w OECGd3qgsUBdRH7/vKGby3ML8VfIoe83sZ1U+TlZmmhR5UP7JW/exLqm04EBCRIEkTnuXBZqVKb WT6AiVvkWMDftYxTqVDpZnD7uYeJEbYdmCzP7yA23Wz6YMGGfnm3SfR4wiR98a0eSGHFiJ+NLOW zvnQZy5754yg5V+AmX90BiLb6khbY5TgyjSuEA03fWBlwCJkJSln5Eash9hE/Gh1SZJlbb+0KF5 vZE5Ktx51Wvv7w2V8r29eXLlU8BCYQ1iVEl1LhCmQO/TFSAjXNlh7xKU3liKiJGm1+p7t2SLrNJ XGsgPdWAPIw5EUMZ+oXi1Nlo7VvAljoHY3flCpCIlmwFMxd4g8jBgF6qqj4iAs/06FdgVkwlRc= X-Received: by 2002:a05:622a:2613:b0:51a:8dc5:bf89 with SMTP id d75a77b69052e-52b5666ccedmr169933671cf.5.1785713733710; Sun, 02 Aug 2026 16:35:33 -0700 (PDT) Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-908435ed43esm63242606d6.40.2026.08.02.16.35.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 16:35:32 -0700 (PDT) From: Yuho Choi To: daniel.lezcano@kernel.org Cc: tglx@kernel.org, thierry.reding@kernel.org, jonathanh@nvidia.com, linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org, Yuho Choi Subject: [PATCH v1] clocksource/drivers/tegra: Unwind timer setup on CPUHP failure Date: Sun, 2 Aug 2026 19:35:29 -0400 Message-ID: <20260802233529.598707-1-dbgh9129@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The Tegra timer requests per-CPU interrupts before registering its CPU hotplug state. If cpuhp_setup_state() fails, the function returns directly and leaves the requested interrupts registered. Register the CPU hotplug state before registering the sched clock and clocksource. On failure, unwind through the existing IRQ cleanup path so that no registered clocksource is left pointing at an unmapped timer base. Fixes: b4822dc7564f ("clocksource/drivers/tegra: Add Tegra210 timer support") Signed-off-by: Yuho Choi --- drivers/clocksource/timer-tegra.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/clocksource/timer-tegra.c b/drivers/clocksource/timer-tegra.c index 35b6ce9deffa..bfcd0a57d856 100644 --- a/drivers/clocksource/timer-tegra.c +++ b/drivers/clocksource/timer-tegra.c @@ -331,6 +331,14 @@ static int __init tegra_init_timer(struct device_node *np, bool tegra20, } } + ret = cpuhp_setup_state(CPUHP_AP_TEGRA_TIMER_STARTING, + "AP_TEGRA_TIMER_STARTING", tegra_timer_setup, + tegra_timer_stop); + if (ret) { + pr_err("failed to set up cpu hp state: %d\n", ret); + goto out_irq; + } + sched_clock_register(tegra_read_sched_clock, 32, TIMER_1MHz); ret = clocksource_mmio_init(timer_reg_base + TIMERUS_CNTR_1US, @@ -343,13 +351,7 @@ static int __init tegra_init_timer(struct device_node *np, bool tegra20, register_current_timer_delay(&tegra_delay_timer); #endif - ret = cpuhp_setup_state(CPUHP_AP_TEGRA_TIMER_STARTING, - "AP_TEGRA_TIMER_STARTING", tegra_timer_setup, - tegra_timer_stop); - if (ret) - pr_err("failed to set up cpu hp state: %d\n", ret); - - return ret; + return 0; out_irq: for_each_possible_cpu(cpu) { -- 2.43.0