Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Takuya ASADA
2,617 views
MMIO on VT-x
Technology
◦
Read more
4
Save
Share
Embed
Embed presentation
Download
Downloaded 26 times
1
/ 22
2
/ 22
3
/ 22
4
/ 22
5
/ 22
6
/ 22
7
/ 22
8
/ 22
9
/ 22
10
/ 22
11
/ 22
12
/ 22
13
/ 22
14
/ 22
15
/ 22
16
/ 22
17
/ 22
18
/ 22
19
/ 22
20
/ 22
21
/ 22
22
/ 22
More Related Content
KEY
軽快なBHyVe
by
Takuya ASADA
PPTX
Androidとfpgaを高速fifo通信させちゃう
by
ksk sue
PPTX
Preludeのprecompile
by
Glass_saga
PDF
ほんとにあったphantomjsのコワい話
by
Kohki Nakashima
PDF
dofilewrite and vn_write
by
kusabanachi
PDF
Vimはこわくない
by
Yuichi Watanabe
PDF
OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御
by
ROBOTIS Japan
PDF
ttwrite
by
kusabanachi
軽快なBHyVe
by
Takuya ASADA
Androidとfpgaを高速fifo通信させちゃう
by
ksk sue
Preludeのprecompile
by
Glass_saga
ほんとにあったphantomjsのコワい話
by
Kohki Nakashima
dofilewrite and vn_write
by
kusabanachi
Vimはこわくない
by
Yuichi Watanabe
OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御
by
ROBOTIS Japan
ttwrite
by
kusabanachi
What's hot
PDF
coma Study Room vol.2 Arduino Workshop
by
Eto Haruhiko
PPTX
Kiso sekkei 01rev03
by
tetsuya matsuno
PDF
d-kami x86-1
by
Daisuke Kamikawa
PPTX
Kiso sekkei 02rev02
by
tetsuya matsuno
PPTX
Effective Hyper-V - 久しぶりエディション
by
Kuninobu SaSaki
PDF
【学習メモ#7th】12ステップで作る組込みOS自作入門
by
sandai
PPTX
Iot2017 0304-センサネットワークのセンサ端末群をインターネット上のWikiページで制御する IoTシステムの試作
by
Takashi Yamanoue
PDF
neobundle.vimについて+おまけ
by
Shougo
PDF
【学習メモ#4th】12ステップで作る組込みOS自作入門
by
sandai
PDF
いいかげんな人のためのTransactional Memory Primer
by
Yuto Hayamizu
PDF
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
PDF
Zio stm
by
keisunagawa
PDF
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
PDF
Let's play with Goldfish
by
Tetsuyuki Kobayashi
PDF
Symfony2 behat-bdd
by
Hidenori Goto
KEY
軽快なPlan 9 Update - Illumos KVM上陸 -
by
Go Saito
PDF
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
by
Hirotaka Kawata
PDF
Mruby jitプレゼン
by
miura1729
PDF
本当にわかる Spectre と Meltdown
by
Hirotaka Kawata
ODP
できる!trema-switch
by
Hiroaki Kawai
coma Study Room vol.2 Arduino Workshop
by
Eto Haruhiko
Kiso sekkei 01rev03
by
tetsuya matsuno
d-kami x86-1
by
Daisuke Kamikawa
Kiso sekkei 02rev02
by
tetsuya matsuno
Effective Hyper-V - 久しぶりエディション
by
Kuninobu SaSaki
【学習メモ#7th】12ステップで作る組込みOS自作入門
by
sandai
Iot2017 0304-センサネットワークのセンサ端末群をインターネット上のWikiページで制御する IoTシステムの試作
by
Takashi Yamanoue
neobundle.vimについて+おまけ
by
Shougo
【学習メモ#4th】12ステップで作る組込みOS自作入門
by
sandai
いいかげんな人のためのTransactional Memory Primer
by
Yuto Hayamizu
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
Zio stm
by
keisunagawa
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
Let's play with Goldfish
by
Tetsuyuki Kobayashi
Symfony2 behat-bdd
by
Hidenori Goto
軽快なPlan 9 Update - Illumos KVM上陸 -
by
Go Saito
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
by
Hirotaka Kawata
Mruby jitプレゼン
by
miura1729
本当にわかる Spectre と Meltdown
by
Hirotaka Kawata
できる!trema-switch
by
Hiroaki Kawai
Viewers also liked
ODP
Bhyve Internals
by
Takuya ASADA
PDF
「ハイパーバイザの作り方」読書会#2
by
Takuya ASADA
PDF
Progetto CIVITAS: Modello di Accoglienza Partecipata
by
Luigi A. Dell'Aquila
PDF
Curso de Marketing y Publicidad Digital
by
Exito Digital Formación - Formación en la digitalización de Pymes, profesionales y emprendedores.
PPTX
St Michael Presentation
by
BudgetVideo4BIZ
PPTX
2017 customer intelligence signs which brands should never ignore
by
Subhakar Rao Surapaneni
PDF
15 ideas para la Transformación Digital de tu Negocio
by
Lluis Serra
PPTX
El relleno fluido no fue el único culpable - Foro Técnico sobre la Troncal Ca...
by
Sociedad Colombiana de Ingenieros
PDF
Fanny Leberquier
by
SoSPIE
PPTX
The Power of Beneficiary-Directed Data (CMS BlueButton on FHIR API Update)
by
Mark Scrimshire
PPTX
Ouellette elixir 2017
by
Neuro, McGill University
PPT
openEHR: aspectos de interoperabilidad y mantenibilidad
by
Pablo Pazos
PPTX
臨床心理学における例数設計
by
Senshu University
PDF
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
by
Jun-ichi Sakamoto
PDF
Deeplinkから考えるWebとAppの今後とは
by
Yohhei Someya
PPTX
SLLA Book: SLLA Crash Course
by
Wafa Hozien
PDF
CSCA 2017 - Water Nonprofit Case Studies
by
Rahul Mitra
Bhyve Internals
by
Takuya ASADA
「ハイパーバイザの作り方」読書会#2
by
Takuya ASADA
Progetto CIVITAS: Modello di Accoglienza Partecipata
by
Luigi A. Dell'Aquila
Curso de Marketing y Publicidad Digital
by
Exito Digital Formación - Formación en la digitalización de Pymes, profesionales y emprendedores.
St Michael Presentation
by
BudgetVideo4BIZ
2017 customer intelligence signs which brands should never ignore
by
Subhakar Rao Surapaneni
15 ideas para la Transformación Digital de tu Negocio
by
Lluis Serra
El relleno fluido no fue el único culpable - Foro Técnico sobre la Troncal Ca...
by
Sociedad Colombiana de Ingenieros
Fanny Leberquier
by
SoSPIE
The Power of Beneficiary-Directed Data (CMS BlueButton on FHIR API Update)
by
Mark Scrimshire
Ouellette elixir 2017
by
Neuro, McGill University
openEHR: aspectos de interoperabilidad y mantenibilidad
by
Pablo Pazos
臨床心理学における例数設計
by
Senshu University
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
by
Jun-ichi Sakamoto
Deeplinkから考えるWebとAppの今後とは
by
Yohhei Someya
SLLA Book: SLLA Crash Course
by
Wafa Hozien
CSCA 2017 - Water Nonprofit Case Studies
by
Rahul Mitra
Similar to MMIO on VT-x
ODP
Bhyve code reading
by
Takuya ASADA
PDF
BHyVeってなんや
by
Takuya ASADA
PDF
BHyVe: The BSD Hypervisor
by
Takuya ASADA
PDF
Unsafe Nested Virtualization on Intel CPU
by
Takaaki Fukai
PDF
仮想化技術によるマルウェア対策とその問題点
by
Kuniyasu Suzaki
PPTX
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
PPTX
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
PDF
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
by
Tsukasa Oi
PDF
#ljstudy KVM勉強会
by
Etsuji Nakai
PDF
VIOPS04: Intel VT ~仮想化を支える基礎技術~
by
VIOPS Virtualized Infrastructure Operators group ARCHIVES
PDF
2008-11-18 セキュアVMワークショップ
by
Takahiro Shinagawa
PDF
17th_ACRi_Webinar_Sadasue-san_Slide_20240724
by
直久 住川
KEY
An idea of bios emulation on b hy ve
by
Takuya ASADA
PDF
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
by
tshiroyama
PDF
2008-03-19 第2回セキュアVMシンポジウム
by
Takahiro Shinagawa
KEY
物理マシンをケチる技術
by
Satoshi KOBAYASHI
PDF
Kernel vm#9 powerkvm-dist-20131208
by
Manabu Ori
PDF
「ハイパーバイザの作り方」読書会#1
by
Takuya ASADA
PPT
d-kami x86-2
by
Daisuke Kamikawa
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
by
Takeshi HASEGAWA
Bhyve code reading
by
Takuya ASADA
BHyVeってなんや
by
Takuya ASADA
BHyVe: The BSD Hypervisor
by
Takuya ASADA
Unsafe Nested Virtualization on Intel CPU
by
Takaaki Fukai
仮想化技術によるマルウェア対策とその問題点
by
Kuniyasu Suzaki
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
by
Tsukasa Oi
#ljstudy KVM勉強会
by
Etsuji Nakai
VIOPS04: Intel VT ~仮想化を支える基礎技術~
by
VIOPS Virtualized Infrastructure Operators group ARCHIVES
2008-11-18 セキュアVMワークショップ
by
Takahiro Shinagawa
17th_ACRi_Webinar_Sadasue-san_Slide_20240724
by
直久 住川
An idea of bios emulation on b hy ve
by
Takuya ASADA
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
by
tshiroyama
2008-03-19 第2回セキュアVMシンポジウム
by
Takahiro Shinagawa
物理マシンをケチる技術
by
Satoshi KOBAYASHI
Kernel vm#9 powerkvm-dist-20131208
by
Manabu Ori
「ハイパーバイザの作り方」読書会#1
by
Takuya ASADA
d-kami x86-2
by
Daisuke Kamikawa
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
by
Takeshi HASEGAWA
More from Takuya ASADA
PPTX
Seastar in 歌舞伎座.tech#8「C++初心者会」
by
Takuya ASADA
PPTX
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
by
Takuya ASADA
PDF
高スループットなサーバアプリケーションの為の新しいフレームワーク 「Seastar」
by
Takuya ASADA
PDF
ヤマノススメ〜秋山郷 de ハッカソン〜
by
Takuya ASADA
PDF
UEFI時代のブートローダ
by
Takuya ASADA
PDF
OSvのご紹介 in Java 8 HotSpot meeting
by
Takuya ASADA
PDF
OSvパンフレット v3
by
Takuya ASADA
PDF
OSvのご紹介 in OSC2014 Tokyo/Fall
by
Takuya ASADA
PDF
OSv噺
by
Takuya ASADA
PDF
OSvの概要と実装
by
Takuya ASADA
PDF
Linux network stack
by
Takuya ASADA
PDF
Ethernetの受信処理
by
Takuya ASADA
PDF
Presentation on your terminal
by
Takuya ASADA
PDF
僕のIntel nucが起動しないわけがない
by
Takuya ASADA
PDF
Interrupt Affinityについて
by
Takuya ASADA
PDF
OSvパンフレット
by
Takuya ASADA
PDF
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
by
Takuya ASADA
PDF
10GbE時代のネットワークI/O高速化
by
Takuya ASADA
PDF
Implements BIOS emulation support for BHyVe: A BSD Hypervisor
by
Takuya ASADA
PDF
仮想化環境での利用者公平性
by
Takuya ASADA
Seastar in 歌舞伎座.tech#8「C++初心者会」
by
Takuya ASADA
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
by
Takuya ASADA
高スループットなサーバアプリケーションの為の新しいフレームワーク 「Seastar」
by
Takuya ASADA
ヤマノススメ〜秋山郷 de ハッカソン〜
by
Takuya ASADA
UEFI時代のブートローダ
by
Takuya ASADA
OSvのご紹介 in Java 8 HotSpot meeting
by
Takuya ASADA
OSvパンフレット v3
by
Takuya ASADA
OSvのご紹介 in OSC2014 Tokyo/Fall
by
Takuya ASADA
OSv噺
by
Takuya ASADA
OSvの概要と実装
by
Takuya ASADA
Linux network stack
by
Takuya ASADA
Ethernetの受信処理
by
Takuya ASADA
Presentation on your terminal
by
Takuya ASADA
僕のIntel nucが起動しないわけがない
by
Takuya ASADA
Interrupt Affinityについて
by
Takuya ASADA
OSvパンフレット
by
Takuya ASADA
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
by
Takuya ASADA
10GbE時代のネットワークI/O高速化
by
Takuya ASADA
Implements BIOS emulation support for BHyVe: A BSD Hypervisor
by
Takuya ASADA
仮想化環境での利用者公平性
by
Takuya ASADA
MMIO on VT-x
1.
MMIO ON VT-X
@syuu1228 13年4月13日土曜日
2.
よくこんな風に説明しますね
単純なエミュレーション:ゲストOSのプログラムの全命令を ソフトウェアエミュレーションして実行→すごい遅い VT-x以前の仮想化:ゲストOSのプログラムをそのままCPUで実行 するとホストOSのステートが壊れる →実行してはならない命令を動的に置き換えてネイティブに実行 (VMwareのBinary Translation) VT-xを用いた仮想化:CPUをゲストモードへ切り替え、ゲストOS のプログラムをネイティブに実行(置き換え不要) 13年4月13日土曜日
3.
ゲストOSのプログラムを
そのまま実行できる! 13年4月13日土曜日
4.
ゲストOSの命令は全部ネイティブに実行される
から、ハイパーバイザは介入しないんだよね! 13年4月13日土曜日
5.
( ゚д゚)ハッ! こんな所に
BHyVeのソースコードが… int vmm_emulate_instruction(void *vm, int vcpuid, uint64_t gpa, struct vie *vie, mem_region_read_t memread, mem_region_write_t memwrite, void *memarg) { int error; if (!vie->decoded) return (EINVAL); 命令エミュレーションっぽい switch (vie->op.op_type) { コードが有るんですけど… case VIE_OP_TYPE_MOV: error = emulate_mov(vm, vcpuid, gpa, vie, memread, memwrite, memarg); break; case VIE_OP_TYPE_AND: error = emulate_and(vm, vcpuid, gpa, vie, memread, memwrite, memarg); break; 13年4月13日土曜日
6.
VT-Xなハイパーバイザで
命令エミュレーション必要なの…? 13年4月13日土曜日
7.
_人人人人人人_
> 必要です <  ̄Y^Y^Y^Y^Y ̄ 13年4月13日土曜日
8.
何故? 13年4月13日土曜日
9.
VT-xなハイパーバイザの
ライフサイクル guest /usr/sbin/bhyve userland ioctl(VM_RUN) VMExit BSD guest vmm.ko kernel kernel VMEntry Host mode Guest mode ホストOSのカーネルからゲストモードへ切替(VMEntry) ハードウェアへのアクセスなどハイパーバイザの介入が必要な処理 が実行されたらゲストモードを停止、ホストOSへ戻る(VMExit) 13年4月13日土曜日
10.
IO命令によるVMExit
IO命令が実行された時点でVMExitが発生 VMExitの詳細情報(Exit Qualification)から以下のような情報を取得 アクセスサイズ(1,2,4 bytes) IN方向かOUT方向か String命令(INS)か REP prefixが付いているか IOポート番号はイミディエイト値か、DXレジスタ参照か IOポート番号(イミディエイト値) 13年4月13日土曜日
11.
IO命令のエミュレーション
Exit Qualificationの情報に基いてIO命令をエミュレーション出来る IN命令(イミディエイト値):EAX = ioport_read(imm) OUT命令(イミディエイト値):ioport_write(imm, EAX) IN命令(DX参照):EAX = ioport_read(DX) OUT命令( DX参照):ioport_write(DX, EAX) INS命令:*(ES:EDI) = ioport_read(DX) OUTS命令:ioport_write(DX, *(ES:EDI)) 13年4月13日土曜日
12.
MMIOによるVMExit
MMIOは通常のメモリアクセスと同じ命令を用いる →IO命令と違って命令で判別してVMExit出来ない アクセスしたアドレスで判別可能 →MMIO領域に該当するページにアクセスした時に VMExit(EPT violation)が起きるようにEPTを設定 (read/write共に拒否) 13年4月13日土曜日
13.
MMIOでのVMExit時に
得られる情報 EPT violation時のVMExit Qualification どの種類のアクセス権違反でVMExitが起きたか ページに設定された権限 ゲストOSがアクセスしたアドレス(論理・物理) アクセスしたアドレスとアクセス方向(読み・書き)は分かる 書き込み元・読み込み先の情報(アドレス or レジスタ)とアクセス幅 が分からない どんな命令が実行されたのか分からない 13年4月13日土曜日
14.
情報が足りない状態でMMIOを
エミュレートするには ゲストEIPの指すアドレスの命令をデコードして、 オペコード・オペランドを取得 オペコード通りの動作をエミュレート アクセス先アドレスがMMIO領域ならデバイスの挙動 をエミュレート 13年4月13日土曜日
15.
情報が足りない状態でMMIOを
エミュレートするには ゲストEIPの指すアドレスの命令をデコードして、 オペコード・オペランドを取得 オペコード通りの動作をエミュレート アクセス先アドレスがMMIO領域ならデバイスの挙動 をエミュレート 13年4月13日土曜日
16.
_人人人人人人人人人人人人_
> 命令エミュレーション <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ 13年4月13日土曜日
17.
( ゚д゚)ハッ! これがそうだったのか
int vmm_emulate_instruction(void *vm, int vcpuid, uint64_t gpa, struct vie *vie, mem_region_read_t memread, mem_region_write_t memwrite, void *memarg) { int error; if (!vie->decoded) return (EINVAL); switch (vie->op.op_type) { case VIE_OP_TYPE_MOV: error = emulate_mov(vm, vcpuid, gpa, vie, memread, memwrite, memarg); break; case VIE_OP_TYPE_AND: error = emulate_and(vm, vcpuid, gpa, vie, memread, memwrite, memarg); break; 13年4月13日土曜日
18.
なんでCPUがやってくれないのか
(想像) x86アーキテクチャでは、メモリアクセス可能な命令 やアドレッシングモードの種類が非常に多い そもそもEPT violationはページへのアクセス権限エラー を知らせるVMExitであって、MMIOを知らせるVMExit ではない 13年4月13日土曜日
19.
しんどい
デバイス guest /usr/sbin/bhyve userland エミュレータ ioctl(VM_RUN) VMExit BSD guest vmm.ko kernel kernel VMEntry Host mode Guest mode ただでさえMMIO領域に触れる度にVMExitするのに、 更にデバイスエミュレータがユーザランドに居るので コンテキストスイッチが発生 13年4月13日土曜日
20.
Local APIC仮想化支援
Local APICは割り込み周りで頻繁にアクセスされる が、MMIOを使っており準仮想化にも馴染みづらいデ バイス この領域のMMIOだけVT-xが特別扱い 専用のVMExit ReasonとExit Qualificationを用意 →命令エミュレーションが不要に レジスタ・条件によってはVMExit自体省略 13年4月13日土曜日
21.
Coalesced MMIO (KVM)
MMIO領域の中には読み書きによる副作用が無く、 単純なメモリ読み/書きに置き換えられる部分が存在 VGAボードのピクセルデータの領域とか VMExitが発生したらカーネル内で命令エミュレーション を実行、メモリ読み/書きを実施 ユーザランドでのデバイスエミュレーションを省略 e1000ドライバ(NIC)のパフォーマンスが9.7%向上 13年4月13日土曜日
22.
まとめ
ハードウェア仮想化支援機構といっても、なんでもや ってくれるわけじゃない 最後はソフト屋が頑張るしかない 根性とバッドノウハウ・転んでも泣かない すげぇ頑張ったのに新しいハード出るとハード出来る ようになってたりすることもある(VT-x自体がそう) 13年4月13日土曜日
Download