All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Question on ioeventfd behavior
Date: Fri, 26 Feb 2016 10:41:19 +0100	[thread overview]
Message-ID: <56D01DBF.8040700@redhat.com> (raw)
In-Reply-To: <874mcvhpt5.fsf@blackfin.pond.sub.org>



On 26/02/2016 08:51, Markus Armbruster wrote:
> /**
>  * memory_region_add_eventfd: Request an eventfd to be triggered when a word
>  *                            is written to a location.
>  *
>  * Marks a word in an IO region (initialized with memory_region_init_io())
>  * as a trigger for an eventfd event.  The I/O callback will not be called.
>  * The caller must be prepared to handle failure (that is, take the required
>  * action if the callback _is_ called).
>  *
>  * @mr: the memory region being updated.
>  * @addr: the address within @mr that is to be monitored
>  * @size: the size of the access to trigger the eventfd
>  * @match_data: whether to match against @data, instead of just @addr
>  * @data: the data to match against the guest write
>  * @fd: the eventfd to be triggered when @addr, @size, and @data all match.
>  **/
> void memory_region_add_eventfd(MemoryRegion *mr,
>                                hwaddr addr,
>                                unsigned size,
>                                bool match_data,
>                                uint64_t data,
>                                EventNotifier *e);
> 
> What exactly does "The caller must be prepared to handle failure" mean?
> What are the failure modes?

I think it simply meant that the caller should be ready for the case
where ioeventfd is _not_ implemented (e.g. when running on TCG) and the
MMIO callback is invoked anyway.

memory.c now implements a generic fallback in
memory_region_dispatch_write_eventfds, so that should not be necessary
anymore.  I cannot think of other meanings of "failure mode".

In any case, ivshmem_io_write helpfully does the required
event_notifier_set, so you're good.

> Does "value written doesn't match" count as failure in the sense of this
> clause?  Rephrasing my question: what happens when the guest writes a
> value to the Doorbell register that does not match any of the values
> registered with memory_region_add_eventfd()?  Is the I/O callback
> called exactly as if ioeventfd was not in use?

Yes, the latter.

Paolo

  reply	other threads:[~2016-02-26  9:41 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-26  7:51 [Qemu-devel] Question on ioeventfd behavior Markus Armbruster
2016-02-26  9:41 ` Paolo Bonzini [this message]
2016-02-26  9:58   ` Markus Armbruster
2016-02-26 10:10     ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56D01DBF.8040700@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=armbru@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.