[PATCH 3/6] irqchip: gic: use writel instead of dsb + writel_relaxed

Rob Herring robherring2 at gmail.com
Fri Feb 14 12:18:24 EST 2014


On Fri, Feb 14, 2014 at 10:48 AM, Catalin Marinas
<catalin.marinas at arm.com> wrote:
> On Fri, Feb 14, 2014 at 04:30:39PM +0000, Will Deacon wrote:
>> Well, the results are in (*drum roll*)...
>>
>> On Fri, Feb 07, 2014 at 11:23:37AM +0000, Will Deacon wrote:
>> > On Thu, Feb 06, 2014 at 03:20:48PM +0000, Catalin Marinas wrote:
>> > > On Thu, Feb 06, 2014 at 01:26:44PM +0000, Will Deacon wrote:
>> > > > Ok, my reasoning is as follows:
>> > > >
>> > > >   - CPU0 tries to message CPU1. It writes to a location in normal memory,
>> > > >     then writes to the GICD to send the SGI
>> > > >
>> > > >   - We need to ensure that CPU1 observes the write to normal memory before
>> > > >     the write to GICD reaches the distributor. This is *not* about end-point
>> > > >     ordering (the usual non-coherent DMA example).
>> > > >
>> > > >   - A dmb ishst ensures that the two writes are observed in order by CPU1
>> > > >     (and, in fact, the inner-shareable domain containing CPU0).
>> > >
>> > > The last bullet point is not correct. DMB would only guarantee that the
>> > > two writes (memory and GICD) are observed by CPU1 if CPU1 actually read
>> > > the GICD (observability is defined for master accesses).
>> >
>> > Rather than attempt to solve this via email (your examples below are already
>> > getting hard to follow :), how about we sit down with $drink_of_choice and
>> > post back here with our conclusions?
>>
>> ... and it turns out that a dmb(ishst) is sufficient!
>
> Until we hear otherwise ;)

It is a shame that all this thought and effort will just end with
barrier related chicken bits getting set anyway. Maybe the
$drink_of_choice was worth it. ;)

Rob



More information about the linux-arm-kernel mailing list