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