* [PATCH 4/7] powerpc/powernv/pci: Safety fixes for pseudobypass TCE
@ 2018-06-23 23:53 Timothy Pearson
2018-06-25 3:46 ` Alexey Kardashevskiy
0 siblings, 1 reply; 2+ messages in thread
From: Timothy Pearson @ 2018-06-23 23:53 UTC (permalink / raw)
To: linuxppc-dev; +Cc: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman
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(&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;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 4/7] powerpc/powernv/pci: Safety fixes for pseudobypass TCE
2018-06-23 23:53 [PATCH 4/7] powerpc/powernv/pci: Safety fixes for pseudobypass TCE Timothy Pearson
@ 2018-06-25 3:46 ` Alexey Kardashevskiy
0 siblings, 0 replies; 2+ messages in thread
From: Alexey Kardashevskiy @ 2018-06-25 3:46 UTC (permalink / raw)
To: Timothy Pearson; +Cc: linuxppc-dev, Paul Mackerras
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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-06-25 3:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-23 23:53 [PATCH 4/7] powerpc/powernv/pci: Safety fixes for pseudobypass TCE Timothy Pearson
2018-06-25 3:46 ` Alexey Kardashevskiy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).