[v5.0-rc6 regression] "perf/core: Don't WARN() for impossible ring-buffer sizes"
From: Mathieu Poirier
Date: Wed Feb 13 2019 - 16:26:39 EST
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.
Please have a look when you have a minute. Leo Yan and I will be
happy to test patches.
Thanks,
Mathieu
[1]. https://elixir.bootlin.com/linux/v5.0-rc6/source/kernel/events/ring_buffer.c#L737