Re: [PATCH] vfio/pci: Handle concurrent vma faults

From: Alex Williamson
Date: Fri Mar 12 2021 - 14:17:13 EST


On Wed, 10 Mar 2021 14:40:11 -0400
Jason Gunthorpe <jgg@xxxxxxxxxx> wrote:

> On Wed, Mar 10, 2021 at 11:34:06AM -0700, Alex Williamson wrote:
>
> > > I think after the address_space changes this should try to stick with
> > > a normal io_rmap_pfn_range() done outside the fault handler.
> >
> > I assume you're suggesting calling io_remap_pfn_range() when device
> > memory is enabled,
>
> Yes, I think I saw Peter thinking along these lines too
>
> Then fault just always causes SIGBUS if it gets called

Trying to use the address_space approach because otherwise we'd just be
adding back vma list tracking, it looks like we can't call
io_remap_pfn_range() while holding the address_space i_mmap_rwsem via
i_mmap_lock_write(), like done in unmap_mapping_range(). lockdep
identifies a circular lock order issue against fs_reclaim. Minimally we
also need vma_interval_tree_iter_{first,next} exported in order to use
vma_interval_tree_foreach(). Suggestions? Thanks,

Alex