From: Mark Gross <mgross@linux.intel.com>
To: Muli Ben-Yehuda <muli@il.ibm.com>
Cc: "Keshavamurthy, Anil S" <anil.s.keshavamurthy@intel.com>,
lkml <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] iommu-PMEN_REG boot up support
Date: Mon, 29 Oct 2007 13:31:30 -0700 [thread overview]
Message-ID: <20071029203130.GA1734@linux.intel.com> (raw)
In-Reply-To: <20071027001938.GB10215@rhun.ibm.com>
On Sat, Oct 27, 2007 at 02:19:38AM +0200, Muli Ben-Yehuda wrote:
> On Fri, Oct 26, 2007 at 11:18:49AM -0700, Mark Gross wrote:
>
> > The following patch clears the portect memory region enable bit at
> > boot time by default. It also provides a kernel parrameter for
> > disabling this behavior and leave the PMEN_REG untouched if so
> > wanted.
> >
> > If the boot loader or platform has protected memory regions enabled
> > at boot time it could prevent DMA's from happening as drivers are
> > loaded and used.
>
> What's the value of adding a command line option for this? Under what
> circumstances would we want to not clear this bit?
umm, /me asks around and finds out that at this time there isn't much
point to having a command line to preserve any protected areas set up at
boot time.
>
> > + } else if (!strncmp(str, "no_epm_clear", 12)) {
> > + printk(KERN_INFO
> > + "Intel-IOMMU: subress clearing of Enable "
> > + "Protected Memory bit\n");
> > + clear_pmen_epm = 0;
>
> `suppress', I assume. Rest looks fine, if the configuration option is
> really needed.
>
> Cheers,
> Muli
> --
> SYSTOR 2007 --- 1st Annual Haifa Systems and Storage Conference 2007
> http://www.haifa.il.ibm.com/Workshops/systor2007/
>
> Virtualization workshop: Oct 29th, 2007 | Storage workshop: Oct 30th, 2007
> -
Signed-off-by: mark gross <mgross@linux.intel.com>
--mgross
Index: linux-2.6/drivers/pci/intel-iommu.c
===================================================================
--- linux-2.6.orig/drivers/pci/intel-iommu.c 2007-10-24 09:31:32.000000000 -0700
+++ linux-2.6/drivers/pci/intel-iommu.c 2007-10-29 13:30:29.000000000 -0700
@@ -692,6 +692,23 @@
DMA_TLB_PSI_FLUSH, non_present_entry_flush);
}
+static void iommu_disable_protect_mem_regions(struct intel_iommu *iommu)
+{
+ u32 pmen;
+ unsigned long flags;
+
+ spin_lock_irqsave(&iommu->register_lock, flags);
+ pmen = readl(iommu->reg + DMAR_PMEN_REG);
+ pmen &= ~DMA_PMEN_EPM;
+ writel(pmen, iommu->reg + DMAR_PMEN_REG);
+
+ /* wait for the protected region status bit to clear */
+ IOMMU_WAIT_OP(iommu, DMAR_PMEN_REG,
+ readl, (pmen & DMA_PMEN_PRS), pmen);
+
+ spin_unlock_irqrestore(&iommu->register_lock, flags);
+}
+
static int iommu_enable_translation(struct intel_iommu *iommu)
{
u32 sts;
@@ -1731,6 +1748,8 @@
iommu_flush_context_global(iommu, 0);
iommu_flush_iotlb_global(iommu, 0);
+ iommu_disable_protect_mem_regions(iommu);
+
ret = iommu_enable_translation(iommu);
if (ret)
goto error;
Index: linux-2.6/drivers/pci/intel-iommu.h
===================================================================
--- linux-2.6.orig/drivers/pci/intel-iommu.h 2007-10-24 09:31:32.000000000 -0700
+++ linux-2.6/drivers/pci/intel-iommu.h 2007-10-29 10:30:24.000000000 -0700
@@ -126,6 +126,10 @@
#define DMA_TLB_IH_NONLEAF (((u64)1) << 6)
#define DMA_TLB_MAX_SIZE (0x3f)
+/* PMEN_REG */
+#define DMA_PMEN_EPM (((u32)1)<<31)
+#define DMA_PMEN_PRS (((u32)1)<<0)
+
/* GCMD_REG */
#define DMA_GCMD_TE (((u32)1) << 31)
#define DMA_GCMD_SRTP (((u32)1) << 30)
next prev parent reply other threads:[~2007-10-29 20:36 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-26 18:18 [PATCH] iommu-PMEN_REG boot up support Mark Gross
2007-10-27 0:19 ` Muli Ben-Yehuda
2007-10-29 20:31 ` Mark Gross [this message]
2007-10-30 8:33 ` Muli Ben-Yehuda
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=20071029203130.GA1734@linux.intel.com \
--to=mgross@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=anil.s.keshavamurthy@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=muli@il.ibm.com \
--cc=torvalds@linux-foundation.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.