diff options
Diffstat (limited to 'debian/patches-rt/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch')
-rw-r--r-- | debian/patches-rt/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/debian/patches-rt/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch b/debian/patches-rt/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch index aa70e602b..7d99de126 100644 --- a/debian/patches-rt/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch +++ b/debian/patches-rt/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch @@ -2,7 +2,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 26 Mar 2019 18:31:54 +0100 Subject: [PATCH] powerpc/pseries/iommu: Use a locallock instead local_irq_save() -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.0/older/patches-5.0.10-rt7.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.2/older/patches-5.2-rt1.tar.xz The locallock protects the per-CPU variable tce_page. The function attempts to allocate memory while tce_page is protected (by disabling @@ -18,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c -@@ -38,6 +38,7 @@ +@@ -24,6 +24,7 @@ #include <linux/of.h> #include <linux/iommu.h> #include <linux/rculist.h> @@ -26,7 +26,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> #include <asm/io.h> #include <asm/prom.h> #include <asm/rtas.h> -@@ -191,6 +192,7 @@ static int tce_build_pSeriesLP(struct io +@@ -177,6 +178,7 @@ static int tce_build_pSeriesLP(struct io } static DEFINE_PER_CPU(__be64 *, tce_page); @@ -34,7 +34,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> static int tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum, long npages, unsigned long uaddr, -@@ -211,7 +213,8 @@ static int tce_buildmulti_pSeriesLP(stru +@@ -197,7 +199,8 @@ static int tce_buildmulti_pSeriesLP(stru direction, attrs); } @@ -44,7 +44,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> tcep = __this_cpu_read(tce_page); -@@ -222,7 +225,7 @@ static int tce_buildmulti_pSeriesLP(stru +@@ -208,7 +211,7 @@ static int tce_buildmulti_pSeriesLP(stru tcep = (__be64 *)__get_free_page(GFP_ATOMIC); /* If allocation fails, fall back to the loop implementation */ if (!tcep) { @@ -53,7 +53,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, direction, attrs); } -@@ -256,7 +259,7 @@ static int tce_buildmulti_pSeriesLP(stru +@@ -242,7 +245,7 @@ static int tce_buildmulti_pSeriesLP(stru tcenum += limit; } while (npages > 0 && !rc); @@ -62,7 +62,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> if (unlikely(rc == H_NOT_ENOUGH_RESOURCES)) { ret = (int)rc; -@@ -414,13 +417,14 @@ static int tce_setrange_multi_pSeriesLP( +@@ -400,13 +403,14 @@ static int tce_setrange_multi_pSeriesLP( u64 rc = 0; long l, limit; @@ -79,7 +79,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> return -ENOMEM; } __this_cpu_write(tce_page, tcep); -@@ -466,7 +470,7 @@ static int tce_setrange_multi_pSeriesLP( +@@ -452,7 +456,7 @@ static int tce_setrange_multi_pSeriesLP( /* error cleanup: caller will clear whole range */ |