Thread (17 messages) 17 messages, 4 authors, 2017-02-08
STALE3447d

Re: [PATCH V9] thermal: bcm2835: add thermal driver for bcm2835 soc

From: <hidden>
Date: 2017-01-24 09:37:19
Also in: linux-arm-kernel

On 24.01.2017, at 10:26, Eduardo Valentin [off-list ref] wrote:

Hello Martin,

On Fri, Jan 20, 2017 at 09:43:02AM +0100, kernel@martin.sperl.org wrote:
quoted
quoted
On 20.01.2017, at 05:23, Eduardo Valentin [off-list ref] wrote:

On Thu, Jan 19, 2017 at 08:14:02PM -0800, Eduardo Valentin wrote:
quoted
Hello Martin,

On Sat, Jan 07, 2017 at 04:55:45PM +0000, kernel@martin.sperl.org wrote:
quoted
From: Martin Sperl <redacted>

Add basic thermal driver for bcm2835 SOC.

This driver currently relies on the firmware setting up the
tsense HW block and does not set it up itself.

Signed-off-by: Martin Sperl <redacted>
Acked-by: Eric Anholt <redacted>
Acked-by: Stefan Wahren <redacted>
<cut>

Also, I am getting this warn from sparse:
drivers/thermal/bcm2835_thermal.c:110:16: warning: cast truncates bits
from constant value (3ffffffffff00 becomes ffffff00)
drivers/thermal/bcm2835_thermal.c:134:16: warning: cast truncates bits
from constant value (3ffffffffff becomes ffffffff)

Have you seen this?
No, I have not checked sparse.

These values are defined via GENMASK on line 47 and 57 respectively
and should actually compute to the following values:
 for line 110 (line 47 has the define):
   GENMASK(BCM2835_TS_TSENSCTL_THOLD_BITS +     \
           BCM2835_TS_TSENSCTL_THOLD_SHIFT - 1, \
           BCM2835_TS_TSENSCTL_THOLD_SHIFT)
   = GENMASK(10 + 8 - 1, 8) 
   = GENMASK(17, 8)
   = (((~0UL) << (8)) & (~0UL >> (32 - 1 - (10 + 8 - 1))))
   = 0x3ff00
 for line 134 (line 57 has the define):
   GENMASK(BCM2835_TS_TSENSCTL_THOLD_BITS +     \
           BCM2835_TS_TSENSCTL_THOLD_SHIFT - 1, \
           BCM2835_TS_TSENSCTL_THOLD_SHIFT)
   = GENMASK(10 + 0 - 1, 0)
   = GENMASK(9, 0)
   = (((~0UL) << (0)) & (~0UL >> (32 - 1 - (10 + 0 - 1))))
   = 0x003ff

Note that the preprocessor expansions have been verified by
looking at the preprocessed driver source
(drivers/thermal/bcm2835_thermal.i)
OK then.
quoted
I wonder why sparse is computing these GENMASK values as:
0x3ffffffffff00 and 0x3ffffffffff
In the case you can confirm that the values are correct, I believe this
could be a false positive report on sparse, in this case.
The correct values are the ones in my email: 0x3ff00 and 0x003ff

The ones reported by sparse (0x3ffffffffff00 and 0x3ffffffffff) are 
not calculated correctly - to me it looks as if it is possibly some
sort of 64 bit issue of sparse in conjunction with the generic macro
GENMASK.

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help