SlideShare a Scribd company logo
1 of 29
Download to read offline
paravirt_ops/IA64




Isaku Yamahata <yamahata@valinux.co.jp>
VA Linux Systems Japan K.K.
Introduction
Goal
    Merge xenLinux/IA64 modification to Linux
●


    upstream. Both domU/dom0 support.
Old History
    There have already been several
●


    unsuccessful merge efforts
    So we are trying again...
●




30 Jan, 2005 Xen and the Art of Linux/IA64 Virtualization   Dan Magenheimer     2.6.12
28 Oct, 2005 virtualization hooks patch for IA64 2.6.15     Dan Magenheimer     2.6.15
03 Jun, 2006 Xen/IA64 kernel changes 2.6.17-rc5             Alex Williamson 2.6.17-rc5
What's Different This Time?
    The x86 paravirt_ops (pv_ops for short)
●


    has been merged
        After several approaches to virtualization
    –
        support were proposed, finally the
        paravirt_ops approach won
        Consensus on virtualization via source-code
    –
        API
    (Minimal) Xen/x86 has been merged
●



        The Xen common code is already there
    –

        Though, portability patches would be necessary
    –
Merging Strategy
    The first merge is the most difficult
●



    Basically follow the x86 approach
●



        Virtualization infrastructure via source code
    –
        API, i.e. paravirt_ops.
        Minimize modifications at first step
    –

             Make patch size and the number of patches as small
         ●


             as possible for code review.
        Postpone optimization where possible
    –

        Dom0 support is also postponed
    –
What is paravirt_ops
    The indirect layer for virutalization
●



        Virtualization support via source-code API
    –

        It allows a single kernel binary to run on all
    –
        supported execution environments including
        bare-metal hardware.
        It is implemented as C function pointer.
    –

        But, it supports special optimization, binary
    –
        patching.
             Indirect calls can be transformed into a direct
         ●


             call or in-place execution.
        A set of macros for assembly code
    –

             Hand-written assembly code also needs
         ●


             paravirtualization.
paravirt_ops/IA64
Challenges
    IA64 machine vectors
●



    Privileged instruction
●


    (para)virtualization
    Binary patching
●



    Hand-written assembly code
●


    paravirtualization
IA64 Machine Vector
    C function pointers for platform support.
●



        Initialization, IPI, DMA API...
    –

    One possible approach is to enhance
●


    machine vector.
    But paravirtualization needs more.
●



        Initialization at very early stage of the boot
    –
        sequence.
        Binary patch optimization.
    –

             Paravirtualization overhead on bare metal hardware
         ●


             should be as small as possible.
Linux kernel
                   The rest of kernel code




                                                            machine vector
                                                      Xen
        dig       hpzx1             sn2
                          ...
                                                     domU
dom0
                                                            paravirt_ops

                                Xen Wrapper




                                    Xen Hypervisor



        dig       hpzx1             sn2
                          ...                                hardware
Instruction (Para)Virtualization
    The main issues for IA64 is privileged
●


    instruction paravirtualization.
    Some approaches were discussed.
●



        Pre-Virtualization and after-burning
    –

        Hybrid Virtualization. Rely on hardware
    –
        support(VT-i).
        Privify. (vBlades approach)
    –

        paravirt_ops.
    –
Instruction
         (Para)Virtualization(cont.)
                                                    Performance
                      hyervisor change Linux Change in theory     Single binary?
    previrtualization yes              No           Low           No
    hybrid            yes              No           Low           Yes
                      yes              No           Low           No
    privify
    paravirt_ops      No               Yes          High          Yes



     With the preliminary benchmark results(the
●


     next slides), paravirt_ops approach was
     adopted.
     The re-aim-7 which was used is CPU
●


     intensive benchmark.
Preliminary benchmark done by Alex Williamson
http://lists.xensource.com/archives/html/
xen-ia64-devel/2008-01/msg00194.html
Binary Patch

    IA64 intrinsics(privileged instructions
●


    used by C code.) needs binary patch
        They are performance critical.
    –

        e.g. mask/unmask interrupts.
    –

    But not all the hooks needs binary patch
●



        The hooks for high level functionalities
    –
        accepts C indirect call overheads.
        Unlike x86, we don't support binary patch for
    –
        all the hooks because...
Binary Patch(cont.)

    To allow   binary patch, the call instruction
●


    needs to   be annotated. But there is no way
    to write   C calling conversion with GCC
    extended   inline assembly code.
    So other calling convention has to be used.
●



        Non-banked static registers(xen/ia64 like)
    –

        Banked Static registers.(PAL call like)
    –

        C function call like convention.
    –

    Anyway those functions can't be written in
●


    C.
caller_func(in0, ... inL)
       loc0, ... locM
                                         asm(“...”::: “out0”, “out1”) is bad.
       out0, ... outN
                                         Here out0, ... outN are clobbered.
                                         No way to specify out0, ...outN
      bp_func(out0, out1)
                                         as clobbered registers where N is
      other_func(out0, out1, ... outN)
                                         unknown.

                                           Clobbered registers
func(in0,..., inL)
                  M, N are determined by GCC
      r0-r31

Static registers in0...inL loc0...locM out0, out1...outN


                                                          Function call

Static registers in0, in1 loc0...locM' out0...outN'

                  M', N' are determined by GCC
      r0-r31
bp_func(in0, in1)
Hand-Written Assembly Code
    .S files
●



    Kernel entry(fault handler,system
●


    call)/exit and context switch.
    Stack is not always usable.
●



        For example, only several registers can be
    –
        used on fault.
    They are well tuned so that it's difficult
●


    to touch them without performance
    degradation.
Hand Written Assembly Code(cont.)
       Single source file, compile multiple times
   ●


       using CPP macros and Makefile tricks.
       Most of those macros 1:1 correspond to
   ●


       single instruction
Example Patch        -(p8) mov cr.itir=r25
                     +     MOV_TO_ITIR(p8, r25, r24)
                     #define MOV_TO_ITIR(pred, reg, clob)
        Native                                               
                     (pred) mov cr.itir = reg                
                             CLOBBER(clob)
                     #define MOV_TO_ITIR(pred, reg, clob)
         Xen                                                 
                     (pred) movl clob = XSI_ITIR;            
                             ;;                              
                     (pred) st8 [clob] = reg
 Extra clobberable registers are found by careful code reading.
Switching Hand-Written Assembly
                  Code
    Fault handler is pointed by cr.iva
●


    register.
    Other path is switched by indirect call.
●



         Clobberable registers for branch are found by
     –
         careful code reading.
                      kernel entry                    leave_kernel
                                                        wrapper

             cr.iva                   ia64_native_leave_kernel   xen_leave_kernel
                                               native                  xen
                                                code                  code
     ivt                xen_ivt
    native                 xen
Fault handler         Fault handler                               kernel exit
PV Checker
     .S paravirtualization is fragile.
 ●



         It's very easy to write raw instruction.
     –

         Enforce people to use paravirtualized
     –
         instructions.
     Simple checker is implemented.
 ●



         Doesn't cover all the breakage.
     –

         most of easy breakage can be detected.
     –


Example: cover instruction case
#define COVER   nop 0
#define cover   .error quot;cover should not be used directly.quot;
Current Status and Future Plans
Current IA64 pv_ops
name             description                        type
pv_info          general info                       -
pv_init_ops      initialization                     normal C function pointers
                                                    Normal C function pointers
pv_cpu_ops       privileged instructions
                                                    Needs binary patch
pv_cpu_asm_ops   macros for hand-written assembly   asm macros
pv_iosapic_ops   iosapic related operations         normal C function pointers
pv_irq_ops       irq related operations             normal C function pointers
pv_time_ops      steal time accounting              normal C function pointers


    The resulting set of hooks is completely
●


    different from x86's.
    That's because of architecture difference
●


    between x86 and IA64.
Diffstat
               file changed insersions deletions
pv_cpu_asm_ops             9        517       177
pv_cpu_ops                10        550        49
others                    16        507        35


    This figures shows paravirt_ops/IA64
●


    issues are in cpu instruction
    paravirtualization.
Comparison with x86 pv_ops
             items X86_32(2.6.26-rc6)                  IA64
    pv_init_ops                     5                     6
    pv_cpu_asm_ops           7 macros32 macros/6 asm labels
    pv_cpu_ops                     32                    14
    pv_mmu_ops                     29                   n/a
    others                         13                    18

 Again this figure shows that paravirt_ops/IA64 relies on
●


hand-written assembly code paravirtualization.
    The number of IA64 pv_cpu_ops is smaller than x86's.
●



          On IA64 privileged register operation is done by 'mov'
      ●


          instructions which is replaced by 2 function pointers.
          On the other hand on x86 many function pointers are
      ●


          defined. e.g. load_cr3()
 Xen/IA64 fully virtualizes MMU so that pv_mmu_ops is
●


unnecessary.
Activity
Date              subject                                       comment
 16 Jan,   2008    Time for hybrid virtualization?               discussion
 07 Feb,   2008    forward ported to linux ia64 upstream         single jumbo patch
 17 Feb,   2008    paravirt_ops suport in IA64                   paravirt_ops discussion
 21 Feb,   2008    ia64/xen domU paravirtualization              split patches
                   ia64/xen: paravirtualization of hand written
 24 Feb,   2008                                                  discussion
                   assembly code
                   RFC: ia64/xen TAKE 2: paravirtualization of
 26 Feb, 2008
                   hand written assembly code
 28 Feb, 2008      RFC: ia64/pv_ops: ia64 intrinsics
                   paravirtualization
                   ia64/xen take 3: ia64/xen domU
 05 Mar, 2008                                                    started pv_ops
                   paravirtualization
 09 Apr, 2008      RFC: ia64/pv_ops take 4: ia64/xen domU take 4 Fully converted into pv_ops
 01 May, 2008      ia64/pv_ops take 5, ia64/xen domU take 5
 19 May, 2008      ia64/pv_ops take 6, ia64/xen domU take 6      pv_ops part was merged to linux
                                                                 ia64 test branch
 10 Jun, 2008      ia64/xen domU take 7                          preliminary for save/restore
Current status and future plan
Items                                           status
minimal domU        pv_ops                      in linux IA64 test branch
                                                W.I.P.(working patch,
                    Xen/domU
                                                 under review)
domU optimization   more .S paravirtualization
                    binary patch               Experimental patch existed
                    balloon
                                               Preliminary support.
                                               Needs more paravirtualization
                    save/restore
                    free unused pages
                    revise boot protocol
dom0                DMA API
                    kexec/kdump
                    PMU/PMD/PMC(xenoprof)
                    mca
                    and more?
Acknowledgements
    Thanks to
●



        Eddie Dong(some of slides are cited from his
    –
        slides with modification)
        Alex Williamson(The previous Xen/IA64
    –
        maintainer)
        Akio Takebe
    –

        Qing He
    –

        Simon Horman
    –

        Jeremy Fitzhardinge(The Linux xen maintainer)
    –

        Tony Luck(The Linux IA64 maintainer)
    –

        Dan Magenheimer(The Xen/IA64 initiator)
    –
Thank you
    http://wiki.xensource.com/xenwiki/XenIA64/
●


    UpstreamMerge

More Related Content

What's hot

Shellcodes for ARM: Your Pills Don't Work on Me, x86
Shellcodes for ARM: Your Pills Don't Work on Me, x86Shellcodes for ARM: Your Pills Don't Work on Me, x86
Shellcodes for ARM: Your Pills Don't Work on Me, x86Svetlana Gaivoronski
 
RISC-V Linker Relaxation and LLD
RISC-V Linker Relaxation and LLDRISC-V Linker Relaxation and LLD
RISC-V Linker Relaxation and LLDRay Song
 
ROP 輕鬆談
ROP 輕鬆談ROP 輕鬆談
ROP 輕鬆談hackstuff
 
Workshop de Ruby e Rails na USP Leste 2012
Workshop de Ruby e Rails na USP Leste 2012Workshop de Ruby e Rails na USP Leste 2012
Workshop de Ruby e Rails na USP Leste 2012Fabio Akita
 
Ncm2010 ruo ando
Ncm2010 ruo andoNcm2010 ruo ando
Ncm2010 ruo andoRuo Ando
 
Checking Oracle VM VirtualBox. Part 1
Checking Oracle VM VirtualBox. Part 1Checking Oracle VM VirtualBox. Part 1
Checking Oracle VM VirtualBox. Part 1Andrey Karpov
 
Fun and Games with Mac OS X and iPhone Payloads, Black Hat Europe 2009
Fun and Games with Mac OS X and iPhone Payloads, Black Hat Europe 2009Fun and Games with Mac OS X and iPhone Payloads, Black Hat Europe 2009
Fun and Games with Mac OS X and iPhone Payloads, Black Hat Europe 2009Vincenzo Iozzo
 
Java Jit. Compilation and optimization by Andrey Kovalenko
Java Jit. Compilation and optimization by Andrey KovalenkoJava Jit. Compilation and optimization by Andrey Kovalenko
Java Jit. Compilation and optimization by Andrey KovalenkoValeriia Maliarenko
 
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The UglyMin-Yih Hsu
 
Me3D: A Model-driven Methodology Expediting Embedded Device Driver Development
Me3D: A Model-driven Methodology  Expediting Embedded Device  Driver DevelopmentMe3D: A Model-driven Methodology  Expediting Embedded Device  Driver Development
Me3D: A Model-driven Methodology Expediting Embedded Device Driver Developmenthuichenphd
 
gcov和clang中的实现
gcov和clang中的实现gcov和clang中的实现
gcov和clang中的实现Ray Song
 
Workshop de Ruby on Rails
Workshop de Ruby on RailsWorkshop de Ruby on Rails
Workshop de Ruby on RailsFabio Akita
 
Return-Oriented Programming: Exploits Without Code Injection
Return-Oriented Programming: Exploits Without Code InjectionReturn-Oriented Programming: Exploits Without Code Injection
Return-Oriented Programming: Exploits Without Code Injectionguest9f4856
 
深入淺出C語言
深入淺出C語言深入淺出C語言
深入淺出C語言Simen Li
 
from Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu Worksfrom Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu WorksZhen Wei
 

What's hot (20)

Shellcodes for ARM: Your Pills Don't Work on Me, x86
Shellcodes for ARM: Your Pills Don't Work on Me, x86Shellcodes for ARM: Your Pills Don't Work on Me, x86
Shellcodes for ARM: Your Pills Don't Work on Me, x86
 
Qemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System EmulationQemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System Emulation
 
RISC-V Linker Relaxation and LLD
RISC-V Linker Relaxation and LLDRISC-V Linker Relaxation and LLD
RISC-V Linker Relaxation and LLD
 
ROP 輕鬆談
ROP 輕鬆談ROP 輕鬆談
ROP 輕鬆談
 
Workshop de Ruby e Rails na USP Leste 2012
Workshop de Ruby e Rails na USP Leste 2012Workshop de Ruby e Rails na USP Leste 2012
Workshop de Ruby e Rails na USP Leste 2012
 
Interpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratchInterpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratch
 
Ncm2010 ruo ando
Ncm2010 ruo andoNcm2010 ruo ando
Ncm2010 ruo ando
 
Checking Oracle VM VirtualBox. Part 1
Checking Oracle VM VirtualBox. Part 1Checking Oracle VM VirtualBox. Part 1
Checking Oracle VM VirtualBox. Part 1
 
Fun and Games with Mac OS X and iPhone Payloads, Black Hat Europe 2009
Fun and Games with Mac OS X and iPhone Payloads, Black Hat Europe 2009Fun and Games with Mac OS X and iPhone Payloads, Black Hat Europe 2009
Fun and Games with Mac OS X and iPhone Payloads, Black Hat Europe 2009
 
Pilot Factory
Pilot FactoryPilot Factory
Pilot Factory
 
Java Jit. Compilation and optimization by Andrey Kovalenko
Java Jit. Compilation and optimization by Andrey KovalenkoJava Jit. Compilation and optimization by Andrey Kovalenko
Java Jit. Compilation and optimization by Andrey Kovalenko
 
Presentation
PresentationPresentation
Presentation
 
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
 
Me3D: A Model-driven Methodology Expediting Embedded Device Driver Development
Me3D: A Model-driven Methodology  Expediting Embedded Device  Driver DevelopmentMe3D: A Model-driven Methodology  Expediting Embedded Device  Driver Development
Me3D: A Model-driven Methodology Expediting Embedded Device Driver Development
 
gcov和clang中的实现
gcov和clang中的实现gcov和clang中的实现
gcov和clang中的实现
 
Workshop de Ruby on Rails
Workshop de Ruby on RailsWorkshop de Ruby on Rails
Workshop de Ruby on Rails
 
Return-Oriented Programming: Exploits Without Code Injection
Return-Oriented Programming: Exploits Without Code InjectionReturn-Oriented Programming: Exploits Without Code Injection
Return-Oriented Programming: Exploits Without Code Injection
 
深入淺出C語言
深入淺出C語言深入淺出C語言
深入淺出C語言
 
The Internals of "Hello World" Program
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" Program
 
from Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu Worksfrom Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu Works
 

Similar to IA64 Paravirt_ops Virtualization

Efficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode DetectionEfficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode DetectionGeorg Wicherski
 
Experiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRubyExperiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRubyMatthew Gaudet
 
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)Nate Lawson
 
[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory AnalysisMoabi.com
 
HKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewHKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewLinaro
 
Talk 160920 @ Cat System Workshop
Talk 160920 @ Cat System WorkshopTalk 160920 @ Cat System Workshop
Talk 160920 @ Cat System WorkshopQuey-Liang Kao
 
Compromising Linux Virtual Machines with Debugging Mechanisms
Compromising Linux Virtual Machines with Debugging MechanismsCompromising Linux Virtual Machines with Debugging Mechanisms
Compromising Linux Virtual Machines with Debugging MechanismsRussell Sanford
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Pluginsamiable_indian
 
XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...
XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...
XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...The Linux Foundation
 
What is new and cool j2se & java
What is new and cool j2se & javaWhat is new and cool j2se & java
What is new and cool j2se & javaEugene Bogaart
 
Rubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystemRubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystemevanphx
 
Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )Tim Bunce
 
Specialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingSpecialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingPositive Hack Days
 
You Call that Micro, Mr. Docker? How OSv and Unikernels Help Micro-services S...
You Call that Micro, Mr. Docker? How OSv and Unikernels Help Micro-services S...You Call that Micro, Mr. Docker? How OSv and Unikernels Help Micro-services S...
You Call that Micro, Mr. Docker? How OSv and Unikernels Help Micro-services S...rhatr
 
Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Brent Salisbury
 
owasp lithuania chapter - exploit vs anti-exploit
owasp lithuania chapter - exploit vs anti-exploitowasp lithuania chapter - exploit vs anti-exploit
owasp lithuania chapter - exploit vs anti-exploitKęstutis Meškonis
 
Deployment with Ruby on Rails
Deployment with Ruby on RailsDeployment with Ruby on Rails
Deployment with Ruby on RailsJonathan Weiss
 
What’s Slowing Down Your Kafka Pipeline? With Ruizhe Cheng and Pete Stevenson...
What’s Slowing Down Your Kafka Pipeline? With Ruizhe Cheng and Pete Stevenson...What’s Slowing Down Your Kafka Pipeline? With Ruizhe Cheng and Pete Stevenson...
What’s Slowing Down Your Kafka Pipeline? With Ruizhe Cheng and Pete Stevenson...HostedbyConfluent
 
[Kiwicon 2011] Post Memory Corruption Memory Analysis
[Kiwicon 2011] Post Memory Corruption Memory Analysis[Kiwicon 2011] Post Memory Corruption Memory Analysis
[Kiwicon 2011] Post Memory Corruption Memory AnalysisMoabi.com
 

Similar to IA64 Paravirt_ops Virtualization (20)

Efficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode DetectionEfficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode Detection
 
Experiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRubyExperiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRuby
 
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
 
[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis
 
HKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewHKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overview
 
Rsltollvm
RsltollvmRsltollvm
Rsltollvm
 
Talk 160920 @ Cat System Workshop
Talk 160920 @ Cat System WorkshopTalk 160920 @ Cat System Workshop
Talk 160920 @ Cat System Workshop
 
Compromising Linux Virtual Machines with Debugging Mechanisms
Compromising Linux Virtual Machines with Debugging MechanismsCompromising Linux Virtual Machines with Debugging Mechanisms
Compromising Linux Virtual Machines with Debugging Mechanisms
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Plugins
 
XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...
XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...
XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...
 
What is new and cool j2se & java
What is new and cool j2se & javaWhat is new and cool j2se & java
What is new and cool j2se & java
 
Rubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystemRubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystem
 
Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )
 
Specialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingSpecialized Compiler for Hash Cracking
Specialized Compiler for Hash Cracking
 
You Call that Micro, Mr. Docker? How OSv and Unikernels Help Micro-services S...
You Call that Micro, Mr. Docker? How OSv and Unikernels Help Micro-services S...You Call that Micro, Mr. Docker? How OSv and Unikernels Help Micro-services S...
You Call that Micro, Mr. Docker? How OSv and Unikernels Help Micro-services S...
 
Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012
 
owasp lithuania chapter - exploit vs anti-exploit
owasp lithuania chapter - exploit vs anti-exploitowasp lithuania chapter - exploit vs anti-exploit
owasp lithuania chapter - exploit vs anti-exploit
 
Deployment with Ruby on Rails
Deployment with Ruby on RailsDeployment with Ruby on Rails
Deployment with Ruby on Rails
 
What’s Slowing Down Your Kafka Pipeline? With Ruizhe Cheng and Pete Stevenson...
What’s Slowing Down Your Kafka Pipeline? With Ruizhe Cheng and Pete Stevenson...What’s Slowing Down Your Kafka Pipeline? With Ruizhe Cheng and Pete Stevenson...
What’s Slowing Down Your Kafka Pipeline? With Ruizhe Cheng and Pete Stevenson...
 
[Kiwicon 2011] Post Memory Corruption Memory Analysis
[Kiwicon 2011] Post Memory Corruption Memory Analysis[Kiwicon 2011] Post Memory Corruption Memory Analysis
[Kiwicon 2011] Post Memory Corruption Memory Analysis
 

More from The Linux Foundation

ELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleThe Linux Foundation
 
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...The Linux Foundation
 
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...The Linux Foundation
 
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...The Linux Foundation
 
XPDDS19 Keynote: Unikraft Weather Report
XPDDS19 Keynote:  Unikraft Weather ReportXPDDS19 Keynote:  Unikraft Weather Report
XPDDS19 Keynote: Unikraft Weather ReportThe Linux Foundation
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...The Linux Foundation
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxThe Linux Foundation
 
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...The Linux Foundation
 
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderXPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderThe Linux Foundation
 
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...The Linux Foundation
 
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making... OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...The Linux Foundation
 
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixXPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixThe Linux Foundation
 
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdXPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdThe Linux Foundation
 
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...The Linux Foundation
 
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DXPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DThe Linux Foundation
 
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsXPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsThe Linux Foundation
 
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...The Linux Foundation
 
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...The Linux Foundation
 
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...The Linux Foundation
 
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEXPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEThe Linux Foundation
 

More from The Linux Foundation (20)

ELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made Simple
 
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
 
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
 
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
 
XPDDS19 Keynote: Unikraft Weather Report
XPDDS19 Keynote:  Unikraft Weather ReportXPDDS19 Keynote:  Unikraft Weather Report
XPDDS19 Keynote: Unikraft Weather Report
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
 
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
 
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderXPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
 
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
 
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making... OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixXPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
 
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdXPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
 
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
 
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DXPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
 
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsXPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
 
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
 
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
 
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
 
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEXPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
 

Recently uploaded

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Recently uploaded (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

IA64 Paravirt_ops Virtualization

  • 3. Goal Merge xenLinux/IA64 modification to Linux ● upstream. Both domU/dom0 support.
  • 4. Old History There have already been several ● unsuccessful merge efforts So we are trying again... ● 30 Jan, 2005 Xen and the Art of Linux/IA64 Virtualization Dan Magenheimer 2.6.12 28 Oct, 2005 virtualization hooks patch for IA64 2.6.15 Dan Magenheimer 2.6.15 03 Jun, 2006 Xen/IA64 kernel changes 2.6.17-rc5 Alex Williamson 2.6.17-rc5
  • 5. What's Different This Time? The x86 paravirt_ops (pv_ops for short) ● has been merged After several approaches to virtualization – support were proposed, finally the paravirt_ops approach won Consensus on virtualization via source-code – API (Minimal) Xen/x86 has been merged ● The Xen common code is already there – Though, portability patches would be necessary –
  • 6. Merging Strategy The first merge is the most difficult ● Basically follow the x86 approach ● Virtualization infrastructure via source code – API, i.e. paravirt_ops. Minimize modifications at first step – Make patch size and the number of patches as small ● as possible for code review. Postpone optimization where possible – Dom0 support is also postponed –
  • 7. What is paravirt_ops The indirect layer for virutalization ● Virtualization support via source-code API – It allows a single kernel binary to run on all – supported execution environments including bare-metal hardware. It is implemented as C function pointer. – But, it supports special optimization, binary – patching. Indirect calls can be transformed into a direct ● call or in-place execution. A set of macros for assembly code – Hand-written assembly code also needs ● paravirtualization.
  • 9. Challenges IA64 machine vectors ● Privileged instruction ● (para)virtualization Binary patching ● Hand-written assembly code ● paravirtualization
  • 10. IA64 Machine Vector C function pointers for platform support. ● Initialization, IPI, DMA API... – One possible approach is to enhance ● machine vector. But paravirtualization needs more. ● Initialization at very early stage of the boot – sequence. Binary patch optimization. – Paravirtualization overhead on bare metal hardware ● should be as small as possible.
  • 11. Linux kernel The rest of kernel code machine vector Xen dig hpzx1 sn2 ... domU dom0 paravirt_ops Xen Wrapper Xen Hypervisor dig hpzx1 sn2 ... hardware
  • 12. Instruction (Para)Virtualization The main issues for IA64 is privileged ● instruction paravirtualization. Some approaches were discussed. ● Pre-Virtualization and after-burning – Hybrid Virtualization. Rely on hardware – support(VT-i). Privify. (vBlades approach) – paravirt_ops. –
  • 13. Instruction (Para)Virtualization(cont.) Performance hyervisor change Linux Change in theory Single binary? previrtualization yes No Low No hybrid yes No Low Yes yes No Low No privify paravirt_ops No Yes High Yes With the preliminary benchmark results(the ● next slides), paravirt_ops approach was adopted. The re-aim-7 which was used is CPU ● intensive benchmark.
  • 14. Preliminary benchmark done by Alex Williamson http://lists.xensource.com/archives/html/ xen-ia64-devel/2008-01/msg00194.html
  • 15. Binary Patch IA64 intrinsics(privileged instructions ● used by C code.) needs binary patch They are performance critical. – e.g. mask/unmask interrupts. – But not all the hooks needs binary patch ● The hooks for high level functionalities – accepts C indirect call overheads. Unlike x86, we don't support binary patch for – all the hooks because...
  • 16. Binary Patch(cont.) To allow binary patch, the call instruction ● needs to be annotated. But there is no way to write C calling conversion with GCC extended inline assembly code. So other calling convention has to be used. ● Non-banked static registers(xen/ia64 like) – Banked Static registers.(PAL call like) – C function call like convention. – Anyway those functions can't be written in ● C.
  • 17. caller_func(in0, ... inL) loc0, ... locM asm(“...”::: “out0”, “out1”) is bad. out0, ... outN Here out0, ... outN are clobbered. No way to specify out0, ...outN bp_func(out0, out1) as clobbered registers where N is other_func(out0, out1, ... outN) unknown. Clobbered registers func(in0,..., inL) M, N are determined by GCC r0-r31 Static registers in0...inL loc0...locM out0, out1...outN Function call Static registers in0, in1 loc0...locM' out0...outN' M', N' are determined by GCC r0-r31 bp_func(in0, in1)
  • 18. Hand-Written Assembly Code .S files ● Kernel entry(fault handler,system ● call)/exit and context switch. Stack is not always usable. ● For example, only several registers can be – used on fault. They are well tuned so that it's difficult ● to touch them without performance degradation.
  • 19. Hand Written Assembly Code(cont.) Single source file, compile multiple times ● using CPP macros and Makefile tricks. Most of those macros 1:1 correspond to ● single instruction Example Patch -(p8) mov cr.itir=r25 + MOV_TO_ITIR(p8, r25, r24) #define MOV_TO_ITIR(pred, reg, clob) Native (pred) mov cr.itir = reg CLOBBER(clob) #define MOV_TO_ITIR(pred, reg, clob) Xen (pred) movl clob = XSI_ITIR; ;; (pred) st8 [clob] = reg Extra clobberable registers are found by careful code reading.
  • 20. Switching Hand-Written Assembly Code Fault handler is pointed by cr.iva ● register. Other path is switched by indirect call. ● Clobberable registers for branch are found by – careful code reading. kernel entry leave_kernel wrapper cr.iva ia64_native_leave_kernel xen_leave_kernel native xen code code ivt xen_ivt native xen Fault handler Fault handler kernel exit
  • 21. PV Checker .S paravirtualization is fragile. ● It's very easy to write raw instruction. – Enforce people to use paravirtualized – instructions. Simple checker is implemented. ● Doesn't cover all the breakage. – most of easy breakage can be detected. – Example: cover instruction case #define COVER nop 0 #define cover .error quot;cover should not be used directly.quot;
  • 22. Current Status and Future Plans
  • 23. Current IA64 pv_ops name description type pv_info general info - pv_init_ops initialization normal C function pointers Normal C function pointers pv_cpu_ops privileged instructions Needs binary patch pv_cpu_asm_ops macros for hand-written assembly asm macros pv_iosapic_ops iosapic related operations normal C function pointers pv_irq_ops irq related operations normal C function pointers pv_time_ops steal time accounting normal C function pointers The resulting set of hooks is completely ● different from x86's. That's because of architecture difference ● between x86 and IA64.
  • 24. Diffstat file changed insersions deletions pv_cpu_asm_ops 9 517 177 pv_cpu_ops 10 550 49 others 16 507 35 This figures shows paravirt_ops/IA64 ● issues are in cpu instruction paravirtualization.
  • 25. Comparison with x86 pv_ops items X86_32(2.6.26-rc6) IA64 pv_init_ops 5 6 pv_cpu_asm_ops 7 macros32 macros/6 asm labels pv_cpu_ops 32 14 pv_mmu_ops 29 n/a others 13 18 Again this figure shows that paravirt_ops/IA64 relies on ● hand-written assembly code paravirtualization. The number of IA64 pv_cpu_ops is smaller than x86's. ● On IA64 privileged register operation is done by 'mov' ● instructions which is replaced by 2 function pointers. On the other hand on x86 many function pointers are ● defined. e.g. load_cr3() Xen/IA64 fully virtualizes MMU so that pv_mmu_ops is ● unnecessary.
  • 26. Activity Date subject comment 16 Jan, 2008 Time for hybrid virtualization? discussion 07 Feb, 2008 forward ported to linux ia64 upstream single jumbo patch 17 Feb, 2008 paravirt_ops suport in IA64 paravirt_ops discussion 21 Feb, 2008 ia64/xen domU paravirtualization split patches ia64/xen: paravirtualization of hand written 24 Feb, 2008 discussion assembly code RFC: ia64/xen TAKE 2: paravirtualization of 26 Feb, 2008 hand written assembly code 28 Feb, 2008 RFC: ia64/pv_ops: ia64 intrinsics paravirtualization ia64/xen take 3: ia64/xen domU 05 Mar, 2008 started pv_ops paravirtualization 09 Apr, 2008 RFC: ia64/pv_ops take 4: ia64/xen domU take 4 Fully converted into pv_ops 01 May, 2008 ia64/pv_ops take 5, ia64/xen domU take 5 19 May, 2008 ia64/pv_ops take 6, ia64/xen domU take 6 pv_ops part was merged to linux ia64 test branch 10 Jun, 2008 ia64/xen domU take 7 preliminary for save/restore
  • 27. Current status and future plan Items status minimal domU pv_ops in linux IA64 test branch W.I.P.(working patch, Xen/domU under review) domU optimization more .S paravirtualization binary patch Experimental patch existed balloon Preliminary support. Needs more paravirtualization save/restore free unused pages revise boot protocol dom0 DMA API kexec/kdump PMU/PMD/PMC(xenoprof) mca and more?
  • 28. Acknowledgements Thanks to ● Eddie Dong(some of slides are cited from his – slides with modification) Alex Williamson(The previous Xen/IA64 – maintainer) Akio Takebe – Qing He – Simon Horman – Jeremy Fitzhardinge(The Linux xen maintainer) – Tony Luck(The Linux IA64 maintainer) – Dan Magenheimer(The Xen/IA64 initiator) –
  • 29. Thank you http://wiki.xensource.com/xenwiki/XenIA64/ ● UpstreamMerge