From: Pohsun Su <pohsuns@nvidia.com>
This change removes watchdog self-pinging behavior.
The timer irq handler is triggered due to the 1st expiration,
the handler disables and enables watchdog but also implicitly
clears the expiration count so the count can only be 0 or 1.
Since this watchdog supports opened, configured, or pinged by
systemd, We remove this behavior or the watchdog may not bark
when systemd crashes since the 5th expiration never comes.
Signed-off-by: Pohsun Su <pohsuns@nvidia.com>
Signed-off-by: Robert Lin <robelin@nvidia.com>
---
drivers/clocksource/timer-tegra186.c | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/drivers/clocksource/timer-tegra186.c b/drivers/clocksource/timer-tegra186.c
index fc2ca86c1436..3967d023781b 100644
--- a/drivers/clocksource/timer-tegra186.c
+++ b/drivers/clocksource/timer-tegra186.c
@@ -175,9 +175,6 @@ static void tegra186_wdt_enable(struct tegra186_wdt *wdt)
value &= ~WDTCR_PERIOD_MASK;
value |= WDTCR_PERIOD(1);
- /* enable local interrupt for WDT petting */
- value |= WDTCR_LOCAL_INT_ENABLE;
-
/* enable local FIQ and remote interrupt for debug dump */
if (0)
value |= WDTCR_REMOTE_INT_ENABLE |
@@ -417,18 +414,6 @@ static int tegra186_timer_usec_init(struct tegra186_timer *tegra)
return clocksource_register_hz(&tegra->usec, USEC_PER_SEC);
}
-static irqreturn_t tegra186_timer_irq(int irq, void *data)
-{
- struct tegra186_timer *tegra = data;
-
- if (watchdog_active(&tegra->wdt->base)) {
- tegra186_wdt_disable(tegra->wdt);
- tegra186_wdt_enable(tegra->wdt);
- }
-
- return IRQ_HANDLED;
-}
-
static int tegra186_timer_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
@@ -480,17 +465,8 @@ static int tegra186_timer_probe(struct platform_device *pdev)
goto unregister_osc;
}
- err = devm_request_irq(dev, irq, tegra186_timer_irq, 0,
- "tegra186-timer", tegra);
- if (err < 0) {
- dev_err(dev, "failed to request IRQ#%u: %d\n", irq, err);
- goto unregister_usec;
- }
-
return 0;
-unregister_usec:
- clocksource_unregister(&tegra->usec);
unregister_osc:
clocksource_unregister(&tegra->osc);
unregister_tsc:
--
2.34.1
On Mon, Apr 07, 2025 at 06:23:22PM +0800, Robert Lin wrote: > From: Pohsun Su <pohsuns@nvidia.com> > > This change removes watchdog self-pinging behavior. > > The timer irq handler is triggered due to the 1st expiration, > the handler disables and enables watchdog but also implicitly > clears the expiration count so the count can only be 0 or 1. > > Since this watchdog supports opened, configured, or pinged by > systemd, We remove this behavior or the watchdog may not bark > when systemd crashes since the 5th expiration never comes. > > Signed-off-by: Pohsun Su <pohsuns@nvidia.com> > Signed-off-by: Robert Lin <robelin@nvidia.com> > --- > drivers/clocksource/timer-tegra186.c | 24 ------------------------ > 1 file changed, 24 deletions(-) Yeah, in retrospect this doesn't make sense: Acked-by: Thierry Reding <treding@nvidia.com>
Hi Robert,
kernel test robot noticed the following build warnings:
[auto build test WARNING on tip/timers/core]
[also build test WARNING on linus/master v6.15-rc1 next-20250408]
[cannot apply to daniel-lezcano/clockevents/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Robert-Lin/clocksource-drivers-timer-tegra186-add-WDIOC_GETTIMELEFT-support/20250407-182954
base: tip/timers/core
patch link: https://lore.kernel.org/r/20250407102323.2690911-3-robelin%40nvidia.com
patch subject: [PATCH v3 2/3] clocksource/drivers/timer-tegra186: fix watchdog self-pinging
config: sh-randconfig-001-20250408 (https://download.01.org/0day-ci/archive/20250408/202504081506.0KaQZjFQ-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 13.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250408/202504081506.0KaQZjFQ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202504081506.0KaQZjFQ-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/clocksource/timer-tegra186.c: In function 'tegra186_timer_probe':
>> drivers/clocksource/timer-tegra186.c:420:22: warning: variable 'irq' set but not used [-Wunused-but-set-variable]
420 | unsigned int irq;
| ^~~
vim +/irq +420 drivers/clocksource/timer-tegra186.c
42cee19a9f839f Thierry Reding 2022-07-04 415
42cee19a9f839f Thierry Reding 2022-07-04 416 static int tegra186_timer_probe(struct platform_device *pdev)
42cee19a9f839f Thierry Reding 2022-07-04 417 {
42cee19a9f839f Thierry Reding 2022-07-04 418 struct device *dev = &pdev->dev;
42cee19a9f839f Thierry Reding 2022-07-04 419 struct tegra186_timer *tegra;
42cee19a9f839f Thierry Reding 2022-07-04 @420 unsigned int irq;
42cee19a9f839f Thierry Reding 2022-07-04 421 int err;
42cee19a9f839f Thierry Reding 2022-07-04 422
42cee19a9f839f Thierry Reding 2022-07-04 423 tegra = devm_kzalloc(dev, sizeof(*tegra), GFP_KERNEL);
42cee19a9f839f Thierry Reding 2022-07-04 424 if (!tegra)
42cee19a9f839f Thierry Reding 2022-07-04 425 return -ENOMEM;
42cee19a9f839f Thierry Reding 2022-07-04 426
42cee19a9f839f Thierry Reding 2022-07-04 427 tegra->soc = of_device_get_match_data(dev);
42cee19a9f839f Thierry Reding 2022-07-04 428 dev_set_drvdata(dev, tegra);
42cee19a9f839f Thierry Reding 2022-07-04 429 tegra->dev = dev;
42cee19a9f839f Thierry Reding 2022-07-04 430
42cee19a9f839f Thierry Reding 2022-07-04 431 tegra->regs = devm_platform_ioremap_resource(pdev, 0);
42cee19a9f839f Thierry Reding 2022-07-04 432 if (IS_ERR(tegra->regs))
42cee19a9f839f Thierry Reding 2022-07-04 433 return PTR_ERR(tegra->regs);
42cee19a9f839f Thierry Reding 2022-07-04 434
42cee19a9f839f Thierry Reding 2022-07-04 435 err = platform_get_irq(pdev, 0);
42cee19a9f839f Thierry Reding 2022-07-04 436 if (err < 0)
42cee19a9f839f Thierry Reding 2022-07-04 437 return err;
42cee19a9f839f Thierry Reding 2022-07-04 438
42cee19a9f839f Thierry Reding 2022-07-04 439 irq = err;
42cee19a9f839f Thierry Reding 2022-07-04 440
42cee19a9f839f Thierry Reding 2022-07-04 441 /* create a watchdog using a preconfigured timer */
42cee19a9f839f Thierry Reding 2022-07-04 442 tegra->wdt = tegra186_wdt_create(tegra, 0);
42cee19a9f839f Thierry Reding 2022-07-04 443 if (IS_ERR(tegra->wdt)) {
42cee19a9f839f Thierry Reding 2022-07-04 444 err = PTR_ERR(tegra->wdt);
42cee19a9f839f Thierry Reding 2022-07-04 445 dev_err(dev, "failed to create WDT: %d\n", err);
42cee19a9f839f Thierry Reding 2022-07-04 446 return err;
42cee19a9f839f Thierry Reding 2022-07-04 447 }
42cee19a9f839f Thierry Reding 2022-07-04 448
42cee19a9f839f Thierry Reding 2022-07-04 449 err = tegra186_timer_tsc_init(tegra);
42cee19a9f839f Thierry Reding 2022-07-04 450 if (err < 0) {
42cee19a9f839f Thierry Reding 2022-07-04 451 dev_err(dev, "failed to register TSC counter: %d\n", err);
42cee19a9f839f Thierry Reding 2022-07-04 452 return err;
42cee19a9f839f Thierry Reding 2022-07-04 453 }
42cee19a9f839f Thierry Reding 2022-07-04 454
42cee19a9f839f Thierry Reding 2022-07-04 455 err = tegra186_timer_osc_init(tegra);
42cee19a9f839f Thierry Reding 2022-07-04 456 if (err < 0) {
42cee19a9f839f Thierry Reding 2022-07-04 457 dev_err(dev, "failed to register OSC counter: %d\n", err);
42cee19a9f839f Thierry Reding 2022-07-04 458 goto unregister_tsc;
42cee19a9f839f Thierry Reding 2022-07-04 459 }
42cee19a9f839f Thierry Reding 2022-07-04 460
42cee19a9f839f Thierry Reding 2022-07-04 461 err = tegra186_timer_usec_init(tegra);
42cee19a9f839f Thierry Reding 2022-07-04 462 if (err < 0) {
42cee19a9f839f Thierry Reding 2022-07-04 463 dev_err(dev, "failed to register USEC counter: %d\n", err);
42cee19a9f839f Thierry Reding 2022-07-04 464 goto unregister_osc;
42cee19a9f839f Thierry Reding 2022-07-04 465 }
42cee19a9f839f Thierry Reding 2022-07-04 466
42cee19a9f839f Thierry Reding 2022-07-04 467 return 0;
42cee19a9f839f Thierry Reding 2022-07-04 468
42cee19a9f839f Thierry Reding 2022-07-04 469 unregister_osc:
42cee19a9f839f Thierry Reding 2022-07-04 470 clocksource_unregister(&tegra->osc);
42cee19a9f839f Thierry Reding 2022-07-04 471 unregister_tsc:
42cee19a9f839f Thierry Reding 2022-07-04 472 clocksource_unregister(&tegra->tsc);
42cee19a9f839f Thierry Reding 2022-07-04 473 return err;
42cee19a9f839f Thierry Reding 2022-07-04 474 }
42cee19a9f839f Thierry Reding 2022-07-04 475
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
© 2016 - 2026 Red Hat, Inc.