tree:
https://git.kernel.org/pub/scm/linux/kernel/git/joro/linux.git
sev-es-client-v5.8-rc4
head: 7ee5e0ddab7fa6efbf0937f175a5688a375d55b8
commit: 1e6fe81e64bbaa1f790506f7bcd47da575a6d6db [1/75] KVM: SVM: Add GHCB definitions
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce (this is a W=1 build):
git checkout 1e6fe81e64bbaa1f790506f7bcd47da575a6d6db
# save the attached .config to linux build tree
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
arch/x86/kvm/svm/nested.c: In function 'svm_set_nested_state':
> arch/x86/kvm/svm/nested.c:1076:1: warning: the frame size of 2316
bytes is larger than 1024 bytes [-Wframe-larger-than=]
1076 | }
| ^
vim +1076 arch/x86/kvm/svm/nested.c
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 992
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 993 static int svm_set_nested_state(struct
kvm_vcpu *vcpu,
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 994 struct kvm_nested_state __user
*user_kvm_nested_state,
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 995 struct kvm_nested_state *kvm_state)
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 996 {
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 997 struct vcpu_svm *svm = to_svm(vcpu);
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 998 struct vmcb *hsave =
svm->nested.hsave;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 999 struct vmcb __user *user_vmcb = (struct
vmcb __user *)
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1000
&user_kvm_nested_state->data.svm[0];
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1001 struct vmcb_control_area ctl;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1002 struct vmcb_save_area save;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1003 u32 cr0;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1004
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1005 if (kvm_state->format !=
KVM_STATE_NESTED_FORMAT_SVM)
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1006 return -EINVAL;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1007
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1008 if (kvm_state->flags &
~(KVM_STATE_NESTED_GUEST_MODE |
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1009 KVM_STATE_NESTED_RUN_PENDING |
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1010 KVM_STATE_NESTED_GIF_SET))
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1011 return -EINVAL;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1012
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1013 /*
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1014 * If in guest mode, vcpu->arch.efer
actually refers to the L2 guest's
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1015 * EFER.SVME, but EFER.SVME still has to
be 1 for VMRUN to succeed.
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1016 */
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1017 if (!(vcpu->arch.efer & EFER_SVME))
{
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1018 /* GIF=1 and no guest mode are required
if SVME=0. */
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1019 if (kvm_state->flags !=
KVM_STATE_NESTED_GIF_SET)
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1020 return -EINVAL;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1021 }
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1022
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1023 /* SMM temporarily disables SVM, so we
cannot be in guest mode. */
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1024 if (is_smm(vcpu) &&
(kvm_state->flags & KVM_STATE_NESTED_GUEST_MODE))
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1025 return -EINVAL;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1026
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1027 if (!(kvm_state->flags &
KVM_STATE_NESTED_GUEST_MODE)) {
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1028 svm_leave_nested(svm);
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1029 goto out_set_gif;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1030 }
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1031
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1032 if (!page_address_valid(vcpu,
kvm_state->hdr.svm.vmcb_pa))
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1033 return -EINVAL;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1034 if (kvm_state->size <
sizeof(*kvm_state) + KVM_STATE_NESTED_SVM_VMCB_SIZE)
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1035 return -EINVAL;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1036 if (copy_from_user(&ctl,
&user_vmcb->control, sizeof(ctl)))
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1037 return -EFAULT;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1038 if (copy_from_user(&save,
&user_vmcb->save, sizeof(save)))
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1039 return -EFAULT;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1040
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1041 if
(!nested_vmcb_check_controls(&ctl))
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1042 return -EINVAL;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1043
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1044 /*
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1045 * Processor state contains L2 state.
Check that it is
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1046 * valid for guest mode (see
nested_vmcb_checks).
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1047 */
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1048 cr0 = kvm_read_cr0(vcpu);
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1049 if (((cr0 & X86_CR0_CD) == 0)
&& (cr0 & X86_CR0_NW))
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1050 return -EINVAL;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1051
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1052 /*
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1053 * Validate host state saved from before
VMRUN (see
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1054 * nested_svm_check_permissions).
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1055 * TODO: validate reserved bits for all
saved state.
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1056 */
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1057 if (!(save.cr0 & X86_CR0_PG))
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1058 return -EINVAL;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1059
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1060 /*
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1061 * All checks done, we can enter guest
mode. L1 control fields
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1062 * come from the nested save state. Guest
state is already
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1063 * in the registers, the save area of the
nested state instead
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1064 * contains saved L1 state.
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1065 */
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1066
copy_vmcb_control_area(&hsave->control, &svm->vmcb->control);
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1067 hsave->save = save;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1068
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1069 svm->nested.vmcb =
kvm_state->hdr.svm.vmcb_pa;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1070 load_nested_vmcb_control(svm, &ctl);
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1071 nested_prepare_vmcb_control(svm);
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1072
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1073 out_set_gif:
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1074 svm_set_gif(svm, !!(kvm_state->flags
& KVM_STATE_NESTED_GIF_SET));
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1075 return 0;
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 @1076 }
cc440cdad5b7a4 Paolo Bonzini 2020-05-13 1077
:::::: The code at line 1076 was first introduced by commit
:::::: cc440cdad5b7a4c1de12dace725209eb3e0cf663 KVM: nSVM: implement KVM_GET_NESTED_STATE
and KVM_SET_NESTED_STATE
:::::: TO: Paolo Bonzini <pbonzini(a)redhat.com>
:::::: CC: Paolo Bonzini <pbonzini(a)redhat.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org