]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/iommu/apple-dart.c
iommu/vt-d: Fix unmap_pages support
[mirror_ubuntu-jammy-kernel.git] / drivers / iommu / apple-dart.c
index fdfa39ec2a4d4a50d87d5fa9502efc7b1170bc61..ad69eeb5ac5ba6ca4fa554e20f3c8bac04ad9c83 100644 (file)
@@ -70,6 +70,8 @@
 #define DART_ERROR_ADDR_HI 0x54
 #define DART_ERROR_ADDR_LO 0x50
 
+#define DART_STREAMS_ENABLE 0xfc
+
 #define DART_TCR(sid) (0x100 + 4 * (sid))
 #define DART_TCR_TRANSLATE_ENABLE BIT(7)
 #define DART_TCR_BYPASS0_ENABLE BIT(8)
@@ -301,6 +303,9 @@ static int apple_dart_hw_reset(struct apple_dart *dart)
        apple_dart_hw_disable_dma(&stream_map);
        apple_dart_hw_clear_all_ttbrs(&stream_map);
 
+       /* enable all streams globally since TCR is used to control isolation */
+       writel(DART_STREAM_ALL, dart->regs + DART_STREAMS_ENABLE);
+
        /* clear any pending errors before the interrupt is unmasked */
        writel(readl(dart->regs + DART_ERROR), dart->regs + DART_ERROR);