Re: [PATCH 10/20] powerpc/dma-noncoherent: don't disable irqs over kmap_atomic
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
- Subject: Re: [PATCH 10/20] powerpc/dma-noncoherent: don't disable irqs over kmap_atomic
- From: Christoph Hellwig <hch@xxxxxx>
- Date: Wed, 22 Aug 2018 09:02:41 +0200
- Cc: Christoph Hellwig <hch@xxxxxx>, Paul Mackerras <paulus@xxxxxxxxx>, Michael Ellerman <mpe@xxxxxxxxxxxxxx>, Tony Luck <tony.luck@xxxxxxxxx>, Fenghua Yu <fenghua.yu@xxxxxxxxx>, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>, Robin Murphy <robin.murphy@xxxxxxx>, linuxppc-dev@xxxxxxxxxxxxxxxx, iommu@xxxxxxxxxxxxxxxxxxxxxxxxxx, linux-ia64@xxxxxxxxxxxxxxx
- In-reply-to: <bfa22816fee0759cfee28705b427be3586c7d2e3.camel@kernel.crashing.org>
- References: <20180730163824.10064-1-hch@lst.de> <20180730163824.10064-11-hch@lst.de> <bfa22816fee0759cfee28705b427be3586c7d2e3.camel@kernel.crashing.org>
- User-agent: Mutt/1.5.17 (2007-11-01)
On Thu, Aug 09, 2018 at 10:27:46AM +1000, Benjamin Herrenschmidt wrote:
> On Mon, 2018-07-30 at 18:38 +0200, Christoph Hellwig wrote:
> > The requirement to disable local irqs over kmap_atomic is long gone,
> > so remove those calls.
>
> Really ? I'm trying to verify that and getting lost in a mess of macros
> from hell in the per-cpu stuff but if you look at our implementation
> of kmap_atomic_prot(), all it does is a preempt_disable(), and then
> it uses kmap_atomic_idx_push():
>
> int idx = __this_cpu_inc_return(__kmap_atomic_idx) - 1;
>
> Note the use of __this_cpu_inc_return(), not this_cpu_inc_return(),
> ie this is the non-interrupt safe version...
Looks like the powerpc variant indeed isn't save.
I did look a bit more through the code and history, and it seems
like we remove the need to disable irqs when called from process
context a while ago, but we still require disabling irqs when called
from irq context. Given that this code can also be called from
irq context we'll have to keep the local_irq_save.
[Index of Archives]
[Linux Kernel]
[Sparc Linux]
[DCCP]
[Linux ARM]
[Yosemite News]
[Linux SCSI]
[Linux x86_64]
[Linux for Ham Radio]