.compatibleに関連付けられた組み込み ARM ベースのシステム用の単純なカーネル モジュールがあります。ご存知のように、1 つのデバイス ツリーに複数の「.compatibles」が発生する可能性があり、一致する OF ノードごとに.probeが呼び出されます。デバイス ツリーに複数の適切な.compatibleが表示された場合に、カーネルが.probe関数を同時に呼び出すことができるかどうか(!)
について、正確な情報を見つけることができません。カーネルドライバーのソースを読んでも、 .probesでロックを見たことがないにもかかわらず、(同時に呼び出される) ことができないという確信はありません。
からhttps://www.kernel.org/doc/Documentation/driver-model/design-patterns.txt
、私は読んだ:
カーネルには、特定のシステム (シングルトン) で一度だけ probed() されることを前提とするいくつかのデバイス ドライバーが含まれていますが、ドライバーがバインドするデバイスは複数のインスタンスで表示されると想定するのが慣習です。これは、probe() 関数とすべてのコールバックが再入可能である必要があることを意味します。
しかし、これはホットプラグまたはこのようなものに関連しているように見えます(間違っている場合は修正してください)が、私の質問はOFノードのみの処理に関するものです。platform_driver.driverでPROBE_PREFER_ASYNCHRONOUSに設定できる.probe_type
があること
がわかりましたが、それが必要なものかどうかはわかりません (間違っている場合は修正してください)。.probeを同期/並行して呼び出すことができる
場合は、いくつかのロックを実装し、最終的にこのルーチンを再入可能にする必要があります。.probeメカニズムが
どのように実装されているかについて読むことができるリンク/ドキュメント/章を教えてください。または正確な答えを教えてください。