SlideShare a Scribd company logo
AMD SVM
syuu1228 from   @livedoor
SVM
AMD

Intel-VT

VMM




qemu
↑
SVM
Ring                  Host/Guest



Guest

DMA             Host/Guest


Guest
Guest


Tagged TLB


Nested Paging
Host


Guest

VMM

          ex:
Guest

VMCB       VMRUN           Guest
 VMCB   Guest


Host                            ex:
                       Host
                AMD   #VMEXIT


Host     #VMEXIT                      VMRUN
Host             Guest


       Guest   VMRUN



λ...           #VMEXIT




Host                     #VMEXIT   VMRUN
VMCB
Virtual Machine Control Block


 VM            VMCB

4KB aligned    4KB         1



Control area

Guest   CPU             Save state area
Control Area             (1)
            on/off bit

               R/W




        ,




  I/O

  MSR
Control Area          (2)
 I/O Permissons Map
 IO



 MSR Permissons Map
 MSR



 Time stamp counter
 RDTSC, RDTSCP
Control Area                              (3)
 TLB       , Guest   ASID(TLB   tag   )




 #VMEXIT

 Nested Paging

 Event Injection
 Guest

 LBR
 LBR   Last Branch Record)AMD64
Save state area
                          RIP,RSP,RAX
ES,CS,SS,DS,FS,GS
                          STAR,LSTAR,CSTAR
GDTR,LDTR,IDTR
                          SFMASK
TR
                          KernelGsBase
CPL
                          SYSENTER_CS,SYSENTER
CR0,CR2,CR3,CR4
                          _ESP,SYSENTER_EIP
DR6,DR7
                          PAT
RFLAGS
                          LBR registers

                    RBX
…

Save state area



  Guest
  (RBX,RCX,RDX,RSI,RDI,RBI)

  Host            (!!!!)
…
Guest
	   	   "mov   %c[rbx](%[svm]),   %%ebx   nt"           ※kvm-6
	   	   "mov   %c[rcx](%[svm]),   %%ecx   nt"
	   	   "mov   %c[rdx](%[svm]),   %%edx   nt"
	   	   "mov   %c[rsi](%[svm]),   %%esi   nt"
	   	   "mov   %c[rdi](%[svm]),   %%edi   nt"
	   	   "mov   %c[rbp](%[svm]),   %%ebp   nt"

	   	   /* Enter guest mode */
	   	   "push %%eax nt"
	   	   "mov %c[vmcb](%[svm]), %%eax nt"
	   	   SVM_VMLOAD "nt"
	   	   SVM_VMRUN "nt"
	   	   SVM_VMSAVE "nt"
	   	   "pop %%eax nt"

	   	   /* Save guest registers, load host registers */
	   	   "mov %%ebx, %c[rbx](%[svm]) nt"
	   	   "mov %%ecx, %c[rcx](%[svm]) nt"
	   	   "mov %%edx, %c[rdx](%[svm]) nt"
	   	   "mov %%esi, %c[rsi](%[svm]) nt"
	   	   "mov %%edi, %c[rdi](%[svm]) nt"
	   	   "mov %%ebp, %c[rbp](%[svm]) nt"

                                             mov          ;)
Host



	   __asm __volatile (                                  ※kvm-6
	   	 "push %%ebx; push %%ecx; push %%edx;"
	   	 "push %%esi; push %%edi; push %%ebp;"


	   	   "pop   %%ebp; pop   %%edi; pop   %%esi;"
	   	   "pop   %%edx; pop   %%ecx; pop   %%ebx; nt"



push/pop
Host




 MSR,FS,GS,LDT,CR2,DR0-3,DR6-7,TR
SVM
VM_HSAVE_PA on MSR
SVM             MSR

Host

VMRUN/#VMEXIT




  CS,SS,RIP,RSP,CR0,CR4,EFER,IDTR,GDTR
/* Enter guest mode */               ※kvm-6
	   	   "push %%eax nt"
	   	   "mov %c[vmcb](%[svm]), %%eax nt"
	   	   SVM_VMLOAD "nt"
	   	   SVM_VMRUN "nt"
	   	   SVM_VMSAVE "nt"
	   	   "pop %%eax nt"



        VMRUN
VMLOAD/VMSAVE


                                       VMRUN/#VMEXIT


CS,RIP,RFLAGS,RAX,SS,RSP,CR0,CR2-4,EFER,IDTR,GDTR,ES,DS,DR6-7,CPL


                   →VMLOAD/VMSAVE
FS,GS,TR,LDTR,KernelGsBase,STAR,LSTAR,CSTAR,SFMASK,SYSENTER_CS,SY
SENTER_ESP,SYSENTER_EIP


    KVM       VMLOAD→VMRUN→VMSAVE
Host
Host
Guest
Guest                VMLOAD)
Host           (VMRUN)
Guest           (VMRUN)
 Guest   !!!
Guest           (#VMEXIT)
Host           (#VMEXIT)
Guest              (VMSAVE)
Guest
Host
Host
AMD SVMってなあに

More Related Content

PDF
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
PDF
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
PDF
さいきんの InnoDB Adaptive Flushing (仮)
PDF
llvm入門
PPTX
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
PDF
Data dictionary pl17
PDF
アクセスプラン(実行計画)の読み方入門
PDF
Linux network stack
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
さいきんの InnoDB Adaptive Flushing (仮)
llvm入門
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
Data dictionary pl17
アクセスプラン(実行計画)の読み方入門
Linux network stack

What's hot (20)

PDF
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
PDF
Symbolic Debugging with DWARF
PPTX
ある工場の Redmine 2021 ( Redmine of one plant 2021 )
PDF
Intel RealSense for ROSConJP20221121.pdf
PDF
Distributed Databases Deconstructed: CockroachDB, TiDB and YugaByte DB
PDF
Vacuum徹底解説
PDF
ロックフリーGCLOCKページ置換アルゴリズム
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
PDF
Redmine issue assign notice plugin の紹介
PDF
よくある質問と対策 2015
PDF
ドメイン駆動設計の捉え方 20150718
PPTX
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
PDF
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
PDF
Where狙いのキー、order by狙いのキー
PDF
Redmineによるメール対応管理の運用事例
PDF
Performance Wins with BPF: Getting Started
PDF
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG
PDF
MySQL Administrator 2021 - 네오클로바
PDF
イミュータブルデータモデルの極意
PDF
Best practices for MySQL/MariaDB Server/Percona Server High Availability
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
Symbolic Debugging with DWARF
ある工場の Redmine 2021 ( Redmine of one plant 2021 )
Intel RealSense for ROSConJP20221121.pdf
Distributed Databases Deconstructed: CockroachDB, TiDB and YugaByte DB
Vacuum徹底解説
ロックフリーGCLOCKページ置換アルゴリズム
ヤフー社内でやってるMySQLチューニングセミナー大公開
Redmine issue assign notice plugin の紹介
よくある質問と対策 2015
ドメイン駆動設計の捉え方 20150718
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
Where狙いのキー、order by狙いのキー
Redmineによるメール対応管理の運用事例
Performance Wins with BPF: Getting Started
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG
MySQL Administrator 2021 - 네오클로바
イミュータブルデータモデルの極意
Best practices for MySQL/MariaDB Server/Percona Server High Availability
Ad

Viewers also liked (20)

PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
PDF
次世代のあれ
PDF
物理ネットワーク受け入れテストの自動化を考える
PPS
Lesson to be_learned
PPT
Bear is a Douche
PPT
DB_Algorithm_and_Data_Structure_About_BTree
PPS
Układ drogowy Franowo
PPT
Lista projektów kluczowych
PDF
รายงานคู่มือการใช้งาน
PPS
Presentacion Cavas Patagon Castellano
PPTX
презентация релиз 5
PPTX
DUID TRANSFORMATION
PDF
NESHEP Meeting Review (01-02-11)
PPTX
Scalable custom production Moving to the next level – and taking everyone wit...
PPTX
http://izhtc.ru Банер для перехода с 1.6 на 2.0
PPS
Amatciems Latvija
PPT
Learning and Skills Group Webinar 09.07.09
PDF
Die Reise des Mobile Content
PPT
Kelly Ruggles | American Reliance Group
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
次世代のあれ
物理ネットワーク受け入れテストの自動化を考える
Lesson to be_learned
Bear is a Douche
DB_Algorithm_and_Data_Structure_About_BTree
Układ drogowy Franowo
Lista projektów kluczowych
รายงานคู่มือการใช้งาน
Presentacion Cavas Patagon Castellano
презентация релиз 5
DUID TRANSFORMATION
NESHEP Meeting Review (01-02-11)
Scalable custom production Moving to the next level – and taking everyone wit...
http://izhtc.ru Банер для перехода с 1.6 на 2.0
Amatciems Latvija
Learning and Skills Group Webinar 09.07.09
Die Reise des Mobile Content
Kelly Ruggles | American Reliance Group
Ad

Similar to AMD SVMってなあに (20)

PDF
ARMvisor, more details
PPTX
ARMvisor @ Linux Symposium 2012
PDF
Implements BIOS emulation support for BHyVe
PDF
ARMvisor @ COSCUP2012
PDF
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
PDF
XS Boston 2008 Self IO Emulation
PDF
Qemu Introduction
PPTX
Nested Virtualization Update from Intel
PDF
Virtual Machine Introspection with Xen
PDF
D1 t2 jonathan brossard - breaking virtualization by switching to virtual 8...
PDF
blah blah blah blah blah blah blah blah blah blah blah blah
PDF
31c3 Presentation - Virtual Machine Introspection
PDF
Devirtualizing FinSpy
PDF
Linux PV on HVM
PDF
Linux PV on HVM
PDF
Virtualization Primer for Java Developers
PDF
KVM-22-Supporting TEE on x86 client platforms with pKVM_2.pdf
PDF
Malicious Hypervisor - Virtualization in Shellcodes by Adhokshaj Mishra
DOCX
Bsdtw17: ruslan bukin: free bsd/risc-v and device drivers
PPTX
003-vmm.pptx
ARMvisor, more details
ARMvisor @ Linux Symposium 2012
Implements BIOS emulation support for BHyVe
ARMvisor @ COSCUP2012
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
XS Boston 2008 Self IO Emulation
Qemu Introduction
Nested Virtualization Update from Intel
Virtual Machine Introspection with Xen
D1 t2 jonathan brossard - breaking virtualization by switching to virtual 8...
blah blah blah blah blah blah blah blah blah blah blah blah
31c3 Presentation - Virtual Machine Introspection
Devirtualizing FinSpy
Linux PV on HVM
Linux PV on HVM
Virtualization Primer for Java Developers
KVM-22-Supporting TEE on x86 client platforms with pKVM_2.pdf
Malicious Hypervisor - Virtualization in Shellcodes by Adhokshaj Mishra
Bsdtw17: ruslan bukin: free bsd/risc-v and device drivers
003-vmm.pptx

More from Takuya ASADA (20)

PPTX
Seastar in 歌舞伎座.tech#8「C++初心者会」
PPTX
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
PDF
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
PDF
ヤマノススメ〜秋山郷 de ハッカソン〜
PDF
UEFI時代のブートローダ
PDF
OSvのご紹介 in 
Java 8 HotSpot meeting
PDF
OSvパンフレット v3
PDF
OSvのご紹介 in OSC2014 Tokyo/Fall
PDF
OSv噺
PDF
OSvの概要と実装
PDF
Ethernetの受信処理
PDF
Presentation on your terminal
PDF
僕のIntel nucが起動しないわけがない
PDF
Interrupt Affinityについて
PDF
OSvパンフレット
PDF
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
PDF
「ハイパーバイザの作り方」読書会#2
PDF
「ハイパーバイザの作り方」読書会#1
PDF
10GbE時代のネットワークI/O高速化
PDF
Implements BIOS emulation support for BHyVe: A BSD Hypervisor
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
ヤマノススメ〜秋山郷 de ハッカソン〜
UEFI時代のブートローダ
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvパンフレット v3
OSvのご紹介 in OSC2014 Tokyo/Fall
OSv噺
OSvの概要と実装
Ethernetの受信処理
Presentation on your terminal
僕のIntel nucが起動しないわけがない
Interrupt Affinityについて
OSvパンフレット
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
「ハイパーバイザの作り方」読書会#2
「ハイパーバイザの作り方」読書会#1
10GbE時代のネットワークI/O高速化
Implements BIOS emulation support for BHyVe: A BSD Hypervisor

Recently uploaded (20)

PPTX
master seminar digital applications in india
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PDF
Basic Mud Logging Guide for educational purpose
PPTX
Cell Types and Its function , kingdom of life
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PPTX
Pharma ospi slides which help in ospi learning
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
PDF
01-Introduction-to-Information-Management.pdf
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
RMMM.pdf make it easy to upload and study
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
master seminar digital applications in india
Supply Chain Operations Speaking Notes -ICLT Program
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
O7-L3 Supply Chain Operations - ICLT Program
Pharmacology of Heart Failure /Pharmacotherapy of CHF
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
Basic Mud Logging Guide for educational purpose
Cell Types and Its function , kingdom of life
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
Pharma ospi slides which help in ospi learning
Module 4: Burden of Disease Tutorial Slides S2 2025
Abdominal Access Techniques with Prof. Dr. R K Mishra
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
01-Introduction-to-Information-Management.pdf
VCE English Exam - Section C Student Revision Booklet
RMMM.pdf make it easy to upload and study
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student

AMD SVMってなあに

  • 3. SVM Ring Host/Guest Guest DMA Host/Guest Guest Guest Tagged TLB Nested Paging
  • 5. Guest VMCB VMRUN Guest VMCB Guest Host ex: Host AMD #VMEXIT Host #VMEXIT VMRUN
  • 6. Host Guest Guest VMRUN λ... #VMEXIT Host #VMEXIT VMRUN
  • 7. VMCB Virtual Machine Control Block VM VMCB 4KB aligned 4KB 1 Control area Guest CPU Save state area
  • 8. Control Area (1) on/off bit R/W , I/O MSR
  • 9. Control Area (2) I/O Permissons Map IO MSR Permissons Map MSR Time stamp counter RDTSC, RDTSCP
  • 10. Control Area (3) TLB , Guest ASID(TLB tag ) #VMEXIT Nested Paging Event Injection Guest LBR LBR Last Branch Record)AMD64
  • 11. Save state area RIP,RSP,RAX ES,CS,SS,DS,FS,GS STAR,LSTAR,CSTAR GDTR,LDTR,IDTR SFMASK TR KernelGsBase CPL SYSENTER_CS,SYSENTER CR0,CR2,CR3,CR4 _ESP,SYSENTER_EIP DR6,DR7 PAT RFLAGS LBR registers RBX
  • 12. … Save state area Guest (RBX,RCX,RDX,RSI,RDI,RBI) Host (!!!!)
  • 13. … Guest "mov %c[rbx](%[svm]), %%ebx nt" ※kvm-6 "mov %c[rcx](%[svm]), %%ecx nt" "mov %c[rdx](%[svm]), %%edx nt" "mov %c[rsi](%[svm]), %%esi nt" "mov %c[rdi](%[svm]), %%edi nt" "mov %c[rbp](%[svm]), %%ebp nt" /* Enter guest mode */ "push %%eax nt" "mov %c[vmcb](%[svm]), %%eax nt" SVM_VMLOAD "nt" SVM_VMRUN "nt" SVM_VMSAVE "nt" "pop %%eax nt" /* Save guest registers, load host registers */ "mov %%ebx, %c[rbx](%[svm]) nt" "mov %%ecx, %c[rcx](%[svm]) nt" "mov %%edx, %c[rdx](%[svm]) nt" "mov %%esi, %c[rsi](%[svm]) nt" "mov %%edi, %c[rdi](%[svm]) nt" "mov %%ebp, %c[rbp](%[svm]) nt" mov ;)
  • 14. Host __asm __volatile ( ※kvm-6 "push %%ebx; push %%ecx; push %%edx;" "push %%esi; push %%edi; push %%ebp;" "pop %%ebp; pop %%edi; pop %%esi;" "pop %%edx; pop %%ecx; pop %%ebx; nt" push/pop
  • 16. SVM VM_HSAVE_PA on MSR SVM MSR Host VMRUN/#VMEXIT CS,SS,RIP,RSP,CR0,CR4,EFER,IDTR,GDTR
  • 17. /* Enter guest mode */ ※kvm-6 "push %%eax nt" "mov %c[vmcb](%[svm]), %%eax nt" SVM_VMLOAD "nt" SVM_VMRUN "nt" SVM_VMSAVE "nt" "pop %%eax nt" VMRUN
  • 18. VMLOAD/VMSAVE VMRUN/#VMEXIT CS,RIP,RFLAGS,RAX,SS,RSP,CR0,CR2-4,EFER,IDTR,GDTR,ES,DS,DR6-7,CPL →VMLOAD/VMSAVE FS,GS,TR,LDTR,KernelGsBase,STAR,LSTAR,CSTAR,SFMASK,SYSENTER_CS,SY SENTER_ESP,SYSENTER_EIP KVM VMLOAD→VMRUN→VMSAVE
  • 19. Host Host Guest Guest VMLOAD) Host (VMRUN) Guest (VMRUN) Guest !!! Guest (#VMEXIT) Host (#VMEXIT) Guest (VMSAVE) Guest Host Host