[BitVisor-devel:122] Re: BitVisor の AHCI ドライバにつきまして

Hideki EIRAKU hdk @ igel.co.jp
2020年 12月 14日 (月) 16:37:55 JST


イーゲル 榮樂です。

From: Manabu HIRANO <hirano @ toyota-ct.ac.jp>
Subject: Re: [BitVisor-devel:120] Re: BitVisor の AHCI ドライバにつきまして
Date: Mon, 14 Dec 2020 16:20:52 +0900

> 一時的な回避策として ahci.c の975行目の ASSERT をコメントアウト(して
> いいか
> わかりませんが...)すると Windows7 は動作しました。しかし、Windows 10
> は起動
> しませんでした。  ## Windows7, 10 ともに AHCI ドライバは MS標準でした

AHCI の仕様書を見て頂きたいのですが、バッファーを Physical Region
Descriptor Table (struct prdtbl) に複数渡して scatter/gather できるよ
うになっていて、そのひとつのエントリの限界サイズが 4MiB です。(プログ
ラム上も構造体の dbc メンバーが 22 ビットになっている部分がそれです。)
BitVisor の実装はゲスト側が複数使うことは想定していますが、VMM 側は複
数になることを想定していませんので、単純に assertion を消せば、VMM 側
転送に指定するバッファーのサイズが wrap し変な転送がされて、書き込みコ
マンドではファイルシステムが壊れることも考えられますのでご注意ください。

> ちなみに BitVisor で使えるヒープを増やすには単純に core/mm.c の
>  VMMSIZE_ALL を増やせば大丈夫でしょうか...?

それはそうです。上述のように struct prdtbl に複数書き込むようにするの
は必須で、ヒープについては、暗号化の関数仕様に合わせて連続アドレスのま
まにするのであれば、だいぶ余裕を持った値にしておく必要があると思います。

-- 
Hideki EIRAKU <hdk @ igel.co.jp>


BitVisor-devel メーリングリストの案内