Re: coccinelle and bitmask arithmetic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 30, 2013 at 09:21:28AM +0100, walter harms wrote:
> Great hit Joe :)
> 
> Sometimes i am really surprised what code can be found
> in the kernal and it is still working.
> Having no clue of the code i suspect somebody tries to
> check is mask outside the range it should read
> PHYS_OFFSET |( SZ_64M - 1)
> maybe someone should tell them that
> 1+1=10 while 1|1=1
> It does not seem to matter here (or ... ?)

This PCI host is only used on one platform (ARMCORE).

For this, PHYS_OFFSET will be a value with only the top few bits of a
32-bit word set (such as 0xc0000000) - it's certainly not going to have
any bits set below bit 26 on the platform this driver gets used on.
"SZ_64M - 1" is the size of the window that RAM appears.

So, _either_ logical OR or addition works.

If we _did_ end up with a PHYS_OFFSET with bits less than bit 26 set
here, we'd have bigger problems - because the base of RAM in PCI space
will not correspond with PHYS_OFFSET and all the DMA mapping stuff breaks.
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux