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