int cnt)
 {
        struct msm_iommu *iommu = to_msm_iommu(mmu);
-       return iommu_attach_device(iommu->domain, mmu->dev);
+       int ret;
+
+       pm_runtime_get_sync(mmu->dev);
+       ret = iommu_attach_device(iommu->domain, mmu->dev);
+       pm_runtime_put_sync(mmu->dev);
+
+       return ret;
 }
 
 static void msm_iommu_detach(struct msm_mmu *mmu, const char * const *names,
                             int cnt)
 {
        struct msm_iommu *iommu = to_msm_iommu(mmu);
+
+       pm_runtime_get_sync(mmu->dev);
        iommu_detach_device(iommu->domain, mmu->dev);
+       pm_runtime_put_sync(mmu->dev);
 }
 
 static int msm_iommu_map(struct msm_mmu *mmu, uint64_t iova,
        struct msm_iommu *iommu = to_msm_iommu(mmu);
        size_t ret;
 
+//     pm_runtime_get_sync(mmu->dev);
        ret = iommu_map_sg(iommu->domain, iova, sgt->sgl, sgt->nents, prot);
+//     pm_runtime_put_sync(mmu->dev);
        WARN_ON(ret < 0);
 
        return (ret == len) ? 0 : -EINVAL;
 {
        struct msm_iommu *iommu = to_msm_iommu(mmu);
 
+       pm_runtime_get_sync(mmu->dev);
        iommu_unmap(iommu->domain, iova, len);
+       pm_runtime_put_sync(mmu->dev);
 
        return 0;
 }