2016-04-13 3 views
2

QEMUでOP-TEEを正常に実行し、スケジューラの仕組みを理解したいと思っています。 セキュアワールドに入る前と通常の世界に戻った直後に、変数のjiffiesを取得するようにソースコードを変更しました。ここにコードがあります。セキュアな世界に切り替えた後にOP-TEEのLinuxスケジューラが動作する方法

i=jiffies; 
tee_smc_call(&param); 
j=jiffies 

ここtee_smc_callSMCコールを発行するasm関数です。タイマ割込みがSWを離れる結果となる場合、jiより大きい1になります。私はそれはタイマ割り込みがどこかで処理されることを意味します。私の控除が正しくない場合は、私を修正してください。

私はリンクhttps://lists.linaro.org/pipermail/tee-dev/2015-August/000160.htmlhttps://github.com/OP-TEE/optee_os/issues/332に行きます。 OP-TEEの開発者は、タイマー割り込みは、NWに戻ってすぐにNWによってサービスされると述べています。
SWのIRQハンドラのソースコードを読みました。私は、SWハンドラがNWのVBARを見つけ、NWハンドラへのリターンアドレスを変更すると考えました。しかし、そのようなコードは見つかりませんでした。
私はこのサイト TrustZone: Scheduling processes from the two worldsARM TrustZone - Behaviour of the scheduler in Secure and Non-Secure OSにいくつかの記事を読みました。後者は私のものに似ていますが、答えはOP-TEEの実装で何が起こるかは分かりません。

だから私は魔法が、それはSWで一度サービスされているため、タイマ割り込みNWに戻った後、再び処理することが作っているものを疑問に思って。

私はOP-TEEに精通していません。そして、これが私の最初の質問です。もしそれが明らかでない、あるいは愚かであれば、私を許してください。ありがとう。

+1

あなたの質問に答えがありましたら、それを共有できますか? – shunty

答えて

0

誰も私の質問に1年間答えないので、私は自分の説明をしようとします。

これは私自身の理解であることに注意してください。私はそのようなことの専門家ではない。

  1. タイマ割り込みが生成され、GICが状態を非アクティブからペンディングに変更します。
  2. GICは、割り込み要求をセキュアステートのプロセッサに転送します。これはSecureOSの外部IRQです。
  3. SecureOSのIRQハンドラは、Forward IRQ from secure world to normal worldとして機能します。私はthread_irq_handlerのソースコードを調べ、Interrupt Acknowledge Registerの読み込みを見つけることができません。
  4. プロセッサが通常の世界に戻ります。タイマ割り込みの状態は、まだInterrupt handling state machine in GIC architecture specificationに従って保留中です。
  5. GICは適切なタイミングでCPUへの割り込み要求を通知します。
  6. 割り込みは通常の世界で処理されます。推論の

私のチェーンはこのようなものです。

セキュアOSのIRQハンドラで割り込み確認レジスタが読み込まれません。

- >割り込み状態は依然として保留中です。

- > GICはCPUへの割り込み要求を通知します。

関連する問題