Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Qemu EPC の紹介

Qemu EPC の紹介

Avatar for Shunsuke Mie

Shunsuke Mie

March 11, 2024

Other Decks in Technology

Transcript

  1. あらすじ ◼ PCI Express (PCIe)について ◼ Linux PCI Endpoint Framework

    について ◼ QEMU PCIe Endpoint Controller (EPC) について ◼ デモ ◼ テストについて – 時間があれば 1 Copyright© IGEL Co., Ltd. All Rights Reserved.
  2. PCI Expressのおさらい Peripheral Component Interconnect Express (PCIe) … is a

    high-speed serial computer expansion bus standard, designed to replace the older PCI, PCI-X and AGP bus standards. It is the common motherboard interface for personal computers' graphics cards, sound cards, hard disk drive host adapters, SSDs, Wi-Fi and Ethernet hardware connections. Wikipedia PCI Express (https://en.wikipedia.org/wiki/PCI_Express) より 2 Copyright© IGEL Co., Ltd. All Rights Reserved.
  3. PCI Expressのおさらい (続き) 構成要素 ◼ Root Complex ◼ Switch ◼

    Endpoint ◼ Bridge 3 Copyright© IGEL Co., Ltd. All Rights Reserved.
  4. PCI Expressのおさらい (続き) 4 Copyright© IGEL Co., Ltd. All Rights

    Reserved. CPU Root Complex Switch Endpoint Endpoint Endpoint DRAM Switch Bridge PCI Endpoint
  5. ハードウェア構成例 5 Copyright© IGEL Co., Ltd. All Rights Reserved. CPU

    Root Complex Switch NIC Endpoint Ethernet Function LAN SATA Card Endpoint SATA Function HDD, etc DRAM
  6. ソフトウェアも含めた観点 6 Copyright© IGEL Co., Ltd. All Rights Reserved. Root

    Complex Root Complex Driver NIC Driver NIC Endpoint Ethernet Function LAN Software Hardware
  7. Endpoint Controller 7 Copyright© IGEL Co., Ltd. All Rights Reserved.

    Root Complex Root Complex Driver PCIe Device Endpoint Controller Endpoint Software Hardware
  8. Endpoint Controller(続き) 8 Copyright© IGEL Co., Ltd. All Rights Reserved.

    Root Complex Root Complex Driver PCIe Device Driver Endpoint Controller Endpoint Endpoint Controller Driver Endpoint Function Driver Function がソフトウェアで記述できることで、ホスト間の 通信や、任意の処理が行える PCIe デバイスとして見せ られる。 Hardware Software
  9. Linux PCI Endpoint Framework 9 Copyright© IGEL Co., Ltd. All

    Rights Reserved. Endpoint Controller Endpoint Endpoint Controller Driver PCIe Endpoint Framework Endpoint Function Driver PCIe Endpoint Framework により、 (完全ではないが)デバイス非依存の PCIe Endpoint Function の記述ができる Root Complex 側から見るとPCIeデバイス だけれども、裏ではLinuxが動作している
  10. Linux PCI Endpoint Framework 10 Copyright© IGEL Co., Ltd. All

    Rights Reserved. Endpoint Controller Endpoint Endpoint Controller Driver PCIe Endpoint Framework Endpoint Function Driver PCIe Endpoint Framework により、 (完全ではないが)デバイス非依存の PCIe Endpoint Function の記述ができる Upstream にある実装は • pci-epf-test • 動作確認テスト用 • pci-epf-ntb • PCIe の non transparent bridge を再現する ことで、ホスト間の通信を可能に • pci-epf-mhi • MHI stack を使ってホスト間の通信を可能 に SW HW
  11. Linux PCI Endpoint Framework (続き) まだ、ハードウェア、ソフトウェア双方で成熟していない 任意のPCIe デバイスの振る舞いを記述できそうだが、できない ハードウェアとしては、チップ屋さんに期待(交渉?) ソフトウェアとしては、

    動作確認、テストがあまりされていない。 ➔ 実機が無いとfunction driver の開発、テストができない… ➔ 同じ function driver がハードウェアによっては動いたり動かなかっ たり… エミュレーターがあれば、ある程度解決するのでは? 11 Copyright© IGEL Co., Ltd. All Rights Reserved.
  12. Linux PCI Endpoint Framework (続き) エミュレーターがあると、 ➔ 実機が無いとfunction driver の開発、テストができない…

    Function driver については開発、テストができる。自動テストも容易 ➔ ハードウェアによっては動いたり動かなかったり… Function driver や Endpoint Framework の問題であれば、エミュレー ターでのテストで見つかるかも 一方、 Endpoint Controller Driver やハードウェアに問題がある場合は、カ バーできない 12 Copyright© IGEL Co., Ltd. All Rights Reserved.
  13. エミュレータをどう作るか 2台のLinux が動作し協調動作する。 ◼ Root complex 搭載 ◼ Endpoint controller

    搭載 この間のPCIe のパケットを相互に受け渡す 既存のエミュレーターに、上記の機能を追加する 今回は、OSSで広く使われている Qemu を対象とする 13 Copyright© IGEL Co., Ltd. All Rights Reserved.
  14. QEMU PCIe EPC 全体像 14 Copyright© IGEL Co., Ltd. All

    Rights Reserved. QEMU Endpoint Controller QEMU Endpoint Controller Driver PCIe Endpoint Framework Endpoint Function Driver Root Complex Root Complex Driver PCIe device driver EPC Bridge Linux Qemu Guest1 Guest2 新規に実装する箇所 既にある箇所
  15. なぜ、独自デバイスなのか QEMU Endpoint Controller について 実デバイスであれば、既存のドライバが使える 実デバイスのエミュレーションは実装が複雑 Root Complex と

    Endpoint Controller の機能両方を持つ ことが多く双方の実装が必要 デバイスに依存しない形の動作確認が行える 15 Copyright© IGEL Co., Ltd. All Rights Reserved.
  16. EPC Bridge PCIe のデバイスとして実装 デバイスとしての振る舞いの代わりに、 ゲストからのアクセスを、QEMU Endpoint Controller へ受け渡す。 具体的には、

    PCIe バスに流れるもの受け渡し 具体的には、PCIe TLP 16 Copyright© IGEL Co., Ltd. All Rights Reserved. Root Complex Root Complex Driver PCIe device driver EPC Bridge To QEMU EPC Linux Qemu
  17. QEMU Endpoint Controller Endpoint Controller ソフトウェアで Function を実装できる 十分な機能を持つ Endpoint

    Controller Driver Linux PCI EP Framework に適応した形 で実装 17 Copyright© IGEL Co., Ltd. All Rights Reserved. QEMU Endpoint Controller QEMU Endpoint Controller Driver PCIe Endpoint Framework Endpoint Function Driver To EPC Bridge Linux Qemu
  18. 進捗 • Qemu に必要な箇所の実装 (DONE) • テスト用の function driver での確認

    (DONE) • その他の function driver での確認 (WIP) • アップストリーミング (WIP) • Linux, QEMU 双方に RFC として投稿 • フィードバックをもとに次段準備中 • Linux 側は、レビュワーの一人より前向きな話 • QEMU 側は、アークテクチャの指摘質問程度 • 発表 (WIP) • 今日ここ (ALMOST DONE) • KVM Forum 2024 • プロポーザル 準備中 • OSSの何か 18 Copyright© IGEL Co., Ltd. All Rights Reserved.
  19. デモ 19 Copyright© IGEL Co., Ltd. All Rights Reserved. QEMU

    Endpoint Controller QEMU Endpoint Controller Driver PCIe Endpoint Framework pci-epf-test Root Complex Root Complex Driver pci-endpoint-test EPC Bridge Linux Qemu Guest1 Guest2
  20. テスト(続き) 想定している流れ 1. パッチが投稿される 2. パッチが適応されたカーネル(or モジュール)のビ ルド 3. テストの実行と結果の確認

    準備、動作確認済み https://github.com/ShunsukeMie/linux-epf-autotest 22 Copyright© IGEL Co., Ltd. All Rights Reserved.
  21. まとめ ◼ Linux PCI Endpoint Framework の紹介 ◼ QEMU PCI

    Endpoint Controller等を実装し仮想環境 で動作確認できる仕組みを提供 – Endpoint function の開発効率の向上 – Endpoint Framework のテストの容易化 ◼ 自動テストに向けて – 調査、検討が必要 24 Copyright© IGEL Co., Ltd. All Rights Reserved.