• Nishanth Aravamudan's avatar
    pseries/iommu: Remove DDW on kexec · 14b6f00f
    Nishanth Aravamudan authored
    pseries/iommu: remove DDW on kexec
    
    We currently insert a property in the device-tree when we successfully
    configure DDW for a given slot. This was meant to be an optimization to
    speed up kexec/kdump, so that we don't need to make the RTAS calls again
    to re-configured DDW in the new kernel.
    
    However, we end up tripping a plpar_tce_stuff failure on kexec/kdump
    because we unconditionally parse the ibm,dma-window property for the
    node at bus/dev setup time. This property contains the 32-bit DMA window
    LIOBN, which is distinct from the DDW window's. We pass that LIOBN (via
    iommu_table_init -> iommu_table_clear -> tce_free ->
    tce_freemulti_pSeriesLP) to plpar_tce_stuff, which fails because that
    32-bit window is no longer present after
    25ebc45b ("powerpc/pseries/iommu: remove
    default window before attempting DDW manipulation").
    
    I believe the simplest, easiest-to-maintain fix is to just change our
    initcall to, rather than detecting and updating the new kernel's DDW
    knowledge, just remove all DDW configurations. When the drivers
    re-initialize, we will set everything back up as it was before.
    Signed-off-by: default avatarNishanth Aravamudan <nacc@us.ibm.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    14b6f00f
iommu.c 37.2 KB