Re: [v5.0-rc6 regression] "perf/core: Don't WARN() for impossible ring-buffer sizes"

From: Leo Yan
Date: Wed Feb 13 2019 - 18:38:36 EST


Hi Mathieu, Mark,

On Wed, Feb 13, 2019 at 02:26:25PM -0700, Mathieu Poirier wrote:
> Hi Mark,
>
> CoreSight trace collection is broken on v5.0-rc6 due to this commit:
>
> 9dff0aa95a32 perf/core: Don't WARN() for impossible ring-buffer sizes
>
> Before:
> root@juno:/home/linaro# perf record -e cs_etm/@20070000.etr/u
> --per-thread uname
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.036 MB perf.data ]
> root@juno:/home/linaro#
>
> After:
> root@juno:/home/linaro# perf record -e cs_etm/@20070000.etr/u
> --per-thread uname
> failed to mmap with 12 (Cannot allocate memory)
> root@juno:/home/linaro#
>
> The problem is related to the order_base_2() [1] test with a size of
> 1264, stemming from nr_pages equal to 128. The combination yields an
> order of 11, something leading directly to the error path.
>
> The results are the same with linux-next 20190213. This was tested on
> a Juno R0 and R1 with a 4K page configuration. I haven't tried but
> I'm pretty sure it breaks IntelPT as well.

I noticed in another thread [1] Peter gave out the fixing for this
issue; applied this fixing on my local code and it fixes CoreSight
tracing issue.

Thanks,
Leo Yan

[1] https://lkml.org/lkml/2019/2/12/452