@@ -92,6 +92,7 @@ struct pmu_event {
};
static int num_counters;
+static bool host_nmi_watchdog;
char *buf;
@@ -291,7 +292,7 @@ static void check_counters_many(void)
if (!verify_counter(&cnt[i]))
break;
- report("all counters", i == n);
+ report_xfail("all counters", host_nmi_watchdog, i == n);
}
static void check_counter_overflow(void)
@@ -374,6 +375,7 @@ static void check_rdpmc(void)
int main(int ac, char **av)
{
+ int i;
struct cpuid id = cpuid(10);
setup_vm();
@@ -385,6 +387,11 @@ int main(int ac, char **av)
ebx.full = id.b;
edx.full = id.d;
+ /* XXX: horrible command line parsing */
+ for (i = 1; i < ac; i++)
+ if (!strcmp(av[i], "host_nmi_watchdog=1"))
+ host_nmi_watchdog = true;
+
if (!eax.split.version_id) {
printf("No pmu is detected!\n");
return report_summary();
@@ -106,8 +106,7 @@ file = msr.flat
[pmu]
file = pmu.flat
-extra_params = -cpu host
-check = /proc/sys/kernel/nmi_watchdog=0
+extra_params = -cpu host -append "host_nmi_watchdog=`cat /proc/sys/kernel/nmi_watchdog`"
[port80]
file = port80.flat
Host's nmi_watchdog takes one slot, making the "all counters" unit-test fail. We know exactly what happens, mark it as expected failure. PMU test is now executed regardless of host_nmi_watchdog. Signed-off-by: Radim Kr?má? <rkrcmar@redhat.com> --- v2: - host_nmi_watchdog made static x86/pmu.c | 9 ++++++++- x86/unittests.cfg | 3 +-- 2 files changed, 9 insertions(+), 3 deletions(-)