OpenCloudOS-Kernel/arch/powerpc/platforms
Gaurav Batra 8db5cb33d6 powerpc/pseries/iommu: enable_ddw incorrectly returns direct mapping for SR-IOV device
[ 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: 381ceda88c ("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>
2023-12-08 08:52:24 +01:00
..
4xx powerpc/4xx: Add missing includes to fix no previous prototype errors 2023-08-18 17:03:15 +10:00
8xx TTY/Serial driver changes for 6.6-rc1 2023-09-01 09:38:00 -07:00
40x powerpc updates for 6.4 2023-04-28 16:24:32 -07:00
44x powerpc/4xx: Remove pika_dtm_[un]register_shutdown() to fix no previous prototype 2023-08-18 17:03:14 +10:00
52xx powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
82xx powerpc/82xx: Select FSL_SOC 2023-09-18 12:23:48 +10:00
83xx powerpc/83xx: Split usb.c 2023-08-18 17:03:14 +10:00
85xx powerpc updates for 6.6 2023-08-31 12:43:10 -07:00
86xx powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
512x powerpc/512x: Make mpc512x_select_reset_compat() static 2023-08-18 17:02:40 +10:00
amigaone powerpc: Make generic_calibrate_decr() the default 2023-03-16 08:56:48 +11:00
book3s powerpc/vas: Limit open window failure messages in log bufffer 2023-11-20 11:59:28 +01:00
cell powerpc updates for 6.6 2023-08-31 12:43:10 -07:00
chrp powerpc: Make generic_calibrate_decr() the default 2023-03-16 08:56:48 +11:00
embedded6xx powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
maple powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
microwatt powerpc: Make generic_calibrate_decr() the default 2023-03-16 08:56:48 +11:00
pasemi powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
powermac powerpc updates for 6.6 2023-08-31 12:43:10 -07:00
powernv powerpc/eeh: Use pci_dev_id() to simplify the code 2023-08-25 08:39:30 +10:00
ps3 powerpc/ps3: refactor strncpy usage 2023-08-18 11:48:42 +10:00
pseries powerpc/pseries/iommu: enable_ddw incorrectly returns direct mapping for SR-IOV device 2023-12-08 08:52:24 +01:00
Kconfig powerpc/82xx: Remove CONFIG_8260 and CONFIG_8272 2023-08-18 17:03:14 +10:00
Kconfig.cputype powerpc updates for 6.6 2023-08-31 12:43:10 -07:00
Makefile powerpc: Add Microwatt platform 2021-06-21 21:15:26 +10:00
fsl_uli1575.c powerpc/fsl_uli1575: Mark uli_exclude_device() as static 2023-04-20 10:20:50 +10:00