• Nishanth Aravamudan's avatar
    pseries/iommu: Restore iommu table pointer when restoring iommu ops · eb0dd411
    Nishanth Aravamudan authored
    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: default avatarNishanth 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: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    eb0dd411
iommu.c 32.4 KB