Index: sys/compat/linuxkpi/common/include/linux/io.h =================================================================== --- sys/compat/linuxkpi/common/include/linux/io.h +++ sys/compat/linuxkpi/common/include/linux/io.h @@ -364,8 +364,14 @@ _ioremap_attr((addr), (size), VM_MEMATTR_WRITE_BACK) #define ioremap_wt(addr, size) \ _ioremap_attr((addr), (size), VM_MEMATTR_WRITE_THROUGH) +#ifdef VM_MEMATTR_DEVICE +// on aarch64, it's really important to map as DEVICE, otherwise expect freezes +#define ioremap(addr, size) \ + _ioremap_attr((addr), (size), VM_MEMATTR_DEVICE) +#else #define ioremap(addr, size) \ _ioremap_attr((addr), (size), VM_MEMATTR_UNCACHEABLE) +#endif void iounmap(void *addr); #define memset_io(a, b, c) memset((a), (b), (c))