On 09/29/15 at 06:09pm, Joerg Roedel wrote: > On Thu, Sep 24, 2015 at 02:37:35PM +0800, Baoquan He wrote: > > @@ -2469,6 +2469,8 @@ static dma_addr_t __map_single(struct device *dev, > > unsigned long align_mask = 0; > > int i; > > > > + if (translation_pre_enabled()) > > + clear_translation_pre_enabled(); > > There is probably a better place to do this somewhere in the > initialization state machine of the AMD IOMMU driver. Yeah, I put it in state_next(). static int __init state_next(void) { int ret = 0; switch (init_state) { case IOMMU_START_STATE: ...... case IOMMU_DMA_OPS: if (translation_pre_enabled()) clear_translation_pre_enabled(); init_state = IOMMU_INITIALIZED; break; ...... } > > > Joerg >