lkml.org 
[lkml]   [2018]   [Jul]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 88/92] arm64: KVM: Add HYP per-cpu accessors
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Marc Zyngier <marc.zyngier@arm.com>

    commit 85478bab409171de501b719971fd25a3d5d639f9 upstream.

    As we're going to require to access per-cpu variables at EL2,
    let's craft the minimum set of accessors required to implement
    reading a per-cpu variable, relying on tpidr_el2 to contain the
    per-cpu offset.

    Reviewed-by: Christoffer Dall <christoffer.dall@arm.com>
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/arm64/include/asm/kvm_asm.h | 27 +++++++++++++++++++++++++--
    1 file changed, 25 insertions(+), 2 deletions(-)

    --- a/arch/arm64/include/asm/kvm_asm.h
    +++ b/arch/arm64/include/asm/kvm_asm.h
    @@ -69,14 +69,37 @@ extern u32 __init_stage2_translation(voi

    extern void __qcom_hyp_sanitize_btac_predictors(void);

    +/* Home-grown __this_cpu_{ptr,read} variants that always work at HYP */
    +#define __hyp_this_cpu_ptr(sym) \
    + ({ \
    + void *__ptr = hyp_symbol_addr(sym); \
    + __ptr += read_sysreg(tpidr_el2); \
    + (typeof(&sym))__ptr; \
    + })
    +
    +#define __hyp_this_cpu_read(sym) \
    + ({ \
    + *__hyp_this_cpu_ptr(sym); \
    + })
    +
    #else /* __ASSEMBLY__ */

    -.macro get_host_ctxt reg, tmp
    - adr_l \reg, kvm_host_cpu_state
    +.macro hyp_adr_this_cpu reg, sym, tmp
    + adr_l \reg, \sym
    mrs \tmp, tpidr_el2
    add \reg, \reg, \tmp
    .endm

    +.macro hyp_ldr_this_cpu reg, sym, tmp
    + adr_l \reg, \sym
    + mrs \tmp, tpidr_el2
    + ldr \reg, [\reg, \tmp]
    +.endm
    +
    +.macro get_host_ctxt reg, tmp
    + hyp_adr_this_cpu \reg, kvm_host_cpu_state, \tmp
    +.endm
    +
    .macro get_vcpu_ptr vcpu, ctxt
    get_host_ctxt \ctxt, \vcpu
    ldr \vcpu, [\ctxt, #HOST_CONTEXT_VCPU]

    \
     
     \ /
      Last update: 2018-07-20 14:53    [W:4.382 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site