DragonFlyBSD

DragonFly BSDの新機能「kpmap」を読んでみる

DragonFly BSD 4.0.1がリリースされたという記事を呼んでリリースノートを見ていたら「New device files /dev/upmap and /dev/kpmap have been added」なんてのがあって、興味が出たのでソースを読んでみました。 この機能はざっくり言ってしまうとLinuxにお…

dradonflybsdのmdcpuとmycpuマクロ

φ(・・*)ゞ ウーン 両者の違いをよく忘れるのでorzmdcpuもmycpuも今動いているcpuが持ってるデータにアクセスするために使うのは良いとして、mdcpuのmdは多分machine dependentとかそんな意味ですよね。ということで、mdcpuはアーキテクチャ依存な情報、mycpuは…

BHyVeデバッグめも2

φ(^∇^ ) メモナノラ こちらの「OSSはアルミニウムの翼で飛ぶ KVM on KVM(nested KVM)」の記事を参考にNested vmx使えるようになりました。分かりやすい説明ありがとうございます そんなわけで、多少前進したけど、これが限度ですかね~ こんなvmxのチェックは通っ…

BHyVeデバッグめも1

φ(^∇^ ) メモナノラ コンパイルエラーの修正は終わったのでデバッグめもに変わりましたw昨日のカーネルパニックの原因はsys/kern/kern_slaballoc.cのここで落ちているだろうという予測をしました。 if (ptr == NULL) panic("trying to free NULL pointer"); 理由…

BHyVeビルドめも28

φ(^∇^ ) メモナノラ コンパイルエラー修正完了ですよヽ(・∀・ )ノ キャッ キャッ >>> Kernel build for BHYVE completed on Fri Jul 27 00:23:17 JST 2012とりあえずコンパイルは出来たんですけど、新しいカーネルで起動するとvmm_is_pptdev()のkfreeenv()呼び出…

BHyVeビルドめも27

_ロ(‥ ) ケシケシ... なんとなくvmm_support.S、vmm_util.c 、x86.cのコンパイルエラーも修正しましたー 簡単に直せるやつばっかりだったのは運が良かったですね! あと、vmm_mem.cがコンパイルされてないよなーと思ったらfilesでtypoしてたので修正しました(;´∀…

BHyVeビルドめも26

( ..)φカキカキ vmm_ipi.cの残りを片付けたので、これでこのファイルは終わりましたヽ(・∀・ )ノ キャッ キャッやったことは3行ほどのパッチなんですけどねw ipi_cpu()がsingle_apic_ipi()に置き換わっただけです。 diff --git a/sys/platform/pc64/vmm/vmm_ipi.…

BHyVeビルドめも25

φ(・ω・ )かきかき vmm_ipi.cのipiの初期化、終了処理あたりを片付けました。 FreeBSDのidtを"FreeBSDのidtめも"で調べたところ、すべてのcpuはidtとしてidt0を参照するようになっていたのですが、DragonFly BSDは一応cpu毎に違う変数を使っているのを考慮し…

BHyVeビルドめも24

φ(・ω・ )かきかき ipiまわりはFreeBSDとDragonFlyで結構違うっぽいのでゆっくりと。 まずは簡単なやつだけ直しておいたのでこっからが本番ですね~ -------------------------------------------------------------- >>> Kernel build for BHYVE started on…

BHyVeビルドめも23

φ(・ω・ )かきかきvmm_dev.cのコンパイルは終わりました。さっきと同じコミット間違えしましたけど調子悪くてバファリン飲んでるし(・ε・)キニシナイ!! と言うわけで、diffはこちらに。 diff --git a/sys/platform/pc64/vmm/vmm_dev.c b/sys/platform/pc64/v…

BHyVeビルドめも22

φ(・・*)ゞ ウーン vmmdev_mmap()の書き換え終わりです。#if 0のブロック消すの忘れてコミットしちゃったけど直すの面倒なので、それ消したコミットをその後しましたがwdiffはこんな感じですねー [masami@dfly:/usr/src/sys/platform/pc64/vmm]$ git diff HEAD^…

BHyVeビルドめも21

φ(^∇^ ) メモナノラ 昨日の続きというほど続いて無いですが、今日の変更点はこちら。 まず、昨日の続きに当たるFreeBSDのcdevsw構造体とDragonFly BSDのdev_ops構造体の差のところはとりあえずこんな感じで。 単に使用する構造体を変えたのに伴って変数へのアクセ…

BHyVeビルドめも20

φ(・・*)ゞ ウーン とうとうこのメモも20回目ですね。今日はs/malloc/kmalloc/とs/free/kfreeで終わるという惨敗っぷりですがwww ↓の初期化でコンパイルエラーになってたのですが、dfbsdはどこでcdevsw構造体を定義しているのか探していて力尽きました\(^o^…

BHyVeビルドめも19

φ(・・*)ゞ ウーン vmm.cのコンパイル出来ました。今日のdiffはこちら。毎回忘れるので先にメモっておくと、FreeBSDのスレッド構造体(struct thread)はsys/proc.hで定義されてるφ(・ω・ )かきかき今日弄ったところはvmm.cのvm_set_pinning()でスレッドをcpuにバ…

BHyVeビルドめも18

φ(・ω・ )かきかき まだまだvmm.cのコンパイルエラー直し中です。今日の修正箇所はこれ。 今日はvmm.cそのものには手を付けてなくて、周辺のファイルに手が入ってます。主にこのファイルですが。 やったのはマクロ関係の追加と、set_pcb_flags()の追加。あと…

BHyVeビルドめも17

φ(・・*)ゞ ウーン さて今日は気力が尽きたのでfpuexit()とか実装するのはちょっと諦めましたよ(´;ω;`)ブワッ まあ、fpu使わない限りは大丈夫ですよね~というところです。一応fpuexit()以外はとりあえずDragonFlyに持ってきましたけど。 ちなみにfpuexit()…

BHyVeビルドめも16

φ(・・*)ゞ ウーンとりあえず仮想cpuのfpuのデータをセーブしたりフリーしたりするところのコンパイルエラーを通すように実装だん。基本的にBHyVeに必要な関数なのでvmm/以下にvmm_fpu.[ch]として作成しました。 uma_zcreateとかはDragonFly BSDだとsys/netgrap…

BHyVeビルドめも15

φ(・・*)ゞ ウーン 今日のvmm.cは結構面倒くさそうなのでちょっとずつ進める予定に><まずは簡単なヘッダファイルの変更と、その他をちょっと。ちょっと調べたのはこれ位ですね。FreeBSDでカレントのプロセス制御ブロックの取得にPCPU_GETマクロを使ってますが…

BHyVeビルドめも14

φ(・ω・ )かきかき 今日は怒涛の2ファイル分コンパイルエラー修正( ´∀`)bグッ! まぁ、たんに簡単な修正で済んだだけですけどね(;・∀・) ともかくvdev.cとvlapic.cのコンパイルできました。 vdev.cはホント単純にs/malloc/kmallocというレベルの修正。vlapi…

BHyVeビルドめも13

φ(・・*)ゞ ウーン ppt.cのコンパイル通したけどホントにこれで動くのかは別の話(´・ω・`)やったのはFreeBSDスタイルのpci_alloc_msi()とpci_alloc_msix()をDragonFlyの方式に合わせてみたのと、msi、msixの構造体をちょっと変えてvoidポインタを使っていたcoo…

BHyVeビルドめも12

( ..)φカキカキ 今日はとりあえず簡単なやつだけ片付けておいて、次のために -------------------------------------------------------------- >>> Kernel build for BHYVE started on Mon Jul 9 21:42:33 JST 2012 ------------------------------------------…

BHyVeビルドめも11

( ..)φカキカキ iommu.cのコンパイルエラーの修正はインクルードするファイルの変更で済みましたヽ(・∀・ )ノ キャッ キャッdiffはこれだけでpci関連のヘッダファイルは昨日調べたから割と簡単に済んだのですが。 --- a/sys/platform/pc64/vmm/io/iommu.c +++ b/…

BHyVeビルドめも10

( ..)φカキカキ vtd.cをコンパイル通すの大変そうだなーとか思ってたわけですが、やってみたらできましたw 変更したのはvtd.cだけです ただ、FreeBSDのpmap_invalidate_cache()はそれらしいのがdbsdで見つけられなかったので適当に作ってます。 923 pmap_invalid…

BHyVeビルドめも9

φ(・・*)ゞ ウーン vmx.cのコンパイルエラーを消したのですが、これで良いのか微妙なところも。 ふと気づいたらコミットし忘れてたファイルが合ったのでコミット・pushした。よく分かってないところとしては、TDF_ASTPENDINGをTDF_PREEMPT_LOCKに置き換えたので…

BHyVeビルドめも8

( ..)φカキカキ vmx.cのこの行のコンパイルエラーを取るために色々調べたことはメモっとかないと100%忘れそうなのでw error = vmwrite(VMCS_HOST_TR_BASE, (u_long)PCPU_GET(tssp)); コンパイルエラーはこれ /usr/src/sys/platform/pc64/vmm/intel/vmx.c:802: er…

今のコンパイルエラー

最新のコンパイルエラーたち ——————————————————————————————— »> Kernel build for BHYVE started on Tue Jul 3 22:17:48 JST 2012 ——————————————————————————————— ===> BHYVE cd /usr/src/sys/config; PATH=/usr/obj/usr/src/ctools_x86_64_x86_64/usr/s…

BHyVeビルドめも7

φ(.. )メモシテオコウ vmcs.cからvmcs.o作成キタ━(゜∀゜)━! ということで、vmcs.cのコンパイルが通った訳です。diffはこちら。 done: まずは無いって言われたsys/pcpu.hですが、これは特に使う必要なかったのでサクッと削除。次にFreeBSDだとcurcpuが今動いているc…

BHyVeビルドめも6

φ(.. )メモシテオコウ ついにept.cがコンパイルできた( ´∀`)bグッ! コミットはこれ done: FreeBSDのsmp_rendezvous()に該当するのはどれかーというのを探しつつ、辿り着いたのがDragonFly BSDの公式サイトにあった更新記録でですね、「Remove the now obsolete sm…

BHyVeビルドめも5

ept.cの残りはsmp_rendezvous()がないというやつφ(・・*)ゞ ウーン FreeBSDだとsys/sys/smp.hに定義があって、実体はsys/ker/subr_smp.cにいる。 -------------------------------------------------------------- >>> Kernel build for BHYVE started on Sun J…

DragonFlyBSDのcrit_enter()とcrit_exit()めも

せっかくなのでめもっとこφ(.. )メモシテオコウ crit_enter()とcrit_exit()はsys/sys/thread2.hでマクロとして定義されてて、これらの実態も同じくthred2.hで定義されてます。 #define crit_enter() _crit_enter(mycpu) #define crit_exit() crit_exit_wrapper() や…

BHyVeビルドめも4

φ(^∇^ ) メモナノラ FreeBSDのcritical_enter()とcritical_exit()はDragonFlyだとcrit_enter()でcrit_exit()の置き換えでOKだったのでコミットだん。done: ふと/usr/src/sys/kernでcriticalとかgrepすれば良いじゃんと思ってやってみたら上手いことそれらしいの…

めも:critical_enter()とcritical_exit()

( ..)φカキカキ コンパイルエラーで出てたcritical_enter()とcritical_exit()はFreeBSDのsys/kern/kern_switch.cにあるこれのことだな。 やってることはスレッドがクリティカルセクションに出入りするときの処理なので、DragonFlyBSDがこの辺をどうやってるのか…

BHyVeビルドめも3

__inlineのコンパイルエラーを無理やり解決φ(・・*)ゞ ウーンdone: __inlineでコンパイルエラーになってたのはvmm.hの他にこれだけあったんだけど、とりあえずs/__inline/inline/をしたのと、関数の戻り値の型のあとに__inlineがあるものは型の前にinlineを置…

BHyVeビルドめも2

ちょっと進めたからφ( ̄ー ̄ )メモメモコミットのdiff done’ sys/_cpuset.h、sys/cpuset.hをFreeBSDから持ってきて追加。これとsys/_types.hにcpusetid_tの定義を追加して、cpusetid_tのコンパイルエラーは解消と思ったら、vmm.hで#include を追加してあげる必要…

BHyVeビルドめも1

とりあえずφ(.. )メモシテオコウ変更点はgithubに。 done: sys/smp.hが無いのはmachine/smp.h(/usr/src/sys/platform/pc64/include/smp.h)に変更。FreeBSDと違う点は結構ある感じだけど、起源は同じっぽい。 vm_memattr_tを/usr/src/sys/sys/types.hに追加。todo…

DragonFlyBSDでBHyVeをビルドしてみるテスト

BHyVeどころかDragonFlyBSDもよく分かってないおれがとりあえずやってみるw /usr/src/sys/platform/pc64/vmm/intel/ept.c:36:21: error: sys/smp.h: No such file or directoryのsys/smp.hはこれのことだよね。 コンパイル通すだけでも先は長いそうなのでだ…