Thread (10 messages) 10 messages, 2 authors, 2021-10-27

Re: [PATCH v11 0/5] arm64 userspace counter support

From: Rob Herring <robh@kernel.org>
Date: 2021-10-26 13:36:01
Also in: linux-perf-users, lkml

On Tue, Oct 26, 2021 at 8:10 AM Mark Rutland [off-list ref] wrote:
On Tue, Oct 19, 2021 at 06:19:02PM -0500, Rob Herring wrote:
quoted
Another version of arm64 userspace counter access support.

The arm64 support departs from the x86 implementation by requiring the user
to explicitly request user access (via attr.config1) and only enables access
for task bound events. Since usage is explicitly requested, access is
enabled at perf_event_open() rather than on mmap() as that greatly
simplifies the implementation. Rather than trying to lock down the access
as the x86 implementation has been doing, we can start with only a limited
use case enabled and later expand it if needed.

I've run this version thru Vince's perf tests[13] with arm64 support added.
I wish I'd found these tests sooner...
When you say "with arm64 support added", do you mean with patches not
yet upstreamed?
Correct.
I took a look at the upstream repo, and there's some existing RDPMC
support even though upstream never previously supported userspace
access. That support code uses PMSELR_EL0, which this series adds no
provisions for.

Kernel-side, we'll need to either:

* Document that PMSELR_EL0 is unreliable, and explcitly zero it within
  the kernel such that it cnanot be used as a covert channel. Get the
  tests updated to not rely on the never-previously-supported use of
  PMSELR_EL0.

* Context switch PMSELR_EL0 (which'll IIUC is unreliable for big.LITTLE,
  even where the registers exist on each CPU).
Whether we support userspace using PMSELR_EL0 or not, we just need to
zero it when userspace access is enabled (like the dirty counters).
When there's a context switch, the read sequence is going to be
incremented and PMSELR_EL0 will need to be written to again.

Rob

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help