linux/arch/powerpc/platforms
Nishanth Aravamudan 61435690a9 powerpc/pseries: close DDW race between functions of adapter
Given a PCI device with multiple functions in a DDW capable slot, the
following situation can be encountered: When the first function sets a
64-bit DMA mask, enable_ddw() will be called and we can fail to properly
configure DDW (the most common reason being the new DMA window's size is
not large enough to map all of an LPAR's memory). With the recent
changes to DDW, we remove the base window in order to determine if the
new window is of sufficient size to cover an LPAR's memory. We correctly
replace the base window if we find that not to be the case. However,
once we go through and re-configured 32-bit DMA via the IOMMU, the next
function of the adapter will go through the same process. And since DDW
is a characteristic of the slot itself, we are most likely going to fail
again. But to determine we are going to fail the second slot, we again
remove the base window -- but that is now in-use by the first
function/driver, which might be issuing I/O already.

To close this window, keep a list of all the failed struct device_nodes
that have failed to configure DDW. If the current device_node is in that
list, just fail out immediately and fall back to 32-bit DMA without
doing any DDW manipulation.

Signed-off-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
2013-04-18 13:04:00 +10:00
..
8xx Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
40x powerpc: remove unused CONFIG_405EP 2013-04-18 13:03:54 +10:00
44x powerpc/44x: Support OCM(On Chip Memory) for APM821xx SoC and Bluestone board 2013-01-10 15:08:37 +11:00
52xx Merge remote-tracking branch 'agust/next' into next 2013-02-20 11:39:05 +11:00
82xx powerpc/82xx: fix checkpatch warnings for km82xx.c 2013-02-13 07:49:04 -06:00
83xx powerpc/83xx: apply mpc8360e quirk for kmeter1 only when par_io is present 2013-02-13 07:49:07 -06:00
85xx sgy-cts1000: Remove __dev* attributes 2013-03-18 18:49:10 -07:00
86xx Merge branch 'master' into for-next 2013-01-29 10:48:30 +01:00
512x Merge remote-tracking branch 'agust/next' into next 2013-02-20 11:39:05 +11:00
amigaone pcspkr: Cleanup Kconfig dependencies 2011-06-09 15:01:41 +02:00
cell fs: Limit sys_mount to only request filesystem modules. 2013-03-03 19:36:31 -08:00
chrp POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
embedded6xx powerpc: remove CONFIG_MPC10X_OPENPIC 2013-04-18 13:03:55 +10:00
maple POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
pasemi powerpc/pasemi: Fix crash on reboot 2013-01-29 10:18:14 +11:00
powermac POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
powernv powerpc/powernv: Use MSI bitmap to manage IRQs 2013-04-18 13:03:59 +10:00
ps3 powerpc: Use PTR_RET instead of IS_ERR/PTR_ERR 2013-04-18 13:03:48 +10:00
pseries powerpc/pseries: close DDW race between functions of adapter 2013-04-18 13:04:00 +10:00
wsp powerpc: drop even more unused Kconfig symbols 2013-04-18 13:03:55 +10:00
fsl_uli1575.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
Kconfig powerpc: remove PReP platform 2013-04-18 13:03:53 +10:00
Kconfig.cputype powerpc: Remove last traces of POWER4_ONLY 2013-03-13 10:06:49 +11:00
Makefile powerpc: Remove the main legacy iSerie platform code 2012-03-09 10:35:11 +11:00