qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] hw/nvme: Use ioeventfd to handle doorbell updates


From: Keith Busch
Subject: Re: [PATCH] hw/nvme: Use ioeventfd to handle doorbell updates
Date: Wed, 29 Jun 2022 09:58:17 -0600

On Wed, Jun 29, 2022 at 05:04:25PM +0800, Jinhao Fan wrote:
> Ping~
> 
> > @@ -4271,6 +4343,11 @@ static void nvme_init_sq(NvmeSQueue *sq, NvmeCtrl 
> > *n, uint64_t dma_addr,
> >     if (n->dbbuf_enabled) {
> >         sq->db_addr = n->dbbuf_dbs + (sqid << 3);
> >         sq->ei_addr = n->dbbuf_eis + (sqid << 3);
> > +            
> > +        if (n->params.ioeventfd && sq->sqid != 0) {
> > +            ret = nvme_init_sq_ioeventfd(sq);
> > +            sq->ioeventfd_enabled = ret == 0;
> > +        }
> >     }
> > 
> >     assert(n->cq[cqid]);
> 
> Is this “ret == 0” a correct way for error handling?

That looks correct since we don't need the ioevent is an optional optimization.

I would just suggest making this easier to read. For example, in
nvme_init_sq_ioeventfd(), instead of assigning within a conditional:

    if ((ret = event_notifier_init(&cq->notifier, 0))) {

Do each part separately:

    ret = event_notifier_init(&cq->notifier, 0);
    if (ret) {
 
> I’ve also been wondering whether using irqfd for sending interrupts can
> bring some benefits. I’m not familiar with how QEMU emulates interrupts.
> What do you think of irqfd’s?

Not sure about this mechanism, I'll need to look into it.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]