qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC 19/48] translate-all: notify plugin code of tb_flu


From: Emilio G. Cota
Subject: Re: [Qemu-devel] [RFC 19/48] translate-all: notify plugin code of tb_flush
Date: Mon, 26 Nov 2018 16:53:58 -0500
User-agent: Mutt/1.9.4 (2018-02-28)

On Mon, Nov 26, 2018 at 11:02:24 +0000, Alex Bennée wrote:
> Emilio G. Cota <address@hidden> writes:
> > On Fri, Nov 23, 2018 at 17:00:59 +0000, Alex Bennée wrote:
> >> What is the purpose of letting the plugin know a flush has occurred?
> >
> > Plugins might allocate per-TB data that then they get passed each
> > time the TB is executed (via the *userdata pointer). For example,
> > in a simulator we'd allocate a per-TB struct that describes the
> > guest instructions, after having disassembled them at translate time.
> >
> > It is therefore useful for plugins to know when all TB's have been
> > flushed, so that they can then free that per-TB data.
> 
> Would they need a generation count propagated here or would it just be
> flush anything translation related at this point?

The callback is guaranteed to be called in an exclusive context, so
plugins can just rely on that; since no code execution can happen at
that time, there's no need to pass further info, since the plugins
can free that data right from the callback.

> >> It shouldn't have any knowledge of the details of liveliness of the
> >> translated code and if it still exits or not. If all it wants to do is
> >> look at the counts then I think we can provide a simpler less abuse-able
> >> way to do this.
> >
> > I'm confused. What does "look at the counts" mean here?
> >
> > To reiterate, plugins should have a way to know when a TB doesn't
> > exist any longer, so that they can reclaim memory.
>
> OK that makes sense. Could you expand the commit message just to explain
> the use case?
>
> Reviewed-by: Alex Bennée <address@hidden>

Updated the commit message with:

    translate-all: notify plugin code of tb_flush

    Plugins might allocate per-TB data that then they get passed each
    time a TB is executed (via the *userdata pointer).

    Notify plugin code every time a code cache flush occurs, so
    that plugins can then reclaim the memory of the per-TB data.

Thanks,

                Emilio



reply via email to

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