cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

paravirt_ops.rst (1544B)


      1.. SPDX-License-Identifier: GPL-2.0
      2
      3============
      4Paravirt_ops
      5============
      6
      7Linux provides support for different hypervisor virtualization technologies.
      8Historically different binary kernels would be required in order to support
      9different hypervisors, this restriction was removed with pv_ops.
     10Linux pv_ops is a virtualization API which enables support for different
     11hypervisors. It allows each hypervisor to override critical operations and
     12allows a single kernel binary to run on all supported execution environments
     13including native machine -- without any hypervisors.
     14
     15pv_ops provides a set of function pointers which represent operations
     16corresponding to low level critical instructions and high level
     17functionalities in various areas. pv-ops allows for optimizations at run
     18time by enabling binary patching of the low-ops critical operations
     19at boot time.
     20
     21pv_ops operations are classified into three categories:
     22
     23- simple indirect call
     24   These operations correspond to high level functionality where it is
     25   known that the overhead of indirect call isn't very important.
     26
     27- indirect call which allows optimization with binary patch
     28   Usually these operations correspond to low level critical instructions. They
     29   are called frequently and are performance critical. The overhead is
     30   very important.
     31
     32- a set of macros for hand written assembly code
     33   Hand written assembly codes (.S files) also need paravirtualization
     34   because they include sensitive instructions or some of code paths in
     35   them are very performance critical.