0
ARMvisor                                   Peter Chang            This side is licensed under CC-BY-NC-SA             姓名標示...
Who am I?
Who am I?• Peter Chang
Who am I?• Peter Chang• One of the current developers of ARMvisor
Who am I?• Peter Chang• One of the current developers of ARMvisor• http://tw.linkedin.com/in/peterchangtw
What is ARMvisor?
ARM
ARM
ARM
What is KVM?
What is KVM?• A.k.a. Kernel-based Virtual Machine
What is KVM?• A.k.a. Kernel-based Virtual Machine• Type-II Virtual Machine Monitor
What is KVM?• A.k.a. Kernel-based Virtual Machine• Type-II Virtual Machine Monitor• A module of Linux kernel
What is KVM?
What is KVM?• Officially support x86/x64, PowerPC, S390
What is KVM?• Officially support x86/x64, PowerPC, S390 • No official support for ARM architecture
What is ARMvisor?
What is ARMvisor?• ARM架構上的KVM
What is ARMvisor?• ARM架構上的KVM• Para-virtualization
What is ARMvisor?• ARM架構上的KVM• Para-virtualization• Trap & Emulation
What is ARMvisor?• ARM架構上的KVM• Para-virtualization• Trap & Emulation• Dynamic Memory Allocation
What is ARMvisor?• ARM架構上的KVM• Para-virtualization• Trap & Emulation• Dynamic Memory Allocation• virtio & IRQchip-in-kernel
Guest OS: Linux 2.6.35            QEMU 0.14                   Driver                      DeviceDriver                    ...
2012       20112010       2009
2012       20112010       2009
2012                  2011           2010Starting Point                  2009
2012                  2011           2010Starting Point                  2009
2012                  2011                    ARMvisor Prototype           2010Starting Point                  2009
2012                  2011                    ARMvisor Prototype           2010Starting Point                  2009
2012CPU Opt & Mem Opt                      2011                        ARMvisor Prototype               2010    Starting P...
2012CPU Opt & Mem Opt                      2011                        ARMvisor Prototype               2010    Starting P...
I/O Opt               2012CPU Opt & Mem Opt                      2011                        ARMvisor Prototype           ...
Supported Hardware            ARM Realview-eb                ARM11              ARMv6 ISA
Supported Hardware             TI BeagleBoard              Cortex-A8              ARMv7 ISA
Supported Software• Patched Host OS: • Linaro Linux 2.6.38• Host Root Filesystem • Ubuntu/Debian RFS (CLI or GUI)• QEMU 0.14
Supported Software• Patched Guest OS: • Linux 2.6.35 (running on ARMv6 ISA)• Guest Root Filesystem: • Ubuntu/Debian RFS (C...
System model of ARMvisor
CPU virtualization
CPU virtualization• ARM is non-virtualizable CPU • Patch guest OS• “Trap and emulation”
ARMv6 ISA1.Branch instructions2.Data-processing instructions3.Multiply instructions4.Parallel addition and subtraction ins...
ARMv6 ISA1.Branch instructions                                             Sensitive2.Data-processing instructions        ...
ARMv6 ISA1.Branch instructions2.Data-processing instructions3.Multiply instructions4.Parallel addition and subtraction ins...
Sensitive Instructions  Data-processing instructions            S-BIT: MOVS, ...Status register access instructions   MRS,...
Observation fromGuest Linux Code• MOVS• (MRS, MSR, CPS)• (LDRBT, LDRT, STRBT, STRT)• (LDM(2), LDM(3), STM(2))• SWI• (MCR, ...
“Trap & emulation”                Guest%OS User%space%     trap            %Kernel%space                 VMM
How to “trap”?…mov r0, r0add sp, spmovs pc, lr…
How to “trap”?…mov r0, r0add sp, spvirt_svc_movs “movs pc, lr”…
How to “trap”?…mov r0, r0add sp, spvirt_svc_movs “movs pc, lr”…
How to “trap”?                              .macro virt_svc_movs, inst                              SWI 0x190             ...
How to “emulate”?
oxffff10000xffff001c             Kernel Vectoroxffff0000
oxffff10000xffff001c             Kernel Vectoroxffff0000
The KVM trap               Interfaceoxffff10000xffff001c             Kernel Vectoroxffff0000
UND               ABORT                       SWI         IRQ/FIQ                                  KVM	  Trap	  Entry     ...
User space   Kernel space   Guest Mode  QEMU          KVM          Guest OS
User space                 Kernel space   Guest Mode    1. VM initialization  QEMU                        KVM          Gue...
User space                         Kernel space   Guest Mode    1. VM initialization                    2. Return to QEMU ...
User space                         Kernel space   Guest Mode    1. VM initialization                    2. Return to QEMU ...
User space                         Kernel space           Guest Mode    1. VM initialization                    2. Return ...
User space                         Kernel space                    Guest Mode    1. VM initialization                    2...
User space                         Kernel space                     Guest Mode    1. VM initialization                    ...
User space                         Kernel space                     Guest Mode    1. VM initialization                    ...
User space                         Kernel space                     Guest Mode    1. VM initialization                    ...
User space                         Kernel space                      Guest Mode    1. VM initialization                   ...
User space                         Kernel space                      Guest Mode    1. VM initialization                   ...
User space                         Kernel space                      Guest Mode    1. VM initialization                   ...
User space                         Kernel space                       Guest Mode    1. VM initialization                  ...
VCPU	        oxffff2000Register	                 Sync  File                            The KVM trap                       ...
VCPU	        oxffff2000Register	                  Shadow	  Register	  File               Sync  File                       ...
mcr	  cpsr,	  r1 VCPU	        oxffff2000Register	                  Shadow	  Register	  File               Sync  File      ...
mcr	  cpsr,	  r1 VCPU	        oxffff2000Register	                  Shadow	  Register	  File               Sync  File      ...
mcr	  cpsr,	  r1 VCPU	        oxffff2000                                                         Read/WriteRegister	      ...
mcr	  cpsr,	  r1 VCPU	        oxffff2000                                                         Read/WriteRegister	      ...
Memory virtualization
PTB   Virtual	  Address      Physical	  Address
GVAGPAHVAHPA
Guest	  PTB               GVA               GPA               HVA               HPA
Guest	  PTB               GVA               GPA               HVA               HPA
Guest	  PTB               GVA               GPA                     Host	  PTB               HVA               HPA
Guest	  PTB                        GVA                        GPA                              Host	  PTB                 ...
PABT/DABT	  trap
PABT/DABT	  trap     guest	     page	  table	       walker
PABT/DABT	  trap       guest	       page	  table	         walkerTrue	  Translation	  fault
PABT/DABT	  trap       guest	             Guest	       page	  table	     permission	         walker             checkerTru...
PABT/DABT	  trap       guest	              Guest	       page	  table	      permission	         walker              checker...
PABT/DABT	  trap       guest	              Guest	                                             MMIO	  access	       page	  ...
PABT/DABT	  trap       guest	              Guest	                                                 MMIO	  access	       pag...
PABT/DABT	  trap       guest	              Guest	                                 Shadow	  page	                          ...
Hidden	  protection	  fault PABT/DABT	  trap       guest	              Guest	                                 Shadow	  pag...
Hidden	  protection	  fault PABT/DABT	  trap       guest	              Guest	                                 Shadow	  pag...
Hidden	  protection	  fault PABT/DABT	  trap       guest	              Guest	                                 Shadow	  pag...
I/O virtualization
I/O virtualization• Emulation by QEMU• virtio• IRQ chip in kernel
Emulate by QEMU
Guest OS: Linux 2.6.35            QEMU 0.14                   Driver                   Device                             ...
Guest OS: Linux 2.6.35                                              1            QEMU 0.14                   Driver       ...
Guest OS: Linux 2.6.35                                              1            QEMU 0.14                   Driver       ...
Guest OS: Linux 2.6.35                                                1             QEMU 0.14                    Driver   ...
Guest OS: Linux 2.6.35                                                1             QEMU 0.14                    Driver   ...
Guest OS: Linux 2.6.35            QEMU 0.14                   Driver                   Device                             ...
Guest OS: Linux 2.6.35                QEMU 0.14                   Driver                       Device                     ...
Guest OS: Linux 2.6.35                 QEMU 0.14                    Driver                         Device             6   ...
Guest OS: Linux 2.6.35                 QEMU 0.14                    Driver                         Device                 ...
Guest OS: Linux 2.6.35                                                    8                 QEMU 0.14                    D...
virtio
virtio      Vir,o	  Driver                               GuestVir,o	  AMBA	  Controller          Vring               Trans...
irq_chip in kernel
Opera,ng	  System                          Interrupt	  Controller                     Deliver	  Interrupt                 ...
irq_chip in kernel                             Guest                                       Deliver7          GIC          ...
irq_chip in kernel                            Guest                                  Deliver$                             ...
Future Works
Future Works
Future Works• Support for ARM’s Virtualization extension
Future Works• Support for ARM’s Virtualization extension • Cortex-A15 and beyond
Future Works• Support for ARM’s Virtualization extension • Cortex-A15 and beyond• SMP for host and guest
Future Works• Support for ARM’s Virtualization extension • Cortex-A15 and beyond• SMP for host and guest• AArch64 Support
Future Works• Support for ARM’s Virtualization extension • Cortex-A15 and beyond• SMP for host and guest• AArch64 Support ...
By the way, ...
OpenSource
OpenSource• We HAVE opened source in late August,  2012.
OpenSource• We HAVE opened source in late August,  2012.• GNU GPLv2
OpenSource• We HAVE opened source in late August,  2012.• GNU GPLv2• Source code of Host and Guest OS
OpenSource• We HAVE opened source in late August,  2012.• GNU GPLv2• Source code of Host and Guest OS• https://github.com/...
Q &A
ARMvisor, more details
ARMvisor, more details
Upcoming SlideShare
Loading in...5
×

ARMvisor, more details

4,711

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,711
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
378
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "ARMvisor, more details"

  1. 1. ARMvisor Peter Chang This side is licensed under CC-BY-NC-SA 姓名標示─非商業性─相同方式分享(http://creativecommons.org/licenses/by-nc-sa/3.0/tw/legalcode)
  2. 2. Who am I?
  3. 3. Who am I?• Peter Chang
  4. 4. Who am I?• Peter Chang• One of the current developers of ARMvisor
  5. 5. Who am I?• Peter Chang• One of the current developers of ARMvisor• http://tw.linkedin.com/in/peterchangtw
  6. 6. What is ARMvisor?
  7. 7. ARM
  8. 8. ARM
  9. 9. ARM
  10. 10. What is KVM?
  11. 11. What is KVM?• A.k.a. Kernel-based Virtual Machine
  12. 12. What is KVM?• A.k.a. Kernel-based Virtual Machine• Type-II Virtual Machine Monitor
  13. 13. What is KVM?• A.k.a. Kernel-based Virtual Machine• Type-II Virtual Machine Monitor• A module of Linux kernel
  14. 14. What is KVM?
  15. 15. What is KVM?• Officially support x86/x64, PowerPC, S390
  16. 16. What is KVM?• Officially support x86/x64, PowerPC, S390 • No official support for ARM architecture
  17. 17. What is ARMvisor?
  18. 18. What is ARMvisor?• ARM架構上的KVM
  19. 19. What is ARMvisor?• ARM架構上的KVM• Para-virtualization
  20. 20. What is ARMvisor?• ARM架構上的KVM• Para-virtualization• Trap & Emulation
  21. 21. What is ARMvisor?• ARM架構上的KVM• Para-virtualization• Trap & Emulation• Dynamic Memory Allocation
  22. 22. What is ARMvisor?• ARM架構上的KVM• Para-virtualization• Trap & Emulation• Dynamic Memory Allocation• virtio & IRQchip-in-kernel
  23. 23. Guest OS: Linux 2.6.35 QEMU 0.14 Driver DeviceDriver ARMvisor Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  24. 24. 2012 20112010 2009
  25. 25. 2012 20112010 2009
  26. 26. 2012 2011 2010Starting Point 2009
  27. 27. 2012 2011 2010Starting Point 2009
  28. 28. 2012 2011 ARMvisor Prototype 2010Starting Point 2009
  29. 29. 2012 2011 ARMvisor Prototype 2010Starting Point 2009
  30. 30. 2012CPU Opt & Mem Opt 2011 ARMvisor Prototype 2010 Starting Point 2009
  31. 31. 2012CPU Opt & Mem Opt 2011 ARMvisor Prototype 2010 Starting Point 2009
  32. 32. I/O Opt 2012CPU Opt & Mem Opt 2011 ARMvisor Prototype 2010 Starting Point 2009
  33. 33. Supported Hardware ARM Realview-eb ARM11 ARMv6 ISA
  34. 34. Supported Hardware TI BeagleBoard Cortex-A8 ARMv7 ISA
  35. 35. Supported Software• Patched Host OS: • Linaro Linux 2.6.38• Host Root Filesystem • Ubuntu/Debian RFS (CLI or GUI)• QEMU 0.14
  36. 36. Supported Software• Patched Guest OS: • Linux 2.6.35 (running on ARMv6 ISA)• Guest Root Filesystem: • Ubuntu/Debian RFS (CLI or GUI)
  37. 37. System model of ARMvisor
  38. 38. CPU virtualization
  39. 39. CPU virtualization• ARM is non-virtualizable CPU • Patch guest OS• “Trap and emulation”
  40. 40. ARMv6 ISA1.Branch instructions2.Data-processing instructions3.Multiply instructions4.Parallel addition and subtraction instructions5.Extend instructions6.Miscellaneous arithmetic instructions7.Other miscellaneous instructions8.Status register access instructions9.Load and store instructions10.Load and Store Multiple instructions11.Semaphore instructions12.Exception-generating instructions13.Coprocessor instructions
  41. 41. ARMv6 ISA1.Branch instructions Sensitive2.Data-processing instructions Instructions ?3.Multiply instructions4.Parallel addition and subtraction instructions5.Extend instructions6.Miscellaneous arithmetic instructions7.Other miscellaneous instructions8.Status register access instructions9.Load and store instructions10.Load and Store Multiple instructions11.Semaphore instructions12.Exception-generating instructions13.Coprocessor instructions
  42. 42. ARMv6 ISA1.Branch instructions2.Data-processing instructions3.Multiply instructions4.Parallel addition and subtraction instructions5.Extend instructions6.Miscellaneous arithmetic instructions7.Other miscellaneous instructions8.Status register access instructions9.Load and store instructions10.Load and Store Multiple instructions11.Semaphore instructions12.Exception-generating instructions13.Coprocessor instructions
  43. 43. Sensitive Instructions Data-processing instructions S-BIT: MOVS, ...Status register access instructions MRS, MSR, CPS, SETEND Load and store instructions T-BIT: LDRT, STRT, ... Load and Store Multiple instructions LDM(2), LDM(3), STM(2)Exception-generating instructions SWI, BKPT Coprocessor instructions MCR, MRC, MCRR, ...
  44. 44. Observation fromGuest Linux Code• MOVS• (MRS, MSR, CPS)• (LDRBT, LDRT, STRBT, STRT)• (LDM(2), LDM(3), STM(2))• SWI• (MCR, MRC, MCRR) 15 sensitive instructions used in the guest linux code
  45. 45. “Trap & emulation” Guest%OS User%space% trap %Kernel%space VMM
  46. 46. How to “trap”?…mov r0, r0add sp, spmovs pc, lr…
  47. 47. How to “trap”?…mov r0, r0add sp, spvirt_svc_movs “movs pc, lr”…
  48. 48. How to “trap”?…mov r0, r0add sp, spvirt_svc_movs “movs pc, lr”…
  49. 49. How to “trap”? .macro virt_svc_movs, inst SWI 0x190 inst… .endmmov r0, r0add sp, spvirt_svc_movs “movs pc, lr”…
  50. 50. How to “emulate”?
  51. 51. oxffff10000xffff001c Kernel Vectoroxffff0000
  52. 52. oxffff10000xffff001c Kernel Vectoroxffff0000
  53. 53. The KVM trap Interfaceoxffff10000xffff001c Kernel Vectoroxffff0000
  54. 54. UND ABORT SWI IRQ/FIQ KVM  Trap  Entry KVM/Guest Host  Trap  Handler  Context  Switch   Unit KVM  Trap  DispatcherInstruction   MMU   Exception/Interrupt   QEMU  I/OEmulation Emulation Emulation Emulation
  55. 55. User space Kernel space Guest Mode QEMU KVM Guest OS
  56. 56. User space Kernel space Guest Mode 1. VM initialization QEMU KVM Guest OS
  57. 57. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU QEMU KVM Guest OS
  58. 58. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM QEMU KVM Guest OS
  59. 59. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM 4. Enter Guest QEMU KVM Guest OS
  60. 60. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM 4. Enter Guest 5. Exit Guest QEMU KVM Guest OS
  61. 61. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM 4. Enter Guest 5. Exit Guest Lightweight trap QEMU KVM Guest OS
  62. 62. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM 4. Enter Guest 5. Exit Guest Lightweight trap 6. Enter Guest QEMU KVM Guest OS
  63. 63. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM 4. Enter Guest 5. Exit Guest Lightweight trap 6. Enter Guest 7. Exit Guest QEMU KVM Guest OS
  64. 64. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM 4. Enter Guest 5. Exit Guest Lightweight trap 6. Enter Guest 7. Exit Guest 8. Return to QEMU QEMU KVM Guest OS
  65. 65. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM 4. Enter Guest 5. Exit Guest Lightweight trap 6. Enter Guest Heavyweight trap 7. Exit Guest 8. Return to QEMU QEMU KVM Guest OS
  66. 66. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM 4. Enter Guest 5. Exit Guest Lightweight trap 6. Enter Guest Heavyweight trap 7. Exit Guest 8. Return to QEMU 9. Run VM QEMU KVM Guest OS
  67. 67. User space Kernel space Guest Mode 1. VM initialization 2. Return to QEMU 3. Run VM 4. Enter Guest 5. Exit Guest Lightweight trap 6. Enter Guest Heavyweight trap 7. Exit Guest 8. Return to QEMU 9. Run VM 10. Enter Guest QEMU KVM Guest OS
  68. 68. VCPU   oxffff2000Register   Sync File The KVM trap Interface oxffff1000 0xffff001c Kernel Vector oxffff0000
  69. 69. VCPU   oxffff2000Register   Shadow  Register  File Sync File The KVM trap Interface oxffff1000 0xffff001c Kernel Vector oxffff0000
  70. 70. mcr  cpsr,  r1 VCPU   oxffff2000Register   Shadow  Register  File Sync File The KVM trap Interface oxffff1000 0xffff001c Kernel Vector oxffff0000
  71. 71. mcr  cpsr,  r1 VCPU   oxffff2000Register   Shadow  Register  File Sync File The KVM trap Interface oxffff1000 0xffff001c Kernel Vector oxffff0000
  72. 72. mcr  cpsr,  r1 VCPU   oxffff2000 Read/WriteRegister   Shadow  Register  File Sync Instructions File The KVM trap Interface oxffff1000 0xffff001c Kernel Vector oxffff0000
  73. 73. mcr  cpsr,  r1 VCPU   oxffff2000 Read/WriteRegister   Shadow  Register  File Sync Instructions File The KVM trap Interface oxffff1000 0xffff001c Kernel Vector oxffff0000
  74. 74. Memory virtualization
  75. 75. PTB Virtual  Address Physical  Address
  76. 76. GVAGPAHVAHPA
  77. 77. Guest  PTB GVA GPA HVA HPA
  78. 78. Guest  PTB GVA GPA HVA HPA
  79. 79. Guest  PTB GVA GPA Host  PTB HVA HPA
  80. 80. Guest  PTB GVA GPA Host  PTB HVA New  SPTE  !!! HPA
  81. 81. PABT/DABT  trap
  82. 82. PABT/DABT  trap guest   page  table   walker
  83. 83. PABT/DABT  trap guest   page  table   walkerTrue  Translation  fault
  84. 84. PABT/DABT  trap guest   Guest   page  table   permission   walker checkerTrue  Translation  fault
  85. 85. PABT/DABT  trap guest   Guest   page  table   permission   walker checker True  permission  faultTrue  Translation  fault
  86. 86. PABT/DABT  trap guest   Guest   MMIO  access   page  table   permission   checker walker checker True  permission  faultTrue  Translation  fault
  87. 87. PABT/DABT  trap guest   Guest   MMIO  access   page  table   permission   checker walker checker True  permission  faultTrue  Translation  fault MMIO  emulation
  88. 88. PABT/DABT  trap guest   Guest   Shadow  page   MMIO  access   page  table   permission   table   checker walker checker mapping True  permission  faultTrue  Translation  fault MMIO  emulation
  89. 89. Hidden  protection  fault PABT/DABT  trap guest   Guest   Shadow  page   MMIO  access   page  table   permission   table   checker walker checker mapping True  permission  faultTrue  Translation  fault MMIO  emulation
  90. 90. Hidden  protection  fault PABT/DABT  trap guest   Guest   Shadow  page   MMIO  access   page  table   permission   table   checker walker checker mapping True  permission  fault Hidden  translation  faultTrue  Translation  fault MMIO  emulation
  91. 91. Hidden  protection  fault PABT/DABT  trap guest   Guest   Shadow  page   MMIO  access   Shadow  page   page  table   permission   table   checker table  update walker checker mapping True  permission  fault Hidden  translation  faultTrue  Translation  fault MMIO  emulation
  92. 92. I/O virtualization
  93. 93. I/O virtualization• Emulation by QEMU• virtio• IRQ chip in kernel
  94. 94. Emulate by QEMU
  95. 95. Guest OS: Linux 2.6.35 QEMU 0.14 Driver Device ARMvisorDriver Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  96. 96. Guest OS: Linux 2.6.35 1 QEMU 0.14 Driver Device ARMvisorDriver Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  97. 97. Guest OS: Linux 2.6.35 1 QEMU 0.14 Driver Device 2 ARMvisorDriver Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  98. 98. Guest OS: Linux 2.6.35 1 QEMU 0.14 Driver Device 3 2 ARMvisorDriver Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  99. 99. Guest OS: Linux 2.6.35 1 QEMU 0.14 Driver Device 3 2 ARMvisorDriver Host OS: Linux 2.6.384 Hardware: ARM Cortex-A8
  100. 100. Guest OS: Linux 2.6.35 QEMU 0.14 Driver Device ARMvisorDriver Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  101. 101. Guest OS: Linux 2.6.35 QEMU 0.14 Driver Device ARMvisor Driver Host OS: Linux 2.6.385 Hardware: ARM Cortex-A8
  102. 102. Guest OS: Linux 2.6.35 QEMU 0.14 Driver Device 6 ARMvisor Driver Host OS: Linux 2.6.385 Hardware: ARM Cortex-A8
  103. 103. Guest OS: Linux 2.6.35 QEMU 0.14 Driver Device 7 6 ARMvisor Driver Host OS: Linux 2.6.385 Hardware: ARM Cortex-A8
  104. 104. Guest OS: Linux 2.6.35 8 QEMU 0.14 Driver Device 7 6 ARMvisor Driver Host OS: Linux 2.6.385 Hardware: ARM Cortex-A8
  105. 105. virtio
  106. 106. virtio Vir,o  Driver GuestVir,o  AMBA  Controller Vring TransportVir,o  AMBA  Controller QEMU Vir,o  Device
  107. 107. irq_chip in kernel
  108. 108. Opera,ng  System Interrupt  Controller Deliver  Interrupt Get  IRQ  number 1 Ack  IRQ  number Mask  IRQ 2 End  of  IRQ 3 Unmask  IRQ 4
  109. 109. irq_chip in kernel Guest Deliver7 GIC QEMU IRQ7 Control7 GIC7Device Device Device IOCTL7 ARMvisor
  110. 110. irq_chip in kernel Guest Deliver$ IRQ$ QEMUDevice Device Device Control$ GIC$ GIC$in$Kernel KVM
  111. 111. Future Works
  112. 112. Future Works
  113. 113. Future Works• Support for ARM’s Virtualization extension
  114. 114. Future Works• Support for ARM’s Virtualization extension • Cortex-A15 and beyond
  115. 115. Future Works• Support for ARM’s Virtualization extension • Cortex-A15 and beyond• SMP for host and guest
  116. 116. Future Works• Support for ARM’s Virtualization extension • Cortex-A15 and beyond• SMP for host and guest• AArch64 Support
  117. 117. Future Works• Support for ARM’s Virtualization extension • Cortex-A15 and beyond• SMP for host and guest• AArch64 Support • ARMv8
  118. 118. By the way, ...
  119. 119. OpenSource
  120. 120. OpenSource• We HAVE opened source in late August, 2012.
  121. 121. OpenSource• We HAVE opened source in late August, 2012.• GNU GPLv2
  122. 122. OpenSource• We HAVE opened source in late August, 2012.• GNU GPLv2• Source code of Host and Guest OS
  123. 123. OpenSource• We HAVE opened source in late August, 2012.• GNU GPLv2• Source code of Host and Guest OS• https://github.com/SSLab-NTHU
  124. 124. Q &A
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×