diff options
| author | Anshuman Khandual <[email protected]> | 2025-06-11 18:01:13 +0000 |
|---|---|---|
| committer | Will Deacon <[email protected]> | 2025-07-08 15:11:27 +0000 |
| commit | d7567e9b9ba53861390830ee18b9fb2035ca81c4 (patch) | |
| tree | a5ddf593bec985bb31afd07629eda103c4095f86 /rust/helpers/task.c | |
| parent | arm64: Handle BRBE booting requirements (diff) | |
| download | kernel-d7567e9b9ba53861390830ee18b9fb2035ca81c4.tar.gz kernel-d7567e9b9ba53861390830ee18b9fb2035ca81c4.zip | |
KVM: arm64: nvhe: Disable branch generation in nVHE guests
While BRBE can record branches within guests, the host recording
branches in guests is not supported by perf (though events are).
Support for BRBE in guests will supported by providing direct access
to BRBE within the guests. That is how x86 LBR works for guests.
Therefore, BRBE needs to be disabled on guest entry and restored on
exit.
For nVHE, this requires explicit handling for guests. Before
entering a guest, save the BRBE state and disable the it. When
returning to the host, restore the state.
For VHE, it is not necessary. We initialize
BRBCR_EL1.{E1BRE,E0BRE}=={0,0} at boot time, and HCR_EL2.TGE==1 while
running in the host. We configure BRBCR_EL2.{E2BRE,E0HBRE} to enable
branch recording in the host. When entering the guest, we set
HCR_EL2.TGE==0 which means BRBCR_EL1 is used instead of BRBCR_EL2.
Consequently for VHE, BRBE recording is disabled at EL1 and EL0 when
running a guest.
Should recording in guests (by the host) ever be desired, the perf ABI
will need to be extended to distinguish guest addresses (struct
perf_branch_entry.priv) for starters. BRBE records would also need to be
invalidated on guest entry/exit as guest/host EL1 and EL0 records can't
be distinguished.
Signed-off-by: Anshuman Khandual <[email protected]>
Signed-off-by: Mark Rutland <[email protected]>
Co-developed-by: Rob Herring (Arm) <[email protected]>
Signed-off-by: Rob Herring (Arm) <[email protected]>
Tested-by: James Clark <[email protected]>
Reviewed-by: Leo Yan <[email protected]>
Reviewed-by: Suzuki K Poulose <[email protected]>
Acked-by: Marc Zyngier <[email protected]>
Acked-by: Mark Rutland <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Will Deacon <[email protected]>
Diffstat (limited to 'rust/helpers/task.c')
0 files changed, 0 insertions, 0 deletions
