Page MenuHomeFreeBSD

D20789.id59154.diff
No OneTemporary

D20789.id59154.diff

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
@@ -356,16 +356,26 @@
#define _ioremap_attr(...) NULL
#endif
-#define ioremap_nocache(addr, size) \
- _ioremap_attr((addr), (size), VM_MEMATTR_UNCACHEABLE)
#define ioremap_wc(addr, size) \
_ioremap_attr((addr), (size), VM_MEMATTR_WRITE_COMBINING)
#define ioremap_wb(addr, size) \
_ioremap_attr((addr), (size), VM_MEMATTR_WRITE_BACK)
+#ifdef VM_MEMATTR_DEVICE
+/* on aarch64, it's really important to map as DEVICE, otherwise expect freezes */
+#define ioremap_nocache(addr, size) \
+ _ioremap_attr((addr), (size), VM_MEMATTR_DEVICE)
+#define ioremap_wt(addr, size) \
+ _ioremap_attr((addr), (size), VM_MEMATTR_DEVICE)
+#define ioremap(addr, size) \
+ _ioremap_attr((addr), (size), VM_MEMATTR_DEVICE)
+#else
+#define ioremap_nocache(addr, size) \
+ _ioremap_attr((addr), (size), VM_MEMATTR_UNCACHEABLE)
#define ioremap_wt(addr, size) \
_ioremap_attr((addr), (size), VM_MEMATTR_WRITE_THROUGH)
#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))

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 23, 12:56 PM (5 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24091877
Default Alt Text
D20789.id59154.diff (1 KB)

Event Timeline