Re: coccinelle and bitmask arithmetic

Russell King - ARM Linux
2013-01-30T18:25:09Z

On Wed, Jan 30, 2013 at 08:53:29AM -0800, Joe Perches wrote:
> On Wed, 2013-01-30 at 11:35 +0000, Russell King - ARM Linux wrote:
> > On Wed, Jan 30, 2013 at 12:21:21PM +0100, Julia Lawall wrote:
> > > On Wed, 30 Jan 2013, Russell King - ARM Linux wrote:
> > > > 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.
> > >
> > > The "problem" is that the computation is done inconsistently within the
> > > same file. Sometimes with + and sometimes with |.
> >
> > And I say that is not a problem; if it _does_ become a problem, there are
> > bigger problems that would also need solving, which given a multi-subarch
> > kernel become a lot lot harder.
> >
> > Sure, we can just change them to all be a bitwise OR (sorry, not logical)
> > but that's really only half the story.
>
> As far as I can tell, there'd be a lot of +'s to
> change in arch/arm and only 2 uses of | in it8152.c
>
> $ git grep -P "\(?\s*SZ_\d+[A-Z]\s*-\s*1\s*\)?\s*\|" arch/arm
> arch/arm/common/it8152.c: *dev->dma_mask = (SZ_64M - 1) | PHYS_OFFSET;
> arch/arm/common/it8152.c: dev->coherent_dma_mask = (SZ_64M - 1) | PHYS_OFFSET;
>
> $ git grep -P "\+\s*\(?\s*SZ_\d+[A-Z]\b\s*-\s*1\s*\)?" arch/arm | wc -l
> 460
>
> I think consistently using + would make it simpler
> for some possible future conversion.

Respectfully, I really don't care about this at the present time. There's
bigger fish (and kernel developers) that need frying - such as fixing the
ARM kernel so it actually boots on the platforms that it used to before
all this DT crap and DMA crap came along and sodded things up.

The issue you refer to above is petty in comparison; the above works
fine, which is more than can be said about the platform I've just tried to
boot. Sorry.