+0
−15
Loading
Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more
This is intrinsically racy and the scheme is simply unnecessary. New MR
registration can wait for any on going invalidation to fully complete.
CPU0 CPU1
if (atomic_read())
if (atomic_dec_and_test() &&
!list_empty())
{ /* not taken */ }
list_add()
Putting the new UMEM into some kind of purgatory until another invalidate
rolls through..
Instead hold the read side of the umem_rwsem across the pair'd start/end
and get rid of the racy 'deferred add' approach.
Since all umem's in the rbt are always ready to go, also get rid of the
mn_counters_active stuff.
Signed-off-by:
Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by:
Leon Romanovsky <leonro@mellanox.com>
Signed-off-by:
Doug Ledford <dledford@redhat.com>