]> git.baikalelectronics.ru Git - kernel.git/commit
pseries/iommu: Restore iommu table pointer when restoring iommu ops
authorNishanth Aravamudan <nacc@us.ibm.com>
Mon, 9 May 2011 12:58:03 +0000 (12:58 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 19 May 2011 04:30:43 +0000 (14:30 +1000)
commit74d8654fd3694331fb2578e44cc633bc245405ec
treeafb5a630b5ea5e9fb0bc869106759fb0b120630c
parent6c18e0e26f8289021156480e1ccf1853d8dad7ed
pseries/iommu: Restore iommu table pointer when restoring iommu ops

When we swtich to direct dma ops, we set the dma data union to have the
dma offset.  When we switch back to iommu table ops because of a later
dma_set_mask, we need to restore the iommu table pointer. Without this
change, crashes have been observed on kexec where (for reasons still
being investigated) we fall back to a 32-bit dma mask on a particular
device and then panic because the table pointer is not valid.

The easiset way to find this value is to call
pci_dma_dev_setup_pSeriesLP which will search up the pci tree until it
finds the node with the table.

Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Cc: Milton Miller <miltonm@bga.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Anton Blanchard <anton@samba.org>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/pseries/iommu.c