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: Thu, 25 Nov 2021 16:49:00 +0800 [thread overview]
Message-ID: <202111251641.T8TrqxkW-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 5f53fa508db098c9d372423a6dac31c8a5679cdf
commit: cb53a93e33e108bfec00a13cd12696e1c0ccc8b6 KVM: PPC: Book3S PR: Declare kvmppc_handle_exit_pr()
date: 3 months ago
config: powerpc-randconfig-s031-20211028 (https://download.01.org/0day-ci/archive/20211125/202111251641.T8TrqxkW-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 11.2.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 to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=powerpc SHELL=/bin/bash arch/powerpc/kvm/
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: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: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
arch/powerpc/include/asm/kvm_ppc.h:986:23: sparse: sparse: cast to restricted __le32
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
vim +660 arch/powerpc/kvm/book3s_pr.c
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 630
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 631 /* Book3s_32 CPUs always have 32 bytes cache line size, which Linux assumes. To
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 632 * make Book3s_32 Linux work on Book3s_64, we have to make sure we trap dcbz to
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 633 * emulate 32 bytes dcbz length.
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 634 *
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 635 * The Book3s_64 inventors also realized this case and implemented a special bit
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 636 * in the HID5 register, which is a hypervisor ressource. Thus we can't use it.
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 637 *
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 638 * My approach here is to patch the dcbz instruction on executing pages.
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 639 */
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 640 static void kvmppc_patch_dcbz(struct kvm_vcpu *vcpu, struct kvmppc_pte *pte)
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 641 {
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 642 struct page *hpage;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 643 u64 hpage_offset;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 644 u32 *page;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 645 int i;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 646
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 647 hpage = gfn_to_page(vcpu->kvm, pte->raddr >> PAGE_SHIFT);
32cad84f44d1866 Xiao Guangrong 2012-08-03 648 if (is_error_page(hpage))
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 649 return;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 650
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 651 hpage_offset = pte->raddr & ~PAGE_MASK;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 652 hpage_offset &= ~0xFFFULL;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 653 hpage_offset /= 4;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 654
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 655 get_page(hpage);
2480b2089210de3 Cong Wang 2011-11-25 656 page = kmap_atomic(hpage);
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 657
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 658 /* patch dcbz into reserved instruction, so we trap */
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 659 for (i=hpage_offset; i < hpage_offset + (HW_PAGE_SIZE / 4); i++)
cd087eefe637d54 Alexander Graf 2014-04-24 @660 if ((be32_to_cpu(page[i]) & 0xff0007ff) == INS_DCBZ)
cd087eefe637d54 Alexander Graf 2014-04-24 @661 page[i] &= cpu_to_be32(0xfffffff7);
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 662
2480b2089210de3 Cong Wang 2011-11-25 663 kunmap_atomic(page);
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 664 put_page(hpage);
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 665 }
f05ed4d56e9cff1 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, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: arch/powerpc/kvm/book3s_pr.c:660:22: sparse: sparse: cast to restricted __be32
Date: Thu, 25 Nov 2021 16:49:00 +0800 [thread overview]
Message-ID: <202111251641.T8TrqxkW-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 15711 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 5f53fa508db098c9d372423a6dac31c8a5679cdf
commit: cb53a93e33e108bfec00a13cd12696e1c0ccc8b6 KVM: PPC: Book3S PR: Declare kvmppc_handle_exit_pr()
date: 3 months ago
config: powerpc-randconfig-s031-20211028 (https://download.01.org/0day-ci/archive/20211125/202111251641.T8TrqxkW-lkp(a)intel.com/config)
compiler: powerpc-linux-gcc (GCC) 11.2.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 to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=powerpc SHELL=/bin/bash arch/powerpc/kvm/
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: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: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
arch/powerpc/include/asm/kvm_ppc.h:986:23: sparse: sparse: cast to restricted __le32
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
vim +660 arch/powerpc/kvm/book3s_pr.c
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 630
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 631 /* Book3s_32 CPUs always have 32 bytes cache line size, which Linux assumes. To
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 632 * make Book3s_32 Linux work on Book3s_64, we have to make sure we trap dcbz to
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 633 * emulate 32 bytes dcbz length.
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 634 *
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 635 * The Book3s_64 inventors also realized this case and implemented a special bit
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 636 * in the HID5 register, which is a hypervisor ressource. Thus we can't use it.
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 637 *
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 638 * My approach here is to patch the dcbz instruction on executing pages.
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 639 */
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 640 static void kvmppc_patch_dcbz(struct kvm_vcpu *vcpu, struct kvmppc_pte *pte)
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 641 {
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 642 struct page *hpage;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 643 u64 hpage_offset;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 644 u32 *page;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 645 int i;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 646
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 647 hpage = gfn_to_page(vcpu->kvm, pte->raddr >> PAGE_SHIFT);
32cad84f44d1866 Xiao Guangrong 2012-08-03 648 if (is_error_page(hpage))
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 649 return;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 650
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 651 hpage_offset = pte->raddr & ~PAGE_MASK;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 652 hpage_offset &= ~0xFFFULL;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 653 hpage_offset /= 4;
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 654
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 655 get_page(hpage);
2480b2089210de3 Cong Wang 2011-11-25 656 page = kmap_atomic(hpage);
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 657
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 658 /* patch dcbz into reserved instruction, so we trap */
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 659 for (i=hpage_offset; i < hpage_offset + (HW_PAGE_SIZE / 4); i++)
cd087eefe637d54 Alexander Graf 2014-04-24 @660 if ((be32_to_cpu(page[i]) & 0xff0007ff) == INS_DCBZ)
cd087eefe637d54 Alexander Graf 2014-04-24 @661 page[i] &= cpu_to_be32(0xfffffff7);
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 662
2480b2089210de3 Cong Wang 2011-11-25 663 kunmap_atomic(page);
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 664 put_page(hpage);
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 665 }
f05ed4d56e9cff1 Paul Mackerras 2011-06-29 666
:::::: The code@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, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next reply other threads:[~2021-11-25 8:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-25 8:49 kernel test robot [this message]
2021-11-25 8:49 ` 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
2022-05-12 20:14 kernel test robot
2022-06-14 8:51 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=202111251641.T8TrqxkW-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.