diff options
author | Fuad Tabba <tabba@google.com> | 2022-05-10 11:57:09 +0200 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2022-05-15 12:26:41 +0200 |
commit | 84d751a019a9792f5b4884e1d598b603c360ec22 (patch) | |
tree | 45c30035eb85762da5cf6b98ab2a4f339e059992 /include/kvm | |
parent | KVM: arm64: Repack struct kvm_pmu to reduce size (diff) | |
download | linux-84d751a019a9792f5b4884e1d598b603c360ec22.tar.xz linux-84d751a019a9792f5b4884e1d598b603c360ec22.zip |
KVM: arm64: Pass pmu events to hyp via vcpu
Instead of the host accessing hyp data directly, pass the pmu
events of the current cpu to hyp via the vcpu.
This adds 64 bits (in two fields) to the vcpu that need to be
synced before every vcpu run in nvhe and protected modes.
However, it isolates the hypervisor from the host, which allows
us to use pmu in protected mode in a subsequent patch.
No visible side effects in behavior intended.
Signed-off-by: Fuad Tabba <tabba@google.com>
Reviewed-by: Oliver Upton <oupton@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220510095710.148178-4-tabba@google.com
Diffstat (limited to 'include/kvm')
-rw-r--r-- | include/kvm/arm_pmu.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/kvm/arm_pmu.h b/include/kvm/arm_pmu.h index eaa8290b116f..35a0903cae32 100644 --- a/include/kvm/arm_pmu.h +++ b/include/kvm/arm_pmu.h @@ -20,8 +20,14 @@ struct kvm_pmc { struct perf_event *perf_event; }; +struct kvm_pmu_events { + u32 events_host; + u32 events_guest; +}; + struct kvm_pmu { struct irq_work overflow_work; + struct kvm_pmu_events events; struct kvm_pmc pmc[ARMV8_PMU_MAX_COUNTERS]; DECLARE_BITMAP(chained, ARMV8_PMU_MAX_COUNTER_PAIRS); int irq_num; |