From: kernel test robot <lkp@intel.com>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
Michael Ellerman <mpe@ellerman.id.au>
Subject: arch/powerpc/kvm/book3s_pr.c:660:22: sparse: sparse: cast to restricted __be32
Date: Fri, 13 May 2022 04:14:21 +0800 [thread overview]
Message-ID: <202205130409.MfQ1ZvwW-lkp@intel.com> (raw)
Hi Cédric,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0ac824f379fba2c2b17b75fd5ada69cd68c66348
commit: cb53a93e33e108bfec00a13cd12696e1c0ccc8b6 KVM: PPC: Book3S PR: Declare kvmppc_handle_exit_pr()
date: 9 months ago
config: powerpc64-randconfig-s031-20220512 (https://download.01.org/0day-ci/archive/20220513/202205130409.MfQ1ZvwW-lkp@intel.com/config)
compiler: powerpc64-linux-gcc (GCC) 11.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cb53a93e33e108bfec00a13cd12696e1c0ccc8b6
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout cb53a93e33e108bfec00a13cd12696e1c0ccc8b6
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=powerpc SHELL=/bin/bash arch/powerpc/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> arch/powerpc/kvm/book3s_pr.c:660:22: sparse: sparse: cast to restricted __be32
>> arch/powerpc/kvm/book3s_pr.c:661:33: sparse: sparse: invalid assignment: &=
>> arch/powerpc/kvm/book3s_pr.c:661:33: sparse: left side has type unsigned int
>> arch/powerpc/kvm/book3s_pr.c:661:33: sparse: right side has type restricted __be32
arch/powerpc/kvm/book3s_pr.c: note: in included file:
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:962:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] srr0 @@ got restricted __be64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:962:1: sparse: expected unsigned long long [usertype] srr0
arch/powerpc/include/asm/kvm_ppc.h:962:1: sparse: got restricted __be64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:962:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] srr0 @@ got restricted __le64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:962:1: sparse: expected unsigned long long [usertype] srr0
arch/powerpc/include/asm/kvm_ppc.h:962:1: sparse: got restricted __le64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:963:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] srr1 @@ got restricted __be64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:963:1: sparse: expected unsigned long long [usertype] srr1
arch/powerpc/include/asm/kvm_ppc.h:963:1: sparse: got restricted __be64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:963:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] srr1 @@ got restricted __le64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:963:1: sparse: expected unsigned long long [usertype] srr1
arch/powerpc/include/asm/kvm_ppc.h:963:1: sparse: got restricted __le64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:970:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] msr @@ got restricted __be64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:970:39: sparse: expected unsigned long long [usertype] msr
arch/powerpc/include/asm/kvm_ppc.h:970:39: sparse: got restricted __be64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:972:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] msr @@ got restricted __le64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:972:39: sparse: expected unsigned long long [usertype] msr
arch/powerpc/include/asm/kvm_ppc.h:972:39: sparse: got restricted __le64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:970:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] msr @@ got restricted __be64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:970:39: sparse: expected unsigned long long [usertype] msr
arch/powerpc/include/asm/kvm_ppc.h:970:39: sparse: got restricted __be64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:972:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] msr @@ got restricted __le64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:972:39: sparse: expected unsigned long long [usertype] msr
arch/powerpc/include/asm/kvm_ppc.h:972:39: sparse: got restricted __le64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] dar @@ got restricted __be64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: expected unsigned long long [usertype] dar
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: got restricted __be64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] dar @@ got restricted __le64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: expected unsigned long long [usertype] dar
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: got restricted __le64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] dar @@ got restricted __be64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: expected unsigned long long [usertype] dar
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: got restricted __be64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] dar @@ got restricted __le64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: expected unsigned long long [usertype] dar
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: got restricted __le64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __be64
arch/powerpc/include/asm/kvm_ppc.h:966:1: sparse: sparse: cast to restricted __le64
arch/powerpc/include/asm/kvm_ppc.h:974:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] dsisr @@ got restricted __be32 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:974:1: sparse: expected unsigned int [usertype] dsisr
arch/powerpc/include/asm/kvm_ppc.h:974:1: sparse: got restricted __be32 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:974:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] dsisr @@ got restricted __le32 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:974:1: sparse: expected unsigned int [usertype] dsisr
arch/powerpc/include/asm/kvm_ppc.h:974:1: sparse: got restricted __le32 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] dar @@ got restricted __be64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: expected unsigned long long [usertype] dar
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: got restricted __be64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] dar @@ got restricted __le64 [usertype] @@
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: expected unsigned long long [usertype] dar
arch/powerpc/include/asm/kvm_ppc.h:964:1: sparse: got restricted __le64 [usertype]
arch/powerpc/include/asm/kvm_ppc.h:984:23: sparse: sparse: cast to restricted __be32
vim +660 arch/powerpc/kvm/book3s_pr.c
f05ed4d56e9cff Paul Mackerras 2011-06-29 630
f05ed4d56e9cff Paul Mackerras 2011-06-29 631 /* Book3s_32 CPUs always have 32 bytes cache line size, which Linux assumes. To
f05ed4d56e9cff Paul Mackerras 2011-06-29 632 * make Book3s_32 Linux work on Book3s_64, we have to make sure we trap dcbz to
f05ed4d56e9cff Paul Mackerras 2011-06-29 633 * emulate 32 bytes dcbz length.
f05ed4d56e9cff Paul Mackerras 2011-06-29 634 *
f05ed4d56e9cff Paul Mackerras 2011-06-29 635 * The Book3s_64 inventors also realized this case and implemented a special bit
f05ed4d56e9cff Paul Mackerras 2011-06-29 636 * in the HID5 register, which is a hypervisor ressource. Thus we can't use it.
f05ed4d56e9cff Paul Mackerras 2011-06-29 637 *
f05ed4d56e9cff Paul Mackerras 2011-06-29 638 * My approach here is to patch the dcbz instruction on executing pages.
f05ed4d56e9cff Paul Mackerras 2011-06-29 639 */
f05ed4d56e9cff Paul Mackerras 2011-06-29 640 static void kvmppc_patch_dcbz(struct kvm_vcpu *vcpu, struct kvmppc_pte *pte)
f05ed4d56e9cff Paul Mackerras 2011-06-29 641 {
f05ed4d56e9cff Paul Mackerras 2011-06-29 642 struct page *hpage;
f05ed4d56e9cff Paul Mackerras 2011-06-29 643 u64 hpage_offset;
f05ed4d56e9cff Paul Mackerras 2011-06-29 644 u32 *page;
f05ed4d56e9cff Paul Mackerras 2011-06-29 645 int i;
f05ed4d56e9cff Paul Mackerras 2011-06-29 646
f05ed4d56e9cff Paul Mackerras 2011-06-29 647 hpage = gfn_to_page(vcpu->kvm, pte->raddr >> PAGE_SHIFT);
32cad84f44d186 Xiao Guangrong 2012-08-03 648 if (is_error_page(hpage))
f05ed4d56e9cff Paul Mackerras 2011-06-29 649 return;
f05ed4d56e9cff Paul Mackerras 2011-06-29 650
f05ed4d56e9cff Paul Mackerras 2011-06-29 651 hpage_offset = pte->raddr & ~PAGE_MASK;
f05ed4d56e9cff Paul Mackerras 2011-06-29 652 hpage_offset &= ~0xFFFULL;
f05ed4d56e9cff Paul Mackerras 2011-06-29 653 hpage_offset /= 4;
f05ed4d56e9cff Paul Mackerras 2011-06-29 654
f05ed4d56e9cff Paul Mackerras 2011-06-29 655 get_page(hpage);
2480b2089210de Cong Wang 2011-11-25 656 page = kmap_atomic(hpage);
f05ed4d56e9cff Paul Mackerras 2011-06-29 657
f05ed4d56e9cff Paul Mackerras 2011-06-29 658 /* patch dcbz into reserved instruction, so we trap */
f05ed4d56e9cff Paul Mackerras 2011-06-29 659 for (i=hpage_offset; i < hpage_offset + (HW_PAGE_SIZE / 4); i++)
cd087eefe637d5 Alexander Graf 2014-04-24 @660 if ((be32_to_cpu(page[i]) & 0xff0007ff) == INS_DCBZ)
cd087eefe637d5 Alexander Graf 2014-04-24 @661 page[i] &= cpu_to_be32(0xfffffff7);
f05ed4d56e9cff Paul Mackerras 2011-06-29 662
2480b2089210de Cong Wang 2011-11-25 663 kunmap_atomic(page);
f05ed4d56e9cff Paul Mackerras 2011-06-29 664 put_page(hpage);
f05ed4d56e9cff Paul Mackerras 2011-06-29 665 }
f05ed4d56e9cff Paul Mackerras 2011-06-29 666
:::::: The code at line 660 was first introduced by commit
:::::: cd087eefe637d545345ea5f888d4ea4fe52e312c KVM: PPC: Book3S PR: Do dcbz32 patching with big endian instructions
:::::: TO: Alexander Graf <agraf@suse.de>
:::::: CC: Alexander Graf <agraf@suse.de>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
next reply other threads:[~2022-05-12 20:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-12 20:14 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-06-14 8:51 arch/powerpc/kvm/book3s_pr.c:660:22: sparse: sparse: cast to restricted __be32 kernel test robot
2021-12-26 7:57 kernel test robot
2021-12-26 7:57 ` kernel test robot
2021-11-25 8:49 kernel test robot
2021-11-25 8:49 ` kernel test robot
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=202205130409.MfQ1ZvwW-lkp@intel.com \
--to=lkp@intel.com \
--cc=clg@kaod.org \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpe@ellerman.id.au \
/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 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.