xref: /OK3568_Linux_fs/kernel/Documentation/virt/kvm/review-checklist.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun================================
4*4882a593SmuzhiyunReview checklist for kvm patches
5*4882a593Smuzhiyun================================
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun1.  The patch must follow Documentation/process/coding-style.rst and
8*4882a593Smuzhiyun    Documentation/process/submitting-patches.rst.
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun2.  Patches should be against kvm.git master branch.
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun3.  If the patch introduces or modifies a new userspace API:
13*4882a593Smuzhiyun    - the API must be documented in Documentation/virt/kvm/api.rst
14*4882a593Smuzhiyun    - the API must be discoverable using KVM_CHECK_EXTENSION
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun4.  New state must include support for save/restore.
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun5.  New features must default to off (userspace should explicitly request them).
19*4882a593Smuzhiyun    Performance improvements can and should default to on.
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun6.  New cpu features should be exposed via KVM_GET_SUPPORTED_CPUID2
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun7.  Emulator changes should be accompanied by unit tests for qemu-kvm.git
24*4882a593Smuzhiyun    kvm/test directory.
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun8.  Changes should be vendor neutral when possible.  Changes to common code
27*4882a593Smuzhiyun    are better than duplicating changes to vendor code.
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun9.  Similarly, prefer changes to arch independent code than to arch dependent
30*4882a593Smuzhiyun    code.
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun10. User/kernel interfaces and guest/host interfaces must be 64-bit clean
33*4882a593Smuzhiyun    (all variables and sizes naturally aligned on 64-bit; use specific types
34*4882a593Smuzhiyun    only - u64 rather than ulong).
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun11. New guest visible features must either be documented in a hardware manual
37*4882a593Smuzhiyun    or be accompanied by documentation.
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun12. Features must be robust against reset and kexec - for example, shared
40*4882a593Smuzhiyun    host/guest memory must be unshared to prevent the host from writing to
41*4882a593Smuzhiyun    guest memory that the guest has not reserved for this purpose.
42