On Wed, Sep 22, 2021 at 01:51:03AM +0000, Tian, Kevin wrote: > > From: Jason Gunthorpe <jgg@xxxxxxxxxx> > > Sent: Tuesday, September 21, 2021 11:42 PM > > > > - Delete the iommufd_ctx->lock. Use RCU to protect load, erase/alloc does > > not need locking (order it properly too, it is in the wrong order), and > > don't check for duplicate devices or dev_cookie duplication, that > > is user error and is harmless to the kernel. > > > > I'm confused here. yes it's user error, but we check so many user errors > and then return -EINVAL, -EBUSY, etc. Why is this one special? Because it is expensive to calculate and forces a complicated locking scheme into the kernel. Without this check you don't need the locking that spans so much code, and simple RCU becomes acceptable. Jason