On Thu, Mar 21, 2013 at 10:32:36AM +0900, Takao Indoh wrote: > In this function, clearing IRE bit in iommu->gcmd and writing it to > global command register. But initial value of iommu->gcmd is zero, so > this writel means clearing all bits in global command register. Seems weird. Why is the value of gcmd zero in your case? The usage of this register is well encapsulated by the different parts of the VT-d driver. There are other places which enable/disable translation and qpi the same way it is done with interrupt remapping. So it looks to me that it is unlikely that gcmd is really zero in your case. Can you explain that more and also describe what the actual misbehavior is you are trying to fix here? Thanks, Joerg