x86/pmc_atom: silence shift wrapping warnings in pmc_sleep_tmr_show()
Subsystems (2)
PATCH 1/1 x86/pmc_atom: silence shift wrapping warnings in pmc_sleep_tmr_show()
I don't know if we really need 64 bits here but these variables are declared as u64 and it can't hurt to cast this so we prevent any shift wrapping.
arch/x86/kernel/pmc_atom.c +5 -5
@@ -174,11 +174,11 @@ static int pmc_sleep_tmr_show(struct seq_file *s, void *unused)struct pmc_dev *pmc = s->private;u64 s0ir_tmr, s0i1_tmr, s0i2_tmr, s0i3_tmr, s0_tmr; - s0ir_tmr =pmc_reg_read (pmc,PMC_S0IR_TMR ) <<PMC_TMR_SHIFT ; - s0i1_tmr =pmc_reg_read (pmc,PMC_S0I1_TMR ) <<PMC_TMR_SHIFT ; - s0i2_tmr =pmc_reg_read (pmc,PMC_S0I2_TMR ) <<PMC_TMR_SHIFT ; - s0i3_tmr =pmc_reg_read (pmc,PMC_S0I3_TMR ) <<PMC_TMR_SHIFT ; - s0_tmr =pmc_reg_read (pmc,PMC_S0_TMR ) <<PMC_TMR_SHIFT ; + s0ir_tmr = (u64 )pmc_reg_read (pmc,PMC_S0IR_TMR ) <<PMC_TMR_SHIFT ; + s0i1_tmr = (u64 )pmc_reg_read (pmc,PMC_S0I1_TMR ) <<PMC_TMR_SHIFT ; + s0i2_tmr = (u64 )pmc_reg_read (pmc,PMC_S0I2_TMR ) <<PMC_TMR_SHIFT ; + s0i3_tmr = (u64 )pmc_reg_read (pmc,PMC_S0I3_TMR ) <<PMC_TMR_SHIFT ; + s0_tmr = (u64 )pmc_reg_read (pmc,PMC_S0_TMR ) <<PMC_TMR_SHIFT ;seq_printf (s,"S0IR Residency:\t%lldus\n" , s0ir_tmr);seq_printf (s,"S0I1 Residency:\t%lldus\n" , s0i1_tmr);
Quoted 7 lines · Srinidhi
Quoted 3 lines · Dan Carpenter
I don't know if we really need 64 bits here but these variables are declared as u64 and it can't hurt to cast this so we prevent any shift wrapping.
Hmm..not sure the usage of u64 for these registers. AFAIK these registers are 32-bit wide..
I didn't declare the registers, I declared the variables in microsecond.
Quoted 2 lines
Aubrey, any reason declaring them as u64?
These registers are the time spent in units of 32us. So yes, we need 64bits here for the conversion.
Quoted 5 lines
Srinidhi
Quoted 2 lines
Signed-off-by Dan Carpenter <[email protected]>
The patch looks good to me.
Quoted 23 lines
Quoted 22 lines
arch/x86/kernel/pmc_atom.c +5
-5@@ -174,11 +174,11 @@ static int pmc_sleep_tmr_show(struct seq_file *s, void *unused)struct pmc_dev *pmc = s->private;u64 s0ir_tmr, s0i1_tmr, s0i2_tmr, s0i3_tmr, s0_tmr; - s0ir_tmr =pmc_reg_read (pmc,PMC_S0IR_TMR ) <<PMC_TMR_SHIFT ; - s0i1_tmr =pmc_reg_read (pmc,PMC_S0I1_TMR ) <<PMC_TMR_SHIFT ; - s0i2_tmr =pmc_reg_read (pmc,PMC_S0I2_TMR ) <<PMC_TMR_SHIFT ; - s0i3_tmr =pmc_reg_read (pmc,PMC_S0I3_TMR ) <<PMC_TMR_SHIFT ; - s0_tmr =pmc_reg_read (pmc,PMC_S0_TMR ) <<PMC_TMR_SHIFT ; + s0ir_tmr = (u64 )pmc_reg_read (pmc,PMC_S0IR_TMR ) <<PMC_TMR_SHIFT ; + s0i1_tmr = (u64 )pmc_reg_read (pmc,PMC_S0I1_TMR ) <<PMC_TMR_SHIFT ; + s0i2_tmr = (u64 )pmc_reg_read (pmc,PMC_S0I2_TMR ) <<PMC_TMR_SHIFT ; + s0i3_tmr = (u64 )pmc_reg_read (pmc,PMC_S0I3_TMR ) <<PMC_TMR_SHIFT ; + s0_tmr = (u64 )pmc_reg_read (pmc,PMC_S0_TMR ) <<PMC_TMR_SHIFT ;seq_printf (s,"S0IR Residency:\t%lldus\n" , s0ir_tmr);seq_printf (s,"S0I1 Residency:\t%lldus\n" , s0i1_tmr);
tip-bot for Dan Carpenter
merge bot[tip:x86/platform] x86/pmc_atom: Silence shift wrapping warnings in pmc_sleep_tmr_show()
In reply to Dan Carpenterx86/pmc_atom: Silence shift wrapping warnings in pmc_sleep_tmr_show()
Commit-ID: 4c51cb005b29e6329d7e598bf835689b230817c9 Gitweb: http://git.kernel.org/tip/4c51cb005b29e6329d7e598bf835689b230817c9 Author: Dan Carpenter <[email protected]> AuthorDate: Fri, 1 Aug 2014 11:27:15 +0300 Committer: H. Peter Anvin <[email protected]> CommitDate: Sat, 2 Aug 2014 16:52:17 -0700
x86/pmc_atom: Silence shift wrapping warnings in pmc_sleep_tmr_show()
I don't know if we really need 64 bits here but these variables are declared as u64 and it can't hurt to cast this so we prevent any shift wrapping.
--- arch/x86/kernel/pmc_atom.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
arch/x86/kernel/pmc_atom.c +5 -5
@@ -174,11 +174,11 @@ static int pmc_sleep_tmr_show(struct seq_file *s, void *unused)struct pmc_dev *pmc = s->private;u64 s0ir_tmr, s0i1_tmr, s0i2_tmr, s0i3_tmr, s0_tmr; - s0ir_tmr =pmc_reg_read (pmc,PMC_S0IR_TMR ) <<PMC_TMR_SHIFT ; - s0i1_tmr =pmc_reg_read (pmc,PMC_S0I1_TMR ) <<PMC_TMR_SHIFT ; - s0i2_tmr =pmc_reg_read (pmc,PMC_S0I2_TMR ) <<PMC_TMR_SHIFT ; - s0i3_tmr =pmc_reg_read (pmc,PMC_S0I3_TMR ) <<PMC_TMR_SHIFT ; - s0_tmr =pmc_reg_read (pmc,PMC_S0_TMR ) <<PMC_TMR_SHIFT ; + s0ir_tmr = (u64 )pmc_reg_read (pmc,PMC_S0IR_TMR ) <<PMC_TMR_SHIFT ; + s0i1_tmr = (u64 )pmc_reg_read (pmc,PMC_S0I1_TMR ) <<PMC_TMR_SHIFT ; + s0i2_tmr = (u64 )pmc_reg_read (pmc,PMC_S0I2_TMR ) <<PMC_TMR_SHIFT ; + s0i3_tmr = (u64 )pmc_reg_read (pmc,PMC_S0I3_TMR ) <<PMC_TMR_SHIFT ; + s0_tmr = (u64 )pmc_reg_read (pmc,PMC_S0_TMR ) <<PMC_TMR_SHIFT ;seq_printf (s,"S0IR Residency:\t%lldus\n" , s0ir_tmr);seq_printf (s,"S0I1 Residency:\t%lldus\n" , s0i1_tmr);