1

みんな。私は自分の Galaxy Mini 2 用に 3.0.x カーネルを移植していました。ほとんどの問題は自分で解決できましたが、バイブレーター ドライバーに 1 つの問題がありました。Linuxカーネルでの作業は初めてなので、自分で解決できません。バイブレーターが有効になるたびに、これがログに表示されます: https://gist.github.com/TheWhisp/6133946

バイブレーター ドライバーのソース コードは次のとおりです

私が正しければ、176 行目から始まる関数に絞り込みました

ありがとう、助けていただければ幸いです。:)

4

1 に答える 1

3

彼の分析は理にかなっていますが、彼が提案した解決策についてrakibに同意することはできません。

msm_vibrator_power() は hrtimer ハンドラで呼び出されます。また、hrtimer はソフトウェア irq コンテキストで実行されています。

OOPS 情報は、msm_vibrator_power() が内部でミューテックスを使用する _regulator_get() を呼び出すことを訴えています。

この問題の解決策は、hrtimer ハンドラ内でブロッキング/スリープ関数を使用しないようにすることです。これは、hrtimer ハンドラを再設計することを意味し、mutex() の種類のブロッキング/スリープ関数を呼び出さないようにします。

于 2013-08-02T02:26:00.057 に答える