2025/08/15 20:21 Porting Gigabyte MZ33-AR1 Server Board with AMD Turin CPU to Coreboot

ロボ子、Turinサーバープロセッサのcorebootサポートが進んでいるのじゃ!

博士、それは素晴らしいニュースですね!AMDがCPU初期化コードを公開したことがきっかけとのことですが、具体的にはどのような進捗があったのでしょうか?

ふむ、まずはTurin PSPファームウェアパッケージじゃな。リファレンスMZ33-AR1イメージからAPCBを抽出して、corebootに追加したらしいぞ。

APCBですか。AGESA PSP Configuration Blockのことですね。ボード固有のメモリ構成データが含まれているんでしたっけ。

その通り!それから、corebootにTurin SoCのスケルトンも作成したみたいじゃ。最小限のOpenSIL統合を移植して、コンパイルできるようにしたらしいぞ。

OpenSILは、AMDプラットフォームのシリコン初期化を統一するイニシアチブでしたね。GenoaのPoCがcorebootに統合されたことを受けて、Turinのサポートも進んでいるんですね。

そうじゃ!MZ33-AR1メインボードスケルトンも追加して、シリアルコンソールを有効にして、ハードウェアでブートブロックが実行されることを確認したらしいぞ。着々と進んでいるのじゃ。

なるほど。SoC構造は、ボード用のcorebootイメージを構築するための基盤になるんですね。Turin SoCはGenoa SoCをベースに作成されているとのことですが、何か違いはあるのでしょうか?

ふむ、Turin CPUはGenoaよりもUSBポートが少ないらしいぞ。それがチップ構造に反映されているみたいじゃ。

USBポートの数が違うんですね。src/soc/amd/turin_poc/early_fch.cも更新されて、他のAMD SoCと一致するように調整されたとのことですが、具体的にはどのような点が調整されたのでしょうか?

AOAC(Always on Always Connected)のレジスタビットの小さな違いを調整したみたいじゃな。それから、CPU内部デバイスおよびACPIのMMIOおよびI/Oベースアドレスも調整したらしいぞ。

なるほど。src/soc/amd/turin_poc/root_complex.cはPCIドメインの配置を記述し、src/soc/amd/turin_poc/chipset.cbはPCIデバイスのレイアウトを記述するんですね。

その通り!Makefile.mkも更新して、不揮発性APOBおよびマイクロコードファイルをPSPファームウェア構造に含めるようにしたみたいじゃ。

PSP(Platform Security Processor)は、AMD CPUに組み込まれた特権コプロセッサでしたね。PSP blobの準備は、CPUシリコン固有のblobと、メインボード固有のblobの2つのステップに分けられるとのことですが、それぞれの役割は何でしょうか?

CPU固有のblobはAMDが提供して、PSPとCPUを初期化するためにすべてのボードに含まれるのじゃ。メインボード固有のblobはAPCBと呼ばれて、ボード固有のメモリを構成するためのPSP AGESAの構成データじゃ。

APCB blobは、PSPToolユーティリティを使用して、ベンダーイメージから抽出するんですね。Gigabyte MZ33-AR1は、GenoaとTurinのファームウェアを備えたデュアルROMを搭載しているとのことですが、APCB blobは常にBIOSディレクトリに存在するんですね。

そうじゃ!MZ33-AR1の初期ボードサポートを追加するパッチも利用可能になっているみたいじゃな。bootblock.cはeSPIを設定し、BMCシリアルポートを構成するらしいぞ。

devicetree.cbはボードの基本的な構成を定義し、初期ブートフェーズに必要なデバイスを有効にするんですね。corebootイメージを構築するには、特定の回避策を使用し、PSP blobのステッチングを省略する必要があるとのことですが、なぜでしょうか?

ベンダーイメージは、BIOSが実行するために十分なフラッシュをメモリにコピーするのじゃ。このフラッシュ領域は圧縮されていないから、UEFIToolを使って、フラッシュ内のBIOSブートコードの場所を特定する必要があるみたいじゃな。

BIOSおよびAPOBエントリバイトを調べて、DRAM内の宛先アドレスを取得するんですね。corebootイメージをベンダーUEFI FVの代わりに最後の0x340000バイトにフラッシュし、外部プログラマーを使用して、ボードにイメージをフラッシュするんですね。

その通り!シリアル出力を監視して、ブートプロセスを確認するのじゃ。Turin OpenSILはまだPoC段階であり、本番環境での使用は意図されていないから注意が必要じゃな。

TurinおよびGigabyte MZ33-AR1のサポートに関する現在のパッチは、corebootのGerritで入手可能とのことですね。Dasharo Pro Packageを搭載したGigabyte MZ33-AR1プラットフォームで、Qubes OSのセキュアな統合、OpenSIL、OpenBMCを信頼できるルートとして活用する計画もあるんですね。

そうそう。しかしロボ子よ、corebootのコンパイルが終わらないのは、きっと私のコードにバグがあるからじゃな!

博士、それはまさか…デバッグのしがいがありますね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。