Patch "watchdog/perf: more properly prevent false positives with turbo modes" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    watchdog/perf: more properly prevent false positives with turbo modes

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     watchdog-perf-more-properly-prevent-false-positives-.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit e2905033dff78f08fe660d4115a13ee9bacfe8b8
Author: Douglas Anderson <dianders@xxxxxxxxxxxx>
Date:   Fri May 19 10:18:26 2023 -0700

    watchdog/perf: more properly prevent false positives with turbo modes
    
    [ Upstream commit 4379e59fe5665cfda737e45b8bf2f05321ef049c ]
    
    Currently, in the watchdog_overflow_callback() we first check to see if
    the watchdog had been touched and _then_ we handle the workaround for
    turbo mode.  This order should be reversed.
    
    Specifically, "touching" the hardlockup detector's watchdog should avoid
    lockups being detected for one period that should be roughly the same
    regardless of whether we're running turbo or not.  That means that we
    should do the extra accounting for turbo _before_ we look at (and clear)
    the global indicating that we've been touched.
    
    NOTE: this fix is made based on code inspection.  I am not aware of any
    reports where the old code would have generated false positives.  That
    being said, this order seems more correct and also makes it easier down
    the line to share code with the "buddy" hardlockup detector.
    
    Link: https://lkml.kernel.org/r/20230519101840.v5.2.I843b0d1de3e096ba111a179f3adb16d576bef5c7@changeid
    Fixes: 7edaeb6841df ("kernel/watchdog: Prevent false positives with turbo modes")
    Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
    Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx>
    Cc: Catalin Marinas <catalin.marinas@xxxxxxx>
    Cc: Chen-Yu Tsai <wens@xxxxxxxx>
    Cc: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
    Cc: Colin Cross <ccross@xxxxxxxxxxx>
    Cc: Daniel Thompson <daniel.thompson@xxxxxxxxxx>
    Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>
    Cc: Guenter Roeck <groeck@xxxxxxxxxxxx>
    Cc: Ian Rogers <irogers@xxxxxxxxxx>
    Cc: Lecopzer Chen <lecopzer.chen@xxxxxxxxxxxx>
    Cc: Marc Zyngier <maz@xxxxxxxxxx>
    Cc: Mark Rutland <mark.rutland@xxxxxxx>
    Cc: Masayoshi Mizuma <msys.mizuma@xxxxxxxxx>
    Cc: Matthias Kaehlcke <mka@xxxxxxxxxxxx>
    Cc: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
    Cc: Nicholas Piggin <npiggin@xxxxxxxxx>
    Cc: Petr Mladek <pmladek@xxxxxxxx>
    Cc: Pingfan Liu <kernelfans@xxxxxxxxx>
    Cc: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
    Cc: "Ravi V. Shankar" <ravi.v.shankar@xxxxxxxxx>
    Cc: Ricardo Neri <ricardo.neri@xxxxxxxxx>
    Cc: Stephane Eranian <eranian@xxxxxxxxxx>
    Cc: Stephen Boyd <swboyd@xxxxxxxxxxxx>
    Cc: Sumit Garg <sumit.garg@xxxxxxxxxx>
    Cc: Tzung-Bi Shih <tzungbi@xxxxxxxxxxxx>
    Cc: Will Deacon <will@xxxxxxxxxx>
    Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/kernel/watchdog_hld.c b/kernel/watchdog_hld.c
index 247bf0b1582ca..1e8a49dc956e2 100644
--- a/kernel/watchdog_hld.c
+++ b/kernel/watchdog_hld.c
@@ -114,14 +114,14 @@ static void watchdog_overflow_callback(struct perf_event *event,
 	/* Ensure the watchdog never gets throttled */
 	event->hw.interrupts = 0;
 
+	if (!watchdog_check_timestamp())
+		return;
+
 	if (__this_cpu_read(watchdog_nmi_touch) == true) {
 		__this_cpu_write(watchdog_nmi_touch, false);
 		return;
 	}
 
-	if (!watchdog_check_timestamp())
-		return;
-
 	/* check for a hardlockup
 	 * This is done by making sure our timer interrupt
 	 * is incrementing.  The timer interrupt should have



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux