]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390/cpum_sf: Fix wrong page count in error message
authorThomas Richter <tmricht@linux.ibm.com>
Mon, 23 Mar 2020 10:09:07 +0000 (11:09 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Apr 2020 08:30:18 +0000 (10:30 +0200)
[ Upstream commit 4141b6a5e9f171325effc36a22eb92bf961e7a5c ]

When perf record -e SF_CYCLES_BASIC_DIAG runs with very high
frequency, the samples arrive faster than the perf process can
save them to file. Eventually, for longer running processes, this
leads to the siutation where the trace buffers allocated by perf
slowly fills up. At one point the auxiliary trace buffer is full
and  the CPU Measurement sampling facility is turned off. Furthermore
a warning is printed to the kernel log buffer:

cpum_sf: The AUX buffer with 0 pages for the diagnostic-sampling
mode is full

The number of allocated pages for the auxiliary trace buffer is shown
as zero pages. That is wrong.

Fix this by saving the number of allocated pages before entering the
work loop in the interrupt handler. When the interrupt handler processes
the samples, it may detect the buffer full condition and stop sampling,
reducing the buffer size to zero.
Print the correct value in the error message:

cpum_sf: The AUX buffer with 256 pages for the diagnostic-sampling
mode is full

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/s390/kernel/perf_cpum_sf.c

index 5bfb1ce129f4b81994bc78e5a2188365d8cf7409..74a296cea21cc8062b9642bb9c81759df6ed23e8 100644 (file)
@@ -1537,6 +1537,7 @@ static void hw_collect_aux(struct cpu_hw_sf *cpuhw)
        perf_aux_output_end(handle, size);
        num_sdb = aux->sfb.num_sdb;
 
+       num_sdb = aux->sfb.num_sdb;
        while (!done) {
                /* Get an output handle */
                aux = perf_aux_output_begin(handle, cpuhw->event);