diff options
Diffstat (limited to 'kernel/trace/trace_hwlat.c')
| -rw-r--r-- | kernel/trace/trace_hwlat.c | 15 | 
1 files changed, 9 insertions, 6 deletions
diff --git a/kernel/trace/trace_hwlat.c b/kernel/trace/trace_hwlat.c index 862f4b0139fc..6638d63f0921 100644 --- a/kernel/trace/trace_hwlat.c +++ b/kernel/trace/trace_hwlat.c @@ -1,6 +1,6 @@  // SPDX-License-Identifier: GPL-2.0  /* - * trace_hwlatdetect.c - A simple Hardware Latency detector. + * trace_hwlat.c - A simple Hardware Latency detector.   *   * Use this tracer to detect large system latencies induced by the behavior of   * certain underlying system hardware or firmware, independent of Linux itself. @@ -237,6 +237,7 @@ static int get_sample(void)  	/* If we exceed the threshold value, we have found a hardware latency */  	if (sample > thresh || outer_sample > thresh) {  		struct hwlat_sample s; +		u64 latency;  		ret = 1; @@ -253,11 +254,13 @@ static int get_sample(void)  		s.nmi_count = nmi_count;  		trace_hwlat_sample(&s); +		latency = max(sample, outer_sample); +  		/* Keep a running maximum ever recorded hardware latency */ -		if (sample > tr->max_latency) -			tr->max_latency = sample; -		if (outer_sample > tr->max_latency) -			tr->max_latency = outer_sample; +		if (latency > tr->max_latency) { +			tr->max_latency = latency; +			latency_fsnotify(tr); +		}  	}  out: @@ -276,7 +279,7 @@ static void move_to_next_cpu(void)  		return;  	/*  	 * If for some reason the user modifies the CPU affinity -	 * of this thread, than stop migrating for the duration +	 * of this thread, then stop migrating for the duration  	 * of the current test.  	 */  	if (!cpumask_equal(current_mask, current->cpus_ptr))  |