[PATCH v1] Ftrace: arm/arm64: Define a new arm/arm64 trace clock source based on CNTPCT/CNTPCT_EL0 register.
Mark Rutland
mark.rutland at arm.com
Thu Oct 29 07:19:36 PDT 2015
On Thu, Oct 29, 2015 at 07:17:31PM +0530, Amit Tomer wrote:
> > Regardless of the host, you cannot know whether it is safe to access
> > in a guest. It could bring down the system.
> >
> > The host kernel could safely access the physical counter were it booted
> > at EL2, because it could grant itself access.
>
> May be I am totally wrong here but it doesn't look to be good . if
> Linux image does not boot at hyp mode,
> there is no way to use arch timers, Not true?
The _virtual_ counter and timer registers are _always_ accessible at
EL1.
The _physical_ counter and timer registers are not.
The kernel can safely use the virtual counter & timer alone, but cannot
use the physical counter & timer. It has no way of determining if the
physical registers are accessible (and whether they will remain so).
Even if they were accessible, the physical values can change arbitrarily
(think suspend+resuming a VM), so the physical values are generally
useless to a VM.
> But I could see even if Linux image booted in EL1 has the access to
> Physical timer/counters that is
> been allowed by firmware it self.
The kernel has no way of knowing whether the physical counter & timer
are accessible, even if firmware left them accessible.
Their accessibility could change at a moment's notice (e.g. the state of
the control registers could be lost over idle).
> ENTRY(armv8_switch_to_el1)
> switch_el x0, 0f, 1f, 0f
> 0: ret
> 1:
> /* Initialize Generic Timers */
> mrs x0, cnthctl_el2
> orr x0, x0, #0x3 /* Enable EL1 access to timers */
> msr cnthctl_el2, x0
> msr cntvoff_el2, x0
> mrs x0, cntkctl_el1
> orr x0, x0, #0x3 /* Enable EL0 access to timers */
> msr cntkctl_el1, x0
I'm not sure how the above code is relevant.
Mark.
More information about the linux-arm-kernel
mailing list