pmu-emul.c (ef5f97e9de9fc0d5bb6136de3d01d78c072a452f) | pmu-emul.c (6dcf7316e05eccded11fc640813c8a8879f271a6) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (C) 2015 Linaro Ltd. 4 * Author: Shannon Zhao <shannon.zhao@linaro.org> 5 */ 6 7#include <linux/cpu.h> 8#include <linux/kvm.h> --- 866 unchanged lines hidden (view full) --- 875 int ret = -ENXIO; 876 877 lockdep_assert_held(&kvm->arch.config_lock); 878 mutex_lock(&arm_pmus_lock); 879 880 list_for_each_entry(entry, &arm_pmus, entry) { 881 arm_pmu = entry->arm_pmu; 882 if (arm_pmu->pmu.type == pmu_id) { | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (C) 2015 Linaro Ltd. 4 * Author: Shannon Zhao <shannon.zhao@linaro.org> 5 */ 6 7#include <linux/cpu.h> 8#include <linux/kvm.h> --- 866 unchanged lines hidden (view full) --- 875 int ret = -ENXIO; 876 877 lockdep_assert_held(&kvm->arch.config_lock); 878 mutex_lock(&arm_pmus_lock); 879 880 list_for_each_entry(entry, &arm_pmus, entry) { 881 arm_pmu = entry->arm_pmu; 882 if (arm_pmu->pmu.type == pmu_id) { |
883 if (test_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags) || | 883 if (kvm_vm_has_ran_once(kvm) || |
884 (kvm->arch.pmu_filter && kvm->arch.arm_pmu != arm_pmu)) { 885 ret = -EBUSY; 886 break; 887 } 888 889 kvm->arch.arm_pmu = arm_pmu; 890 cpumask_copy(kvm->arch.supported_cpus, &arm_pmu->supported_cpus); 891 ret = 0; --- 61 unchanged lines hidden (view full) --- 953 if (copy_from_user(&filter, uaddr, sizeof(filter))) 954 return -EFAULT; 955 956 if (((u32)filter.base_event + filter.nevents) > nr_events || 957 (filter.action != KVM_PMU_EVENT_ALLOW && 958 filter.action != KVM_PMU_EVENT_DENY)) 959 return -EINVAL; 960 | 884 (kvm->arch.pmu_filter && kvm->arch.arm_pmu != arm_pmu)) { 885 ret = -EBUSY; 886 break; 887 } 888 889 kvm->arch.arm_pmu = arm_pmu; 890 cpumask_copy(kvm->arch.supported_cpus, &arm_pmu->supported_cpus); 891 ret = 0; --- 61 unchanged lines hidden (view full) --- 953 if (copy_from_user(&filter, uaddr, sizeof(filter))) 954 return -EFAULT; 955 956 if (((u32)filter.base_event + filter.nevents) > nr_events || 957 (filter.action != KVM_PMU_EVENT_ALLOW && 958 filter.action != KVM_PMU_EVENT_DENY)) 959 return -EINVAL; 960 |
961 if (test_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags)) | 961 if (kvm_vm_has_ran_once(kvm)) |
962 return -EBUSY; 963 964 if (!kvm->arch.pmu_filter) { 965 kvm->arch.pmu_filter = bitmap_alloc(nr_events, GFP_KERNEL_ACCOUNT); 966 if (!kvm->arch.pmu_filter) 967 return -ENOMEM; 968 969 /* --- 82 unchanged lines hidden --- | 962 return -EBUSY; 963 964 if (!kvm->arch.pmu_filter) { 965 kvm->arch.pmu_filter = bitmap_alloc(nr_events, GFP_KERNEL_ACCOUNT); 966 if (!kvm->arch.pmu_filter) 967 return -ENOMEM; 968 969 /* --- 82 unchanged lines hidden --- |