Messages in this thread | | | Subject | Re: [PATCH] x86, perf, nmi: Disable perf if counters are not accessable | From | Peter Zijlstra <> | Date | Tue, 23 Nov 2010 11:46:06 +0100 |
| |
On Mon, 2010-11-22 at 16:55 -0500, Don Zickus wrote: > +static bool check_hw_exists(void) > +{ > + u64 val, val_new; > + > + val = 0xabcdUL; > + (void) checking_wrmsrl(x86_pmu.perfctr, val); > + rdmsrl_safe(x86_pmu.perfctr, &val_new); > + if (val != val_new) > + return false; > + > + return true; > +}
If I can make any sense of the implementation of native_read_msr_safe() then I think it doesn't actually sets val_new in case it faults, it just returns -EIO.
So I changed it to:
static bool check_hw_exists(void) { u64 val, val_new = 0; int ret = 0;
val = 0xabcdUL; ret |= checking_wrmsrl(x86_pmu.perfctr, val); ret |= rdmsrl_safe(x86_pmu.perfctr, &val_new); if (ret || val != val_new) return false;
return true; }
And have applied the patch,
Thanks Don!
| |