Re: [PATCH] iommu: intel: Flush the IOTLB to get rid of the initial kdump mappings

From: David Woodhouse
Date: Fri May 05 2017 - 16:11:27 EST


On Fri, 2017-05-05 at 11:39 -0700, KarimAllah Ahmed wrote:
> Ever since commit 091d42e43d ("iommu/vt-d: Copy translation tables from
> old kernel") the kdump kernel copies the IOMMU context tables from the
> previous kernel. Each device mappings will be destroyed once the driver
> for the respective device takes over.
>
> This unfortunately breaks the workflow of mapping and unmapping a new
> context to the IOMMU. The mapping function assumes that either:
>
> 1) Unmapping did the proper IOMMU flushing and it only ever flush if the
> ÂÂÂIOMMU unit supports caching invalid entries.
> 2) The system just booted and the initialization code took care of
> ÂÂÂflushing all IOMMU caches.
>
> This assumption is not true for the kdump kernel since the context
> tables have been copied from the previous kernel and translations could
> have been cached ever since. So make sure to flush the IOTLB as well
> when we destroy these old copied mappings.
>
> Cc: Joerg Roedel <joro@xxxxxxxxxx>
> Cc: David Woodhouse <dwmw2@xxxxxxxxxxxxx>
> Cc: David Woodhouse <dwmw@xxxxxxxxxxxx>
> Cc: Anthony Liguori <aliguori@xxxxxxxxxx>
> Signed-off-by: KarimAllah Ahmed <karahmed@xxxxxxxxx>

Acked-by: David Woodhouse <dwmw@xxxxxxxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx v4.2+

I'm still moderately unhappy about the whole "preserve existing
mappings during kdump" thing, and wanted to have a PCI quirk for the
known-broken-can't-be-reset-after-fault devices, and trigger this
behaviour only then. Although I have a vague recollection of there
being a slightly saner justification for it... perhaps this should be
documented, if there is one?

Attachment: smime.p7s
Description: S/MIME cryptographic signature