| * QTI MSM Core Hang Detection |
| |
| Core Hang Detection provides the three sysfs entries for configuring |
| threshold, PMU event mux select and to enable hang detection. |
| |
| If core is hung for threshold time (value X 10ns) and no |
| heart beat event from pmu to core hang monitor detection, core hang |
| interrupt would be generated to reset the SOC via secure watchdog |
| to collect all cores context. |
| |
| PMU event mux select can be programmed to one of the supported |
| events, for example- |
| 1) Load Instruction executed, |
| 2) Store Instructions executed |
| 3) Instruction architecturally executed and etc. |
| |
| Writing 1 into enable sysfs entry, enables core hang detection and |
| if there is no selected PMU mux event for 10ns core hang counter |
| gets incremented. Once counter reaches the programmed threshold value, |
| core hang interrupts generated to reset the SOC. |
| |
| |
| The device tree parameters for the core hang detection are: |
| |
| Required properties: |
| |
| - compatible : "qcom,core-hang-detect" |
| - label: unique name used to created sysfs entry |
| - qcom,threshold-arr : |
| Array of APCS_ALIAS*_CORE_HANG_THRESHOLD register address |
| for each core. |
| - qcom,config-arr : |
| Array of APCS_ALIAS*_CORE_HANG_CONFIG register address |
| for each core. |
| |
| Optional properties: |
| |
| Example: |
| For msm8937: |
| qcom,chd { |
| compatible = "qcom,core-hang-detect"; |
| qcom,threshold-arr = <0xB088094 0xB098094 0xB0A8094 |
| 0xB0B8094 0xB188094 0xB198094 0xB1A8094 0xB1B8094>; |
| qcom,config-arr = <0xB08809C 0xB09809C 0xB0A809C |
| 0xB0B809C 0xB18809C 0xB19809C 0xB1A809C 0xB1B809C>; |
| }; |
| |
| For msmtitanium: |
| qcom,chd { |
| compatible = "qcom,core-hang-detect"; |
| qcom,threshold-arr = <0xB1880B0 0xB1980B0 0xB1A80B0 |
| 0xB1B80B0 0xB0880B0 0xB0980B0 0xB0A80B0 0xB0B80B0>; |
| qcom,config-arr = <0xB1880B8 0xB1980B8 0xB1A80B8 |
| 0xB1B80B8 0xB0880B8 0xB0980B8 0xB0A80B8 0xB0B80B8>; |
| }; |