Lines Matching defs:kvm

8 #include <linux/kvm.h>
15 #include <kvm/arm_pmu.h>
16 #include <kvm/arm_vgic.h>
55 static u32 kvm_pmu_event_mask(struct kvm *kvm)
57 u64 dfr0 = IDREG(kvm, SYS_ID_AA64DFR0_EL1);
350 if (likely(irqchip_in_kernel(vcpu->kvm))) {
351 int ret = kvm_vgic_inject_irq(vcpu->kvm, vcpu->vcpu_id,
363 if (likely(irqchip_in_kernel(vcpu->kvm)))
441 type &= kvm_pmu_event_mask(vcpu->kvm);
583 struct arm_pmu *arm_pmu = vcpu->kvm->arch.arm_pmu;
595 eventsel = data & kvm_pmu_event_mask(vcpu->kvm);
609 if (vcpu->kvm->arch.pmu_filter &&
610 !test_bit(eventsel, vcpu->kvm->arch.pmu_filter))
638 pr_err_once("kvm: pmu event creation failed %ld\n",
667 mask |= kvm_pmu_event_mask(vcpu->kvm);
746 unsigned long *bmap = vcpu->kvm->arch.pmu_filter;
773 nr_events = kvm_pmu_event_mask(vcpu->kvm) + 1;
802 if (irqchip_in_kernel(vcpu->kvm)) {
810 if (!irq_is_ppi(irq) && !vgic_valid_spi(vcpu->kvm, irq))
824 if (irqchip_in_kernel(vcpu->kvm)) {
832 if (!vgic_initialized(vcpu->kvm))
856 static bool pmu_irq_is_valid(struct kvm *kvm, int irq)
861 kvm_for_each_vcpu(i, vcpu, kvm) {
879 struct kvm *kvm = vcpu->kvm;
884 lockdep_assert_held(&kvm->arch.config_lock);
890 if (kvm_vm_has_ran_once(kvm) ||
891 (kvm->arch.pmu_filter && kvm->arch.arm_pmu != arm_pmu)) {
896 kvm->arch.arm_pmu = arm_pmu;
897 cpumask_copy(kvm->arch.supported_cpus, &arm_pmu->supported_cpus);
909 struct kvm *kvm = vcpu->kvm;
911 lockdep_assert_held(&kvm->arch.config_lock);
919 if (!kvm->arch.arm_pmu) {
931 kvm->arch.arm_pmu = kvm_pmu_probe_armpmu();
932 if (!kvm->arch.arm_pmu)
941 if (!irqchip_in_kernel(kvm))
951 if (!pmu_irq_is_valid(kvm, irq))
957 kvm_debug("Set kvm ARM PMU irq: %d\n", irq);
984 if (kvm_vm_has_ran_once(kvm))
987 if (!kvm->arch.pmu_filter) {
988 kvm->arch.pmu_filter = bitmap_alloc(nr_events, GFP_KERNEL_ACCOUNT);
989 if (!kvm->arch.pmu_filter)
999 bitmap_zero(kvm->arch.pmu_filter, nr_events);
1001 bitmap_fill(kvm->arch.pmu_filter, nr_events);
1005 bitmap_set(kvm->arch.pmu_filter, filter.base_event, filter.nevents);
1007 bitmap_clear(kvm->arch.pmu_filter, filter.base_event, filter.nevents);
1034 if (!irqchip_in_kernel(vcpu->kvm))