Kernel KVM virtualization development
 help / color / mirror / Atom feed
From: Nathan Chancellor <nathan@kernel.org>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	kvm@vger.kernel.org, Robert Hu <robert.hu@intel.com>,
	Farrah Chen <farrah.chen@intel.com>,
	Danmei Wei <danmei.wei@intel.com>,
	kernel test robot <lkp@intel.com>
Subject: Re: [kvm:queue 210/210] arch/x86/kvm/cpuid.c:739:2: warning: unannotated fall-through between switch labels
Date: Thu, 10 Mar 2022 10:46:41 -0700	[thread overview]
Message-ID: <Yio5gfTHY5qvcEyU@dev-arch.thelio-3990X> (raw)
In-Reply-To: <202203101604.2rV6WBqW-lkp@intel.com>

Hi Paolo,

On Thu, Mar 10, 2022 at 05:05:41PM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/virt/kvm/kvm.git queue
> head:   ce41d078aaa9cf15cbbb4a42878cc6160d76525e
> commit: ce41d078aaa9cf15cbbb4a42878cc6160d76525e [210/210] KVM: x86: synthesize CPUID leaf 0x80000021h if useful
> config: x86_64-randconfig-a014 (https://download.01.org/0day-ci/archive/20220310/202203101604.2rV6WBqW-lkp@intel.com/config)
> compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 276ca87382b8f16a65bddac700202924228982f6)
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://git.kernel.org/pub/scm/virt/kvm/kvm.git/commit/?id=ce41d078aaa9cf15cbbb4a42878cc6160d76525e
>         git remote add kvm https://git.kernel.org/pub/scm/virt/kvm/kvm.git
>         git fetch --no-tags kvm queue
>         git checkout ce41d078aaa9cf15cbbb4a42878cc6160d76525e
>         # save the config file to linux build tree
>         mkdir build_dir
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash arch/x86/kvm/
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All warnings (new ones prefixed by >>):
> 
> >> arch/x86/kvm/cpuid.c:739:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
>            default:
>            ^
>    arch/x86/kvm/cpuid.c:739:2: note: insert 'break;' to avoid fall-through
>            default:
>            ^
>            break; 
>    1 warning generated.
> 
> 
> vim +739 arch/x86/kvm/cpuid.c
> 
> e53c95e8d41ef9 Sean Christopherson 2020-03-02  707  
> e53c95e8d41ef9 Sean Christopherson 2020-03-02  708  static struct kvm_cpuid_entry2 *do_host_cpuid(struct kvm_cpuid_array *array,
> aa10a7dc8858f6 Sean Christopherson 2020-03-02  709  					      u32 function, u32 index)
> 00b27a3efb1160 Avi Kivity          2011-11-23  710  {
> e53c95e8d41ef9 Sean Christopherson 2020-03-02  711  	struct kvm_cpuid_entry2 *entry;
> e53c95e8d41ef9 Sean Christopherson 2020-03-02  712  
> e53c95e8d41ef9 Sean Christopherson 2020-03-02  713  	if (array->nent >= array->maxnent)
> aa10a7dc8858f6 Sean Christopherson 2020-03-02  714  		return NULL;
> e53c95e8d41ef9 Sean Christopherson 2020-03-02  715  
> e53c95e8d41ef9 Sean Christopherson 2020-03-02  716  	entry = &array->entries[array->nent++];
> aa10a7dc8858f6 Sean Christopherson 2020-03-02  717  
> 2746a6b72ab9a9 Paolo Bonzini       2021-10-28  718  	memset(entry, 0, sizeof(*entry));
> 00b27a3efb1160 Avi Kivity          2011-11-23  719  	entry->function = function;
> 00b27a3efb1160 Avi Kivity          2011-11-23  720  	entry->index = index;
> 2746a6b72ab9a9 Paolo Bonzini       2021-10-28  721  	switch (function & 0xC0000000) {
> 2746a6b72ab9a9 Paolo Bonzini       2021-10-28  722  	case 0x40000000:
> 2746a6b72ab9a9 Paolo Bonzini       2021-10-28  723  		/* Hypervisor leaves are always synthesized by __do_cpuid_func.  */
> 2746a6b72ab9a9 Paolo Bonzini       2021-10-28  724  		return entry;
> 2746a6b72ab9a9 Paolo Bonzini       2021-10-28  725  
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  726  	case 0x80000000:
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  727  		/*
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  728  		 * 0x80000021 is sometimes synthesized by __do_cpuid_func, which
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  729  		 * would result in out-of-bounds calls to do_host_cpuid.
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  730  		 */
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  731  		{
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  732  			static int max_cpuid_80000000;
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  733  			if (!READ_ONCE(max_cpuid_80000000))
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  734  				WRITE_ONCE(max_cpuid_80000000, cpuid_eax(0x80000000));
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  735  			if (function > READ_ONCE(max_cpuid_80000000))
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  736  				return entry;
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  737  		}
> ce41d078aaa9cf Paolo Bonzini       2021-10-21  738  

Please add a "break;" here to fix this clang warning. GCC does not warn
when falling through to a case statement that just contains "break" or
"return" but clang's verion of the warning does, which matches the
kernel's guidance in Documentation/process/deprecated.rst for having all
case statements end in either "break", "continue", "fallthrough",
"goto", or "return".

> 2746a6b72ab9a9 Paolo Bonzini       2021-10-28 @739  	default:
> 2746a6b72ab9a9 Paolo Bonzini       2021-10-28  740  		break;
> 2746a6b72ab9a9 Paolo Bonzini       2021-10-28  741  	}
> ab8bcf64971180 Paolo Bonzini       2019-06-24  742  
> 00b27a3efb1160 Avi Kivity          2011-11-23  743  	cpuid_count(entry->function, entry->index,
> 00b27a3efb1160 Avi Kivity          2011-11-23  744  		    &entry->eax, &entry->ebx, &entry->ecx, &entry->edx);
> d9aadaf689928b Paolo Bonzini       2019-07-04  745  
> d9aadaf689928b Paolo Bonzini       2019-07-04  746  	switch (function) {
> d9aadaf689928b Paolo Bonzini       2019-07-04  747  	case 4:
> d9aadaf689928b Paolo Bonzini       2019-07-04  748  	case 7:
> d9aadaf689928b Paolo Bonzini       2019-07-04  749  	case 0xb:
> d9aadaf689928b Paolo Bonzini       2019-07-04  750  	case 0xd:
> a06dcd625d6181 Jim Mattson         2019-09-12  751  	case 0xf:
> a06dcd625d6181 Jim Mattson         2019-09-12  752  	case 0x10:
> a06dcd625d6181 Jim Mattson         2019-09-12  753  	case 0x12:
> d9aadaf689928b Paolo Bonzini       2019-07-04  754  	case 0x14:
> a06dcd625d6181 Jim Mattson         2019-09-12  755  	case 0x17:
> a06dcd625d6181 Jim Mattson         2019-09-12  756  	case 0x18:
> 690a757d610e50 Jing Liu            2022-01-05  757  	case 0x1d:
> 690a757d610e50 Jing Liu            2022-01-05  758  	case 0x1e:
> a06dcd625d6181 Jim Mattson         2019-09-12  759  	case 0x1f:
> d9aadaf689928b Paolo Bonzini       2019-07-04  760  	case 0x8000001d:
> d9aadaf689928b Paolo Bonzini       2019-07-04  761  		entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
> d9aadaf689928b Paolo Bonzini       2019-07-04  762  		break;
> d9aadaf689928b Paolo Bonzini       2019-07-04  763  	}
> aa10a7dc8858f6 Sean Christopherson 2020-03-02  764  
> aa10a7dc8858f6 Sean Christopherson 2020-03-02  765  	return entry;
> 00b27a3efb1160 Avi Kivity          2011-11-23  766  }
> 00b27a3efb1160 Avi Kivity          2011-11-23  767  
> 
> :::::: The code at line 739 was first introduced by commit
> :::::: 2746a6b72ab9a92bd188c4ac3e4122ee1c18f754 KVM: x86: skip host CPUID call for hypervisor leaves
> 
> :::::: TO: Paolo Bonzini <pbonzini@redhat.com>
> :::::: CC: Paolo Bonzini <pbonzini@redhat.com>
> 

Cheers,
Nathan

      reply	other threads:[~2022-03-10 17:46 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-10  9:05 [kvm:queue 210/210] arch/x86/kvm/cpuid.c:739:2: warning: unannotated fall-through between switch labels kernel test robot
2022-03-10 17:46 ` Nathan Chancellor [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Yio5gfTHY5qvcEyU@dev-arch.thelio-3990X \
    --to=nathan@kernel.org \
    --cc=danmei.wei@intel.com \
    --cc=farrah.chen@intel.com \
    --cc=kbuild-all@lists.01.org \
    --cc=kvm@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=pbonzini@redhat.com \
    --cc=robert.hu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox