Commit 1a047cc7 authored by Alexey Kardashevskiy's avatar Alexey Kardashevskiy Committed by Michael Ellerman

powerpc/pseries/dma: Enable SWIOTLB

So far the pseries platforms has always been using IOMMU making
SWIOTLB unnecessary. Now we want secure guests which means devices can
only access certain areas of guest physical memory; we are going to
use SWIOTLB for this purpose.

This allows SWIOTLB for pseries. By default there is no change in
behavior.

This enables SWIOTLB when the "swiotlb" kernel parameter is set to
"force".

With the SWIOTLB enabled, the kernel creates a directly mapped DMA
window (using the usual DDW mechanism) and implements SWIOTLB on top
of that.
Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent efd176a0
...@@ -23,6 +23,7 @@ config PPC_PSERIES ...@@ -23,6 +23,7 @@ config PPC_PSERIES
select ARCH_RANDOM select ARCH_RANDOM
select PPC_DOORBELL select PPC_DOORBELL
select FORCE_SMP select FORCE_SMP
select SWIOTLB
default y default y
config PPC_SPLPAR config PPC_SPLPAR
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_pci.h> #include <linux/of_pci.h>
#include <linux/memblock.h> #include <linux/memblock.h>
#include <linux/swiotlb.h>
#include <asm/mmu.h> #include <asm/mmu.h>
#include <asm/processor.h> #include <asm/processor.h>
...@@ -71,6 +72,7 @@ ...@@ -71,6 +72,7 @@
#include <asm/isa-bridge.h> #include <asm/isa-bridge.h>
#include <asm/security_features.h> #include <asm/security_features.h>
#include <asm/asm-const.h> #include <asm/asm-const.h>
#include <asm/swiotlb.h>
#include "pseries.h" #include "pseries.h"
#include "../../../../drivers/pci/pci.h" #include "../../../../drivers/pci/pci.h"
...@@ -797,6 +799,9 @@ static void __init pSeries_setup_arch(void) ...@@ -797,6 +799,9 @@ static void __init pSeries_setup_arch(void)
} }
ppc_md.pcibios_root_bridge_prepare = pseries_root_bridge_prepare; ppc_md.pcibios_root_bridge_prepare = pseries_root_bridge_prepare;
if (swiotlb_force == SWIOTLB_FORCE)
ppc_swiotlb_enable = 1;
} }
static void pseries_panic(char *str) static void pseries_panic(char *str)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment