From: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: [Patch v3 09/12] iommu/amd: Don't update the domain information to iommu dev before dev init
Date: Tue, 26 Jan 2016 18:29:23 +0800 [thread overview]
Message-ID: <1453804166-25646-10-git-send-email-bhe@redhat.com> (raw)
In-Reply-To: <1453804166-25646-1-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Don't update the domain information to the related DTE entry before
iommu dev initialization. For this a new member 'domain_updated' is
added to iommu_dev_data.
Signed-off-by: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
drivers/iommu/amd_iommu.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index c0b96e0..b6e669c 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -101,6 +101,7 @@ struct iommu_dev_data {
bool pri_tlp; /* PASID TLB required for
PPR completions */
u32 errata; /* Bitmap for errata to apply */
+ bool domain_updated;
};
/*
@@ -2046,12 +2047,14 @@ static void do_attach(struct iommu_dev_data *dev_data,
domain->dev_iommu[iommu->index] += 1;
domain->dev_cnt += 1;
- /* Update device table */
- set_dte_entry(dev_data->devid, domain, ats);
- if (alias != dev_data->devid)
+ if (!translation_pre_enabled() || dev_data->domain_updated) {
+ /* Update device table */
set_dte_entry(dev_data->devid, domain, ats);
+ if (alias != dev_data->devid)
+ set_dte_entry(dev_data->devid, domain, ats);
- device_flush_dte(dev_data);
+ device_flush_dte(dev_data);
+ }
}
static void do_detach(struct iommu_dev_data *dev_data)
@@ -2402,7 +2405,8 @@ static void update_device_table(struct protection_domain *domain)
struct iommu_dev_data *dev_data;
list_for_each_entry(dev_data, &domain->dev_list, list)
- set_dte_entry(dev_data->devid, domain, dev_data->ats.enabled);
+ if (!translation_pre_enabled() || dev_data->domain_updated)
+ set_dte_entry(dev_data->devid, domain, dev_data->ats.enabled);
}
static void update_domain(struct protection_domain *domain)
--
2.1.0
next prev parent reply other threads:[~2016-01-26 10:29 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-26 10:29 [Patch v3 00/12] Fix AMD IOMMU faults in kdump kernel Baoquan He
[not found] ` <1453804166-25646-1-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-01-26 10:29 ` [Patch v3 01/12] iommu/amd: Use standard bitmap operation to set bitmap Baoquan He
2016-01-26 10:29 ` [Patch v3 02/12] iommu/amd: Detect pre enabled translation Baoquan He
2016-01-26 10:29 ` [Patch v3 03/12] iommu/amd: move dte irq macro defitions to amd_iommu_types.h Baoquan He
[not found] ` <1453804166-25646-4-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-01-27 10:25 ` Wan Zongshun
[not found] ` <56A89B1F.6010004-6ukY98dZOFrYtjvyW6yDsg@public.gmane.org>
2016-01-28 9:50 ` Baoquan He
2016-01-26 10:29 ` [Patch v3 04/12] iommu/amd: add copy_irq_table function Baoquan He
[not found] ` <1453804166-25646-5-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-01-27 11:23 ` Wan Zongshun
[not found] ` <56A8A896.70405-6ukY98dZOFrYtjvyW6yDsg@public.gmane.org>
2016-01-28 9:52 ` Baoquan He
2016-01-26 10:29 ` [Patch v3 05/12] iommu/amd: change IOMMU_PTE_P to IOMMU_PTE_V Baoquan He
[not found] ` <1453804166-25646-6-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-01-27 10:18 ` Wan Zongshun
[not found] ` <56A89981.5010007-6ukY98dZOFrYtjvyW6yDsg@public.gmane.org>
2016-01-28 10:05 ` Baoquan He
[not found] ` <20160128100533.GD3851-ejN7fcUYdH/by3iVrkZq2A@public.gmane.org>
2016-01-29 2:55 ` Wan Zongshun
[not found] ` <56AAD4B8.8050701-6ukY98dZOFrYtjvyW6yDsg@public.gmane.org>
2016-01-29 3:12 ` Baoquan He
2016-01-26 10:29 ` [Patch v3 06/12] iommu/amd: Clean up the useless IOMMU_PTE_U/IOMMU_PTE_FC Baoquan He
[not found] ` <1453804166-25646-7-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-01-27 10:22 ` Wan Zongshun
[not found] ` <56A89A74.6060501-6ukY98dZOFrYtjvyW6yDsg@public.gmane.org>
2016-01-28 10:30 ` Baoquan He
2016-01-26 10:29 ` [Patch v3 07/12] iommu/amd: Add function copy_dev_tables Baoquan He
2016-01-26 10:29 ` [Patch v3 08/12] iommu/amd: set the device table and re-enable event/cmd buffer Baoquan He
2016-01-26 10:29 ` Baoquan He [this message]
2016-01-26 10:29 ` [Patch v3 10/12] iommu/amd: Update related domain info to dev when dev driver init Baoquan He
2016-01-26 10:29 ` [Patch v3 11/12] iommu/amd: No need to wait iommu completion if no dte irq entry change Baoquan He
[not found] ` <1453804166-25646-12-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-01-27 11:03 ` Wan Zongshun
[not found] ` <56A8A3EC.7090701-6ukY98dZOFrYtjvyW6yDsg@public.gmane.org>
2016-01-28 10:24 ` Baoquan He
[not found] ` <20160128102401.GE3851-ejN7fcUYdH/by3iVrkZq2A@public.gmane.org>
2016-01-29 2:57 ` Wan Zongshun
2016-01-26 10:29 ` [Patch v3 12/12] iommu/amd: fix a code bug in do_attach Baoquan He
[not found] ` <1453804166-25646-13-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-01-26 10:51 ` Baoquan He
2016-01-26 10:48 ` [Patch v3 00/12] Fix AMD IOMMU faults in kdump kernel Baoquan He
2016-01-26 10:52 ` 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=1453804166-25646-10-git-send-email-bhe@redhat.com \
--to=bhe-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).