KVM: x86/vPMU: refine kvm_pmu err msg when event creation failed [Linux 4.4.187]

This Linux kernel change "KVM: x86/vPMU: refine kvm_pmu err msg when event creation failed" is included in the Linux 4.4.187 release. This change is authored by Like Xu <like.xu [at] linux.intel.com> on Thu Jul 18 13:35:14 2019 +0800. The commit for this change in Linux stable tree is 505c011 (patch) which is from upstream commit 6fc3977. The same Linux upstream change may have been applied to various maintained Linux releases and you can find all Linux releases containing changes from upstream 6fc3977.

KVM: x86/vPMU: refine kvm_pmu err msg when event creation failed

commit 6fc3977ccc5d3c22e851f2dce2d3ce2a0a843842 upstream.

If a perf_event creation fails due to any reason of the host perf
subsystem, it has no chance to log the corresponding event for guest
which may cause abnormal sampling data in guest result. In debug mode,
this message helps to understand the state of vPMC and we may not
limit the number of occurrences but not in a spamming style.

Suggested-by: Joe Perches <[email protected]>
Signed-off-by: Like Xu <[email protected]>
Cc: [email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

There are 4 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 arch/x86/kvm/pmu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c
index 31aa2c8..f21d4df 100644
--- a/arch/x86/kvm/pmu.c
+++ b/arch/x86/kvm/pmu.c
@@ -124,8 +124,8 @@ static void pmc_reprogram_counter(struct kvm_pmc *pmc, u32 type,
                         intr ? kvm_perf_overflow_intr :
                         kvm_perf_overflow, pmc);
    if (IS_ERR(event)) {
-       printk_once("kvm_pmu: event creation failed %ld\n",
-               PTR_ERR(event));
+       pr_debug_ratelimited("kvm_pmu: event creation failed %ld for pmc->idx = %d\n",
+               PTR_ERR(event), pmc->idx);

Leave a Reply

Your email address will not be published. Required fields are marked *