All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Zigotzky <chzigotzky@xenosoft.de>
To: Christoph Hellwig <hch@lst.de>
Cc: Michael Ellerman <mpe@ellerman.id.au>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	linux-arch@vger.kernel.org, linux-mm@kvack.org,
	iommu@lists.linux-foundation.org, linuxppc-dev@lists.ozlabs.org,
	linux-kernel@vger.kernel.org, Olof Johansson <olof@lixom.net>
Subject: Re: use generic DMA mapping code in powerpc V4
Date: Fri, 30 Nov 2018 13:23:20 +0100	[thread overview]
Message-ID: <8694431d-c669-b7b9-99fa-e99db5d45a7d@xenosoft.de> (raw)
In-Reply-To: <20181130105346.GB26765@lst.de>

Hi Christoph,

Thanks a lot for your fast reply.

On 30 November 2018 at 11:53AM, Christoph Hellwig wrote:
> Hi Christian,
>
> for such a diverse architecture like powerpc we'll have to rely on
> users / non core developers like you to help with testing.
I see. I will help as good as I can.
>
> Can you try the patch below for he cyrus config?
Yes, of course. I patched your Git kernel and after that I compiled it 
again. U-Boot loads the kernel and the dtb file. Then the kernel starts 
but it doesn't find any hard disks (partitions).

@All
Could you please also test Christoph's kernel on your PASEMI and NXP 
boards? Download: 'git clone git://git.infradead.org/users/hch/misc.git 
-b powerpc-dma.4 a'
*PLEASE*
>
> For the nemo one I have no idea yet,
We had some problems with the PASEMI ethernet and DMA two years ago. I 
had to deactivate the option PASEMI_IOMMU_DMA_FORCE.

commit 416f37d0816b powerpc/pasemi: Fix coherent_dma_mask for dma engine:

Commit 817820b0 ("powerpc/iommu: Support "hybrid" iommu/direct DMA
ops for coherent_mask < dma_mask) adds a check of coherent_dma_mask for
dma allocations.

Unfortunately current PASemi code does not set this value for the DMA
engine, which ends up with the default value of 0xffffffff, the result
is on a PASemi system with >2Gb ram and iommu enabled the onboard
ethernet stops working due to an inability to allocate memory. Add an
initialisation to pci_dma_dev_setup_pasemi().
Signed-off-by: Darren Stevens <darren@stevens-zone.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>

Links:
https://lists.ozlabs.org/pipermail/linuxppc-dev/2016-July/146701.html
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=416f37d0816b9720b8227953e55954d81456f991

FYI: DMA handling has been rewritten in 2015. We had some problems with 
the new DMA code in 2015. I had to revert the commit ' [RFC/PATCH,v2] 
powerpc/iommu: Support "hybrid" iommu/direct DMA ops for coherent_mask < 
dma_mask' in 2015.

Link: https://patchwork.ozlabs.org/patch/472535/

I had to create a patch in 2015:

     diff -rupN linux-4.4/arch/powerpc/Kconfig 
linux-4.4-nemo/arch/powerpc/Kconfig
     --- linux-4.4/arch/powerpc/Kconfig    2015-12-07 00:43:12.000000000 
+0100
     +++ linux-4.4-nemo/arch/powerpc/Kconfig    2015-12-07 
14:48:23.371987988 +0100
     @@ -158,8 +155,6 @@ config PPC
          select HAVE_PERF_EVENTS_NMI if PPC64
          select EDAC_SUPPORT
          select EDAC_ATOMIC_SCRUB
     -    select ARCH_HAS_DMA_SET_COHERENT_MASK
     -    select HAVE_ARCH_SECCOMP_FILTER

      config GENERIC_CSUM
          def_bool CPU_LITTLE_ENDIAN
     @@ -419,8 +414,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE

      config KEXEC
          bool "kexec system call"
     -    depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) || 
PPC_BOOK3E
     -    select KEXEC_CORE
     +    depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP))
          help
            kexec is a system call that implements the ability to 
shutdown your
            current kernel, and to start another kernel.  It is like a 
reboot

     diff -rupN linux-4.4/arch/powerpc/kernel/dma.c 
linux-4.4-nemo/arch/powerpc/kernel/dma.c
     --- linux-4.4/arch/powerpc/kernel/dma.c    2015-12-07 
00:43:12.000000000 +0100
     +++ linux-4.4-nemo/arch/powerpc/kernel/dma.c    2015-12-07 
14:49:38.098286892 +0100
     @@ -40,31 +39,9 @@ static u64 __maybe_unused get_pfn_limit(
          return pfn;
      }

     -static int dma_direct_dma_supported(struct device *dev, u64 mask)
     -{
     -#ifdef CONFIG_PPC64
     -    u64 limit = get_dma_offset(dev) + (memblock_end_of_DRAM() - 1);
     -
     -    /* Limit fits in the mask, we are good */
     -    if (mask >= limit)
     -        return 1;
     -
     -#ifdef CONFIG_FSL_SOC
     -    /* Freescale gets another chance via ZONE_DMA/ZONE_DMA32, however
     -     * that will have to be refined if/when they support iommus
     -     */
     -    return 1;
     -#endif
     -    /* Sorry ... */
     -    return 0;
     -#else
     -    return 1;
     -#endif
     -}
     -
     -void *__dma_direct_alloc_coherent(struct device *dev, size_t size,
     -                  dma_addr_t *dma_handle, gfp_t flag,
     -                  struct dma_attrs *attrs)
     +void *dma_direct_alloc_coherent(struct device *dev, size_t size,
     +                dma_addr_t *dma_handle, gfp_t flag,
     +                struct dma_attrs *attrs)
      {
          void *ret;
      #ifdef CONFIG_NOT_COHERENT_CACHE
     @@ -119,9 +96,9 @@ void *__dma_direct_alloc_coherent(struct
      #endif
      }

     -void __dma_direct_free_coherent(struct device *dev, size_t size,
     -                void *vaddr, dma_addr_t dma_handle,
     -                struct dma_attrs *attrs)
     +void dma_direct_free_coherent(struct device *dev, size_t size,
     +                  void *vaddr, dma_addr_t dma_handle,
     +                  struct dma_attrs *attrs)
      {
      #ifdef CONFIG_NOT_COHERENT_CACHE
          __dma_free_coherent(size, vaddr);
     @@ -130,51 +107,6 @@ void __dma_direct_free_coherent(struct d
      #endif
      }

     -static void *dma_direct_alloc_coherent(struct device *dev, size_t 
size,
     -                       dma_addr_t *dma_handle, gfp_t flag,
     -                       struct dma_attrs *attrs)
     -{
     -    struct iommu_table *iommu;
     -
     -    /* The coherent mask may be smaller than the real mask, check if
     -     * we can really use the direct ops
     -     */
     -    if (dma_direct_dma_supported(dev, dev->coherent_dma_mask))
     -        return __dma_direct_alloc_coherent(dev, size, dma_handle,
     -                           flag, attrs);
     -
     -    /* Ok we can't ... do we have an iommu ? If not, fail */
     -    iommu = get_iommu_table_base(dev);
     -    if (!iommu)
     -        return NULL;
     -
     -    /* Try to use the iommu */
     -    return iommu_alloc_coherent(dev, iommu, size, dma_handle,
     -                    dev->coherent_dma_mask, flag,
     -                    dev_to_node(dev));
     -}
     -
     -static void dma_direct_free_coherent(struct device *dev, size_t size,
     -                     void *vaddr, dma_addr_t dma_handle,
     -                     struct dma_attrs *attrs)
     -{
     -    struct iommu_table *iommu;
     -
     -    /* See comments in dma_direct_alloc_coherent() */
     -    if (dma_direct_dma_supported(dev, dev->coherent_dma_mask))
     -        return __dma_direct_free_coherent(dev, size, vaddr, 
dma_handle,
     -                          attrs);
     -    /* Maybe we used an iommu ... */
     -    iommu = get_iommu_table_base(dev);
     -
     -    /* If we hit that we should have never allocated in the first
     -     * place so how come we are freeing ?
     -     */
     -    if (WARN_ON(!iommu))
     -        return;
     -    iommu_free_coherent(iommu, size, vaddr, dma_handle);
     -}
     -
      int dma_direct_mmap_coherent(struct device *dev, struct 
vm_area_struct *vma,
                       void *cpu_addr, dma_addr_t handle, size_t size,
                       struct dma_attrs *attrs)
     @@ -215,6 +147,18 @@ static void dma_direct_unmap_sg(struct d
      {
      }

     +static int dma_direct_dma_supported(struct device *dev, u64 mask)
     +{
     +#ifdef CONFIG_PPC64
     +    /* Could be improved so platforms can set the limit in case
     +     * they have limited DMA windows
     +     */
     +    return mask >= get_dma_offset(dev) + (memblock_end_of_DRAM() - 1);
     +#else
     +    return 1;
     +#endif
     +}
     +
      static u64 dma_direct_get_required_mask(struct device *dev)
      {
          u64 end, mask;
     @@ -286,25 +230,6 @@ struct dma_map_ops dma_direct_ops = {
      };
      EXPORT_SYMBOL(dma_direct_ops);

     -int dma_set_coherent_mask(struct device *dev, u64 mask)
     -{
     -    if (!dma_supported(dev, mask)) {
     -        /*
     -         * We need to special case the direct DMA ops which can
     -         * support a fallback for coherent allocations. There
     -         * is no dma_op->set_coherent_mask() so we have to do
     -         * things the hard way:
     -         */
     -        if (get_dma_ops(dev) != &dma_direct_ops ||
     -            get_iommu_table_base(dev) == NULL ||
     -            !dma_iommu_dma_supported(dev, mask))
     -            return -EIO;
     -    }
     -    dev->coherent_dma_mask = mask;
     -    return 0;
     -}
     -EXPORT_SYMBOL(dma_set_coherent_mask);
     -
      #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16)

      int __dma_set_mask(struct device *dev, u64 dma_mask)

Interesting PASEMI ethernet files:

arch/powerpc/platforms/pasemi/iommu.c
drivers/net/ethernet/pasemi/pasemi_mac.c
drivers/net/ethernet/pasemi/pasemi_mac.h
drivers/net/ethernet/pasemi/pasemi_mac_ethtool.c
drivers/net/ethernet/pasemi/Makefile
drivers/net/ethernet/pasemi/Kconfig

I know this is a lot of information but I hope it helps.

Thanks,
Christian

WARNING: multiple messages have this Message-ID (diff)
From: Christian Zigotzky <chzigotzky-KCoaydhb8eAb1SvskN2V4Q@public.gmane.org>
To: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>
Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Michael Ellerman <mpe-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	Paul Mackerras <paulus-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>,
	Benjamin Herrenschmidt
	<benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>,
	linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
Subject: Re: use generic DMA mapping code in powerpc V4
Date: Fri, 30 Nov 2018 13:23:20 +0100	[thread overview]
Message-ID: <8694431d-c669-b7b9-99fa-e99db5d45a7d@xenosoft.de> (raw)
In-Reply-To: <20181130105346.GB26765-jcswGhMUV9g@public.gmane.org>

Hi Christoph,

Thanks a lot for your fast reply.

On 30 November 2018 at 11:53AM, Christoph Hellwig wrote:
> Hi Christian,
>
> for such a diverse architecture like powerpc we'll have to rely on
> users / non core developers like you to help with testing.
I see. I will help as good as I can.
>
> Can you try the patch below for he cyrus config?
Yes, of course. I patched your Git kernel and after that I compiled it 
again. U-Boot loads the kernel and the dtb file. Then the kernel starts 
but it doesn't find any hard disks (partitions).

@All
Could you please also test Christoph's kernel on your PASEMI and NXP 
boards? Download: 'git clone git://git.infradead.org/users/hch/misc.git 
-b powerpc-dma.4 a'
*PLEASE*
>
> For the nemo one I have no idea yet,
We had some problems with the PASEMI ethernet and DMA two years ago. I 
had to deactivate the option PASEMI_IOMMU_DMA_FORCE.

commit 416f37d0816b powerpc/pasemi: Fix coherent_dma_mask for dma engine:

Commit 817820b0 ("powerpc/iommu: Support "hybrid" iommu/direct DMA
ops for coherent_mask < dma_mask) adds a check of coherent_dma_mask for
dma allocations.

Unfortunately current PASemi code does not set this value for the DMA
engine, which ends up with the default value of 0xffffffff, the result
is on a PASemi system with >2Gb ram and iommu enabled the onboard
ethernet stops working due to an inability to allocate memory. Add an
initialisation to pci_dma_dev_setup_pasemi().
Signed-off-by: Darren Stevens <darren@stevens-zone.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>

Links:
https://lists.ozlabs.org/pipermail/linuxppc-dev/2016-July/146701.html
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=416f37d0816b9720b8227953e55954d81456f991

FYI: DMA handling has been rewritten in 2015. We had some problems with 
the new DMA code in 2015. I had to revert the commit ' [RFC/PATCH,v2] 
powerpc/iommu: Support "hybrid" iommu/direct DMA ops for coherent_mask < 
dma_mask' in 2015.

Link: https://patchwork.ozlabs.org/patch/472535/

I had to create a patch in 2015:

     diff -rupN linux-4.4/arch/powerpc/Kconfig 
linux-4.4-nemo/arch/powerpc/Kconfig
     --- linux-4.4/arch/powerpc/Kconfig    2015-12-07 00:43:12.000000000 
+0100
     +++ linux-4.4-nemo/arch/powerpc/Kconfig    2015-12-07 
14:48:23.371987988 +0100
     @@ -158,8 +155,6 @@ config PPC
          select HAVE_PERF_EVENTS_NMI if PPC64
          select EDAC_SUPPORT
          select EDAC_ATOMIC_SCRUB
     -    select ARCH_HAS_DMA_SET_COHERENT_MASK
     -    select HAVE_ARCH_SECCOMP_FILTER

      config GENERIC_CSUM
          def_bool CPU_LITTLE_ENDIAN
     @@ -419,8 +414,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE

      config KEXEC
          bool "kexec system call"
     -    depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) || 
PPC_BOOK3E
     -    select KEXEC_CORE
     +    depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP))
          help
            kexec is a system call that implements the ability to 
shutdown your
            current kernel, and to start another kernel.  It is like a 
reboot

     diff -rupN linux-4.4/arch/powerpc/kernel/dma.c 
linux-4.4-nemo/arch/powerpc/kernel/dma.c
     --- linux-4.4/arch/powerpc/kernel/dma.c    2015-12-07 
00:43:12.000000000 +0100
     +++ linux-4.4-nemo/arch/powerpc/kernel/dma.c    2015-12-07 
14:49:38.098286892 +0100
     @@ -40,31 +39,9 @@ static u64 __maybe_unused get_pfn_limit(
          return pfn;
      }

     -static int dma_direct_dma_supported(struct device *dev, u64 mask)
     -{
     -#ifdef CONFIG_PPC64
     -    u64 limit = get_dma_offset(dev) + (memblock_end_of_DRAM() - 1);
     -
     -    /* Limit fits in the mask, we are good */
     -    if (mask >= limit)
     -        return 1;
     -
     -#ifdef CONFIG_FSL_SOC
     -    /* Freescale gets another chance via ZONE_DMA/ZONE_DMA32, however
     -     * that will have to be refined if/when they support iommus
     -     */
     -    return 1;
     -#endif
     -    /* Sorry ... */
     -    return 0;
     -#else
     -    return 1;
     -#endif
     -}
     -
     -void *__dma_direct_alloc_coherent(struct device *dev, size_t size,
     -                  dma_addr_t *dma_handle, gfp_t flag,
     -                  struct dma_attrs *attrs)
     +void *dma_direct_alloc_coherent(struct device *dev, size_t size,
     +                dma_addr_t *dma_handle, gfp_t flag,
     +                struct dma_attrs *attrs)
      {
          void *ret;
      #ifdef CONFIG_NOT_COHERENT_CACHE
     @@ -119,9 +96,9 @@ void *__dma_direct_alloc_coherent(struct
      #endif
      }

     -void __dma_direct_free_coherent(struct device *dev, size_t size,
     -                void *vaddr, dma_addr_t dma_handle,
     -                struct dma_attrs *attrs)
     +void dma_direct_free_coherent(struct device *dev, size_t size,
     +                  void *vaddr, dma_addr_t dma_handle,
     +                  struct dma_attrs *attrs)
      {
      #ifdef CONFIG_NOT_COHERENT_CACHE
          __dma_free_coherent(size, vaddr);
     @@ -130,51 +107,6 @@ void __dma_direct_free_coherent(struct d
      #endif
      }

     -static void *dma_direct_alloc_coherent(struct device *dev, size_t 
size,
     -                       dma_addr_t *dma_handle, gfp_t flag,
     -                       struct dma_attrs *attrs)
     -{
     -    struct iommu_table *iommu;
     -
     -    /* The coherent mask may be smaller than the real mask, check if
     -     * we can really use the direct ops
     -     */
     -    if (dma_direct_dma_supported(dev, dev->coherent_dma_mask))
     -        return __dma_direct_alloc_coherent(dev, size, dma_handle,
     -                           flag, attrs);
     -
     -    /* Ok we can't ... do we have an iommu ? If not, fail */
     -    iommu = get_iommu_table_base(dev);
     -    if (!iommu)
     -        return NULL;
     -
     -    /* Try to use the iommu */
     -    return iommu_alloc_coherent(dev, iommu, size, dma_handle,
     -                    dev->coherent_dma_mask, flag,
     -                    dev_to_node(dev));
     -}
     -
     -static void dma_direct_free_coherent(struct device *dev, size_t size,
     -                     void *vaddr, dma_addr_t dma_handle,
     -                     struct dma_attrs *attrs)
     -{
     -    struct iommu_table *iommu;
     -
     -    /* See comments in dma_direct_alloc_coherent() */
     -    if (dma_direct_dma_supported(dev, dev->coherent_dma_mask))
     -        return __dma_direct_free_coherent(dev, size, vaddr, 
dma_handle,
     -                          attrs);
     -    /* Maybe we used an iommu ... */
     -    iommu = get_iommu_table_base(dev);
     -
     -    /* If we hit that we should have never allocated in the first
     -     * place so how come we are freeing ?
     -     */
     -    if (WARN_ON(!iommu))
     -        return;
     -    iommu_free_coherent(iommu, size, vaddr, dma_handle);
     -}
     -
      int dma_direct_mmap_coherent(struct device *dev, struct 
vm_area_struct *vma,
                       void *cpu_addr, dma_addr_t handle, size_t size,
                       struct dma_attrs *attrs)
     @@ -215,6 +147,18 @@ static void dma_direct_unmap_sg(struct d
      {
      }

     +static int dma_direct_dma_supported(struct device *dev, u64 mask)
     +{
     +#ifdef CONFIG_PPC64
     +    /* Could be improved so platforms can set the limit in case
     +     * they have limited DMA windows
     +     */
     +    return mask >= get_dma_offset(dev) + (memblock_end_of_DRAM() - 1);
     +#else
     +    return 1;
     +#endif
     +}
     +
      static u64 dma_direct_get_required_mask(struct device *dev)
      {
          u64 end, mask;
     @@ -286,25 +230,6 @@ struct dma_map_ops dma_direct_ops = {
      };
      EXPORT_SYMBOL(dma_direct_ops);

     -int dma_set_coherent_mask(struct device *dev, u64 mask)
     -{
     -    if (!dma_supported(dev, mask)) {
     -        /*
     -         * We need to special case the direct DMA ops which can
     -         * support a fallback for coherent allocations. There
     -         * is no dma_op->set_coherent_mask() so we have to do
     -         * things the hard way:
     -         */
     -        if (get_dma_ops(dev) != &dma_direct_ops ||
     -            get_iommu_table_base(dev) == NULL ||
     -            !dma_iommu_dma_supported(dev, mask))
     -            return -EIO;
     -    }
     -    dev->coherent_dma_mask = mask;
     -    return 0;
     -}
     -EXPORT_SYMBOL(dma_set_coherent_mask);
     -
      #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16)

      int __dma_set_mask(struct device *dev, u64 dma_mask)

Interesting PASEMI ethernet files:

arch/powerpc/platforms/pasemi/iommu.c
drivers/net/ethernet/pasemi/pasemi_mac.c
drivers/net/ethernet/pasemi/pasemi_mac.h
drivers/net/ethernet/pasemi/pasemi_mac_ethtool.c
drivers/net/ethernet/pasemi/Makefile
drivers/net/ethernet/pasemi/Kconfig

I know this is a lot of information but I hope it helps.

Thanks,
Christian
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: Christian Zigotzky <chzigotzky@xenosoft.de>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, iommu@lists.linux-foundation.org,
	Paul Mackerras <paulus@samba.org>,
	Olof Johansson <olof@lixom.net>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: use generic DMA mapping code in powerpc V4
Date: Fri, 30 Nov 2018 13:23:20 +0100	[thread overview]
Message-ID: <8694431d-c669-b7b9-99fa-e99db5d45a7d@xenosoft.de> (raw)
In-Reply-To: <20181130105346.GB26765@lst.de>

Hi Christoph,

Thanks a lot for your fast reply.

On 30 November 2018 at 11:53AM, Christoph Hellwig wrote:
> Hi Christian,
>
> for such a diverse architecture like powerpc we'll have to rely on
> users / non core developers like you to help with testing.
I see. I will help as good as I can.
>
> Can you try the patch below for he cyrus config?
Yes, of course. I patched your Git kernel and after that I compiled it 
again. U-Boot loads the kernel and the dtb file. Then the kernel starts 
but it doesn't find any hard disks (partitions).

@All
Could you please also test Christoph's kernel on your PASEMI and NXP 
boards? Download: 'git clone git://git.infradead.org/users/hch/misc.git 
-b powerpc-dma.4 a'
*PLEASE*
>
> For the nemo one I have no idea yet,
We had some problems with the PASEMI ethernet and DMA two years ago. I 
had to deactivate the option PASEMI_IOMMU_DMA_FORCE.

commit 416f37d0816b powerpc/pasemi: Fix coherent_dma_mask for dma engine:

Commit 817820b0 ("powerpc/iommu: Support "hybrid" iommu/direct DMA
ops for coherent_mask < dma_mask) adds a check of coherent_dma_mask for
dma allocations.

Unfortunately current PASemi code does not set this value for the DMA
engine, which ends up with the default value of 0xffffffff, the result
is on a PASemi system with >2Gb ram and iommu enabled the onboard
ethernet stops working due to an inability to allocate memory. Add an
initialisation to pci_dma_dev_setup_pasemi().
Signed-off-by: Darren Stevens <darren@stevens-zone.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>

Links:
https://lists.ozlabs.org/pipermail/linuxppc-dev/2016-July/146701.html
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=416f37d0816b9720b8227953e55954d81456f991

FYI: DMA handling has been rewritten in 2015. We had some problems with 
the new DMA code in 2015. I had to revert the commit ' [RFC/PATCH,v2] 
powerpc/iommu: Support "hybrid" iommu/direct DMA ops for coherent_mask < 
dma_mask' in 2015.

Link: https://patchwork.ozlabs.org/patch/472535/

I had to create a patch in 2015:

     diff -rupN linux-4.4/arch/powerpc/Kconfig 
linux-4.4-nemo/arch/powerpc/Kconfig
     --- linux-4.4/arch/powerpc/Kconfig    2015-12-07 00:43:12.000000000 
+0100
     +++ linux-4.4-nemo/arch/powerpc/Kconfig    2015-12-07 
14:48:23.371987988 +0100
     @@ -158,8 +155,6 @@ config PPC
          select HAVE_PERF_EVENTS_NMI if PPC64
          select EDAC_SUPPORT
          select EDAC_ATOMIC_SCRUB
     -    select ARCH_HAS_DMA_SET_COHERENT_MASK
     -    select HAVE_ARCH_SECCOMP_FILTER

      config GENERIC_CSUM
          def_bool CPU_LITTLE_ENDIAN
     @@ -419,8 +414,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE

      config KEXEC
          bool "kexec system call"
     -    depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) || 
PPC_BOOK3E
     -    select KEXEC_CORE
     +    depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP))
          help
            kexec is a system call that implements the ability to 
shutdown your
            current kernel, and to start another kernel.  It is like a 
reboot

     diff -rupN linux-4.4/arch/powerpc/kernel/dma.c 
linux-4.4-nemo/arch/powerpc/kernel/dma.c
     --- linux-4.4/arch/powerpc/kernel/dma.c    2015-12-07 
00:43:12.000000000 +0100
     +++ linux-4.4-nemo/arch/powerpc/kernel/dma.c    2015-12-07 
14:49:38.098286892 +0100
     @@ -40,31 +39,9 @@ static u64 __maybe_unused get_pfn_limit(
          return pfn;
      }

     -static int dma_direct_dma_supported(struct device *dev, u64 mask)
     -{
     -#ifdef CONFIG_PPC64
     -    u64 limit = get_dma_offset(dev) + (memblock_end_of_DRAM() - 1);
     -
     -    /* Limit fits in the mask, we are good */
     -    if (mask >= limit)
     -        return 1;
     -
     -#ifdef CONFIG_FSL_SOC
     -    /* Freescale gets another chance via ZONE_DMA/ZONE_DMA32, however
     -     * that will have to be refined if/when they support iommus
     -     */
     -    return 1;
     -#endif
     -    /* Sorry ... */
     -    return 0;
     -#else
     -    return 1;
     -#endif
     -}
     -
     -void *__dma_direct_alloc_coherent(struct device *dev, size_t size,
     -                  dma_addr_t *dma_handle, gfp_t flag,
     -                  struct dma_attrs *attrs)
     +void *dma_direct_alloc_coherent(struct device *dev, size_t size,
     +                dma_addr_t *dma_handle, gfp_t flag,
     +                struct dma_attrs *attrs)
      {
          void *ret;
      #ifdef CONFIG_NOT_COHERENT_CACHE
     @@ -119,9 +96,9 @@ void *__dma_direct_alloc_coherent(struct
      #endif
      }

     -void __dma_direct_free_coherent(struct device *dev, size_t size,
     -                void *vaddr, dma_addr_t dma_handle,
     -                struct dma_attrs *attrs)
     +void dma_direct_free_coherent(struct device *dev, size_t size,
     +                  void *vaddr, dma_addr_t dma_handle,
     +                  struct dma_attrs *attrs)
      {
      #ifdef CONFIG_NOT_COHERENT_CACHE
          __dma_free_coherent(size, vaddr);
     @@ -130,51 +107,6 @@ void __dma_direct_free_coherent(struct d
      #endif
      }

     -static void *dma_direct_alloc_coherent(struct device *dev, size_t 
size,
     -                       dma_addr_t *dma_handle, gfp_t flag,
     -                       struct dma_attrs *attrs)
     -{
     -    struct iommu_table *iommu;
     -
     -    /* The coherent mask may be smaller than the real mask, check if
     -     * we can really use the direct ops
     -     */
     -    if (dma_direct_dma_supported(dev, dev->coherent_dma_mask))
     -        return __dma_direct_alloc_coherent(dev, size, dma_handle,
     -                           flag, attrs);
     -
     -    /* Ok we can't ... do we have an iommu ? If not, fail */
     -    iommu = get_iommu_table_base(dev);
     -    if (!iommu)
     -        return NULL;
     -
     -    /* Try to use the iommu */
     -    return iommu_alloc_coherent(dev, iommu, size, dma_handle,
     -                    dev->coherent_dma_mask, flag,
     -                    dev_to_node(dev));
     -}
     -
     -static void dma_direct_free_coherent(struct device *dev, size_t size,
     -                     void *vaddr, dma_addr_t dma_handle,
     -                     struct dma_attrs *attrs)
     -{
     -    struct iommu_table *iommu;
     -
     -    /* See comments in dma_direct_alloc_coherent() */
     -    if (dma_direct_dma_supported(dev, dev->coherent_dma_mask))
     -        return __dma_direct_free_coherent(dev, size, vaddr, 
dma_handle,
     -                          attrs);
     -    /* Maybe we used an iommu ... */
     -    iommu = get_iommu_table_base(dev);
     -
     -    /* If we hit that we should have never allocated in the first
     -     * place so how come we are freeing ?
     -     */
     -    if (WARN_ON(!iommu))
     -        return;
     -    iommu_free_coherent(iommu, size, vaddr, dma_handle);
     -}
     -
      int dma_direct_mmap_coherent(struct device *dev, struct 
vm_area_struct *vma,
                       void *cpu_addr, dma_addr_t handle, size_t size,
                       struct dma_attrs *attrs)
     @@ -215,6 +147,18 @@ static void dma_direct_unmap_sg(struct d
      {
      }

     +static int dma_direct_dma_supported(struct device *dev, u64 mask)
     +{
     +#ifdef CONFIG_PPC64
     +    /* Could be improved so platforms can set the limit in case
     +     * they have limited DMA windows
     +     */
     +    return mask >= get_dma_offset(dev) + (memblock_end_of_DRAM() - 1);
     +#else
     +    return 1;
     +#endif
     +}
     +
      static u64 dma_direct_get_required_mask(struct device *dev)
      {
          u64 end, mask;
     @@ -286,25 +230,6 @@ struct dma_map_ops dma_direct_ops = {
      };
      EXPORT_SYMBOL(dma_direct_ops);

     -int dma_set_coherent_mask(struct device *dev, u64 mask)
     -{
     -    if (!dma_supported(dev, mask)) {
     -        /*
     -         * We need to special case the direct DMA ops which can
     -         * support a fallback for coherent allocations. There
     -         * is no dma_op->set_coherent_mask() so we have to do
     -         * things the hard way:
     -         */
     -        if (get_dma_ops(dev) != &dma_direct_ops ||
     -            get_iommu_table_base(dev) == NULL ||
     -            !dma_iommu_dma_supported(dev, mask))
     -            return -EIO;
     -    }
     -    dev->coherent_dma_mask = mask;
     -    return 0;
     -}
     -EXPORT_SYMBOL(dma_set_coherent_mask);
     -
      #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16)

      int __dma_set_mask(struct device *dev, u64 dma_mask)

Interesting PASEMI ethernet files:

arch/powerpc/platforms/pasemi/iommu.c
drivers/net/ethernet/pasemi/pasemi_mac.c
drivers/net/ethernet/pasemi/pasemi_mac.h
drivers/net/ethernet/pasemi/pasemi_mac_ethtool.c
drivers/net/ethernet/pasemi/Makefile
drivers/net/ethernet/pasemi/Kconfig

I know this is a lot of information but I hope it helps.

Thanks,
Christian

  reply	other threads:[~2018-11-30 12:24 UTC|newest]

Thread overview: 351+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-14  8:22 use generic DMA mapping code in powerpc V4 Christoph Hellwig
2018-11-14  8:22 ` Christoph Hellwig
2018-11-14  8:22 ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 01/34] powerpc: use mm zones more sensibly Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-06 14:09   ` Christoph Hellwig
2018-12-06 14:09     ` Christoph Hellwig
2018-12-07 12:18     ` Michael Ellerman
2018-12-07 12:18       ` Michael Ellerman
2018-12-07 14:09       ` Christoph Hellwig
2018-12-07 14:09         ` Christoph Hellwig
2018-12-07 15:04         ` Christian Zigotzky
2018-12-07 15:04           ` Christian Zigotzky
2018-11-14  8:22 ` [PATCH 02/34] powerpc: allow NOT_COHERENT_CACHE for amigaone Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-06 14:09   ` Christoph Hellwig
2018-12-06 14:09     ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 03/34] powerpc/dma: remove the unused ARCH_HAS_DMA_MMAP_COHERENT define Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-06 14:09   ` Christoph Hellwig
2018-12-06 14:09     ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 04/34] powerpc/dma: remove the unused ISA_DMA_THRESHOLD export Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-06 14:10   ` Christoph Hellwig
2018-12-06 14:10     ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 05/34] powerpc/dma: remove the unused dma_iommu_ops export Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-06 14:10   ` Christoph Hellwig
2018-12-06 14:10     ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 06/34] powerpc/dma: split the two __dma_alloc_coherent implementations Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-06 14:10   ` Christoph Hellwig
2018-12-06 14:10     ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 07/34] powerpc/dma: remove the no-op dma_nommu_unmap_{page,sg} routines Christoph Hellwig
2018-11-14  8:22   ` [PATCH 07/34] powerpc/dma: remove the no-op dma_nommu_unmap_{page, sg} routines Christoph Hellwig
2018-12-06 14:10   ` Christoph Hellwig
2018-12-06 14:10     ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 08/34] powerpc/dma: untangle vio_dma_mapping_ops from dma_iommu_ops Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-06 14:10   ` Christoph Hellwig
2018-12-06 14:10     ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 09/34] powerpc/dma: handle iommu bypass in dma_iommu_ops Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 10/34] powerpc/pseries: unwind dma_get_required_mask_pSeriesLP a bit Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 11/34] powerpc/pseries: use the generic iommu bypass code Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 12/34] powerpc/cell: move dma direct window setup out of dma_configure Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-09 10:23   ` Michael Ellerman
2018-12-09 10:23     ` Michael Ellerman
2018-12-12 14:36     ` Christoph Hellwig
2018-12-12 14:36       ` Christoph Hellwig
2018-12-14 13:29       ` Michael Ellerman
2018-12-14 13:29         ` Michael Ellerman
2018-12-14 13:29         ` Michael Ellerman
2018-12-14 13:29         ` Michael Ellerman
2018-12-14 16:42         ` Christoph Hellwig
2018-12-14 16:42           ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 13/34] powerpc/cell: use the generic iommu bypass code Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 14/34] powerpc/dart: remove dead cleanup code in iommu_init_early_dart Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-06 14:11   ` Christoph Hellwig
2018-12-06 14:11     ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 15/34] powerpc/dart: use the generic iommu bypass code Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 16/34] powerpc/powernv: remove pnv_pci_ioda_pe_single_vendor Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 17/34] powerpc/powernv: remove pnv_npu_dma_set_mask Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 18/34] powerpc/powernv: use the generic iommu bypass code Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-11-14  8:22 ` [PATCH 19/34] cxl: drop the dma_set_mask callback from vphb Christoph Hellwig
2018-11-14  8:22   ` Christoph Hellwig
2018-12-06 14:10   ` Christoph Hellwig
2018-12-06 14:10     ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 20/34] powerpc/dma: stop overriding dma_get_required_mask Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 21/34] powerpc/pci: remove the dma_set_mask pci_controller ops methods Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 22/34] powerpc/dma: remove the iommu fallback for coherent allocations Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 23/34] powerpc/dma: remove get_pci_dma_ops Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 24/34] powerpc/dma: move pci_dma_dev_setup_swiotlb to fsl_pci.c Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 25/34] powerpc/dma: remove max_direct_dma_addr Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 26/34] powerpc/dma: fix an off-by-one in dma_capable Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 27/34] powerpc/fsl_pci: simplify fsl_pci_dma_set_mask Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 28/34] dma-mapping, powerpc: simplify the arch dma_set_mask override Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 29/34] powerpc/dma: use phys_to_dma instead of get_dma_offset Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 30/34] powerpc/dma: remove dma_nommu_mmap_coherent Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 31/34] powerpc/dma: use generic direct and swiotlb ops Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 32/34] powerpc/dma: remove get_dma_offset Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 33/34] powerpc/dma: remove set_dma_offset Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-14  8:23 ` [PATCH 34/34] powerpc/dma: trim the fat from <asm/dma-mapping.h> Christoph Hellwig
2018-11-14  8:23   ` Christoph Hellwig
2018-11-27  7:42 ` use generic DMA mapping code in powerpc V4 Christoph Hellwig
2018-11-27 22:05   ` Benjamin Herrenschmidt
2018-11-27 22:05     ` Benjamin Herrenschmidt
2018-11-28 11:05   ` Michael Ellerman
2018-11-28 15:55     ` Christian Zigotzky
2018-11-28 20:02       ` Christian Zigotzky
2018-11-28 20:35       ` Michal Suchánek
2018-11-28 20:35         ` Michal Suchánek
2018-11-29 17:03         ` Christoph Hellwig
2018-11-29 17:03           ` Christoph Hellwig
2019-12-19 13:54       ` Christian Zigotzky
2019-12-19 13:54         ` Christian Zigotzky
2019-12-19 13:54         ` Christian Zigotzky
2019-12-19 13:54         ` Christian Zigotzky
2018-11-29 12:05     ` Christian Zigotzky
2018-11-29 12:05       ` Christian Zigotzky
2018-11-29 12:05       ` Christian Zigotzky
2018-11-29 15:30       ` Christian Zigotzky
2018-11-29 17:03       ` Christoph Hellwig
2018-11-29 17:03         ` Christoph Hellwig
2018-11-29 23:07         ` Christian Zigotzky
2018-11-29 23:07           ` Christian Zigotzky
2018-11-29 23:07           ` Christian Zigotzky
2018-11-30 10:53           ` Christoph Hellwig
2018-11-30 10:53             ` Christoph Hellwig
2018-11-30 12:23             ` Christian Zigotzky [this message]
2018-11-30 12:23               ` Christian Zigotzky
2018-11-30 12:23               ` Christian Zigotzky
2018-11-30 13:10               ` Christoph Hellwig
2018-11-30 13:10                 ` Christoph Hellwig
2018-11-30 13:10                 ` Christoph Hellwig
2018-11-30 15:29                 ` Christian Zigotzky
2018-11-30 15:29                   ` Christian Zigotzky
2018-11-30 15:29                   ` Christian Zigotzky
2018-12-04  7:31                   ` Christian Zigotzky
2018-12-04  9:53                     ` Christian Zigotzky
2018-12-04 14:24                       ` Christoph Hellwig
2018-12-04 14:24                         ` Christoph Hellwig
2018-12-04 14:24                         ` Christoph Hellwig
2018-12-05  9:44                         ` Christian Zigotzky
2018-12-05  9:44                           ` Christian Zigotzky
2018-12-05 14:05                           ` Christoph Hellwig
2018-12-05 14:05                             ` Christoph Hellwig
2018-12-06 10:55                             ` Christian Zigotzky
2018-12-06 17:10                               ` Christian Zigotzky
2018-12-06 19:36                                 ` Christoph Hellwig
2018-12-06 19:36                                   ` Christoph Hellwig
2018-12-07  7:48                                   ` Christian Zigotzky
2018-12-07 13:45                               ` Christian Zigotzky
2018-12-07 13:45                                 ` Christian Zigotzky
2018-12-07 18:33                                 ` Christian Zigotzky
2018-12-08 10:29                                   ` Christian Zigotzky
2018-12-08 13:47                                     ` Christian Zigotzky
2018-12-08 13:47                                       ` Christian Zigotzky
2018-12-09 14:20                                       ` Christian Zigotzky
2018-12-09 18:26                                         ` Christian Zigotzky
2018-12-10 15:54                                           ` Christian Zigotzky
2018-12-11 14:28                                             ` Christian Zigotzky
2018-12-11 18:17                                               ` Christian Zigotzky
2018-12-12  0:47                                                 ` Benjamin Herrenschmidt
2018-12-12  0:47                                                   ` Benjamin Herrenschmidt
2018-12-12  7:03                                                   ` Christian Zigotzky
2018-12-12  7:03                                                     ` Christian Zigotzky
2018-12-12  7:03                                                     ` Christian Zigotzky
2018-12-12  7:03                                                     ` Christian Zigotzky
2018-12-12 14:15                                                 ` Christoph Hellwig
2018-12-12 14:15                                                   ` Christoph Hellwig
2018-12-12 14:15                                                   ` Christoph Hellwig
2018-12-12 14:15                                                   ` Christoph Hellwig
2018-12-12 14:39                                                   ` Christian Zigotzky
2018-12-13  8:41                                                     ` Christian Zigotzky
2018-12-13  9:10                                                       ` Christoph Hellwig
2018-12-13  9:10                                                         ` Christoph Hellwig
2018-12-13  9:10                                                         ` Christoph Hellwig
2018-12-13  9:47                                                         ` Christian Zigotzky
2018-12-13 11:19                                                           ` Christian Zigotzky
2018-12-13 11:25                                                             ` Christoph Hellwig
2018-12-13 11:25                                                               ` Christoph Hellwig
2018-12-13 13:34                                                               ` Christian Zigotzky
2018-12-13 17:48                                                                 ` Christian Zigotzky
2018-12-13 21:53                                                                   ` Christian Zigotzky
2018-12-14 12:00                                                                     ` Christian Zigotzky
2018-12-14 16:45                                                                       ` Christoph Hellwig
2018-12-14 16:45                                                                         ` Christoph Hellwig
2019-01-03  7:36                                                                       ` Christoph Hellwig
2019-01-03  7:36                                                                         ` Christoph Hellwig
2019-01-03 19:26                                                                         ` Christian Zigotzky
2019-01-05 16:03                                                                           ` Christian Zigotzky
2019-01-09  9:31                                                                             ` Christian Zigotzky
2019-01-11  2:10                                                                               ` Christian Zigotzky
2019-01-12 18:14                                                                                 ` Christian Zigotzky
2019-01-15  8:07                                                                                   ` Christian Zigotzky
2019-01-15  8:49                                                                                     ` Christian Zigotzky
2019-01-15 10:55                                                                                       ` Christian Zigotzky
2019-01-15 13:35                                                                                         ` Christoph Hellwig
2019-01-15 13:35                                                                                           ` Christoph Hellwig
2019-01-15 13:56                                                                                           ` Christian Zigotzky
2019-01-15 15:17                                                                                             ` Christoph Hellwig
2019-01-15 15:17                                                                                               ` Christoph Hellwig
2019-01-17  9:21                                                                                               ` Christian Zigotzky
2019-01-17  9:31                                                                                                 ` Christoph Hellwig
2019-01-17  9:31                                                                                                   ` Christoph Hellwig
2019-01-17  9:44                                                                                                   ` Christian Zigotzky
2019-01-18  8:35                                                                                                 ` Christoph Hellwig
2019-01-18  8:35                                                                                                   ` Christoph Hellwig
2019-01-18 11:10                                                                                                   ` Christian Zigotzky
2019-01-18 11:28                                                                                                     ` Christoph Hellwig
2019-01-18 11:28                                                                                                       ` Christoph Hellwig
2019-01-18 12:07                                                                                                       ` Christian Zigotzky
2019-01-18 12:18                                                                                                         ` Christoph Hellwig
2019-01-18 12:18                                                                                                           ` Christoph Hellwig
2019-01-18 12:46                                                                                                           ` Christian Zigotzky
2019-01-18 12:55                                                                                                             ` Christoph Hellwig
2019-01-18 12:55                                                                                                               ` Christoph Hellwig
2019-01-18 12:55                                                                                                               ` Christoph Hellwig
2019-01-18 15:06                                                                                                               ` Christian Zigotzky
2019-01-19 11:40                                                                                                                 ` Christian Zigotzky
2019-01-19 11:52                                                                                                                   ` Christian Zigotzky
2019-01-19 13:02                                                                                                                     ` Christoph Hellwig
2019-01-19 13:02                                                                                                                       ` Christoph Hellwig
2019-01-19 14:04                                                                                                                       ` Christoph Hellwig
2019-01-19 14:04                                                                                                                         ` Christoph Hellwig
2019-01-19 14:04                                                                                                                         ` Christoph Hellwig
2019-01-21 14:38                                                                                                                         ` Christian Zigotzky
2019-01-23 14:34                                                                                                                           ` Christian Zigotzky
2019-01-25 13:37                                                                                                                             ` Christian Zigotzky
2019-01-27 13:13                                                                                                                               ` Christian Zigotzky
2019-01-28  7:04                                                                                                                                 ` Christoph Hellwig
2019-01-28  7:04                                                                                                                                   ` Christoph Hellwig
2019-01-28 16:22                                                                                                                                   ` Christoph Hellwig
2019-01-28 16:22                                                                                                                                     ` Christoph Hellwig
2019-01-28 16:22                                                                                                                                     ` Christoph Hellwig
2019-01-28 16:52                                                                                                                                     ` Christian Zigotzky
2019-01-29 15:03                                                                                                                                       ` Christian Zigotzky
2019-01-29 16:14                                                                                                                                         ` Christoph Hellwig
2019-01-29 16:14                                                                                                                                           ` Christoph Hellwig
2019-01-29 16:34                                                                                                                                           ` Christoph Hellwig
2019-01-29 16:34                                                                                                                                             ` Christoph Hellwig
2019-01-30  4:40                                                                                                                                             ` Christian Zigotzky
2019-01-31 12:48                                                                                                                                               ` Christian Zigotzky
2019-02-01  8:04                                                                                                                                                 ` Christoph Hellwig
2019-02-01  8:04                                                                                                                                                   ` Christoph Hellwig
2019-02-01 16:54                                                                                                                                                   ` Christian Zigotzky
2019-02-03 16:49                                                                                                                                                     ` Christian Zigotzky
2019-02-04  7:56                                                                                                                                                       ` Christoph Hellwig
2019-02-04  7:56                                                                                                                                                         ` Christoph Hellwig
2019-02-04 12:13                                                                                                                                                         ` Christian Zigotzky
2019-02-04 12:38                                                                                                                                                           ` Christoph Hellwig
2019-02-06 13:45                                                                                                                                                             ` Christian Zigotzky
2019-02-06 15:15                                                                                                                                                               ` Christoph Hellwig
2019-02-06 15:15                                                                                                                                                                 ` Christoph Hellwig
2019-02-06 15:16                                                                                                                                                                 ` Christoph Hellwig
2019-02-06 15:16                                                                                                                                                                   ` Christoph Hellwig
2019-02-07  4:34                                                                                                                                                                   ` Christian Zigotzky
2019-02-07  4:34                                                                                                                                                                     ` Christian Zigotzky
2019-02-08  9:01                                                                                                                                                                     ` Christian Zigotzky
2019-02-08  9:18                                                                                                                                                                       ` Christoph Hellwig
2019-02-08  9:18                                                                                                                                                                         ` Christoph Hellwig
2019-02-08 10:59                                                                                                                                                                         ` Christian Zigotzky
2019-02-09 19:26                                                                                                                                                                         ` Darren Stevens
2019-02-09 21:10                                                                                                                                                                         ` Darren Stevens
2019-02-11  7:41                                                                                                                                                                           ` Christoph Hellwig
2019-02-10 12:00                                                                                                                                                                         ` Christian Zigotzky
2019-02-10 12:00                                                                                                                                                                           ` Christian Zigotzky
     [not found]                                                                                                                                                                           ` <4e7137db-e600-0d20-6fb2-6d0f9739aca3-KCoaydhb8eAb1SvskN2V4Q@public.gmane.org>
2019-02-11  7:16                                                                                                                                                                             ` Christian Zigotzky
2019-02-11  7:16                                                                                                                                                                               ` Christian Zigotzky
2019-02-11  7:21                                                                                                                                                                               ` Christian Zigotzky
2019-02-11  7:38                                                                                                                                                                           ` Christoph Hellwig
2019-02-11  7:38                                                                                                                                                                             ` Christoph Hellwig
2019-02-12 12:42                                                                                                                                                                             ` Christian Zigotzky
2019-02-12 15:25                                                                                                                                                                               ` Christoph Hellwig
2019-02-12 15:25                                                                                                                                                                                 ` Christoph Hellwig
2019-02-12 19:31                                                                                                                                                                                 ` Christian Zigotzky
2019-02-12 19:31                                                                                                                                                                                   ` Christian Zigotzky
2019-02-12 19:50                                                                                                                                                                                   ` Christian Zigotzky
2019-02-12 19:52                                                                                                                                                                                     ` Christoph Hellwig
2019-02-12 19:52                                                                                                                                                                                       ` Christoph Hellwig
2019-11-05  7:56                                                                               ` Bug 205201 - overflow of DMA mask and bus mask Christian Zigotzky
2019-11-05  7:56                                                                                 ` Christian Zigotzky
2019-11-05  7:56                                                                                 ` Christian Zigotzky
2019-11-05 16:28                                                                                 ` Christoph Hellwig
2019-11-05 16:28                                                                                   ` Christoph Hellwig
2019-11-05 16:28                                                                                   ` Christoph Hellwig
2019-11-06 14:09                                                                                   ` Robin Murphy
2019-11-06 14:09                                                                                     ` Robin Murphy
2019-11-21 17:26                                                                                     ` Christoph Hellwig
2019-11-21 17:26                                                                                       ` Christoph Hellwig
2019-11-07  9:53                                                                                   ` Christian Zigotzky
2019-11-07  9:53                                                                                     ` Christian Zigotzky
2019-11-07  9:53                                                                                     ` Christian Zigotzky
2019-11-10  7:27                                                                                     ` Christian Zigotzky
2019-11-10  7:27                                                                                       ` Christian Zigotzky
2019-11-10  7:27                                                                                       ` Christian Zigotzky
2019-11-11  8:12                                                                                       ` Christian Zigotzky
2019-11-11  8:12                                                                                         ` Christian Zigotzky
2019-11-11  8:12                                                                                         ` Christian Zigotzky
2019-11-11  8:16                                                                                         ` Christian Zigotzky
2019-11-11  8:16                                                                                           ` Christian Zigotzky
2019-11-11  8:16                                                                                           ` Christian Zigotzky
2019-11-11 12:22                                                                                           ` Christian Zigotzky
2019-11-11 12:22                                                                                             ` Christian Zigotzky
2019-11-11 12:22                                                                                             ` Christian Zigotzky
2019-11-12 14:41                                                                                             ` Christoph Hellwig
2019-11-12 14:41                                                                                               ` Christoph Hellwig
2019-11-12 14:41                                                                                               ` Christoph Hellwig
2019-11-12 14:41                                                                                               ` Christoph Hellwig
2019-11-12 22:58                                                                                               ` Christian Zigotzky
2019-11-12 22:58                                                                                                 ` Christian Zigotzky
2019-11-12 22:58                                                                                                 ` Christian Zigotzky
2019-11-13 10:14                                                                                               ` Christian Zigotzky
2019-11-13 10:14                                                                                                 ` Christian Zigotzky
2019-11-13 10:14                                                                                                 ` Christian Zigotzky
2019-11-13 11:02                                                                                                 ` Christoph Hellwig
2019-11-13 11:02                                                                                                   ` Christoph Hellwig
2019-11-13 11:02                                                                                                   ` Christoph Hellwig
2018-11-29 17:02     ` use generic DMA mapping code in powerpc V4 Christoph Hellwig
2018-11-29 17:02       ` Christoph Hellwig
2018-11-30  3:17   ` Benjamin Herrenschmidt
2018-11-30  3:17     ` Benjamin Herrenschmidt
2018-12-08 17:03 ` Christoph Hellwig
2018-12-08 17:03   ` Christoph Hellwig
2018-12-16 16:51 ` Christoph Hellwig
2018-12-17  1:14   ` Michael Ellerman
2018-11-29 19:45 Rui Salvaterra
2018-11-29 19:45 ` Rui Salvaterra
2018-11-30 10:32 ` Christoph Hellwig
2018-11-30 10:32   ` Christoph Hellwig
2018-11-30 11:44   ` Rui Salvaterra
2018-11-30 11:44     ` Rui Salvaterra
2018-11-30 16:41     ` Rui Salvaterra
2018-11-30 16:41       ` Rui Salvaterra
2018-12-02  6:11     ` Benjamin Herrenschmidt
2018-12-08 17:17       ` Christoph Hellwig
2018-12-08 17:17         ` Christoph Hellwig
2018-12-10 17:04         ` Rui Salvaterra
2018-12-10 17:04           ` Rui Salvaterra
2018-12-10 19:33           ` Christoph Hellwig
2018-12-10 19:33             ` Christoph Hellwig
2018-12-10 20:03             ` Rui Salvaterra
2018-12-10 20:03               ` Rui Salvaterra
2018-12-10 20:49             ` Benjamin Herrenschmidt
2018-12-11  9:37               ` Rui Salvaterra
2018-12-11  9:37                 ` Rui Salvaterra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8694431d-c669-b7b9-99fa-e99db5d45a7d@xenosoft.de \
    --to=chzigotzky@xenosoft.de \
    --cc=benh@kernel.crashing.org \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux-foundation.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=olof@lixom.net \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.