Mark Rutland
16283c54a6
arm64: stacktrace: fix kerneldoc comments
...
Many of the comment blocks in the arm64 stacktrace code are *almost*
kerneldoc, but not quite.
Convert them to kerneldoc, as was presumably originally intended.
There should be no functional change as a result of this patch.
Signed-off-by: Mark Rutland <mark.rutland@arm.com >
Reviewed-by: Madhavan T. Venkataraman <madvenka@linux.microsoft.com >
Reviewed-by: Mark Brown <broonie@kernel.org >
Cc: Fuad Tabba <tabba@google.com >
Cc: Kalesh Singh <kaleshsingh@google.com >
Cc: Marc Zyngier <maz@kernel.org >
Cc: Will Deacon <will@kernel.org >
Link: https://lore.kernel.org/r/20220901130646.1316937-2-mark.rutland@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com >
2022-09-09 12:30:07 +01:00
Marc Zyngier
0e773da1e6
KVM: arm64: Move nVHE-only helpers into kvm/stacktrace.c
...
kvm_nvhe_stack_kern_va() only makes sense as part of the nVHE
unwinder, so simply move it there.
Signed-off-by: Marc Zyngier <maz@kernel.org >
Reviewed-by: Kalesh Singh <kaleshsingh@google.com >
Tested-by: Kalesh Singh <kaleshsingh@google.com >
Reviewed-by: Oliver Upton <oliver.upton@linux.dev >
Link: https://lore.kernel.org/r/20220727142906.1856759-5-maz@kernel.org
2022-07-27 18:18:03 +01:00
Marc Zyngier
4e00532f37
KVM: arm64: Make unwind()/on_accessible_stack() per-unwinder functions
...
Having multiple versions of on_accessible_stack() (one per unwinder)
makes it very hard to reason about what is used where due to the
complexity of the various includes, the forward declarations, and
the reliance on everything being 'inline'.
Instead, move the code back where it should be. Each unwinder
implements:
- on_accessible_stack() as well as the helpers it depends on,
- unwind()/unwind_next(), as they pass on_accessible_stack as
a parameter to unwind_next_common() (which is the only common
code here)
This hardly results in any duplication, and makes it much
easier to reason about the code.
Signed-off-by: Marc Zyngier <maz@kernel.org >
Reviewed-by: Kalesh Singh <kaleshsingh@google.com >
Tested-by: Kalesh Singh <kaleshsingh@google.com >
Reviewed-by: Oliver Upton <oliver.upton@linux.dev >
Link: https://lore.kernel.org/r/20220727142906.1856759-4-maz@kernel.org
2022-07-27 18:18:03 +01:00
Marc Zyngier
9f5fee05f6
KVM: arm64: Move nVHE stacktrace unwinding into its own compilation unit
...
The unwinding code doesn't really belong to the exit handling
code. Instead, move it to a file (conveniently named stacktrace.c
to confuse the reviewer), and move all the stacktrace-related
stuff there.
It will be joined by more code very soon.
Signed-off-by: Marc Zyngier <maz@kernel.org >
Reviewed-by: Kalesh Singh <kaleshsingh@google.com >
Tested-by: Kalesh Singh <kaleshsingh@google.com >
Reviewed-by: Oliver Upton <oliver.upton@linux.dev >
Link: https://lore.kernel.org/r/20220727142906.1856759-3-maz@kernel.org
2022-07-27 18:18:03 +01:00
Kalesh Singh
75e9459e48
KVM: arm64: Implement protected nVHE hyp stack unwinder
...
Implements the common framework necessary for unwind() to work in
the protected nVHE context:
- on_accessible_stack()
- on_overflow_stack()
- unwind_next()
Protected nVHE unwind() is used to unwind and save the hyp stack
addresses to the shared stacktrace buffer. The host reads the
entries in this buffer, symbolizes and dumps the stacktrace (later
patch in the series).
Signed-off-by: Kalesh Singh <kaleshsingh@google.com >
Reviewed-by: Fuad Tabba <tabba@google.com >
Tested-by: Fuad Tabba <tabba@google.com >
Signed-off-by: Marc Zyngier <maz@kernel.org >
Link: https://lore.kernel.org/r/20220726073750.3219117-17-kaleshsingh@google.com
2022-07-26 10:51:28 +01:00
Kalesh Singh
25aa73b6db
KVM: arm64: Stub implementation of pKVM HYP stack unwinder
...
Add some stub implementations of protected nVHE stack unwinder, for
building. These are implemented later in this series.
Signed-off-by: Kalesh Singh <kaleshsingh@google.com >
Reviewed-by: Fuad Tabba <tabba@google.com >
Tested-by: Fuad Tabba <tabba@google.com >
Signed-off-by: Marc Zyngier <maz@kernel.org >
Link: https://lore.kernel.org/r/20220726073750.3219117-15-kaleshsingh@google.com
2022-07-26 10:51:06 +01:00
Kalesh Singh
314a61dc31
KVM: arm64: Introduce hyp_dump_backtrace()
...
In non-protected nVHE mode, unwinds and dumps the hypervisor backtrace
from EL1. This is possible beacause the host can directly access the
hypervisor stack pages in non-protected mode.
The nVHE backtrace is dumped on hyp_panic(), before panicking the host.
[ 101.498183] kvm [377]: nVHE call trace:
[ 101.498363] kvm [377]: [<ffff8000090a6570>] __kvm_nvhe_hyp_panic+0xac/0xf8
[ 101.499045] kvm [377]: [<ffff8000090a65cc>] __kvm_nvhe_hyp_panic_bad_stack+0x10/0x10
[ 101.499498] kvm [377]: [<ffff8000090a61e4>] __kvm_nvhe_recursive_death+0x24/0x34
. . .
[ 101.524929] kvm [377]: [<ffff8000090a61e4>] __kvm_nvhe_recursive_death+0x24/0x34
[ 101.525062] kvm [377]: [<ffff8000090a61e4>] __kvm_nvhe_recursive_death+0x24/0x34
[ 101.525195] kvm [377]: [<ffff8000090a5de4>] __kvm_nvhe___kvm_vcpu_run+0x30/0x40c
[ 101.525333] kvm [377]: [<ffff8000090a8b64>] __kvm_nvhe_handle___kvm_vcpu_run+0x30/0x48
[ 101.525468] kvm [377]: [<ffff8000090a88b8>] __kvm_nvhe_handle_trap+0xc4/0x128
[ 101.525602] kvm [377]: [<ffff8000090a7864>] __kvm_nvhe___host_exit+0x64/0x64
[ 101.525745] kvm [377]: ---[ end nVHE call trace ]---
Signed-off-by: Kalesh Singh <kaleshsingh@google.com >
Signed-off-by: Marc Zyngier <maz@kernel.org >
Link: https://lore.kernel.org/r/20220726073750.3219117-12-kaleshsingh@google.com
2022-07-26 10:49:50 +01:00
Kalesh Singh
db129d486e
KVM: arm64: Implement non-protected nVHE hyp stack unwinder
...
Implements the common framework necessary for unwind() to work
for non-protected nVHE mode:
- on_accessible_stack()
- on_overflow_stack()
- unwind_next()
Non-protected nVHE unwind() is used to unwind and dump the hypervisor
stacktrace by the host in EL1
Signed-off-by: Kalesh Singh <kaleshsingh@google.com >
Reviewed-by: Fuad Tabba <tabba@google.com >
Tested-by: Fuad Tabba <tabba@google.com >
Signed-off-by: Marc Zyngier <maz@kernel.org >
Link: https://lore.kernel.org/r/20220726073750.3219117-11-kaleshsingh@google.com
2022-07-26 10:49:39 +01:00
Kalesh Singh
573e1e8275
KVM: arm64: Stub implementation of non-protected nVHE HYP stack unwinder
...
Add stub implementations of non-protected nVHE stack unwinder, for
building. These are implemented later in this series.
Signed-off-by: Kalesh Singh <kaleshsingh@google.com >
Reviewed-by: Fuad Tabba <tabba@google.com >
Tested-by: Fuad Tabba <tabba@google.com >
Signed-off-by: Marc Zyngier <maz@kernel.org >
Link: https://lore.kernel.org/r/20220726073750.3219117-9-kaleshsingh@google.com
2022-07-26 10:49:16 +01:00