• Alexandru Elisei's avatar
    KVM: arm64: Annotate hyp NMI-related functions as __always_inline · 7733306b
    Alexandru Elisei authored
    The "inline" keyword is a hint for the compiler to inline a function.  The
    functions system_uses_irq_prio_masking() and gic_write_pmr() are used by
    the code running at EL2 on a non-VHE system, so mark them as
    __always_inline to make sure they'll always be part of the .hyp.text
    section.
    
    This fixes the following splat when trying to run a VM:
    
    [   47.625273] Kernel panic - not syncing: HYP panic:
    [   47.625273] PS:a00003c9 PC:0000ca0b42049fc4 ESR:86000006
    [   47.625273] FAR:0000ca0b42049fc4 HPFAR:0000000010001000 PAR:0000000000000000
    [   47.625273] VCPU:0000000000000000
    [   47.647261] CPU: 1 PID: 217 Comm: kvm-vcpu-0 Not tainted 5.8.0-rc1-ARCH+ #61
    [   47.654508] Hardware name: Globalscale Marvell ESPRESSOBin Board (DT)
    [   47.661139] Call trace:
    [   47.663659]  dump_backtrace+0x0/0x1cc
    [   47.667413]  show_stack+0x18/0x24
    [   47.670822]  dump_stack+0xb8/0x108
    [   47.674312]  panic+0x124/0x2f4
    [   47.677446]  panic+0x0/0x2f4
    [   47.680407] SMP: stopping secondary CPUs
    [   47.684439] Kernel Offset: disabled
    [   47.688018] CPU features: 0x240402,20002008
    [   47.692318] Memory Limit: none
    [   47.695465] ---[ end Kernel panic - not syncing: HYP panic:
    [   47.695465] PS:a00003c9 PC:0000ca0b42049fc4 ESR:86000006
    [   47.695465] FAR:0000ca0b42049fc4 HPFAR:0000000010001000 PAR:0000000000000000
    [   47.695465] VCPU:0000000000000000 ]---
    
    The instruction abort was caused by the code running at EL2 trying to fetch
    an instruction which wasn't mapped in the EL2 translation tables. Using
    objdump showed the two functions as separate symbols in the .text section.
    
    Fixes: 85738e05 ("arm64: kvm: Unmask PMR before entering guest")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarAlexandru Elisei <alexandru.elisei@arm.com>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Acked-by: default avatarJames Morse <james.morse@arm.com>
    Link: https://lore.kernel.org/r/20200618171254.1596055-1-alexandru.elisei@arm.com
    7733306b
cpufeature.h 24.9 KB