Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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