From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0CB6DC18E5A for ; Wed, 11 Mar 2020 01:10:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C6B8E222C4 for ; Wed, 11 Mar 2020 01:10:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727923AbgCKBKx (ORCPT ); Tue, 10 Mar 2020 21:10:53 -0400 Received: from mga02.intel.com ([134.134.136.20]:46208 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727659AbgCKBKw (ORCPT ); Tue, 10 Mar 2020 21:10:52 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Mar 2020 18:10:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,539,1574150400"; d="scan'208";a="289208543" Received: from lkp-server01.sh.intel.com (HELO lkp-server01) ([10.239.97.150]) by FMSMGA003.fm.intel.com with ESMTP; 10 Mar 2020 18:10:48 -0700 Received: from kbuild by lkp-server01 with local (Exim 4.89) (envelope-from ) id 1jBptX-0005Lw-KF; Wed, 11 Mar 2020 09:10:47 +0800 Date: Wed, 11 Mar 2020 09:10:04 +0800 From: kbuild test robot To: Peter Xu Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Yan Zhao , Jason Wang , Alex Williamson , peterx@redhat.com, Vitaly Kuznetsov , "Dr . David Alan Gilbert" , Christophe de Dinechin , "Michael S . Tsirkin" , Kevin Tian , Paolo Bonzini , Sean Christopherson Subject: Re: [PATCH v6 03/14] KVM: X86: Don't track dirty for KVM_SET_[TSS_ADDR|IDENTITY_MAP_ADDR] Message-ID: <202003110908.UE6SBwLU%lkp@intel.com> References: <20200309214424.330363-4-peterx@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200309214424.330363-4-peterx@redhat.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Hi Peter, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on tip/auto-latest] [also build test WARNING on vhost/linux-next linus/master v5.6-rc5 next-20200310] [cannot apply to kvm/linux-next linux/master] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Peter-Xu/KVM-Dirty-ring-interface/20200310-070637 base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 12481c76713078054f2d043b3ce946e4814ac29f reproduce: # apt-get install sparse # sparse version: v0.6.1-174-g094d5a94-dirty make ARCH=x86_64 allmodconfig make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' If you fix the issue, kindly add following tag Reported-by: kbuild test robot sparse warnings: (new ones prefixed by >>) arch/x86/kvm/x86.c:2599:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] * @@ got const [noderef] * @@ arch/x86/kvm/x86.c:2599:38: sparse: expected void const [noderef] * arch/x86/kvm/x86.c:2599:38: sparse: got unsigned char [usertype] * arch/x86/kvm/x86.c:7501:15: sparse: sparse: incompatible types in comparison expression (different address spaces): arch/x86/kvm/x86.c:7501:15: sparse: struct kvm_apic_map [noderef] * arch/x86/kvm/x86.c:7501:15: sparse: struct kvm_apic_map * >> arch/x86/kvm/x86.c:9794:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] * @@ got n:1> * @@ arch/x86/kvm/x86.c:9794:31: sparse: expected void [noderef] * arch/x86/kvm/x86.c:9794:31: sparse: got void * arch/x86/kvm/x86.c:9799:39: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] * @@ got n:1> * @@ arch/x86/kvm/x86.c:9799:39: sparse: expected void [noderef] * arch/x86/kvm/x86.c:9799:39: sparse: got void * arch/x86/kvm/x86.c:9811:39: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] * @@ got n:1> * @@ arch/x86/kvm/x86.c:9811:39: sparse: expected void [noderef] * arch/x86/kvm/x86.c:9811:39: sparse: got void * arch/x86/kvm/x86.c:9827:39: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] * @@ got n:1> * @@ arch/x86/kvm/x86.c:9827:39: sparse: expected void [noderef] * arch/x86/kvm/x86.c:9827:39: sparse: got void * arch/x86/kvm/x86.c:9863:16: sparse: sparse: incompatible types in comparison expression (different address spaces): arch/x86/kvm/x86.c:9863:16: sparse: struct kvm_apic_map [noderef] * arch/x86/kvm/x86.c:9863:16: sparse: struct kvm_apic_map * arch/x86/kvm/x86.c:9864:15: sparse: sparse: incompatible types in comparison expression (different address spaces): arch/x86/kvm/x86.c:9864:15: sparse: struct kvm_pmu_event_filter [noderef] * arch/x86/kvm/x86.c:9864:15: sparse: struct kvm_pmu_event_filter * include/linux/srcu.h:179:9: sparse: sparse: context imbalance in 'vcpu_enter_guest' - unexpected unlock vim +9794 arch/x86/kvm/x86.c 9758 9759 /** 9760 * __x86_set_memory_region: Setup KVM internal memory slot 9761 * 9762 * @kvm: the kvm pointer to the VM. 9763 * @id: the slot ID to setup. 9764 * @gpa: the GPA to install the slot (unused when @size == 0). 9765 * @size: the size of the slot. Set to zero to uninstall a slot. 9766 * 9767 * This function helps to setup a KVM internal memory slot. Specify 9768 * @size > 0 to install a new slot, while @size == 0 to uninstall a 9769 * slot. The return code can be one of the following: 9770 * 9771 * - An error number if error happened, or, 9772 * - For installation: the HVA of the newly mapped memory slot, or, 9773 * - For uninstallation: zero if we successfully uninstall a slot. 9774 * 9775 * The caller should always use IS_ERR() to check the return value 9776 * before use. NOTE: KVM internal memory slots are guaranteed and 9777 * won't change until the VM is destroyed. This is also true to the 9778 * returned HVA when installing a new memory slot. The HVA can be 9779 * invalidated by either an errornous userspace program or a VM under 9780 * destruction, however as long as we use __copy_{to|from}_user() 9781 * properly upon the HVAs and handle the failure paths always then 9782 * we're safe. 9783 */ 9784 void __user * __x86_set_memory_region(struct kvm *kvm, int id, gpa_t gpa, 9785 u32 size) 9786 { 9787 int i, r; 9788 unsigned long hva; 9789 struct kvm_memslots *slots = kvm_memslots(kvm); 9790 struct kvm_memory_slot *slot, old; 9791 9792 /* Called with kvm->slots_lock held. */ 9793 if (WARN_ON(id >= KVM_MEM_SLOTS_NUM)) > 9794 return ERR_PTR(-EINVAL); 9795 9796 slot = id_to_memslot(slots, id); 9797 if (size) { 9798 if (slot->npages) 9799 return ERR_PTR(-EEXIST); 9800 9801 /* 9802 * MAP_SHARED to prevent internal slot pages from being moved 9803 * by fork()/COW. 9804 */ 9805 hva = vm_mmap(NULL, 0, size, PROT_READ | PROT_WRITE, 9806 MAP_SHARED | MAP_ANONYMOUS, 0); 9807 if (IS_ERR((void *)hva)) 9808 return (void __user *)hva; 9809 } else { 9810 if (!slot->npages) 9811 return ERR_PTR(0); 9812 9813 hva = 0; 9814 } 9815 9816 old = *slot; 9817 for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++) { 9818 struct kvm_userspace_memory_region m; 9819 9820 m.slot = id | (i << 16); 9821 m.flags = 0; 9822 m.guest_phys_addr = gpa; 9823 m.userspace_addr = hva; 9824 m.memory_size = size; 9825 r = __kvm_set_memory_region(kvm, &m); 9826 if (r < 0) 9827 return ERR_PTR(r); 9828 } 9829 9830 if (!size) 9831 vm_munmap(old.userspace_addr, old.npages * PAGE_SIZE); 9832 9833 return (void __user *)hva; 9834 } 9835 EXPORT_SYMBOL_GPL(__x86_set_memory_region); 9836 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org