x86/pmu: Disable inlining of measure()
Clang can be more aggressive at inlining than GCC and will fully inline calls to measure(). This can mess with the counter overflow check. To set up the PMC overflow, check_counter_overflow() first records the number of instructions retired in an invocation of measure() and checks to see that subsequent calls to measure() retire the same number of instructions. If inlining occurs, those numbers can be different and the overflow test fails. FAIL: overflow: cntr-0 PASS: overflow: status-0 PASS: overflow: status clear-0 PASS: overflow: irq-0 FAIL: overflow: cntr-1 PASS: overflow: status-1 PASS: overflow: status clear-1 PASS: overflow: irq-1 FAIL: overflow: cntr-2 PASS: overflow: status-2 PASS: overflow: status clear-2 PASS: overflow: irq-2 FAIL: overflow: cntr-3 PASS: overflow: status-3 PASS: overflow: status clear-3 PASS: overflow: irq-3 Disabling inlining of measure() keeps the assumption that all calls to measure() retire the same number of instructions. Cc: Jim Mattson <jmattson@google.com> Signed-off-by:Bill Wendling <morbo@google.com> Message-Id: <20220601163012.3404212-1-morbo@google.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
Loading
Please register or sign in to comment