linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* arch/powerpc/kvm/powerpc.c:1141:7: warning: Redundant assignment of 'gpr' to itself. [selfAssignment]
@ 2021-06-25 14:07 kernel test robot
  2021-06-26 10:28 ` Michael Ellerman
  0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2021-06-25 14:07 UTC (permalink / raw)
  To: Cédric Le Goater; +Cc: kbuild-all, linux-kernel, Michael Ellerman

Hi Cédric,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   44db63d1ad8d71c6932cbe007eb41f31c434d140
commit: 9236f57a9e51c72ce426ccd2e53e123de7196a0f KVM: PPC: Make the VMX instruction emulation routines static
date:   5 months ago
compiler: powerpc64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


cppcheck warnings: (new ones prefixed by >>)
>> arch/powerpc/kvm/powerpc.c:1141:7: warning: Redundant assignment of 'gpr' to itself. [selfAssignment]
     gpr = sp_to_dp(gpr);
         ^
>> arch/powerpc/kvm/powerpc.c:1341:7: warning: Redundant assignment of 'val' to itself. [selfAssignment]
     val = dp_to_sp(val);
         ^

vim +/gpr +1141 arch/powerpc/kvm/powerpc.c

6f63e81bda98cb Bin Lu               2017-02-21  1112  
8c99d34578628b Tianjia Zhang        2020-04-27  1113  static void kvmppc_complete_mmio_load(struct kvm_vcpu *vcpu)
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1114  {
8c99d34578628b Tianjia Zhang        2020-04-27  1115  	struct kvm_run *run = vcpu->run;
3f649ab728cda8 Kees Cook            2020-06-03  1116  	u64 gpr;
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1117  
8e5b26b55a8b6a Alexander Graf       2010-01-08  1118  	if (run->mmio.len > sizeof(gpr)) {
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1119  		printk(KERN_ERR "bad MMIO length: %d\n", run->mmio.len);
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1120  		return;
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1121  	}
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1122  
d078eed35de386 David Gibson         2015-02-03  1123  	if (!vcpu->arch.mmio_host_swabbed) {
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1124  		switch (run->mmio.len) {
b104d06632d089 Alexander Graf       2010-02-19  1125  		case 8: gpr = *(u64 *)run->mmio.data; break;
8e5b26b55a8b6a Alexander Graf       2010-01-08  1126  		case 4: gpr = *(u32 *)run->mmio.data; break;
8e5b26b55a8b6a Alexander Graf       2010-01-08  1127  		case 2: gpr = *(u16 *)run->mmio.data; break;
8e5b26b55a8b6a Alexander Graf       2010-01-08  1128  		case 1: gpr = *(u8 *)run->mmio.data; break;
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1129  		}
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1130  	} else {
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1131  		switch (run->mmio.len) {
d078eed35de386 David Gibson         2015-02-03  1132  		case 8: gpr = swab64(*(u64 *)run->mmio.data); break;
d078eed35de386 David Gibson         2015-02-03  1133  		case 4: gpr = swab32(*(u32 *)run->mmio.data); break;
d078eed35de386 David Gibson         2015-02-03  1134  		case 2: gpr = swab16(*(u16 *)run->mmio.data); break;
8e5b26b55a8b6a Alexander Graf       2010-01-08  1135  		case 1: gpr = *(u8 *)run->mmio.data; break;
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1136  		}
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1137  	}
8e5b26b55a8b6a Alexander Graf       2010-01-08  1138  
6f63e81bda98cb Bin Lu               2017-02-21  1139  	/* conversion between single and double precision */
6f63e81bda98cb Bin Lu               2017-02-21  1140  	if ((vcpu->arch.mmio_sp64_extend) && (run->mmio.len == 4))
6f63e81bda98cb Bin Lu               2017-02-21 @1141  		gpr = sp_to_dp(gpr);
6f63e81bda98cb Bin Lu               2017-02-21  1142  
3587d5348ced08 Alexander Graf       2010-02-19  1143  	if (vcpu->arch.mmio_sign_extend) {
3587d5348ced08 Alexander Graf       2010-02-19  1144  		switch (run->mmio.len) {
3587d5348ced08 Alexander Graf       2010-02-19  1145  #ifdef CONFIG_PPC64
3587d5348ced08 Alexander Graf       2010-02-19  1146  		case 4:
3587d5348ced08 Alexander Graf       2010-02-19  1147  			gpr = (s64)(s32)gpr;
3587d5348ced08 Alexander Graf       2010-02-19  1148  			break;
3587d5348ced08 Alexander Graf       2010-02-19  1149  #endif
3587d5348ced08 Alexander Graf       2010-02-19  1150  		case 2:
3587d5348ced08 Alexander Graf       2010-02-19  1151  			gpr = (s64)(s16)gpr;
3587d5348ced08 Alexander Graf       2010-02-19  1152  			break;
3587d5348ced08 Alexander Graf       2010-02-19  1153  		case 1:
3587d5348ced08 Alexander Graf       2010-02-19  1154  			gpr = (s64)(s8)gpr;
3587d5348ced08 Alexander Graf       2010-02-19  1155  			break;
3587d5348ced08 Alexander Graf       2010-02-19  1156  		}
3587d5348ced08 Alexander Graf       2010-02-19  1157  	}
3587d5348ced08 Alexander Graf       2010-02-19  1158  
b3c5d3c2a49602 Alexander Graf       2012-01-07  1159  	switch (vcpu->arch.io_gpr & KVM_MMIO_REG_EXT_MASK) {
b3c5d3c2a49602 Alexander Graf       2012-01-07  1160  	case KVM_MMIO_REG_GPR:
b104d06632d089 Alexander Graf       2010-02-19  1161  		kvmppc_set_gpr(vcpu, vcpu->arch.io_gpr, gpr);
b104d06632d089 Alexander Graf       2010-02-19  1162  		break;
b3c5d3c2a49602 Alexander Graf       2012-01-07  1163  	case KVM_MMIO_REG_FPR:
2e6baa46b4ae78 Simon Guo            2018-05-21  1164  		if (vcpu->kvm->arch.kvm_ops->giveup_ext)
2e6baa46b4ae78 Simon Guo            2018-05-21  1165  			vcpu->kvm->arch.kvm_ops->giveup_ext(vcpu, MSR_FP);
2e6baa46b4ae78 Simon Guo            2018-05-21  1166  
efff19122315f1 Paul Mackerras       2013-10-15  1167  		VCPU_FPR(vcpu, vcpu->arch.io_gpr & KVM_MMIO_REG_MASK) = gpr;
b104d06632d089 Alexander Graf       2010-02-19  1168  		break;
287d5611fab5a4 Alexander Graf       2010-04-01  1169  #ifdef CONFIG_PPC_BOOK3S
b3c5d3c2a49602 Alexander Graf       2012-01-07  1170  	case KVM_MMIO_REG_QPR:
b3c5d3c2a49602 Alexander Graf       2012-01-07  1171  		vcpu->arch.qpr[vcpu->arch.io_gpr & KVM_MMIO_REG_MASK] = gpr;
b104d06632d089 Alexander Graf       2010-02-19  1172  		break;
b3c5d3c2a49602 Alexander Graf       2012-01-07  1173  	case KVM_MMIO_REG_FQPR:
efff19122315f1 Paul Mackerras       2013-10-15  1174  		VCPU_FPR(vcpu, vcpu->arch.io_gpr & KVM_MMIO_REG_MASK) = gpr;
b3c5d3c2a49602 Alexander Graf       2012-01-07  1175  		vcpu->arch.qpr[vcpu->arch.io_gpr & KVM_MMIO_REG_MASK] = gpr;
b104d06632d089 Alexander Graf       2010-02-19  1176  		break;
6f63e81bda98cb Bin Lu               2017-02-21  1177  #endif
6f63e81bda98cb Bin Lu               2017-02-21  1178  #ifdef CONFIG_VSX
6f63e81bda98cb Bin Lu               2017-02-21  1179  	case KVM_MMIO_REG_VSX:
2e6baa46b4ae78 Simon Guo            2018-05-21  1180  		if (vcpu->kvm->arch.kvm_ops->giveup_ext)
2e6baa46b4ae78 Simon Guo            2018-05-21  1181  			vcpu->kvm->arch.kvm_ops->giveup_ext(vcpu, MSR_VSX);
2e6baa46b4ae78 Simon Guo            2018-05-21  1182  
da2a32b876e979 Simon Guo            2018-05-21  1183  		if (vcpu->arch.mmio_copy_type == KVMPPC_VSX_COPY_DWORD)
6f63e81bda98cb Bin Lu               2017-02-21  1184  			kvmppc_set_vsr_dword(vcpu, gpr);
da2a32b876e979 Simon Guo            2018-05-21  1185  		else if (vcpu->arch.mmio_copy_type == KVMPPC_VSX_COPY_WORD)
6f63e81bda98cb Bin Lu               2017-02-21  1186  			kvmppc_set_vsr_word(vcpu, gpr);
da2a32b876e979 Simon Guo            2018-05-21  1187  		else if (vcpu->arch.mmio_copy_type ==
6f63e81bda98cb Bin Lu               2017-02-21  1188  				KVMPPC_VSX_COPY_DWORD_LOAD_DUMP)
6f63e81bda98cb Bin Lu               2017-02-21  1189  			kvmppc_set_vsr_dword_dump(vcpu, gpr);
da2a32b876e979 Simon Guo            2018-05-21  1190  		else if (vcpu->arch.mmio_copy_type ==
94dd7fa1c0b75e Simon Guo            2018-05-21  1191  				KVMPPC_VSX_COPY_WORD_LOAD_DUMP)
94dd7fa1c0b75e Simon Guo            2018-05-21  1192  			kvmppc_set_vsr_word_dump(vcpu, gpr);
6f63e81bda98cb Bin Lu               2017-02-21  1193  		break;
09f984961c137c Jose Ricardo Ziviani 2018-02-03  1194  #endif
09f984961c137c Jose Ricardo Ziviani 2018-02-03  1195  #ifdef CONFIG_ALTIVEC
09f984961c137c Jose Ricardo Ziviani 2018-02-03  1196  	case KVM_MMIO_REG_VMX:
2e6baa46b4ae78 Simon Guo            2018-05-21  1197  		if (vcpu->kvm->arch.kvm_ops->giveup_ext)
2e6baa46b4ae78 Simon Guo            2018-05-21  1198  			vcpu->kvm->arch.kvm_ops->giveup_ext(vcpu, MSR_VEC);
2e6baa46b4ae78 Simon Guo            2018-05-21  1199  
acc9eb9305fecd Simon Guo            2018-05-21  1200  		if (vcpu->arch.mmio_copy_type == KVMPPC_VMX_COPY_DWORD)
09f984961c137c Jose Ricardo Ziviani 2018-02-03  1201  			kvmppc_set_vmx_dword(vcpu, gpr);
acc9eb9305fecd Simon Guo            2018-05-21  1202  		else if (vcpu->arch.mmio_copy_type == KVMPPC_VMX_COPY_WORD)
acc9eb9305fecd Simon Guo            2018-05-21  1203  			kvmppc_set_vmx_word(vcpu, gpr);
acc9eb9305fecd Simon Guo            2018-05-21  1204  		else if (vcpu->arch.mmio_copy_type ==
acc9eb9305fecd Simon Guo            2018-05-21  1205  				KVMPPC_VMX_COPY_HWORD)
acc9eb9305fecd Simon Guo            2018-05-21  1206  			kvmppc_set_vmx_hword(vcpu, gpr);
acc9eb9305fecd Simon Guo            2018-05-21  1207  		else if (vcpu->arch.mmio_copy_type ==
acc9eb9305fecd Simon Guo            2018-05-21  1208  				KVMPPC_VMX_COPY_BYTE)
acc9eb9305fecd Simon Guo            2018-05-21  1209  			kvmppc_set_vmx_byte(vcpu, gpr);
09f984961c137c Jose Ricardo Ziviani 2018-02-03  1210  		break;
873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14  1211  #endif
873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14  1212  #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14  1213  	case KVM_MMIO_REG_NESTED_GPR:
873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14  1214  		if (kvmppc_need_byteswap(vcpu))
873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14  1215  			gpr = swab64(gpr);
873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14  1216  		kvm_vcpu_write_guest(vcpu, vcpu->arch.nested_io_gpr, &gpr,
873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14  1217  				     sizeof(gpr));
873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14  1218  		break;
287d5611fab5a4 Alexander Graf       2010-04-01  1219  #endif
b104d06632d089 Alexander Graf       2010-02-19  1220  	default:
b104d06632d089 Alexander Graf       2010-02-19  1221  		BUG();
b104d06632d089 Alexander Graf       2010-02-19  1222  	}
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1223  }
bbf45ba57eaec5 Hollis Blanchard     2008-04-16  1224  

:::::: The code at line 1141 was first introduced by commit
:::::: 6f63e81bda98cbb549b01faf978884692ded438d KVM: PPC: Book3S: Add MMIO emulation for FP and VSX instructions

:::::: TO: Bin Lu <lblulb@linux.vnet.ibm.com>
:::::: CC: Paul Mackerras <paulus@ozlabs.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: arch/powerpc/kvm/powerpc.c:1141:7: warning: Redundant assignment of 'gpr' to itself. [selfAssignment]
  2021-06-25 14:07 arch/powerpc/kvm/powerpc.c:1141:7: warning: Redundant assignment of 'gpr' to itself. [selfAssignment] kernel test robot
@ 2021-06-26 10:28 ` Michael Ellerman
  0 siblings, 0 replies; 2+ messages in thread
From: Michael Ellerman @ 2021-06-26 10:28 UTC (permalink / raw)
  To: kernel test robot, Cédric Le Goater; +Cc: kbuild-all, linux-kernel

kernel test robot <lkp@intel.com> writes:
> Hi Cédric,
>
> First bad commit (maybe != root cause):
>
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   44db63d1ad8d71c6932cbe007eb41f31c434d140
> commit: 9236f57a9e51c72ce426ccd2e53e123de7196a0f KVM: PPC: Make the VMX instruction emulation routines static
> date:   5 months ago
> compiler: powerpc64-linux-gcc (GCC) 9.3.0
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
>
> cppcheck warnings: (new ones prefixed by >>)
>>> arch/powerpc/kvm/powerpc.c:1141:7: warning: Redundant assignment of 'gpr' to itself. [selfAssignment]
>      gpr = sp_to_dp(gpr);
>          ^
>>> arch/powerpc/kvm/powerpc.c:1341:7: warning: Redundant assignment of 'val' to itself. [selfAssignment]
>      val = dp_to_sp(val);

Because of:

#ifdef CONFIG_PPC_FPU
static inline u64 sp_to_dp(u32 fprs)
{
	u64 fprd;

	preempt_disable();
	enable_kernel_fp();
	asm ("lfs%U1%X1 0,%1; stfd%U0%X0 0,%0" : "=m"UPD_CONSTR (fprd) : "m"UPD_CONSTR (fprs)
	     : "fr0");
	preempt_enable();
	return fprd;
}

static inline u32 dp_to_sp(u64 fprd)
{
	u32 fprs;

	preempt_disable();
	enable_kernel_fp();
	asm ("lfd%U1%X1 0,%1; stfs%U0%X0 0,%0" : "=m"UPD_CONSTR (fprs) : "m"UPD_CONSTR (fprd)
	     : "fr0");
	preempt_enable();
	return fprs;
}

#else
#define sp_to_dp(x)	(x)
#define dp_to_sp(x)	(x)
#endif /* CONFIG_PPC_FPU */


And you must be building the PPC_FPU=n case.

Surely the compiler is smart enough to generate no code for this. So
what's the harm? ie. why is this something we should be fixing?

cheers

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-06-26 10:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-25 14:07 arch/powerpc/kvm/powerpc.c:1141:7: warning: Redundant assignment of 'gpr' to itself. [selfAssignment] kernel test robot
2021-06-26 10:28 ` Michael Ellerman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).