The performance counter can't generate the overflow interrupt
Recently the performance counters in my processor (core i7-4790K) behave weird. When my target single-thread program runs on some core, the performance can generate nornaml overflow interrupt, but it can't on some other core. Once I reboot linux (4.4), all on-line cores can generate normal interrupt for my program. It's so strange. Also this phenomenon is not affected by the setup of watchdog. No matter whether I turn on or off the watchdog, this phenomenon always exist. BTW, I use a linux kernel module to set the initial value of the performance counter like (-1000000), and the related control msrs have also been setup correctly. In my module, I use "apic_write(APIC_LVTPC,APIC_DM_NMI);" to set the pmi as a nmi in the local vector table.
After carefully checking and testing, I have much confidence to be sure that my tool doesn't have the bugs. As you see, it just behaves strangely in some cores, not all cores. Also a reboot can make everything is ok. So is it possible that some key internal msr registers were messed up with some unknown ways?