On 06/12/2018 17:21, Suzuki K Poulose wrote:
Hi Andrew,

On 05/12/2018 15:30, Andrew Murray wrote:
In order to effeciently enable/disable guest/host only perf counters
at guest entry/exit we add bitfields to kvm_cpu_context for guest and
host events as well as accessors for updating them.

Signed-off-by: Andrew Murray <[email protected]>
---
   arch/arm64/include/asm/kvm_host.h | 24 ++++++++++++++++++++++++
   1 file changed, 24 insertions(+)

diff --git a/arch/arm64/include/asm/kvm_host.h 
b/arch/arm64/include/asm/kvm_host.h
index 1550192..800c87b 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -203,6 +203,8 @@ struct kvm_cpu_context {
        };
struct kvm_vcpu *__hyp_running_vcpu;
+       u32 events_host;
+       u32 events_guest;
   };
typedef struct kvm_cpu_context kvm_cpu_context_t;
@@ -467,11 +469,33 @@ void kvm_arch_vcpu_load_fp(struct kvm_vcpu *vcpu);
   void kvm_arch_vcpu_ctxsync_fp(struct kvm_vcpu *vcpu);
   void kvm_arch_vcpu_put_fp(struct kvm_vcpu *vcpu);
+#define KVM_PMU_EVENTS_HOST 1
+#define KVM_PMU_EVENTS_GUEST   2
+
   #ifdef CONFIG_KVM /* Avoid conflicts with core headers if CONFIG_KVM=n */
   static inline int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu)
   {
        return kvm_arch_vcpu_run_map_fp(vcpu);
   }
+static inline void kvm_set_pmu_events(u32 set, int flags)
+{
+       kvm_cpu_context_t *ctx = this_cpu_ptr(&kvm_host_cpu_state);
+
+       if (flags & KVM_PMU_EVENTS_HOST)
+               ctx->events_host |= set;
+       if (flags & KVM_PMU_EVENTS_GUEST)
+               ctx->events_guest |= set;

You seem to be passing a single flag at a time ever, in the next patch.
Either we can batch the calls in the next patch, or make this a real number and
not a flag. g.g, enum { HOST,  GUEST } or even a bool.

I think the former sounds better.

Having another look at patch-3, we can never club set() calls for host & guest events, we should go for the latter.

Suzuki

_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to