2016-07-20 57 views
0

我想在MAKO使用ftrace初始化ftrace(的Nexus 4)未能在MAKO

與msm.git Android的MSM-鯖-3.4-棒棒糖發佈分支, 我只是增加了以下配置mako_defconfig

CONFIG_TRACING=y 
CONFIG_FUNCTION_TRACER=y 
CONFIG_DYNAMIC_FTRACE=y 
CONFIG_STACK_TRACER=y 
CONFIG_FUNCTION_GRAPH_TRACER=y 

然而,ftrace_init失敗的啓動時間 有一些在kmsg失敗日誌

<6>[ 0.002197] ftrace: allocating 32821 entries in 97 pages 
<4>[ 0.033053] ------------[ cut here ]------------ 
<4>[ 0.033084] WARNING: at kernel/trace/ftrace.c:1590 ftrace_bug+0xec/0x174() 
<4>[ 0.033114] [<c0015230>] (unwind_backtrace+0x0/0xec) from [<c08a7dc4>] (dump_stack+0x20/0x24) 
<4>[ 0.033145] [<c08a7dc4>] (dump_stack+0x20/0x24) from [<c0075c98>] (warn_slowpath_common+0x58/0x70) 
<4>[ 0.033175] [<c0075c98>] (warn_slowpath_common+0x58/0x70) from [<c0075da8>] (warn_slowpath_null+0x2c/0x34) 
<4>[ 0.033206] [<c0075da8>] (warn_slowpath_null+0x2c/0x34) from [<c00e0558>] (ftrace_bug+0xec/0x174) 
<4>[ 0.033236] [<c00e0558>] (ftrace_bug+0xec/0x174) from [<c0d14a50>] (ftrace_init+0x408/0x4bc) 
<4>[ 0.033267] [<c0d14a50>] (ftrace_init+0x408/0x4bc) from [<c0d0095c>] (start_kernel+0x420/0x48c) 
<4>[ 0.033297] [<c0d0095c>] (start_kernel+0x420/0x48c) from [<8020803c>] (0x8020803c) 
<4>[ 0.033358] ---[ end trace d633338057b77c0d ]--- 
<6>[ 0.033358] ftrace faulted on writing [<c010203c>] perf_output_put_handle+0x10/0xec 

我認爲它不能寫超過0xC010_0000,所以它是內核大小的問題 但是,我只是添加了這些跟蹤配置與vanila代碼,我該如何解決這個問題?

添加一些日誌, 我封鎖了ftrace_bug函數,它調用了ftrace_kill,它禁用了ftrace。 相反,我登錄該功能得到了故障

<6>[ 0.002350] ftrace: allocating 32821 entries in 97 pages 
<4>[ 0.032778] ftrace failed 2[<c010206c>] perf_output_put_handle+0x10/0xec 
<4>[ 0.032809] ftrace failed 2[<c057fd00>] iw_get_linkspeed+0x14/0x13c 
<4>[ 0.032839] ftrace failed 2[<c0886308>] wireless_spy_update+0x10/0xec 

它看起來像一些特定的功能被阻斷寫;;

回答

0

我發現自己。

原因是內核代碼區的寫保護。

如果您想在Nexus中使用ftrace,則必須在defconfig文件中禁用CONFIG_STRICT_MEMORY_RWX配置。

我希望這可以幫助你。