Re: [PATCH 13/13] arm64: Add CNT{P, V}CTSS_EL0 alternatives to cnt{p, v}ct_el0
From: Oliver Upton <hidden>
Date: 2021-08-09 18:17:54
Also in:
lkml
On Mon, Aug 9, 2021 at 11:11 AM Marc Zyngier [off-list ref] wrote:
On Mon, 09 Aug 2021 17:42:00 +0100, Oliver Upton [off-list ref] wrote:quoted
On Mon, Aug 9, 2021 at 8:48 AM Marc Zyngier [off-list ref] wrote:quoted
CNTPCTSS_EL0 and CNTVCTSS_EL0 are alternatives to the usual CNTPCT_EL0 and CNTVCT_EL0 that do not require a previous ISB to be synchronised (SS stands for Self-Synchronising). Use the ARM64_HAS_ECV capability to control alternative sequences that switch to these low(er)-cost primitives. Note that the counter access in the VDSO is for now left alone until we decide whether we want to allow this.What remains to be figured out before we add this to the vDSO (and presumably advertise to userspace through some standard convention)?We need to understand what breaks if we runtime-patch the VDSO just like we do with the rest of the kernel. To start with, the debug version of the shared object is not the same as the object presented to the process. Maybe that's not a problem, but I would tend to err on the side of caution.
I would too, but there sadly are instances of Linux patching *user* memory already (go look at how KVM/x86 handles the VMCALL/VMMCALL instruction). But yes, I would much prefer the debug vDSO correspond to the actual instructions.
An alternative suggested by Ard was to have a separate function altogether for the counter access and an ifunc mapping to pick the right one.
Hmm, this does sound promising.
quoted
It would be nice to skip the trap handler altogether, unless there's a can of worms lurking that I'm not aware of.The trap handlers are only there to work around errata. If you look at the arch timer code, you will notice that there is a bunch of SoCs and CPUs that do not have a reliable counter, and for which we have to trap the virtual counter accesses from userspace (as well as the VDSO). On sane platforms, userspace is free to use the virtual counter without any trap.
/facepalm I was about 2 cups of coffee short when writing this :) Thanks! -- Oliver _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel