diff options
Diffstat (limited to 'Documentation/virtual/paravirt_ops.txt')
-rw-r--r-- | Documentation/virtual/paravirt_ops.txt | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Documentation/virtual/paravirt_ops.txt b/Documentation/virtual/paravirt_ops.txt new file mode 100644 index 000000000000..d4881c00e339 --- /dev/null +++ b/Documentation/virtual/paravirt_ops.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | Paravirt_ops | ||
2 | ============ | ||
3 | |||
4 | Linux provides support for different hypervisor virtualization technologies. | ||
5 | Historically different binary kernels would be required in order to support | ||
6 | different hypervisors, this restriction was removed with pv_ops. | ||
7 | Linux pv_ops is a virtualization API which enables support for different | ||
8 | hypervisors. It allows each hypervisor to override critical operations and | ||
9 | allows a single kernel binary to run on all supported execution environments | ||
10 | including native machine -- without any hypervisors. | ||
11 | |||
12 | pv_ops provides a set of function pointers which represent operations | ||
13 | corresponding to low level critical instructions and high level | ||
14 | functionalities in various areas. pv-ops allows for optimizations at run | ||
15 | time by enabling binary patching of the low-ops critical operations | ||
16 | at boot time. | ||
17 | |||
18 | pv_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. | ||