Message ID | 955790001.2569251.1529798034743.JavaMail.zimbra@raptorengineeringinc.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | Add initial version of "cognitive DMA" | expand |
On Sat, 23 Jun 2018 18:53:54 -0500 (CDT) Timothy Pearson <tpearson@raptorengineering.com> wrote: > allocation > > Signed-off-by: Russell Currey <ruscur@russell.cc> > --- > arch/powerpc/platforms/powernv/pci-dma.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/platforms/powernv/pci-dma.c b/arch/powerpc/platforms/powernv/pci-dma.c > index 1d5409be343e..237940a2a052 100644 > --- a/arch/powerpc/platforms/powernv/pci-dma.c > +++ b/arch/powerpc/platforms/powernv/pci-dma.c > @@ -29,8 +29,9 @@ static int dma_pseudo_bypass_select_tce(struct pnv_ioda_pe *pe, phys_addr_t addr > { > int tce; > __be64 old, new; > + unsigned long flags; > > - ; > + spin_lock_irqsave(&pe->tce_alloc_lock, flags); No commit log and this actually should be merged into the patch introducing spin_lock(&pe->tce_alloc_lock). > tce = bitmap_find_next_zero_area(pe->tce_bitmap, > pe->tce_count, > 0, > @@ -40,9 +41,10 @@ static int dma_pseudo_bypass_select_tce(struct pnv_ioda_pe *pe, phys_addr_t addr > old = pe->tces[tce]; > new = cpu_to_be64(addr | TCE_PCI_READ | TCE_PCI_WRITE); > pe->tces[tce] = new; > + mb(); > pe_info(pe, "allocating TCE %i 0x%016llx (old 0x%016llx)\n", > tce, new, old); > - spin_unlock(&pe->tce_alloc_lock); > + spin_unlock_irqrestore(&pe->tce_alloc_lock, flags); > > return tce; > } > -- > 2.17.1 -- Alexey
diff --git a/arch/powerpc/platforms/powernv/pci-dma.c b/arch/powerpc/platforms/powernv/pci-dma.c index 1d5409be343e..237940a2a052 100644 --- a/arch/powerpc/platforms/powernv/pci-dma.c +++ b/arch/powerpc/platforms/powernv/pci-dma.c @@ -29,8 +29,9 @@ static int dma_pseudo_bypass_select_tce(struct pnv_ioda_pe *pe, phys_addr_t addr { int tce; __be64 old, new; + unsigned long flags; - spin_lock(&pe->tce_alloc_lock); + spin_lock_irqsave(&pe->tce_alloc_lock, flags); tce = bitmap_find_next_zero_area(pe->tce_bitmap, pe->tce_count, 0, @@ -40,9 +41,10 @@ static int dma_pseudo_bypass_select_tce(struct pnv_ioda_pe *pe, phys_addr_t addr old = pe->tces[tce]; new = cpu_to_be64(addr | TCE_PCI_READ | TCE_PCI_WRITE); pe->tces[tce] = new; + mb(); pe_info(pe, "allocating TCE %i 0x%016llx (old 0x%016llx)\n", tce, new, old); - spin_unlock(&pe->tce_alloc_lock); + spin_unlock_irqrestore(&pe->tce_alloc_lock, flags); return tce; }
allocation Signed-off-by: Russell Currey <ruscur@russell.cc> --- arch/powerpc/platforms/powernv/pci-dma.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)