On Thu, Apr 13, 2023 at 2:52 PM Arnd Bergmann <arnd@xxxxxxxx> wrote: > On Thu, Apr 13, 2023, at 14:13, Biju Das wrote: > > FYI, this patch breaks on RZ/G2L SMARC EVK board and Arnd will send V2 > > for fixing this issue. > > > > [10:53] <biju> [ 3.384408] Unable to handle kernel paging request at > > virtual address 000000004afb0080 > > Right, sorry about this, I accidentally removed the 'phys_to_virt()' > conversion on arm64. Meh, I missed that, so I ended up bisecting this same failure... This patch is now commit 801f1883c4bb70cc ("dma-mapping: replace custom code with generic implementation") in esmil/jh7100-dmapool, and broke booting on R-Car Gen3. The following gmail-whitespace-damaged patch fixes that: diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index 97b7cea5eb23aedd..77e0b68b43e5849a 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c @@ -15,17 +15,23 @@ static inline void arch_dma_cache_wback(phys_addr_t paddr, size_t size) { - dcache_clean_poc(paddr, paddr + size); + unsigned long start = (unsigned long)phys_to_virt(paddr); + + dcache_clean_poc(start, start + size); } static inline void arch_dma_cache_inv(phys_addr_t paddr, size_t size) { - dcache_inval_poc(paddr, paddr + size); + unsigned long start = (unsigned long)phys_to_virt(paddr); + + dcache_inval_poc(start, start + size); } static inline void arch_dma_cache_wback_inv(phys_addr_t paddr, size_t size) { - dcache_clean_inval_poc(paddr, paddr + size); + unsigned long start = (unsigned long)phys_to_virt(paddr); + + dcache_clean_inval_poc(start, start + size); } static inline bool arch_sync_dma_clean_before_fromdevice(void) Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds