This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AVS implementation for Beagleboard in conflict with the normal use of PMC

Dear TI engineers, 
I am a user of the BeagleBoard and PandaBoard. Due to the requirements of my project, I want to have a Linux kernel that can support the Adjustable voltage scaling (AVS) through Smart Reflex as well as the PAPI (Performance Application Programming Interface http://icl.cs.utk.edu/papi/) , which is an interface to access the performance monitor counters (PMCs) in ARM processor (support Cortex A8 and A9). 
 
Firstly, we have found that the PAPI can be supported in any mainline Linux kernel version above 3.0(PAPI Results 1), including 3.4.0-rc3 and 3.6.0-rc5, the two versions which you used to add Smart Reflext support in Linux kernel.  Then we followed your post in http://lists.infradead.org/pipermail/linux-arm-kernel/2012-May/097920.html , to test the AVS on BeagleBoard and Pandaboard. It turns out that both the kernel images obtained from the package : mainline-3.4-voltdm-tps-v1 and  mainline-3.6-rc5-omap-tps-v2 can support AVS but fails to support PAPI (PAPI Results 2). In the next step, we obtained the AVS patch and apply it to the Linux mainline kernel version 3.4.0-rc3, 3.4.1 and 3.6.0-rc5, it proved that the patched mainline Linux kernel can now support AVS but fail to support PAPI.  
 
To the best of my knowledge, the PAPI functions are successfully inserted in all the above cases. But after the AVS patch is applied, PAPI fails to return meaningful PMC counts. It seems to me that your implementation of AVS  somewhat blocks the normal use of the PMCs in BeagleBoard. I am wondering if you have been aware of this problem, and it is appreciable if you can share your experience  on this issue. 
 
PAPI Results 1 
(BeagleBoard, under Linux mainline above v3.0, including 3.4.0-rc3 and 3.6.0-rc5)
 
Added PAPI_L1_DCM
Added PAPI_L1_ICM
Added PAPI_L2_TCM
Added PAPI_TLB_DM
Added PAPI_TLB_IM
Added PAPI_STL_ICY
Added PAPI_BR_TKN
Added PAPI_BR_MSP
Added PAPI_TOT_INS
Added PAPI_LD_INS
Added PAPI_SR_INS
Added PAPI_BR_INS
Added PAPI_TOT_CYC
Added PAPI_L1_DCA
Added PAPI_L1_ICA
Added PAPI_L2_TCA

Event Counts:
PAPI_L1_DCM         64151
PAPI_L1_ICM        159362
PAPI_L2_TCM          1883
PAPI_TLB_DM          1835
PAPI_TLB_IM             8
PAPI_STL_ICY     42987476
PAPI_BR_TKN     221854641
PAPI_BR_MSP         91776
PAPI_TOT_INS   2186773029
PAPI_LD_INS     203921167
PAPI_SR_INS     101849208
PAPI_BR_INS     218947812
PAPI_TOT_CYC   1946058572
PAPI_L1_DCA     387448691
PAPI_L1_ICA    1228403974
PAPI_L2_TCA        220495

multiplex2.c                           PASSED
 
 
PAPI Results 2 (under  mainline-3.4-voltdm-tps-v1 and  mainline-3.6-rc5-omap-tps-v2 ,as well as the mainline version 3.4.0-rc3, 3.4.1 and 3.6.0-rc5 that are patched with AVS patch)
Added PAPI_L1_DCM
Added PAPI_L1_ICM
Added PAPI_L2_TCM
Added PAPI_TLB_DM
Added PAPI_TLB_IM
Added PAPI_STL_ICY
Added PAPI_BR_TKN
Added PAPI_BR_MSP
Added PAPI_TOT_INS
Added PAPI_LD_INS
Added PAPI_SR_INS
Added PAPI_BR_INS
Added PAPI_TOT_CYC
Added PAPI_L1_DCA
Added PAPI_L1_ICA
Added PAPI_L2_TCA
 
Event Counts: 
PAPI_L1_DCM 0 
PAPI_L1_ICM 0 
PAPI_L2_TCM 0 
PAPI_TLB_DM 0 
PAPI_TLB_IM 0 
PAPI_STL_ICY 0 
PAPI_BR_TKN 0 
PAPI_BR_MSP 0 
PAPI_TOT_INS 0 
PAPI_LD_INS 0 
PAPI_SR_INS 0 
PAPI_BR_INS 0 
PAPI_TOT_CYC 1950636665 
PAPI_L1_DCA 0 
PAPI_L1_ICA 0 
PAPI_L2_TCA 0 

Caution: 15 counters had zero values 
Caution: 14 counter pair(s) had identical values 
multiplex2.c PASSED 
 
Thank you very much.
Qiong
 
Técnica de Telecomunicación

Universidad Politécnica de Madrid

 

  • Hi Qiong,

    I'm not familiar with the Performance API (PAPI) project but as I read about its low level interface I assume that it is possible to appears some interferences with the voltage domain management which is changed by the AVS patch. I suggest you debug the PMC count calculation when the AVS patch has been applied.

    BR

    Tsvetolin Shulev