Is it possible for a device to end up with dev->archdata.iommu == NULL on iommu_need_mapping in the following instance:
1. iommu_group has dma domain for default 2. device gets private identity domain in intel_iommu_add_device 3. iommu_need_mapping gets called with that device. 4. dmar_remove_one_dev_info sets dev->archdata.iommu = NULL via unlink_domain_info. 5. request_default_domain_for_dev exits after checking that group->default_domain exists, and group->default_domain->type is dma. 6. iommu_request_dma_domain_for_dev returns 0 from request_default_domain_for_dev and a private dma domain isn't created for the device. The case I was seeing went away with commit 9235cb13d7d1 ("iommu/vt-d: Allow devices with RMRRs to use identity domain"), because it changed which domain the group and devices were using, but it seems like it is still a possibility with the code. Baolu, you mentioned possibly removing the domain switch. Commit 98b2fffb5e27 ("iommu/vt-d: Handle 32bit device with identity default domain") makes it sound like the domain switch is required. Regards, Jerry _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu