Re: [PATCH v2 0/6] IOMMUFD: Deliver IO page faults to user space

From: Jason Gunthorpe
Date: Mon Nov 20 2023 - 19:14:58 EST


On Thu, Nov 16, 2023 at 09:42:23AM +0800, Liu, Jing2 wrote:
> Hi Jason,
>
> On 11/15/2023 9:58 PM, Jason Gunthorpe wrote:
> > On Wed, Nov 15, 2023 at 01:17:06PM +0800, Liu, Jing2 wrote:
> >
> > > This is the right way to approach it,
> > >
> > > I learned that there was discussion about using io_uring to get the
> > > page fault without
> > >
> > > eventfd notification in [1], and I am new at io_uring and studying the
> > > man page of
> > >
> > > liburing, but there're questions in my mind on how can QEMU get the
> > > coming page fault
> > >
> > > with a good performance.
> > >
> > > Since both QEMU and Kernel don't know when comes faults, after QEMU
> > > submits one
> > >
> > > read task to io_uring, we want kernel pending until fault comes. While
> > > based on
> > >
> > > hwpt_fault_fops_read() in [patch v2 4/6], it just returns 0 since
> > > there's now no fault,
> > >
> > > thus this round of read completes to CQ but it's not what we want. So
> > > I'm wondering
> > >
> > > how kernel pending on the read until fault comes. Does fops callback
> > > need special work to
> > Implement a fops with poll support that triggers when a new event is
> > pushed and everything will be fine.
>
> Does userspace need also setup a POLL flag to let io_uring go into poll, or
> io_uring always try to poll?

io_uring can trigger poll and use other approaches, it is flexible the
driver can scale this in different ways.

Jason