3. Check the file $BSP_DIRdirs to make sure it contains "pmu ". If the "pmu " is added, go to the next step.
4. Check if the PMU support macros are set correctly in file $BSP_DIRSOURCES.CMN. Macro BSP_NOPMU should NOT be defined. Macro USING_PMU should be defined. If the macros are already set correctly, go to the next step.
5. Check files.
5.1 The following files and directories should be included in BSP:
$BSP_DIRKERNELhalarmcpregXsc1.s (in some old BSP code) or $BSP_DIRXLLPSourcexllp_pmu.s (in new BSP code)
5.2 The following contents should be included in the files: (Please compare with Intel BSP corresponding code to make sure all the code embraced with macro USING_PMU is also included customer's BSP.)
$BSP_DIRPLATFORMXSC1BDKERNELHALoemioctl.c, function "OEMIoControl"
$BSP_DIRPLATFORMXSC1BDKERNEL HALARMintxsc1.c, function "OEMInterruptHandler"
Additional info helps to understand the mechanism of VTune PMU ISR
1. Code in pmudll.dll (a normal user space dll) will register the PMU ISR callback to kernel through KernelIoControl system call and OS will route to the OEMIoControl in oemioctl.c, and will save the callback address in kernel HAL global variable PVTuneInterrupt and turn on the Hardware PMU interrupt enable switch. Refer to "PMUInterruptCallback PVTuneInterrupt" in oemioctl.c.
2. When a PMU interrupt happens, the OEMInterruptHandler in intxsc1.c would be the common interrupt entry OS routed to, and corresponding case to INTC_PMU will handle the PMU interrupt. If PVTuneInterrupt is not null, ISR will execute this function pointer (VTune PMU ISR Callback).
3. VTune configures PMU partially though the pmudll provided interface which depends on the code in OEMIoControl USING_PMU embraced PMU configuration supported code.