public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Joerg Roedel <joro@8bytes.org>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: Chris Wright <chrisw@sous-sol.org>,
	Neil Horman <nhorman@redhat.com>,
	Neil Horman <nhorman@tuxdriver.com>,
	kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
	hbabu@us.ibm.com, iommu@lists.linux-foundation.org,
	"Eric W. Biederman" <ebiederm@xmission.com>
Subject: Re: [PATCH 1/2] x86/amd-iommu: enable iommu before attaching devices
Date: Mon, 5 Apr 2010 16:32:24 +0200	[thread overview]
Message-ID: <20100405143224.GC29758@8bytes.org> (raw)
In-Reply-To: <20100405141750.GB876@redhat.com>

On Mon, Apr 05, 2010 at 10:17:50AM -0400, Vivek Goyal wrote:

> And by default valid PTEs are not present (except for some unity mappings
> as specified by ACPI tables), so we will end the transaction with
> IO_PAGE_FAULT? I am assuming that we will not set unity mappings for
> kernel reserved area and so either an in-flight DMA will not be allowed
> and IO_PAGE_FAULT will be logged or it will be allowed to some unity
> mapping which is not mapped to kdump kernel area hence no corruption of
> capture kernel?

Right. The unity-mappings are typically used for devices that are
controled by the BIOS and define memory regions owned by the BIOS. So
Linux will not use the unity mapped regions anyway, not in the first
kernel and not in the kdump kernel.

> > With paging mode == 0 your statement about read-write
> > unity-mapping is true. This is used for a pass-through domain (iommu=pt)
> > btw.
> 
> Ok, so in case of pass through, I think one just needs to make sure that
> don't use iommu=pt in second kernel if one did not use iommu=pt in first kernel.
> Otherwise you can redirect the the in-flight DMAs in second kernel to an
> entirely unintended physical memory.

The kdump kernel should use the same setting as the plain kernel.

> So following seems to be the summary.
> 
> - Don't disable AMD IOMMU after crash in machine_crash_shutdown(), because
>   disabling it can direct in-flight DMAs to unintended physical meory
>   areas and can corrupt other data structures.

Right, that really seems to be the best solution.

> - Once the iommu is enabled in second kernel, most likely in-flight DMAs
>   will end with IO_PAGE_FAULT (iommu!=pt). Only selective unity mapping
>   areas will be setup based on ACPI tables and these should be BIOS region
>   and should not overlap with kdump reserved memory. iommu=pt should also
>   be safe if iommu=pt was used in first kernel also.

Right. With Chris' patches the DTE entries of newly attached domains are
flushed at IOMMU initialization in the kdump kernel. So the new data
structures are in place and used by the hardware.

> - Only small window where in-flight DMA can corrupt things is when we
>   are initializing iommu in second kernel. (We first disable iommu and then
>   enable it back). During this small period translation will be disabled and
>   some IO can go to unintended address. And there does not seem to be any easy
>   way to plug this hole.

Right.

> Have I got it right?

Yes :-)


	Joerg

  reply	other threads:[~2010-04-05 14:32 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-31 15:24 [PATCH] amd iommu: force flush of iommu prior during shutdown Neil Horman
2010-03-31 15:54 ` Vivek Goyal
2010-03-31 18:28   ` Neil Horman
2010-03-31 18:57     ` Eric W. Biederman
2010-03-31 19:18       ` Neil Horman
2010-03-31 19:51         ` Eric W. Biederman
2010-03-31 20:27           ` Neil Horman
2010-04-01  4:04             ` Eric W. Biederman
2010-04-01 12:49               ` Neil Horman
2010-04-01 14:29             ` Joerg Roedel
2010-04-01 14:47               ` Neil Horman
2010-04-01 15:56                 ` Joerg Roedel
2010-04-01 17:11                   ` Neil Horman
2010-04-01 20:14                     ` Joerg Roedel
2010-04-02  0:00                       ` Neil Horman
2010-04-02  0:30                         ` Chris Wright
2010-04-02  1:23                           ` [PATCH 1/2] x86/amd-iommu: enable iommu before attaching devices Chris Wright
2010-04-02  1:31                             ` [PATCH 2/2] x86/amd-iommu: warn when issuing command to uninitiailed cmd buffer Chris Wright
2010-04-02  1:35                             ` [PATCH 1/2] x86/amd-iommu: enable iommu before attaching devices Neil Horman
2010-04-02  1:38                               ` Chris Wright
2010-04-02  9:11                             ` Joerg Roedel
2010-04-02 23:59                               ` Chris Wright
2010-04-02 15:59                             ` Vivek Goyal
2010-04-02 22:38                               ` Chris Wright
2010-04-02 22:55                                 ` Eric W. Biederman
2010-04-02 23:57                                   ` Chris Wright
2010-04-03 17:38                               ` Joerg Roedel
2010-04-05 14:17                                 ` Vivek Goyal
2010-04-05 14:32                                   ` Joerg Roedel [this message]
2010-04-05 15:34                             ` Neil Horman
2010-03-31 18:43   ` [PATCH] amd iommu: force flush of iommu prior during shutdown Eric W. Biederman
2010-03-31 21:25 ` Chris Wright
2010-04-01  1:13   ` Neil Horman
2010-04-01  1:39     ` Chris Wright
2010-04-01  2:24     ` Vivek Goyal
2010-04-01 12:53       ` Neil Horman
2010-04-01 15:02         ` Vivek Goyal
2010-04-01 15:13           ` Neil Horman
2010-04-01  2:44   ` Vivek Goyal
2010-04-01  7:10     ` Chris Wright
2010-04-01 12:56       ` Neil Horman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100405143224.GC29758@8bytes.org \
    --to=joro@8bytes.org \
    --cc=chrisw@sous-sol.org \
    --cc=ebiederm@xmission.com \
    --cc=hbabu@us.ibm.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nhorman@redhat.com \
    --cc=nhorman@tuxdriver.com \
    --cc=vgoyal@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox