From: Baoquan He <bhe@redhat.com>
To: Joerg Roedel <jroedel@suse.de>
Cc: iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v8 10/13] iommu/amd: Allocate memory below 4G for dev table if translation pre-enabled
Date: Mon, 31 Jul 2017 18:15:30 +0800 [thread overview]
Message-ID: <20170731101530.GB29157@x1> (raw)
In-Reply-To: <20170728090619.GM24304@x1>
Hi Joerg,
On 07/28/17 at 05:06pm, Baoquan He wrote:
> Hi Joerg,
>
> On 07/27/17 at 05:55pm, Joerg Roedel wrote:
> > On Fri, Jul 21, 2017 at 04:59:08PM +0800, Baoquan He wrote:
> > > AMD pointed out it's unsafe to update the device-table while iommu
> > > is enabled. It turns out that device-table pointer update is split
> > > up into two 32bit writes in the IOMMU hardware. So updating it while
> > > the IOMMU is enabled could have some nasty side effects.
> > >
> > > The only way to work around this is to allocate the device-table below
> > > 4GB if translation is pre-enabled in kdump kernel. If allocation failed,
> > > still use the old one.
> >
> > Not only for the kdump kernel. The old device table must also be below
> > 4GB so that its pointer can be updated with a 32bit write.
> >
> > If the old table is above 4GB you still need the second write to zero
> > the upper parts of the pointer in hardware.
>
> Do you mean the allocation of amd_iommu_dev_table in
> early_amd_iommu_init() also need be addressed for 1st kernel? Seems we
> don't make sure that for 1st kernel, like adding GFP_DMA32 flag when
> allocate amd_iommu_dev_table in amd_iommu_dev_table
> early_amd_iommu_init().
I plan to add GFP_DMA32 when allocate amd_iommu_dev_table in
early_amd_iommu_init() as below. Then in kdump kernel we don't need to
worry if the old amd_iommu_dev_table could be above 4G, right? And might
not need to check if it's above 4G, right?
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 781a138..85d6445 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -2436,7 +2436,8 @@ static int __init early_amd_iommu_init(void)
/* Device table - directly used by all IOMMUs */
ret = -ENOMEM;
- amd_iommu_dev_table = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
+ amd_iommu_dev_table = (void *)__get_free_pages(
+ GFP_KERNEL | __GFP_ZERO | GFP_DMA32,
get_order(dev_table_size));
if (amd_iommu_dev_table == NULL)
goto out;
--
2.9.4
next prev parent reply other threads:[~2017-07-31 10:15 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-21 8:58 [PATCH v8 00/13] Fix the on-flight DMA issue on system with amd iommu Baoquan He
2017-07-21 8:58 ` Baoquan He
[not found] ` <1500627551-12930-1-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-07-21 8:58 ` [PATCH v8 01/13] iommu/amd: Detect pre enabled translation Baoquan He
2017-07-21 8:58 ` Baoquan He
2017-07-27 15:04 ` Joerg Roedel
2017-07-28 2:31 ` Baoquan He
2017-07-21 8:59 ` [PATCH v8 02/13] iommu/amd: add several helper functions Baoquan He
2017-07-21 8:59 ` Baoquan He
2017-07-27 15:06 ` Joerg Roedel
[not found] ` <20170727150612.GK3610-l3A5Bk7waGM@public.gmane.org>
2017-07-28 2:36 ` Baoquan He
2017-07-28 2:36 ` Baoquan He
2017-07-31 10:01 ` Baoquan He
2017-07-31 10:07 ` Joerg Roedel
2017-07-21 8:59 ` [PATCH v8 04/13] iommu/amd: Define bit fields for DTE particularly Baoquan He
2017-07-21 8:59 ` Baoquan He
2017-07-21 8:59 ` [PATCH v8 07/13] iommu/amd: Do sanity check for irq remap of old dev table entry Baoquan He
2017-07-21 8:59 ` Baoquan He
2017-07-21 8:59 ` [PATCH v8 09/13] iommu/amd: Use is_attach_deferred call-back Baoquan He
2017-07-21 8:59 ` Baoquan He
[not found] ` <1500627551-12930-10-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-07-27 15:53 ` Joerg Roedel
2017-07-27 15:53 ` Joerg Roedel
[not found] ` <20170727155327.GN3610-l3A5Bk7waGM@public.gmane.org>
2017-07-28 4:02 ` Baoquan He
2017-07-28 4:02 ` Baoquan He
2017-07-21 8:59 ` [PATCH v8 03/13] Revert "iommu/amd: Suppress IO_PAGE_FAULTs in kdump kernel" Baoquan He
2017-07-21 8:59 ` [PATCH v8 05/13] iommu/amd: Add function copy_dev_tables() Baoquan He
2017-07-27 15:29 ` Joerg Roedel
2017-07-28 3:59 ` Baoquan He
2017-07-21 8:59 ` [PATCH v8 06/13] iommu/amd: copy old trans table from old kernel Baoquan He
2017-07-27 15:38 ` Joerg Roedel
[not found] ` <20170727153825.GM3610-l3A5Bk7waGM@public.gmane.org>
2017-07-28 6:52 ` Baoquan He
2017-07-28 6:52 ` Baoquan He
2017-07-21 8:59 ` [PATCH v8 08/13] iommu: Add is_attach_deferred call-back to iommu-ops Baoquan He
2017-07-21 8:59 ` [PATCH v8 10/13] iommu/amd: Allocate memory below 4G for dev table if translation pre-enabled Baoquan He
[not found] ` <1500627551-12930-11-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-07-27 15:55 ` Joerg Roedel
2017-07-27 15:55 ` Joerg Roedel
2017-07-28 9:06 ` Baoquan He
2017-07-28 11:14 ` Joerg Roedel
2017-07-28 11:14 ` Joerg Roedel
2017-07-28 11:15 ` Baoquan He
2017-07-28 11:18 ` Joerg Roedel
[not found] ` <20170728111809.GC3431-l3A5Bk7waGM@public.gmane.org>
2017-07-28 11:26 ` Baoquan He
2017-07-28 11:26 ` Baoquan He
2017-07-31 10:15 ` Baoquan He [this message]
2017-07-31 10:21 ` Joerg Roedel
2017-07-31 10:21 ` Joerg Roedel
[not found] ` <20170731102153.GK3431-l3A5Bk7waGM@public.gmane.org>
2017-07-31 10:29 ` Baoquan He
2017-07-31 10:29 ` Baoquan He
2017-07-21 8:59 ` [PATCH v8 11/13] iommu/amd: Don't copy GCR3 table root pointer Baoquan He
[not found] ` <1500627551-12930-12-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-07-23 22:33 ` kbuild test robot
2017-07-23 22:33 ` kbuild test robot
[not found] ` <201707240618.mJ6b2eHv%fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-07-23 23:53 ` Baoquan He
2017-07-23 23:53 ` Baoquan He
2017-07-27 15:57 ` Joerg Roedel
2017-07-27 15:57 ` Joerg Roedel
[not found] ` <20170727155755.GP3610-l3A5Bk7waGM@public.gmane.org>
2017-07-28 9:07 ` Baoquan He
2017-07-28 9:07 ` Baoquan He
2017-07-21 8:59 ` [PATCH v8 12/13] iommu/amd: Clear out the GV flag when handle deferred domain attach Baoquan He
2017-07-21 8:59 ` [PATCH v8 13/13] iommu/amd: Disable iommu only if amd_iommu=off is specified Baoquan He
[not found] ` <1500627551-12930-14-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-07-27 15:58 ` Joerg Roedel
2017-07-27 15:58 ` Joerg Roedel
[not found] ` <20170727155852.GQ3610-l3A5Bk7waGM@public.gmane.org>
2017-07-28 9:08 ` Baoquan He
2017-07-28 9:08 ` Baoquan He
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=20170731101530.GB29157@x1 \
--to=bhe@redhat.com \
--cc=iommu@lists.linux-foundation.org \
--cc=jroedel@suse.de \
--cc=linux-kernel@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.