On 14/06/2017 17:28, Roman Kagan wrote: > On Wed, Jun 14, 2017 at 05:08:02PM +0200, Paolo Bonzini wrote: >> >> >> On 06/06/2017 20:19, Roman Kagan wrote: >>> + sint_route->msg_status = ret; >>> + /* notify the msg originator of the progress made; if the slot was >>> busy we >>> + * set msg_pending flag in it so it will be the guest who will do EOM >>> and >>> + * trigger the notification from KVM via sint_ack_notifier */ >>> + if (ret != -EAGAIN) { >>> + qemu_bh_schedule(sint_route->msg_bh); >>> + } >> >> It may be faster to use aio_bh_schedule_oneshot, depending on the number >> of devices. > > Messages aren't used on fast paths, they are only exchanged at device > setup/teardown. So I cared more about readability than speed here.
Then you really want to use aio_bh_schedule_oneshot, because bottom halves incur a (small) cost even when you don't use them: each iteration of the event loop visits the list of bottom halves. Persistent bottom halves, thus, are only a good idea if they are expected to trigger very often on a busy VM. If this bottom half is only triggered at setup/teardown, it shouldn't use them. Paolo