> From: Nicolin Chen <nicolinc@xxxxxxxxxx> > Sent: Wednesday, December 4, 2024 6:10 AM > > The fault object was designed exclusively for hwpt's IO page faults (PRI). > But its implementation can actually be reused for other purposes too, such > as hardware IRQ and event injections to user space. > > Meanwhile, a fault object holds a list of faults. So it's more accurate to > call it a "fault queue". Combining the reusing idea above, a "fault queue" > can further rephrase to an "Event Queue for IOPF". > > Rename the struct iommufd_fault to struct iommufd_eventq_iopf that holds > a > common Event Queue struct, similar to hwpt_paging holding a common > hwpt. > > Roll out a minimal level of renamings to all the related functions. could we keep iommufd_fault? Internally it will use the new eventq common struct but external facing names are all still around fault. the size of changed lines will be much smaller. Then later for virq it could be iommufd_viommu_virq instead of iommufd_eventq_virq to explicitly draw its connection to viommu. this is unlike hwpt where 'paging' or 'nested' is just decorative while 'fault' or 'virq' is noun on its own. > +static ssize_t iommufd_eventq_fops_read(struct file *filep, char __user *buf, > + size_t count, loff_t *ppos) > +{ > + struct iommufd_eventq *eventq = filep->private_data; > + > + if (!eventq->ops || !eventq->ops->read) > + return -EOPNOTSUPP; > + return eventq->ops->read(eventq, buf, count, ppos); > +} the check on ops can be done in iommufd_eventq_init()