I am working on BTS implementation in Linux driver.
My BTS code is not generating any interrupt after crossing the threshold in debug store. Though the Counting method generates interrupt.
So, I combined BTS and Counting methods. Inside the interrupt handler (interrupt generated when IA32_PMC0 reaches 0), I can see the BTS Debug Store contents through ioctl.
I was wondering if somebody could help me understand why is BTS not generating interrupts?
Quick setup information:
IA32_DS_AREA contains the debug store address.
IA32_PMC0 contains the period value.
PerfEvtSel0 contains the event tracking in user mode, generating interrupt and is enabled.
LBR_SELECT contains branch info I want to track.
IA32_DEBUGCTL has BTINT, BTS, TR bits enabled.
Am I missing any step?