> +static void *csky_dma_alloc_atomic( > + struct device *dev, > + size_t size, > + dma_addr_t *dma_handle > + ) Can you please use normal kernel coding style? Closing brace on the same line, either two tab indents for the arguments or align them to the first argument: static void *csky_dma_alloc_atomic(struct device *dev, size_t size, dma_addr_t *dma_handle) or: static void *csky_dma_alloc_atomic(struct device *dev, size_t size, dma_addr_t *dma_handle) > + if (DMA_ATTR_NON_CONSISTENT & attrs) > + BUG(); Please don't bug on unknown attributs, they can be safely ignored. > +void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr, > + size_t size, enum dma_data_direction dir) > +{ > + struct page *page = pfn_to_page(paddr >> PAGE_SHIFT); > + unsigned long offset = paddr & ~PAGE_MASK; > + unsigned long vaddr; > + > + if (PageHighMem(page)) > + vaddr = (unsigned long) kmap_atomic(page); This isn't going to work as the size might be larger than PAGE_SIZE.