+++ /dev/null
-From e8c5af5c56f6481c9f6b7141b8a934242cc0b36c Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 2 Oct 2023 22:08:02 -0500
-Subject: powerpc/pseries/iommu: enable_ddw incorrectly returns direct mapping
- for SR-IOV device
-
-From: Gaurav Batra <gbatra@linux.vnet.ibm.com>
-
-[ Upstream commit 3bf983e4e93ce8e6d69e9d63f52a66ec0856672e ]
-
-When a device is initialized, the driver invokes dma_supported() twice -
-first for streaming mappings followed by coherent mappings. For an
-SR-IOV device, default window is deleted and DDW created. With vPMEM
-enabled, TCE mappings are dynamically created for both vPMEM and SR-IOV
-device. There are no direct mappings.
-
-First time when dma_supported() is called with 64 bit mask, DDW is created
-and marked as dynamic window. The second time dma_supported() is called,
-enable_ddw() finds existing window for the device and incorrectly returns
-it as "direct mapping".
-
-This only happens when size of DDW is big enough to map max LPAR memory.
-
-This results in streaming TCEs to not get dynamically mapped, since code
-incorrently assumes these are already pre-mapped. The adapter initially
-comes up but goes down due to EEH.
-
-Fixes: 381ceda88c4c ("powerpc/pseries/iommu: Make use of DDW for indirect mapping")
-Cc: stable@vger.kernel.org # v5.15+
-Signed-off-by: Gaurav Batra <gbatra@linux.vnet.ibm.com>
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-Link: https://msgid.link/20231003030802.47914-1-gbatra@linux.vnet.ibm.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/powerpc/platforms/pseries/iommu.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
-index aa5f8074e9b10..bee61292de23b 100644
---- a/arch/powerpc/platforms/pseries/iommu.c
-+++ b/arch/powerpc/platforms/pseries/iommu.c
-@@ -891,7 +891,8 @@ static int remove_ddw(struct device_node *np, bool remove_prop, const char *win_
- return 0;
- }
-
--static bool find_existing_ddw(struct device_node *pdn, u64 *dma_addr, int *window_shift)
-+static bool find_existing_ddw(struct device_node *pdn, u64 *dma_addr, int *window_shift,
-+ bool *direct_mapping)
- {
- struct dma_win *window;
- const struct dynamic_dma_window_prop *dma64;
-@@ -904,6 +905,7 @@ static bool find_existing_ddw(struct device_node *pdn, u64 *dma_addr, int *windo
- dma64 = window->prop;
- *dma_addr = be64_to_cpu(dma64->dma_base);
- *window_shift = be32_to_cpu(dma64->window_shift);
-+ *direct_mapping = window->direct;
- found = true;
- break;
- }
-@@ -1253,10 +1255,8 @@ static bool enable_ddw(struct pci_dev *dev, struct device_node *pdn)
-
- mutex_lock(&dma_win_init_mutex);
-
-- if (find_existing_ddw(pdn, &dev->dev.archdata.dma_offset, &len)) {
-- direct_mapping = (len >= max_ram_len);
-+ if (find_existing_ddw(pdn, &dev->dev.archdata.dma_offset, &len, &direct_mapping))
- goto out_unlock;
-- }
-
- /*
- * If we already went through this for a previous function of
---
-2.42.0
-
perf-intel-pt-fix-async-branch-flags.patch
selftests-resctrl-add-missing-spdx-license-to-makefi.patch
selftests-resctrl-move-_gnu_source-define-into-makef.patch
-powerpc-pseries-iommu-enable_ddw-incorrectly-returns.patch
smb3-fix-touch-h-of-symlink.patch
asoc-intel-move-soc_intel_is_foo-helpers-to-a-generi.patch
asoc-sof-sof-pci-dev-use-community-key-on-all-up-boa.patch
+++ /dev/null
-From 4df071627fb4624e8327d931278e835914f40deb Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 2 Oct 2023 22:08:02 -0500
-Subject: powerpc/pseries/iommu: enable_ddw incorrectly returns direct mapping
- for SR-IOV device
-
-From: Gaurav Batra <gbatra@linux.vnet.ibm.com>
-
-[ Upstream commit 3bf983e4e93ce8e6d69e9d63f52a66ec0856672e ]
-
-When a device is initialized, the driver invokes dma_supported() twice -
-first for streaming mappings followed by coherent mappings. For an
-SR-IOV device, default window is deleted and DDW created. With vPMEM
-enabled, TCE mappings are dynamically created for both vPMEM and SR-IOV
-device. There are no direct mappings.
-
-First time when dma_supported() is called with 64 bit mask, DDW is created
-and marked as dynamic window. The second time dma_supported() is called,
-enable_ddw() finds existing window for the device and incorrectly returns
-it as "direct mapping".
-
-This only happens when size of DDW is big enough to map max LPAR memory.
-
-This results in streaming TCEs to not get dynamically mapped, since code
-incorrently assumes these are already pre-mapped. The adapter initially
-comes up but goes down due to EEH.
-
-Fixes: 381ceda88c4c ("powerpc/pseries/iommu: Make use of DDW for indirect mapping")
-Cc: stable@vger.kernel.org # v5.15+
-Signed-off-by: Gaurav Batra <gbatra@linux.vnet.ibm.com>
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-Link: https://msgid.link/20231003030802.47914-1-gbatra@linux.vnet.ibm.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/powerpc/platforms/pseries/iommu.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
-index 97b026130c71b..ad089d3f2d7c1 100644
---- a/arch/powerpc/platforms/pseries/iommu.c
-+++ b/arch/powerpc/platforms/pseries/iommu.c
-@@ -909,7 +909,8 @@ static int remove_ddw(struct device_node *np, bool remove_prop, const char *win_
- return 0;
- }
-
--static bool find_existing_ddw(struct device_node *pdn, u64 *dma_addr, int *window_shift)
-+static bool find_existing_ddw(struct device_node *pdn, u64 *dma_addr, int *window_shift,
-+ bool *direct_mapping)
- {
- struct dma_win *window;
- const struct dynamic_dma_window_prop *dma64;
-@@ -922,6 +923,7 @@ static bool find_existing_ddw(struct device_node *pdn, u64 *dma_addr, int *windo
- dma64 = window->prop;
- *dma_addr = be64_to_cpu(dma64->dma_base);
- *window_shift = be32_to_cpu(dma64->window_shift);
-+ *direct_mapping = window->direct;
- found = true;
- break;
- }
-@@ -1275,10 +1277,8 @@ static bool enable_ddw(struct pci_dev *dev, struct device_node *pdn)
-
- mutex_lock(&dma_win_init_mutex);
-
-- if (find_existing_ddw(pdn, &dev->dev.archdata.dma_offset, &len)) {
-- direct_mapping = (len >= max_ram_len);
-+ if (find_existing_ddw(pdn, &dev->dev.archdata.dma_offset, &len, &direct_mapping))
- goto out_unlock;
-- }
-
- /*
- * If we already went through this for a previous function of
---
-2.42.0
-
net-ravb-keep-reverse-order-of-operations-in-ravb_re.patch
kvm-x86-fix-lapic-timer-interrupt-lost-after-loading.patch
pci-lengthen-reset-delay-for-videopropulsion-torrent.patch
-powerpc-pseries-iommu-enable_ddw-incorrectly-returns.patch
s390-cmma-fix-handling-of-swapper_pg_dir-and-invalid.patch
pci-qcom-ep-add-dedicated-callback-for-writing-to-db.patch
fbdev-stifb-make-the-sti-next-font-pointer-a-32-bit-.patch