解决perf在imx6q上读写PMU event counter都是零
来源:互联网 发布:北京java测试薪资 编辑:程序博客网 时间:2024/05/20 03:45
最近在用perf分析性能,在imx6q上验证PMU event采样,发现cache-misses等硬件事件计数都是0,瞬间崩溃。
傻乎乎分析啦perf代码,感觉应该不是perf代码原因,到freescale官网上找到一片类似的问题:
https://community.nxp.com/thread/302685
http://stackoverflow.com/questions/22567859/getting-zeros-on-cortex-a9-pmu-counters
原来还有cotex-a9的PMU使用还是需要Secure Debug Enable Register的配合,这么严重的bug。
在内核文件 arch/arm/kernel/perf_event.c初始化cotex-a9 PMU的函数armpmu_reserve_hardware前增加:
static void armv7_pmu_fix(void)
{
u32 val = 0b11;
asm volatile("mcr p15, 0, %0, c1, c1, 1" : : "r" (val));
}
static int
armpmu_reserve_hardware(void)
{
struct arm_pmu_platdata *plat;
irq_handler_t handle_irq;
int i, err = -ENODEV, irq;
pmu_device = reserve_pmu(ARM_PMU_DEVICE_CPU);
if (IS_ERR(pmu_device)) {
pr_warning("unable to reserve pmu\n");
return PTR_ERR(pmu_device);
}
+ armv7_pmu_fix();
}
总算解决问题啦。
最近又发现了一个现象,上述的方法只有CPU0上的PMU Counter才会正常。其他核上的读出来都是0。
- 解决perf在imx6q上读写PMU event counter都是零
- perf event
- perf在Ubuntu上的安装
- ceph perf counter 源码分析及使用
- 解决移动硬盘在电脑上不能读写的问题
- IMX6Q上蓝牙设备测试
- IMX6Q上使用NFS文件系统
- [RK3288][Android6.0] 调试笔记 --- pmu(rk818)寄存器读写
- MIPS处理器上安装perf
- 在IMX6Q板子上调试UART接收端只能接收自己发送端的信息
- Linux内核yocto在Freescale的IMX6q上启动遇到booting from net,.....
- 在CentOS 6.6 x86_64上安装SystemTap/Perf+FlameGraph玩转火焰图实录
- perf
- perf
- perf
- perf
- perf
- perf
- 分类游戏
- 【数据结构】图的遍历--深度优先搜索
- gdb中断点的使用
- PAT 1007. 素数对猜想
- nextDouble()取一个小数
- 解决perf在imx6q上读写PMU event counter都是零
- MFC/Halcon之halcon的安装及在vs2013中的配置
- 实现一个简略ArrayList, 提供 add(), remove(), size()
- 最长回文子串
- unit2.3 系统延迟及定时机制
- ruby淘宝源不能用了
- C++ 操作系统进程中线程同步的四种方式
- ACM题解及各种总结(链接)
- vs2005针对datatable已经有封装好的去重复方法: