public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Joerg Roedel <joro@8bytes.org>
To: Neil Horman <nhorman@tuxdriver.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>,
	kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
	hbabu@us.ibm.com, iommu@lists.linux-foundation.org,
	Vivek Goyal <vgoyal@redhat.com>
Subject: Re: [PATCH] amd iommu: force flush of iommu prior during shutdown
Date: Thu, 1 Apr 2010 16:29:02 +0200	[thread overview]
Message-ID: <20100401142902.GF24846@8bytes.org> (raw)
In-Reply-To: <20100331202745.GE13406@hmsreliant.think-freely.org>

Hi Neil,

first some general words about the problem you discovered: The problem
is not caused by in-flight DMA. The problem is that the IOMMU hardware
has cached the old DTE entry for the device (including the old
page-table root pointer) and is using it still when the kdump kernel has
booted. We had this problem once and fixed it by flushing a DTE in the
IOMMU before it is used for the first time. This seems to be broken
now. Which kernel have you seen this on?

I am back in office next tuesday and will look into this problem too.

On Wed, Mar 31, 2010 at 04:27:45PM -0400, Neil Horman wrote:
> So I'm officially rescinding this patch.

Yeah, the right solution to this problem is to find out why every DTE is
not longer flushed before first use.

> It apparently just covered up the problem, rather than solved it
> outright.  This is going to take some more thought on my part.  I read
> the code a bit closer, and the amd iommu on boot up currently marks
> all its entries as valid and having a valid translation (because if
> they're marked as invalid they're passed through untranslated which
> strikes me as dangerous, since it means a dma address treated as a bus
> address could lead to memory corruption.  The saving grace is that
> they are marked as non-readable and non-writeable, so any device doing
> a dma after the reinit should get logged (which it does), and then
> target aborted (which should effectively squash the translation)

Right. The default for all devices is to forbid DMA.

> I'm starting to wonder if:
> 
> 1) some dmas are so long lived they start aliasing new dmas that get mapped in
> the kdump kernel leading to various erroneous behavior

At least not in this case. Even when this is true the DMA would target
memory of the crashed kernel and not the kdump area. This is not even
memory corruption because the device will write to memory the driver has
allocated for it.

> 2) a slew of target aborts to some hardware results in them being in an
> inconsistent state

Thats indeed true. I have seen that with ixgbe cards for example. They
seem to be really confused after an target abort.

> I'm going to try marking the dev table on shutdown such that all devices have no
> read/write permissions to see if that changes the situation.  It should I think
> give me a pointer as to weather (1) or (2) is the more likely problem.

Probably not. You still need to flush the old entries out of the IOMMU.

Thanks,

	Joerg


  parent reply	other threads:[~2010-04-01 14:29 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 [this message]
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
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=20100401142902.GF24846@8bytes.org \
    --to=joro@8bytes.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@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