On Fri, Sep 28, 2012 at 02:23:55PM +0200, Joerg Roedel wrote: > When the IOMMU is enabled very early (as with irq-remapping) > some devices are still in BIOS hand. When dma is blocked > early this can cause lots of IO_PAGE_FAULTs. So delay the > DMA initialization and do it right before the dma_ops are > initialized. > To be secure, block all interrupts by default when irq-remapping is
What are you trying to be secure against? > enabled in the system. They will be reenabled on demand > later. > > Signed-off-by: Joerg Roedel <joerg.roe...@amd.com> > --- > drivers/iommu/amd_iommu_init.c | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c > index 3f0b68f..8e9d71c 100644 > --- a/drivers/iommu/amd_iommu_init.c > +++ b/drivers/iommu/amd_iommu_init.c > @@ -1378,7 +1378,7 @@ static int __init init_memory_definitions(struct > acpi_table_header *table) > * Init the device table to not allow DMA access for devices and > * suppress all page faults > */ > -static void init_device_table(void) > +static void init_device_table_dma(void) > { > u32 devid; > > @@ -1388,6 +1388,17 @@ static void init_device_table(void) > } > } > > +static void init_device_table(void) > +{ > + u32 devid; > + > + if (!amd_iommu_irq_remap) > + return; > + > + for (devid = 0; devid <= amd_iommu_last_bdf; ++devid) > + set_dev_entry_bit(devid, DEV_ENTRY_IRQ_TBL_EN); > +} > + > static void iommu_init_flags(struct amd_iommu *iommu) > { > iommu->acpi_flags & IVHD_FLAG_HT_TUN_EN_MASK ? > @@ -1778,8 +1789,14 @@ static bool detect_ivrs(void) > > static int amd_iommu_init_dma(void) > { > + struct amd_iommu *iommu; > int ret; > > + init_device_table_dma(); > + > + for_each_iommu(iommu) > + iommu_flush_all_caches(iommu); > + > if (iommu_pass_through) > ret = amd_iommu_init_passthrough(); > else > -- > 1.7.9.5 > > > _______________________________________________ > iommu mailing list > io...@lists.linux-foundation.org > https://lists.linuxfoundation.org/mailman/listinfo/iommu -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/