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
prev parent 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