Subject: Re: [PATCH 7/8] percpu: add __percpu sparse annotations to hw_breakpoint

From: Al Viro <[email-masked]>
Date: Tue, 26 Jan 2010 03:56:58 +0000

On Tue, Jan 26, 2010 at 12:10:51PM +0900, Tejun Heo wrote:
> Hello,
> 
> On 01/26/2010 11:48 AM, Al Viro wrote:
> > On Tue, Jan 26, 2010 at 11:43:56AM +0900, Tejun Heo wrote:
> > 
> >>> Eh...  You are leaving that noderef in place in case of array.  And _that_
> >>> is not an address space, so casts to AS 0 won't do you any good.
> >>
> >> Any ideas on how to fix it?
> > 
> > BTW, before we go any further, which warnings are you getting from sparse
> > and which version of sparse are you using?
> > 
> > noderef is one thing; address_space mess is a different story.  The version
> > I have here steps into the former, but not the latter; what are you seeing?
> 
> Oops, I too am seeing the noderef thing not the address space warning.

OK...  So all messing around __kernel __force is actually a red herring.

Frankly, for now I'd keep it as in your patch.  Yes, including workarounds
in these few places.  Longer term...  We probably want to implement
__attribute__((qualify(...)))/__attribute__((unqualify(...))), revert
__typeof__ for AS/noderef to what gcc is doing for normal qualifiers
(i.e. "if p is int const *, typeof(*p) v gives const int") go for explicit
__unqualify((address_space,noderef)) in there.  Playing interesting games
with arrays for unqualify (i.e. creating parallel chains of type nodes
all way down to the place where original qualifier had been applied).