All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC 00/11] KVM: x86: Make Hyper-V emulation optional (AKA introduce CONFIG_KVM_HYPERV)
@ 2023-10-10 16:02 Vitaly Kuznetsov
  2023-10-10 16:02 ` [PATCH RFC 01/11] KVM: x86: xen: Remove unneeded xen context from struct kvm_arch when !CONFIG_KVM_XEN Vitaly Kuznetsov
                   ` (10 more replies)
  0 siblings, 11 replies; 33+ messages in thread
From: Vitaly Kuznetsov @ 2023-10-10 16:02 UTC (permalink / raw)
  To: kvm, Paolo Bonzini, Sean Christopherson; +Cc: linux-kernel

Ideas to make Hyper-V emulation by KVM optional were expressed in the past
so I've decided to take a look at what would it take us to implement it.
Turns out it's quite a lot of code churn but the gain is also significant.
Just comparing the resulting module sizes, I can see:

    # CONFIG_KVM_HYPERV is not set
    # CONFIG_HYPERV is not set

    -rw-r--r--. 1 user user 3612632 Oct 10 16:53 arch/x86/kvm/kvm-amd.ko
    -rw-r--r--. 1 user user 5343968 Oct 10 16:53 arch/x86/kvm/kvm-intel.ko

    CONFIG_KVM_HYPERV=y
    # CONFIG_HYPERV is not set

    -rw-r--r--. 1 user user 3925704 Oct 10 16:51 arch/x86/kvm/kvm-amd.ko
    -rw-r--r--. 1 user user 5819192 Oct 10 16:51 arch/x86/kvm/kvm-intel.ko

    # CONFIG_KVM_HYPERV is not set
    CONFIG_HYPERV=m

    -rw-r--r--. 1 user user 3928440 Oct 10 16:40 arch/x86/kvm/kvm-amd.ko
    -rw-r--r--. 1 user user 8156464 Oct 10 16:40 arch/x86/kvm/kvm-intel.ko

    CONFIG_KVM_HYPERV=y
    CONFIG_HYPERV=m

    -rw-r--r--. 1 user user 4245440 Oct 10 16:37 arch/x86/kvm/kvm-amd.ko
    -rw-r--r--. 1 user user 8583872 Oct 10 16:37 arch/x86/kvm/kvm-intel.ko

While code churn is certainly something we can survive, adding more CONFIG
options always comes with a risk of a broken build somewhere in the future.

Early RFC. I have only compile tested these patches in these four
configurations and I'd like to get your opinion on whether it's worth it or
not.

The first patch of the series is not Hyper-V related but as I hide Hyper-V
emulation context under CONFIG_KVM_HYPERV I think it would make sense to
do the same for Xen.

Vitaly Kuznetsov (11):
  KVM: x86: xen: Remove unneeded xen context from struct kvm_arch when
    !CONFIG_KVM_XEN
  KVM: x86: hyper-v: Move Hyper-V partition assist page out of Hyper-V
    emulation context
  KVM: VMX: Split off vmx_onhyperv.{ch} from hyperv.{ch}
  KVM: x86: hyper-v: Introduce kvm_hv_synic_auto_eoi_set()
  KVM: x86: hyper-v: Introduce kvm_hv_synic_has_vector()
  KVM: VMX: Split off hyperv_evmcs.{ch}
  KVM: x86: Make Hyper-V emulation optional
  KVM: nVMX: hyper-v: Introduce nested_vmx_evmptr() accessor
  KVM: nVMX: hyper-v: Introduce nested_vmx_evmcs() accessor
  KVM: nVMX: hyper-v: Hide more stuff under CONFIG_KVM_HYPERV
  KVM: nSVM: hyper-v: Hide more stuff under
    CONFIG_KVM_HYPERV/CONFIG_HYPERV

 arch/x86/include/asm/kvm_host.h |  11 +-
 arch/x86/kvm/Kconfig            |   9 +
 arch/x86/kvm/Makefile           |  19 +-
 arch/x86/kvm/cpuid.c            |   6 +
 arch/x86/kvm/hyperv.h           |  39 ++-
 arch/x86/kvm/irq.c              |   2 +
 arch/x86/kvm/irq_comm.c         |   9 +-
 arch/x86/kvm/lapic.c            |   5 +-
 arch/x86/kvm/svm/hyperv.h       |   7 +
 arch/x86/kvm/svm/nested.c       |  22 +-
 arch/x86/kvm/svm/svm.h          |   2 +
 arch/x86/kvm/svm/svm_onhyperv.c |   2 +-
 arch/x86/kvm/svm/svm_onhyperv.h |   2 +
 arch/x86/kvm/vmx/hyperv.c       | 447 --------------------------------
 arch/x86/kvm/vmx/hyperv.h       | 191 ++------------
 arch/x86/kvm/vmx/hyperv_evmcs.c | 311 ++++++++++++++++++++++
 arch/x86/kvm/vmx/hyperv_evmcs.h | 162 ++++++++++++
 arch/x86/kvm/vmx/nested.c       |  94 ++++---
 arch/x86/kvm/vmx/nested.h       |   3 +-
 arch/x86/kvm/vmx/vmx.c          |   6 +-
 arch/x86/kvm/vmx/vmx.h          |   2 +
 arch/x86/kvm/vmx/vmx_onhyperv.c |  36 +++
 arch/x86/kvm/vmx/vmx_onhyperv.h | 125 +++++++++
 arch/x86/kvm/vmx/vmx_ops.h      |   2 +-
 arch/x86/kvm/x86.c              |  60 +++--
 25 files changed, 885 insertions(+), 689 deletions(-)
 create mode 100644 arch/x86/kvm/vmx/hyperv_evmcs.c
 create mode 100644 arch/x86/kvm/vmx/hyperv_evmcs.h
 create mode 100644 arch/x86/kvm/vmx/vmx_onhyperv.c
 create mode 100644 arch/x86/kvm/vmx/vmx_onhyperv.h

-- 
2.41.0


^ permalink raw reply	[flat|nested] 33+ messages in thread
* Re: [PATCH RFC 06/11] KVM: VMX: Split off hyperv_evmcs.{ch}
@ 2023-10-13 21:26 kernel test robot
  0 siblings, 0 replies; 33+ messages in thread
From: kernel test robot @ 2023-10-13 21:26 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20231010160300.1136799-7-vkuznets@redhat.com>
References: <20231010160300.1136799-7-vkuznets@redhat.com>
TO: Vitaly Kuznetsov <vkuznets@redhat.com>

Hi Vitaly,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build warnings:

[auto build test WARNING on kvm/queue]
[cannot apply to mst-vhost/linux-next kvm/linux-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Vitaly-Kuznetsov/KVM-x86-xen-Remove-unneeded-xen-context-from-struct-kvm_arch-when-CONFIG_KVM_XEN/20231011-001336
base:   https://git.kernel.org/pub/scm/virt/kvm/kvm.git queue
patch link:    https://lore.kernel.org/r/20231010160300.1136799-7-vkuznets%40redhat.com
patch subject: [PATCH RFC 06/11] KVM: VMX: Split off hyperv_evmcs.{ch}
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: i386-randconfig-063-20231013 (https://download.01.org/0day-ci/archive/20231014/202310140532.d8aEDVAY-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231014/202310140532.d8aEDVAY-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202310140532.d8aEDVAY-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:11:9: sparse: sparse: cast truncates bits from constant value (1a079a becomes 79a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:13:9: sparse: sparse: cast truncates bits from constant value (1a071a becomes 71a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:15:9: sparse: sparse: cast truncates bits from constant value (1a081a becomes 81a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:17:9: sparse: sparse: cast truncates bits from constant value (b000b becomes b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:19:9: sparse: sparse: cast truncates bits from constant value (b008b becomes 8b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:21:9: sparse: sparse: cast truncates bits from constant value (b010b becomes 10b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:23:9: sparse: sparse: cast truncates bits from constant value (1b001b becomes 1b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:25:9: sparse: sparse: cast truncates bits from constant value (1b009b becomes 9b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:27:9: sparse: sparse: cast truncates bits from constant value (1b011b becomes 11b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:29:9: sparse: sparse: cast truncates bits from constant value (1b041b becomes 41b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:31:9: sparse: sparse: cast truncates bits from constant value (1b049b becomes 49b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:33:9: sparse: sparse: cast truncates bits from constant value (1b059b becomes 59b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:35:9: sparse: sparse: cast truncates bits from constant value (80008 becomes 8)
   arch/x86/kvm/vmx/hyperv_evmcs.c:37:9: sparse: sparse: cast truncates bits from constant value (80088 becomes 88)
   arch/x86/kvm/vmx/hyperv_evmcs.c:39:9: sparse: sparse: cast truncates bits from constant value (80108 becomes 108)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:41:9: sparse: sparse: cast truncates bits from constant value (1a019a becomes 19a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:43:9: sparse: sparse: cast truncates bits from constant value (1a021a becomes 21a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:45:9: sparse: sparse: cast truncates bits from constant value (1a029a becomes 29a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:47:9: sparse: sparse: cast truncates bits from constant value (1a031a becomes 31a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:49:9: sparse: sparse: cast truncates bits from constant value (1a039a becomes 39a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:51:9: sparse: sparse: cast truncates bits from constant value (1a041a becomes 41a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:53:9: sparse: sparse: cast truncates bits from constant value (1a049a becomes 49a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:55:9: sparse: sparse: cast truncates bits from constant value (1a051a becomes 51a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:57:9: sparse: sparse: cast truncates bits from constant value (1a059a becomes 59a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:59:9: sparse: sparse: cast truncates bits from constant value (1a061a becomes 61a)
   arch/x86/kvm/vmx/hyperv_evmcs.c:61:9: sparse: sparse: cast truncates bits from constant value (80408 becomes 408)
   arch/x86/kvm/vmx/hyperv_evmcs.c:63:9: sparse: sparse: cast truncates bits from constant value (80488 becomes 488)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:65:9: sparse: sparse: cast truncates bits from constant value (a000a becomes a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:67:9: sparse: sparse: cast truncates bits from constant value (a008a becomes 8a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:69:9: sparse: sparse: cast truncates bits from constant value (a010a becomes 10a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:71:9: sparse: sparse: cast truncates bits from constant value (a018a becomes 18a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:73:9: sparse: sparse: cast truncates bits from constant value (a020a becomes 20a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:75:9: sparse: sparse: cast truncates bits from constant value (a028a becomes 28a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:77:9: sparse: sparse: cast truncates bits from constant value (a030a becomes 30a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:79:9: sparse: sparse: cast truncates bits from constant value (a038a becomes 38a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:81:9: sparse: sparse: cast truncates bits from constant value (a040a becomes 40a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:83:9: sparse: sparse: cast truncates bits from constant value (1a089a becomes 89a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:85:9: sparse: sparse: cast truncates bits from constant value (1a091a becomes 91a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:87:9: sparse: sparse: cast truncates bits from constant value (1a099a becomes 99a)
   arch/x86/kvm/vmx/hyperv_evmcs.c:89:9: sparse: sparse: cast truncates bits from constant value (180018 becomes 18)
   arch/x86/kvm/vmx/hyperv_evmcs.c:91:9: sparse: sparse: cast truncates bits from constant value (180098 becomes 98)
   arch/x86/kvm/vmx/hyperv_evmcs.c:93:9: sparse: sparse: cast truncates bits from constant value (180118 becomes 118)
   arch/x86/kvm/vmx/hyperv_evmcs.c:95:9: sparse: sparse: cast truncates bits from constant value (180198 becomes 198)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:97:9: sparse: sparse: cast truncates bits from constant value (1a001a becomes 1a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:99:9: sparse: sparse: cast truncates bits from constant value (1a009a becomes 9a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:101:9: sparse: sparse: cast truncates bits from constant value (1a011a becomes 11a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:103:9: sparse: sparse: cast truncates bits from constant value (1a069a becomes 69a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:105:9: sparse: sparse: cast truncates bits from constant value (1b019b becomes 19b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:107:9: sparse: sparse: cast truncates bits from constant value (1b021b becomes 21b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:109:9: sparse: sparse: cast truncates bits from constant value (1b029b becomes 29b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:111:9: sparse: sparse: cast truncates bits from constant value (1b031b becomes 31b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:113:9: sparse: sparse: cast truncates bits from constant value (1b039b becomes 39b)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:115:9: sparse: sparse: cast truncates bits from constant value (1b051b becomes 51b)
   arch/x86/kvm/vmx/hyperv_evmcs.c:117:9: sparse: sparse: cast truncates bits from constant value (80688 becomes 688)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:119:9: sparse: sparse: cast truncates bits from constant value (a048a becomes 48a)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:121:9: sparse: sparse: cast truncates bits from constant value (80b08 becomes b08)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:123:9: sparse: sparse: cast truncates bits from constant value (80b88 becomes b88)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:125:9: sparse: sparse: cast truncates bits from constant value (80c88 becomes c88)
   arch/x86/kvm/vmx/hyperv_evmcs.c:147:9: sparse: sparse: cast truncates bits from constant value (90009 becomes 9)
   arch/x86/kvm/vmx/hyperv_evmcs.c:149:9: sparse: sparse: cast truncates bits from constant value (190019 becomes 19)
   arch/x86/kvm/vmx/hyperv_evmcs.c:163:9: sparse: sparse: cast truncates bits from constant value (190299 becomes 299)
   arch/x86/kvm/vmx/hyperv_evmcs.c:171:9: sparse: sparse: cast truncates bits from constant value (80188 becomes 188)
   arch/x86/kvm/vmx/hyperv_evmcs.c:173:9: sparse: sparse: cast truncates bits from constant value (80208 becomes 208)
   arch/x86/kvm/vmx/hyperv_evmcs.c:175:9: sparse: sparse: cast truncates bits from constant value (80288 becomes 288)
   arch/x86/kvm/vmx/hyperv_evmcs.c:179:9: sparse: sparse: cast truncates bits from constant value (100710 becomes 710)
   arch/x86/kvm/vmx/hyperv_evmcs.c:181:9: sparse: sparse: cast truncates bits from constant value (120912 becomes 912)
   arch/x86/kvm/vmx/hyperv_evmcs.c:183:9: sparse: sparse: cast truncates bits from constant value (100090 becomes 90)
   arch/x86/kvm/vmx/hyperv_evmcs.c:185:9: sparse: sparse: cast truncates bits from constant value (100110 becomes 110)
   arch/x86/kvm/vmx/hyperv_evmcs.c:187:9: sparse: sparse: cast truncates bits from constant value (100490 becomes 490)
   arch/x86/kvm/vmx/hyperv_evmcs.c:189:9: sparse: sparse: cast truncates bits from constant value (100590 becomes 590)
   arch/x86/kvm/vmx/hyperv_evmcs.c:191:9: sparse: sparse: cast truncates bits from constant value (100610 becomes 610)
   arch/x86/kvm/vmx/hyperv_evmcs.c:194:9: sparse: sparse: cast truncates bits from constant value (100690 becomes 690)
   arch/x86/kvm/vmx/hyperv_evmcs.c:196:9: sparse: sparse: cast truncates bits from constant value (130013 becomes 13)
   arch/x86/kvm/vmx/hyperv_evmcs.c:198:9: sparse: sparse: cast truncates bits from constant value (100010 becomes 10)
   arch/x86/kvm/vmx/hyperv_evmcs.c:200:9: sparse: sparse: cast truncates bits from constant value (100310 becomes 310)
   arch/x86/kvm/vmx/hyperv_evmcs.c:202:9: sparse: sparse: cast truncates bits from constant value (100790 becomes 790)
   arch/x86/kvm/vmx/hyperv_evmcs.c:204:9: sparse: sparse: cast truncates bits from constant value (120012 becomes 12)
   arch/x86/kvm/vmx/hyperv_evmcs.c:206:9: sparse: sparse: cast truncates bits from constant value (120092 becomes 92)
   arch/x86/kvm/vmx/hyperv_evmcs.c:208:9: sparse: sparse: cast truncates bits from constant value (120112 becomes 112)
   arch/x86/kvm/vmx/hyperv_evmcs.c:210:9: sparse: sparse: cast truncates bits from constant value (120192 becomes 192)
   arch/x86/kvm/vmx/hyperv_evmcs.c:212:9: sparse: sparse: cast truncates bits from constant value (120212 becomes 212)
   arch/x86/kvm/vmx/hyperv_evmcs.c:214:9: sparse: sparse: cast truncates bits from constant value (120292 becomes 292)
   arch/x86/kvm/vmx/hyperv_evmcs.c:216:9: sparse: sparse: cast truncates bits from constant value (120312 becomes 312)
   arch/x86/kvm/vmx/hyperv_evmcs.c:218:9: sparse: sparse: cast truncates bits from constant value (120392 becomes 392)
   arch/x86/kvm/vmx/hyperv_evmcs.c:220:9: sparse: sparse: cast truncates bits from constant value (120412 becomes 412)
   arch/x86/kvm/vmx/hyperv_evmcs.c:222:9: sparse: sparse: cast truncates bits from constant value (120492 becomes 492)
   arch/x86/kvm/vmx/hyperv_evmcs.c:224:9: sparse: sparse: cast truncates bits from constant value (120512 becomes 512)
   arch/x86/kvm/vmx/hyperv_evmcs.c:226:9: sparse: sparse: cast truncates bits from constant value (120592 becomes 592)
   arch/x86/kvm/vmx/hyperv_evmcs.c:228:9: sparse: sparse: cast truncates bits from constant value (120612 becomes 612)
   arch/x86/kvm/vmx/hyperv_evmcs.c:230:9: sparse: sparse: cast truncates bits from constant value (120692 becomes 692)
   arch/x86/kvm/vmx/hyperv_evmcs.c:232:9: sparse: sparse: cast truncates bits from constant value (120712 becomes 712)
   arch/x86/kvm/vmx/hyperv_evmcs.c:234:9: sparse: sparse: cast truncates bits from constant value (120792 becomes 792)
   arch/x86/kvm/vmx/hyperv_evmcs.c:236:9: sparse: sparse: cast truncates bits from constant value (120812 becomes 812)
   arch/x86/kvm/vmx/hyperv_evmcs.c:238:9: sparse: sparse: cast truncates bits from constant value (120892 becomes 892)
   arch/x86/kvm/vmx/hyperv_evmcs.c:240:9: sparse: sparse: cast truncates bits from constant value (120992 becomes 992)
>> arch/x86/kvm/vmx/hyperv_evmcs.c:242:9: sparse: sparse: cast truncates bits from constant value (120a92 becomes a92)
   arch/x86/kvm/vmx/hyperv_evmcs.c:246:9: sparse: sparse: cast truncates bits from constant value (110011 becomes 11)
   arch/x86/kvm/vmx/hyperv_evmcs.c:248:9: sparse: sparse: cast truncates bits from constant value (110091 becomes 91)
   arch/x86/kvm/vmx/hyperv_evmcs.c:250:9: sparse: sparse: cast truncates bits from constant value (110111 becomes 111)
   arch/x86/kvm/vmx/hyperv_evmcs.c:252:9: sparse: sparse: too many warnings

vim +11 arch/x86/kvm/vmx/hyperv_evmcs.c

d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10    4  
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10    5  #define EVMCS1_OFFSET(x) offsetof(struct hv_enlightened_vmcs, x)
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10    6  #define EVMCS1_FIELD(number, name, clean_field)[ROL16(number, 6)] = \
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10    7  		{EVMCS1_OFFSET(name), clean_field}
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10    8  
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10    9  const struct evmcs_field vmcs_field_to_evmcs_1[] = {
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   10  	/* 64 bit rw */
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @11  	EVMCS1_FIELD(GUEST_RIP, guest_rip,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   12  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @13  	EVMCS1_FIELD(GUEST_RSP, guest_rsp,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   14  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @15  	EVMCS1_FIELD(GUEST_RFLAGS, guest_rflags,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   16  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @17  	EVMCS1_FIELD(HOST_IA32_PAT, host_ia32_pat,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   18  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @19  	EVMCS1_FIELD(HOST_IA32_EFER, host_ia32_efer,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   20  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @21  	EVMCS1_FIELD(HOST_IA32_PERF_GLOBAL_CTRL, host_ia32_perf_global_ctrl,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   22  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @23  	EVMCS1_FIELD(HOST_CR0, host_cr0,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   24  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @25  	EVMCS1_FIELD(HOST_CR3, host_cr3,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   26  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @27  	EVMCS1_FIELD(HOST_CR4, host_cr4,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   28  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @29  	EVMCS1_FIELD(HOST_IA32_SYSENTER_ESP, host_ia32_sysenter_esp,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   30  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @31  	EVMCS1_FIELD(HOST_IA32_SYSENTER_EIP, host_ia32_sysenter_eip,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   32  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @33  	EVMCS1_FIELD(HOST_RIP, host_rip,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   34  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @35  	EVMCS1_FIELD(IO_BITMAP_A, io_bitmap_a,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   36  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_IO_BITMAP),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   37  	EVMCS1_FIELD(IO_BITMAP_B, io_bitmap_b,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   38  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_IO_BITMAP),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   39  	EVMCS1_FIELD(MSR_BITMAP, msr_bitmap,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   40  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @41  	EVMCS1_FIELD(GUEST_ES_BASE, guest_es_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   42  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @43  	EVMCS1_FIELD(GUEST_CS_BASE, guest_cs_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   44  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @45  	EVMCS1_FIELD(GUEST_SS_BASE, guest_ss_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   46  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @47  	EVMCS1_FIELD(GUEST_DS_BASE, guest_ds_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   48  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @49  	EVMCS1_FIELD(GUEST_FS_BASE, guest_fs_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   50  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @51  	EVMCS1_FIELD(GUEST_GS_BASE, guest_gs_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   52  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @53  	EVMCS1_FIELD(GUEST_LDTR_BASE, guest_ldtr_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   54  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @55  	EVMCS1_FIELD(GUEST_TR_BASE, guest_tr_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   56  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @57  	EVMCS1_FIELD(GUEST_GDTR_BASE, guest_gdtr_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   58  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @59  	EVMCS1_FIELD(GUEST_IDTR_BASE, guest_idtr_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   60  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   61  	EVMCS1_FIELD(TSC_OFFSET, tsc_offset,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   62  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   63  	EVMCS1_FIELD(VIRTUAL_APIC_PAGE_ADDR, virtual_apic_page_addr,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   64  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @65  	EVMCS1_FIELD(VMCS_LINK_POINTER, vmcs_link_pointer,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   66  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @67  	EVMCS1_FIELD(GUEST_IA32_DEBUGCTL, guest_ia32_debugctl,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   68  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @69  	EVMCS1_FIELD(GUEST_IA32_PAT, guest_ia32_pat,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   70  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @71  	EVMCS1_FIELD(GUEST_IA32_EFER, guest_ia32_efer,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   72  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @73  	EVMCS1_FIELD(GUEST_IA32_PERF_GLOBAL_CTRL, guest_ia32_perf_global_ctrl,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   74  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @75  	EVMCS1_FIELD(GUEST_PDPTR0, guest_pdptr0,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   76  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @77  	EVMCS1_FIELD(GUEST_PDPTR1, guest_pdptr1,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   78  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @79  	EVMCS1_FIELD(GUEST_PDPTR2, guest_pdptr2,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   80  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @81  	EVMCS1_FIELD(GUEST_PDPTR3, guest_pdptr3,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   82  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @83  	EVMCS1_FIELD(GUEST_PENDING_DBG_EXCEPTIONS, guest_pending_dbg_exceptions,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   84  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @85  	EVMCS1_FIELD(GUEST_SYSENTER_ESP, guest_sysenter_esp,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   86  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @87  	EVMCS1_FIELD(GUEST_SYSENTER_EIP, guest_sysenter_eip,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   88  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   89  	EVMCS1_FIELD(CR0_GUEST_HOST_MASK, cr0_guest_host_mask,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   90  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   91  	EVMCS1_FIELD(CR4_GUEST_HOST_MASK, cr4_guest_host_mask,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   92  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   93  	EVMCS1_FIELD(CR0_READ_SHADOW, cr0_read_shadow,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   94  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   95  	EVMCS1_FIELD(CR4_READ_SHADOW, cr4_read_shadow,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   96  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @97  	EVMCS1_FIELD(GUEST_CR0, guest_cr0,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10   98  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  @99  	EVMCS1_FIELD(GUEST_CR3, guest_cr3,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  100  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @101  	EVMCS1_FIELD(GUEST_CR4, guest_cr4,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  102  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @103  	EVMCS1_FIELD(GUEST_DR7, guest_dr7,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  104  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @105  	EVMCS1_FIELD(HOST_FS_BASE, host_fs_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  106  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @107  	EVMCS1_FIELD(HOST_GS_BASE, host_gs_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  108  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @109  	EVMCS1_FIELD(HOST_TR_BASE, host_tr_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  110  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @111  	EVMCS1_FIELD(HOST_GDTR_BASE, host_gdtr_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  112  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @113  	EVMCS1_FIELD(HOST_IDTR_BASE, host_idtr_base,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  114  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @115  	EVMCS1_FIELD(HOST_RSP, host_rsp,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  116  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  117  	EVMCS1_FIELD(EPT_POINTER, ept_pointer,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  118  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_XLAT),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @119  	EVMCS1_FIELD(GUEST_BNDCFGS, guest_bndcfgs,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  120  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @121  	EVMCS1_FIELD(XSS_EXIT_BITMAP, xss_exit_bitmap,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  122  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @123  	EVMCS1_FIELD(ENCLS_EXITING_BITMAP, encls_exiting_bitmap,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  124  		     HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2),
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @125  	EVMCS1_FIELD(TSC_MULTIPLIER, tsc_multiplier,

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 33+ messages in thread
* Re: [PATCH RFC 06/11] KVM: VMX: Split off hyperv_evmcs.{ch}
@ 2023-10-14 14:50 kernel test robot
  0 siblings, 0 replies; 33+ messages in thread
From: kernel test robot @ 2023-10-14 14:50 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20231010160300.1136799-7-vkuznets@redhat.com>
References: <20231010160300.1136799-7-vkuznets@redhat.com>
TO: Vitaly Kuznetsov <vkuznets@redhat.com>

Hi Vitaly,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build warnings:

[auto build test WARNING on kvm/queue]
[also build test WARNING on linus/master v6.6-rc5 next-20231013]
[cannot apply to mst-vhost/linux-next kvm/linux-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Vitaly-Kuznetsov/KVM-x86-xen-Remove-unneeded-xen-context-from-struct-kvm_arch-when-CONFIG_KVM_XEN/20231011-001336
base:   https://git.kernel.org/pub/scm/virt/kvm/kvm.git queue
patch link:    https://lore.kernel.org/r/20231010160300.1136799-7-vkuznets%40redhat.com
patch subject: [PATCH RFC 06/11] KVM: VMX: Split off hyperv_evmcs.{ch}
:::::: branch date: 4 days ago
:::::: commit date: 4 days ago
config: i386-randconfig-061-20231014 (https://download.01.org/0day-ci/archive/20231014/202310142251.DkseuK4B-lkp@intel.com/config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231014/202310142251.DkseuK4B-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202310142251.DkseuK4B-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   arch/x86/kvm/vmx/vmx.c: note: in included file (through arch/x86/kvm/vmx/vmx_onhyperv.h, arch/x86/kvm/vmx/vmx_ops.h, arch/x86/kvm/vmx/vmx.h, ...):
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (110011 becomes 11)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (110011 becomes 11)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (110011 becomes 11)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (110011 becomes 11)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (110011 becomes 11)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (110011 becomes 11)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100190 becomes 190)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100210 becomes 210)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100110 becomes 110)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100490 becomes 490)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100310 becomes 310)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100490 becomes 490)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100310 becomes 310)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100510 becomes 510)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100410 becomes 410)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a018a becomes 18a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (b008b becomes 8b)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100490 becomes 490)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100310 becomes 310)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a020a becomes 20a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (b010b becomes 10b)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100490 becomes 490)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100310 becomes 310)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100510 becomes 510)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100410 becomes 410)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (30203 becomes 203)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (30203 becomes 203)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (30283 becomes 283)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (30283 becomes 283)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1b019b becomes 19b)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1b021b becomes 21b)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1b029b becomes 29b)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1b031b becomes 31b)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1b041b becomes 41b)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a081a becomes 81a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a081a becomes 81a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a081a becomes 81a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120912 becomes 912)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120912 becomes 912)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120912 becomes 912)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (110311 becomes 311)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120992 becomes 992)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120992 becomes 992)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100610 becomes 610)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100690 becomes 690)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100590 becomes 590)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80408 becomes 408)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80c88 becomes c88)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120a92 becomes a92)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a099a becomes 99a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a091a becomes 91a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a048a becomes 48a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a008a becomes 8a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120a92 becomes a92)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a099a becomes 99a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a091a becomes 91a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a008a becomes 8a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a048a becomes 48a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a010a becomes 10a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80b88 becomes b88)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a050a becomes 50a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a071a becomes 71a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a079a becomes 79a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a001a becomes 1a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a009a becomes 9a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a011a becomes 11a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a081a becomes 81a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a081a becomes 81a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a011a becomes 11a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (180198 becomes 198)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a011a becomes 11a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a051a becomes 51a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120392 becomes 392)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120892 becomes 892)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a081a becomes 81a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a081a becomes 81a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a011a becomes 11a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a011a becomes 11a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a028a becomes 28a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a030a becomes 30a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a038a becomes 38a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a040a becomes 40a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a028a becomes 28a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a030a becomes 30a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a038a becomes 38a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a040a becomes 40a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (180118 becomes 118)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a001a becomes 1a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100090 becomes 90)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100090 becomes 90)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100090 becomes 90)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80688 becomes 688)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a009a becomes 9a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100790 becomes 790)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100790 becomes 790)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (180198 becomes 198)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a011a becomes 11a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120492 becomes 492)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a061a becomes 61a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: too many warnings
--
   arch/x86/kvm/vmx/nested.c: note: in included file (through arch/x86/kvm/vmx/vmx_onhyperv.h, arch/x86/kvm/vmx/vmx_ops.h, arch/x86/kvm/vmx/vmx.h, ...):
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100790 becomes 790)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a000a becomes a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80688 becomes 688)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80608 becomes 608)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80108 becomes 108)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80388 becomes 388)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20482 becomes 482)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80b88 becomes b88)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100910 becomes 910)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80188 becomes 188)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80208 becomes 208)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80288 becomes 288)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a000a becomes a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100010 becomes 10)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100710 becomes 710)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100090 becomes 90)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20402 becomes 402)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80b88 becomes b88)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100790 becomes 790)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100490 becomes 490)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100310 becomes 310)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100590 becomes 590)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100610 becomes 610)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100690 becomes 690)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120912 becomes 912)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100590 becomes 590)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20002 becomes 2)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20082 becomes 82)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20102 becomes 102)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20182 becomes 182)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20202 becomes 202)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20282 becomes 282)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20302 becomes 302)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (20382 becomes 382)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120012 becomes 12)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120092 becomes 92)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120112 becomes 112)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120192 becomes 192)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120212 becomes 212)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120292 becomes 292)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120312 becomes 312)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120392 becomes 392)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120412 becomes 412)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120492 becomes 492)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120592 becomes 592)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120612 becomes 612)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120512 becomes 512)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120692 becomes 692)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120712 becomes 712)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120792 becomes 792)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120812 becomes 812)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120892 becomes 892)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a019a becomes 19a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a021a becomes 21a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a029a becomes 29a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a031a becomes 31a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a039a becomes 39a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a041a becomes 41a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a049a becomes 49a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a051a becomes 51a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a059a becomes 59a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a061a becomes 61a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (120a92 becomes a92)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a089a becomes 89a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a091a becomes 91a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a099a becomes 99a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a028a becomes 28a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a030a becomes 30a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a038a becomes 38a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a040a becomes 40a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a048a becomes 48a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80b08 becomes b08)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100190 becomes 190)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100210 becomes 210)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100190 becomes 190)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100210 becomes 210)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80708 becomes 708)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80788 becomes 788)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80808 becomes 808)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80888 becomes 888)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100390 becomes 390)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100410 becomes 410)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100510 becomes 510)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a008a becomes 8a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a008a becomes 8a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a048a becomes 48a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (180018 becomes 18)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a010a becomes 10a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a010a becomes 10a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80408 becomes 408)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (80c88 becomes c88)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (180118 becomes 118)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (180198 becomes 198)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (1a009a becomes 9a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a028a becomes 28a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a030a becomes 30a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a038a becomes 38a)
>> arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (a040a becomes 40a)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: cast truncates bits from constant value (100410 becomes 410)
   arch/x86/kvm/vmx/hyperv_evmcs.h:128:30: sparse: sparse: too many warnings

vim +128 arch/x86/kvm/vmx/hyperv_evmcs.h

d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  124  
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  125  static __always_inline int evmcs_field_offset(unsigned long field,
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  126  					      u16 *clean_field)
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  127  {
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10 @128  	unsigned int index = ROL16(field, 6);
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  129  	const struct evmcs_field *evmcs_field;
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  130  
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  131  	if (unlikely(index >= nr_evmcs_1_fields))
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  132  		return -ENOENT;
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  133  
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  134  	evmcs_field = &vmcs_field_to_evmcs_1[index];
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  135  
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  136  	/*
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  137  	 * Use offset=0 to detect holes in eVMCS. This offset belongs to
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  138  	 * 'revision_id' but this field has no encoding and is supposed to
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  139  	 * be accessed directly.
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  140  	 */
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  141  	if (unlikely(!evmcs_field->offset))
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  142  		return -ENOENT;
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  143  
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  144  	if (clean_field)
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  145  		*clean_field = evmcs_field->clean_field;
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  146  
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  147  	return evmcs_field->offset;
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  148  }
d81ea0d25c7e5f Vitaly Kuznetsov 2023-10-10  149  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 33+ messages in thread

end of thread, other threads:[~2023-10-16 17:04 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-10 16:02 [PATCH RFC 00/11] KVM: x86: Make Hyper-V emulation optional (AKA introduce CONFIG_KVM_HYPERV) Vitaly Kuznetsov
2023-10-10 16:02 ` [PATCH RFC 01/11] KVM: x86: xen: Remove unneeded xen context from struct kvm_arch when !CONFIG_KVM_XEN Vitaly Kuznetsov
2023-10-12 19:30   ` Maxim Levitsky
2023-10-10 16:02 ` [PATCH RFC 02/11] KVM: x86: hyper-v: Move Hyper-V partition assist page out of Hyper-V emulation context Vitaly Kuznetsov
2023-10-12 19:35   ` Maxim Levitsky
2023-10-16 12:45     ` Vitaly Kuznetsov
2023-10-10 16:02 ` [PATCH RFC 03/11] KVM: VMX: Split off vmx_onhyperv.{ch} from hyperv.{ch} Vitaly Kuznetsov
2023-10-12 19:36   ` Maxim Levitsky
2023-10-10 16:02 ` [PATCH RFC 04/11] KVM: x86: hyper-v: Introduce kvm_hv_synic_auto_eoi_set() Vitaly Kuznetsov
2023-10-12 19:36   ` Maxim Levitsky
2023-10-10 16:02 ` [PATCH RFC 05/11] KVM: x86: hyper-v: Introduce kvm_hv_synic_has_vector() Vitaly Kuznetsov
2023-10-12 19:36   ` Maxim Levitsky
2023-10-10 16:02 ` [PATCH RFC 06/11] KVM: VMX: Split off hyperv_evmcs.{ch} Vitaly Kuznetsov
2023-10-12 19:40   ` Maxim Levitsky
2023-10-16 12:47     ` Vitaly Kuznetsov
2023-10-10 16:02 ` [PATCH RFC 07/11] KVM: x86: Make Hyper-V emulation optional Vitaly Kuznetsov
2023-10-12 19:49   ` Maxim Levitsky
2023-10-16 12:53     ` Vitaly Kuznetsov
2023-10-16 15:27       ` Sean Christopherson
2023-10-16 15:43         ` Vitaly Kuznetsov
2023-10-16 16:45           ` Sean Christopherson
2023-10-10 16:02 ` [PATCH RFC 08/11] KVM: nVMX: hyper-v: Introduce nested_vmx_evmptr() accessor Vitaly Kuznetsov
2023-10-12 19:50   ` Maxim Levitsky
2023-10-16 13:49     ` Vitaly Kuznetsov
2023-10-16 16:55       ` Sean Christopherson
2023-10-10 16:02 ` [PATCH RFC 09/11] KVM: nVMX: hyper-v: Introduce nested_vmx_evmcs() accessor Vitaly Kuznetsov
2023-10-12 19:51   ` Maxim Levitsky
2023-10-10 16:02 ` [PATCH RFC 10/11] KVM: nVMX: hyper-v: Hide more stuff under CONFIG_KVM_HYPERV Vitaly Kuznetsov
2023-10-12 19:51   ` Maxim Levitsky
2023-10-10 16:03 ` [PATCH RFC 11/11] KVM: nSVM: hyper-v: Hide more stuff under CONFIG_KVM_HYPERV/CONFIG_HYPERV Vitaly Kuznetsov
2023-10-12 19:51   ` Maxim Levitsky
  -- strict thread matches above, loose matches on Subject: below --
2023-10-13 21:26 [PATCH RFC 06/11] KVM: VMX: Split off hyperv_evmcs.{ch} kernel test robot
2023-10-14 14:50 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.