ここでは、スライドショーで提案されているように「snow」と呼ばれるSamsung XE303C12 ChromebookからXenを起動しようとしています。
https://www.slideshare.net/xen_com_mgr/xpds16-porting-xen-on-arm-to-a-new-soc-julien-grall-arm
このデバイスは、仮想化拡張機能を備えたSamsung armv7チップであるexynos5250 SOCデュアルコア1.7GHzおよび2MB RAMで駆動されます。
特に、最新の6.1.59 Linux LTSカーネルのベアメタルとKVMを含む最新の5.4.257 LTSカーネルの両方でかなりうまく動作するようにしました。 KVMはカーネルバージョンをサポートしているので、以前のLTSカーネルバージョンを使用してKVMをテストしました。 ARM v7の5.7がLinuxから削除されました。
したがって、KVMで使用できるため、ハイパーバイザーモードが有効になっていることがわかります。
Xen では、最新の Debian バージョン Xen 4.17 を使用して Debian armhf アーキテクチャを実装します。
(XEN) Xen version 4.17.2-pre (Debian 4.17.1+2-gb773c48e36-1)
(pkg-xen-devel@xxxxxxxxxxxxxxxxxxxxxxx)
(arm-linux-gnueabihf-gcc (Debian 12.2.0-14) 12.2.0) debug=n Thu May 18 19:26:30 UTC 2023
Linuxカーネルは、カーネルの上にXen設定カーネルオプション(CONFIG_XEN_DOM0など)を追加するカスタムビルドで、ベアメタルの同じChromebookモデルでうまく動作します。
私たちのブート方法は、Xen wikiに従ってu-boot fdtコマンドを使用して/chosenノードを追加するLinuxカーネルの未変更のデバイスツリーにdom0を追加した後、Xenハイパーバイザーをu-bootブートしてデバイスツリーをロードするすることです。そしてそこからリンクされたページ。
また、デバイスツリー/選択したノードを使用してinitrd.imgを追加してロードしようとしましたが、テストには違いはありませんでした。私たちは実際にKVMの起動に使用するのと同じuバージョンを使用しているXenでLinux LTSカーネルバージョン6.1.59をdom0として使用していますが、大きな問題が1つあります.
私たちが見ている問題は、Xenを使用して6.1.59カーネルバージョンをdom0で起動したときに画面が完全に黒くなり、システムにアクセスする唯一の方法はSSHを介してリモートでアクセスすることです。
ログには、SSH経由でリモートアクセス可能なWi-Fiカードに接続すると、USB光マウスがオンになるため、USBも機能するなど、他のほとんどの操作が機能していることを示します。
明らかにディスクも動作しています。 SDカードスロットから起動できるようにChrome OS開発者モードオプションをオンにして、ChromebookをデバイスのSDカードスロットから起動するように設定します。
ミステリーは、Xenからdom0で起動するのではなく、ベアメタルからまったく同じ6.1.59カーネルを起動すると、X.org Windowsシステムの対話を介して実行できる画面へのフルアクセスで起動されます。しかし、Xenを使用してdom0で起動すると、画面が完全に黒く変わり、システムへの唯一のアクセスはSSH経由のネットワーク経由です。
また、ハイパーバイザーモードでKVMを使用して5.4.257カーネルを起動すると、画面が機能し、X.org Windowsシステムを介してシステムと対話できます。
ログファイルに移動すると、次のエラーが表示されます。 Xen(またはベアメタル)の使用:
devuan-bunsen kernel: [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations
devuan-bunsen kernel: exynos-drm exynos-drm: bound 14400000.fimd (ops 0xc0d96354)
devuan-bunsen kernel: exynos-drm exynos-drm: bound 14450000.mixer (ops 0xc0d97554)
devuan-bunsen kernel: exynos-drm exynos-drm: bound 145b0000.dp-controller (ops 0xc0d97278)
devuan-bunsen kernel: exynos-drm exynos-drm: bound 14530000.hdmi (ops 0xc0d97bd0)
...
devuan-bunsen kernel: Console: switching to colour frame buffer device 170x48
devuan-bunsen kernel: exynos-drm exynos-drm: [drm] fb0: exynosdrmfb frame buffer device
devuan-bunsen kernel: [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0
この場合、カーネルはexynos-drmカーネルを使用してfb0デバイスを起動できます。
しかし、Xenの場合、exynos-drmで次のエラーが発生します。
devuan-bunsen kernel: [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations
devuan-bunsen kernel: exynos-drm exynos-drm: bound 14400000.fimd (ops 0xc0d96354)
devuan-bunsen kernel: exynos-mixer 14450000.mixer: [drm:exynos_drm_register_dma] *ERROR* Device 14450000.mixer lacks support for IOMMU
devuan-bunsen kernel: exynos-drm exynos-drm: failed to bind 14450000.mixer (ops 0xc0d97554): -22
devuan-bunsen kernel: exynos-drm exynos-drm: adev bind failed: -22
devuan-bunsen kernel: exynos-dp: probe of 145b0000.dp-controller failed with error -22
Xen MLの投稿を開始しましたが、まだ実際に解決策が見つかりませんでした。
https://lists.xenproject.org/archives/html/xen-users/2023-10/msg00034.html
カーネル構成ファイルで何らかの方法でEXYNOS_IOMMUパラメータを調整する必要があるか調整できるようです...または?