• Jason Gunthorpe's avatar
    iommufd/selftest: Make the mock iommu driver into a real driver · 23a1b46f
    Jason Gunthorpe authored
    I've avoided doing this because there is no way to make this happen
    without an intrusion into the core code. Up till now this has avoided
    needing the core code's probe path with some hackery - but now that
    default domains are becoming mandatory it is unavoidable.
    
    This became a serious problem when the core code stopped allowing
    partially registered iommu drivers in commit 14891af3 ("iommu: Move
    the iommu driver sysfs setup into iommu_init/deinit_device()") which
    breaks the selftest. That series was developed along with a second series
    that contained this patch so it was not noticed.
    
    Make it so that iommufd selftest can create a real iommu driver and bind
    it only to is own private bus. Add iommu_device_register_bus() as a core
    code helper to make this possible. It simply sets the right pointers and
    registers the notifier block. The mock driver then works like any normal
    driver should, with probe triggered by the bus ops
    
    When the bus->iommu_ops stuff is fully unwound we can probably do better
    here and remove this special case.
    
    Link: https://lore.kernel.org/r/15-v6-e8114faedade+425-iommu_all_defdom_jgg@nvidia.comReviewed-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    23a1b46f
selftest.c 26.7 KB