[PATCH kernel RFC 0/2] powerpc/ioda2: An attempt to allow DMA masks between 32 and 59

Alexey Kardashevskiy aik at ozlabs.ru
Fri Apr 26 17:39:29 AEST 2019



On 23/04/2019 10:58, Russell Currey wrote:
> On Fri, 2019-04-12 at 16:44 +1000, Alexey Kardashevskiy wrote:
>> This is an attempt to allow DMA mask 40 or similar which are not
>> large
>> enough to use either a PHB3 bypass mode or a sketchy bypass.
>>
>> This is based on sha1
>> 582549e3fbe1 Linus Torvalds Merge tag 'for-linus' of
>> git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma 
>>
>> Please comment. Thanks.
> 
> Seems to uniformly fail on POWER8 and sometimes on P9 too.
> 
> On P8:
> 
> [    2.423206] Failed to allocate a TCE memory, level shift=26
> [    2.423351] pci 0001:03     : [PE# fd] Failed to create 32-bit TCE
> table, err -12
> 
> On P9:
> 
> [    0.303055] pci 0003:01     : [PE# 1fd] Setting up 32-bit TCE table
> at 0..80000000
> [    0.303119] Failed to allocate a TCE memory, level shift=30
> [    0.303147] pci 0003:01     : [PE# 1fd] Failed to create 32-bit TCE
> table, err -12
> 
> Is it selecting the wrong TCE size?

Nah, it is too big level size, i.e. it is bigger than max allowed order.

Try:

#define POWERNV_IOMMU_DEFAULT_LEVELS 3



>> Alexey Kardashevskiy (2):
>   powerpc/powernv/ioda: Allocate TCE table
>> levels on demand for default
>     DMA window
>   powerpc/powernv/ioda2:
>> Create bigger default window with 64k IOMMU
>     pages
> 
>  arch/powerpc/include/asm/iommu.h              |  8 ++-
>  arch/powerpc/platforms/powernv/pci.h          |  2 +-
>  arch/powerpc/kernel/iommu.c                   | 58 +++++++++++++--
> ----
>  arch/powerpc/platforms/powernv/pci-ioda-tce.c | 19 +++---
>  arch/powerpc/platforms/powernv/pci-ioda.c     | 14 ++++-
>  5 files changed, 66 insertions(+), 35 deletions(-)
> 
> 

-- 
Alexey


More information about the Linuxppc-dev mailing list