ACK: [SRU X] [PATCH 1/1] iommu/vt-d: Make sure IOMMUs are off when intel_iommu=off
Stefan Bader
stefan.bader at canonical.com
Wed Jan 9 10:38:46 UTC 2019
On 02.01.19 20:40, Guilherme G. Piccoli wrote:
> From: Joerg Roedel <jroedel at suse.de>
>
> BugLink: https://launchpad.net/bugs/1810328
>
> When booting into a kexec kernel with intel_iommu=off, and
> the previous kernel had intel_iommu=on, the IOMMU hardware
> is still enabled and gets not disabled by the new kernel.
>
> This causes the boot to fail because DMA is blocked by the
> hardware. Disable the IOMMUs when we find it enabled in the
> kexec kernel and boot with intel_iommu=off.
>
> Signed-off-by: Joerg Roedel <jroedel at suse.de>
> (backported from commit 161b28aae1651aa7ad63ec14753aa8a751154340 upstream)
> [gpiccoli: context adjustment]
> Signed-off-by: Guilherme G. Piccoli <gpiccoli at canonical.com>
Acked-by: Stefan Bader <stefan.bader at canonical.com>
> ---
> drivers/iommu/intel-iommu.c | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
> index 49b266433f4c..03f817d118f3 100644
> --- a/drivers/iommu/intel-iommu.c
> +++ b/drivers/iommu/intel-iommu.c
> @@ -4648,6 +4648,15 @@ const struct attribute_group *intel_iommu_groups[] = {
> NULL,
> };
>
> +static void intel_disable_iommus(void)
> +{
> + struct intel_iommu *iommu = NULL;
> + struct dmar_drhd_unit *drhd;
> +
> + for_each_iommu(iommu, drhd)
> + iommu_disable_translation(iommu);
> +}
> +
> int __init intel_iommu_init(void)
> {
> int ret = -ENODEV;
> @@ -4676,8 +4685,15 @@ int __init intel_iommu_init(void)
> goto out_free_dmar;
> }
>
> - if (no_iommu || dmar_disabled)
> + if (no_iommu || dmar_disabled) {
> + /*
> + * Make sure the IOMMUs are switched off, even when we
> + * boot into a kexec kernel and the previous kernel left
> + * them enabled
> + */
> + intel_disable_iommus();
> goto out_free_dmar;
> + }
>
> if (list_empty(&dmar_rmrr_units))
> pr_info("No RMRR found\n");
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20190109/e07d230f/attachment.sig>
More information about the kernel-team
mailing list