Alexey Kardashevskiy <a...@ozlabs.ru> writes:
> diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
> index f0dc680..cbcc615 100644
> --- a/arch/powerpc/kernel/iommu.c
> +++ b/arch/powerpc/kernel/iommu.c
> @@ -993,15 +994,19 @@ int iommu_tce_check_gpa(unsigned long page_shift, 
> unsigned long gpa)
>  }
>  EXPORT_SYMBOL_GPL(iommu_tce_check_gpa);
>  
> -long iommu_tce_xchg(struct iommu_table *tbl, unsigned long entry,
> -             unsigned long *hpa, enum dma_data_direction *direction)
> +long iommu_tce_xchg(struct mm_struct *mm, struct iommu_table *tbl,
> +             unsigned long entry, unsigned long *hpa,
> +             enum dma_data_direction *direction)
>  {
>       long ret;
> +     unsigned long size = 0;
>  
>       ret = tbl->it_ops->exchange(tbl, entry, hpa, direction);
>  
>       if (!ret && ((*direction == DMA_FROM_DEVICE) ||
> -                     (*direction == DMA_BIDIRECTIONAL)))
> +                     (*direction == DMA_BIDIRECTIONAL)) &&
> +                     !mm_iommu_is_devmem(mm, *hpa, tbl->it_page_shift,
> +                                     &size))

This is breaking a bunch of configs with:

  arch/powerpc/kernel/iommu.c:1008:5: error: implicit declaration of function 
'mm_iommu_is_devmem'; did you mean 'iommu_del_device'? 
[-Werror=implicit-function-declaration]

eg: http://kisskb.ellerman.id.au/kisskb/buildresult/13623063/

> diff --git a/arch/powerpc/mm/mmu_context_iommu.c 
> b/arch/powerpc/mm/mmu_context_iommu.c
> index 25a4b7f7..06fdbd3 100644
> --- a/arch/powerpc/mm/mmu_context_iommu.c
> +++ b/arch/powerpc/mm/mmu_context_iommu.c
> @@ -384,6 +432,33 @@ extern void mm_iommu_ua_mark_dirty_rm(struct mm_struct 
> *mm, unsigned long ua)
>       *pa |= MM_IOMMU_TABLE_GROUP_PAGE_DIRTY;
>  }
>  
> +extern bool mm_iommu_is_devmem(struct mm_struct *mm, unsigned long hpa,
> +             unsigned int pageshift, unsigned long *size)
> +{

You shouldn't need extern in a C file.

cheers

Reply via email to