All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baoquan He <bhe@redhat.com>
To: Wan Zongshun <vw@iommu.org>
Cc: joro@8bytes.org, linux-kernel@vger.kernel.org,
	vincent.wan@amd.com, iommu@lists.linux-foundation.org,
	dyoung@redhat.com
Subject: Re: [Patch v4 6/9] iommu/amd: Add function copy_dev_tables
Date: Mon, 30 May 2016 11:32:45 +0800	[thread overview]
Message-ID: <20160530033245.GD2488@x1.redhat.com> (raw)
In-Reply-To: <80e8478c-3797-df49-3bf9-e3c5d6879c8b@iommu.org>

On 05/28/16 at 09:08pm, Wan Zongshun wrote:
> >+static int copy_dev_tables(void)
> >+{
> >+	u64 entry;
> >+	u32 lo, hi, devid;
> >+	phys_addr_t old_devtb_phys;
> >+	struct dev_table_entry *old_devtb;
> >+	u16 dom_id, dte_v;
> >+	struct amd_iommu *iommu;
> >+	static int copied;
> >+
> >+        for_each_iommu(iommu) {
> >+		if (!translation_pre_enabled()) {
> >+			pr_err("IOMMU:%d is not pre-enabled!/n", iommu->index);
> >+			return -1;
> >+		}
> 
> If one iommu is not pre-enabled, all iommus will be exit the copy.

Currently amd iommu driver make all iommu-s share a single device table.
When handling this code, I am struggling to take what way to make this
look better. Say we have two iommus A and B on a system, A is detected
to be pre_enabled, but B is not, I didn't think of a good way to do. Any
suggestion?

> 
> >+
> >+		if (copied)
> >+			continue;
> >+
> >+                lo = readl(iommu->mmio_base + MMIO_DEV_TABLE_OFFSET);
> >+                hi = readl(iommu->mmio_base + MMIO_DEV_TABLE_OFFSET + 4);
> >+                entry = (((u64) hi) << 32) + lo;
> >+                old_devtb_phys = entry & PAGE_MASK;
> >+                old_devtb = memremap(old_devtb_phys, dev_table_size, MEMREMAP_WB);
> >+                for (devid = 0; devid <= amd_iommu_last_bdf; ++devid) {
> >+                        amd_iommu_dev_table[devid] = old_devtb[devid];
> >+                        dom_id = amd_iommu_dev_table[devid].data[1] & DEV_DOMID_MASK;
> >+			dte_v = amd_iommu_dev_table[devid].data[0] & DTE_FLAG_V;
> >+			if (!dte_v)
> >+				continue;
> >+                        __set_bit(dom_id, amd_iommu_pd_alloc_bitmap);
> >+                }
> >+		memunmap(old_devtb);
> >+		copied = 1;
> >+        }
> >+	return 0;
> >+}
> >+
> > void amd_iommu_apply_erratum_63(u16 devid)
> > {
> > 	int sysmgt;
> >diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h
> >index 7796edf..34acd73 100644
> >--- a/drivers/iommu/amd_iommu_types.h
> >+++ b/drivers/iommu/amd_iommu_types.h
> >@@ -311,6 +311,7 @@
> > #define DTE_FLAG_MASK	(0x3ffULL << 32)
> > #define DTE_GLX_SHIFT	(56)
> > #define DTE_GLX_MASK	(3)
> >+#define DEV_DOMID_MASK 	0xffffULL
> >
> > #define DTE_GCR3_VAL_A(x)	(((x) >> 12) & 0x00007ULL)
> > #define DTE_GCR3_VAL_B(x)	(((x) >> 15) & 0x0ffffULL)
> >

  reply	other threads:[~2016-05-30  3:32 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-25  6:28 [Patch v4 0/9] *** Fix kdump failure in system with amd iommu*** Baoquan He
2016-05-25  6:28 ` Baoquan He
     [not found] ` <1464157735-8865-1-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-05-25  6:28   ` [Patch v4 1/9] iommu/amd: clean up the cmpxchg64 invocation Baoquan He
2016-05-25  6:28     ` Baoquan He
2016-05-25  6:28   ` [Patch v4 2/9] iommu/amd: Use standard bitmap operation to set bitmap Baoquan He
2016-05-25  6:28     ` Baoquan He
2016-05-25  6:28   ` [Patch v4 3/9] iommu/amd: Detect pre enabled translation Baoquan He
2016-05-25  6:28     ` Baoquan He
     [not found]     ` <1464157735-8865-4-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-05-28 12:49       ` Wan Zongshun
2016-05-28 12:49         ` Wan Zongshun
2016-05-30  3:24         ` Baoquan He
2016-05-30  3:27           ` Baoquan He
2016-05-25  6:28   ` [Patch v4 4/9] iommu/amd: add early_enable_iommu() helper function Baoquan He
2016-05-25  6:28     ` Baoquan He
2016-05-25  6:28   ` [Patch v4 5/9] iommu/amd: Define bit fields for DTE particularly Baoquan He
2016-05-25  6:28     ` Baoquan He
2016-05-25  6:28   ` [Patch v4 6/9] iommu/amd: Add function copy_dev_tables Baoquan He
2016-05-25  6:28     ` Baoquan He
2016-05-28 13:08     ` Wan Zongshun
2016-05-30  3:32       ` Baoquan He [this message]
2016-05-25  6:28   ` [Patch v4 7/9] iommu/amd: copy old trans table from old kernel Baoquan He
2016-05-25  6:28     ` Baoquan He
     [not found]     ` <1464157735-8865-8-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-05-28 13:25       ` Wan Zongshun
2016-05-28 13:25         ` Wan Zongshun
2016-05-25  6:28   ` [Patch v4 8/9] iommu/amd: Do not initialize dev tables again in kdump Baoquan He
2016-05-25  6:28     ` Baoquan He
2016-05-25  6:28   ` [Patch v4 9/9] iommu/amd: Check the validation of irq table and domain id Baoquan He
2016-05-25  6:28     ` Baoquan He
     [not found]     ` <1464157735-8865-10-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-05-28 13:30       ` Wan Zongshun
2016-05-28 13:30         ` Wan Zongshun
2016-05-30  5:10         ` Baoquan He
2016-05-25  7:02   ` [Patch v4 0/9] *** Fix kdump failure in system with amd iommu*** Baoquan He
2016-05-25  7:02     ` Baoquan He
     [not found]     ` <20160525070203.GA3198-ejN7fcUYdH/by3iVrkZq2A@public.gmane.org>
2016-05-25  7:15       ` Baoquan He
2016-05-25  7:15         ` 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=20160530033245.GD2488@x1.redhat.com \
    --to=bhe@redhat.com \
    --cc=dyoung@redhat.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vincent.wan@amd.com \
    --cc=vw@iommu.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.