AMD 向けハイパーバイザの外部割り込み実装例
AMD 向けハイパーバイザ YmirC を自作した際にゲストの外部割り込みをどのように実装したかを紹介する。あくまで一例。リポジトリはこちら: gingk1212/ymirc 設計は例によって Writing Hypervisor in Zig (割り込みの注入) に沿っている。やりたいことはホストとゲストの両者が外部割り込みを受け取ることができるようにすることであり、そのために以下のような設計となっている。 ...
AMD 向けハイパーバイザ YmirC を自作した際にゲストの外部割り込みをどのように実装したかを紹介する。あくまで一例。リポジトリはこちら: gingk1212/ymirc 設計は例によって Writing Hypervisor in Zig (割り込みの注入) に沿っている。やりたいことはホストとゲストの両者が外部割り込みを受け取ることができるようにすることであり、そのために以下のような設計となっている。 ...
先日の記事で書いた通り Writing Hypervisor in Zig に沿ってハイパーバイザを自作した。その際に遭遇したバグの数々についてどんなバグと出会ってどうやって調べて最終的にどう解決したのかをここに残しておく。だいたい自分のミスが原因なので誰の役にも立たないかもしれないけれど、こんなことがあったなあと後で自分で見返したい気持ちもあり。 ...
AMD-V/SVM における Nested Paging について、有効化方法や具体的な設定方法をメモ。なお、ここで記載する内容は AMD64 Architecture Programmer’s Manual, Volume 2 (以下、APM, Vol.2) の「15.25 Nested Paging」にすべて書いてあるので詳細はそちらを参照すること。 ...
Writing Hypervisor in Zig をやっているという記事を前に投稿したが、そこからも少しずつ開発を進めて先日ついに完走した。自作ハイパーバイザ上で Linux が最後まで起動した瞬間はもう感無量だった。 ...
AMD-V (SVM) を使ってゲスト側で HLT 命令をループして実行するだけのシンプルなコードを動かすことができたので、ゲストモードへの移行とホストモードへの復帰の流れをメモしておく。前回の記事で書いた AMD-V の有効化はしてある前提。なお、今回参照したドキュメントは AMD64 Architecture Programmer’s Manual Volume 2: System Programming の主に以下の項目。 ...