• Ralph Campbell's avatar
    mm/notifier: add migration invalidation type · 998427b3
    Ralph Campbell authored
    Currently migrate_vma_setup() calls mmu_notifier_invalidate_range_start()
    which flushes all device private page mappings whether or not a page is
    being migrated to/from device private memory.
    
    In order to not disrupt device mappings that are not being migrated, shift
    the responsibility for clearing device private mappings to the device
    driver and leave CPU page table unmapping handled by
    migrate_vma_setup().
    
    To support this, the caller of migrate_vma_setup() should always set
    struct migrate_vma::pgmap_owner to a non NULL value that matches the
    device private page->pgmap->owner. This value is then passed to the struct
    mmu_notifier_range with a new event type which the driver's invalidation
    function can use to avoid device MMU invalidations.
    
    Link: https://lore.kernel.org/r/20200723223004.9586-4-rcampbell@nvidia.comSigned-off-by: default avatarRalph Campbell <rcampbell@nvidia.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    998427b3
migrate.c 78.2 KB