From: "Alex Bennée" <alex.bennee@linaro.org>
To: Aaron Lindsay <aaron@os.amperecomputing.com>
Cc: cota@braap.org, richard.henderson@linaro.org, qemu-devel@nongnu.org
Subject: Re: Plugin Register Accesses
Date: Tue, 08 Dec 2020 12:17:27 +0000 [thread overview]
Message-ID: <87a6uoh2fp.fsf@linaro.org> (raw)
In-Reply-To: <X86YnHhHMpQBr2/G@strawberry.localdomain>
Aaron Lindsay <aaron@os.amperecomputing.com> writes:
> I'm trying to migrate to using the new plugin interface. I see the
> following in include/qemu/qemu-plugin.h:
>
>> enum qemu_plugin_cb_flags {
>> QEMU_PLUGIN_CB_NO_REGS, /* callback does not access the CPU's regs */
>> QEMU_PLUGIN_CB_R_REGS, /* callback reads the CPU's regs */
>> QEMU_PLUGIN_CB_RW_REGS, /* callback reads and writes the CPU's regs */
>> };
>
> But I don't see a way to access registers in callbacks. Am I missing
> something?
No - while those symbols do inform the TCG to not try and optimise
the register file we don't yet have an API for the plugins for reading
(or writing) the CPU registers.
There has been discussion about this before, I'll quote what I said
off-list to someone else who asked:
> Has there been any clarification or softening of the position that
> exposing register and memory contents to the QEMU plugin would provide a
> way to circumvent the GPL of QEMU?
I don't think implementing read only access would be a problem and
should probably be a first step anyway.
For registers I think there needs to be some re-factoring of QEMU's
internals to do it cleanly. Currently we have each front-end providing
hooks to the gdbstub as well as building up their own regid and xml to
be consumed by it. We probably want a architectural neutral central
repository that the front ends can register their registers (sic) and
helpers with. This would then provide hooks for gdbstub to cleanly
generate XML as well as an interface point for the plugin infrastructure
(and probably whatever the HMP uses as well).
Memory is a little trickier because you can't know at any point if a
given virtual address is actually mapped to real memory. The safest way
would be to extend the existing memory tracking code to save the values
saved/loaded from a given address. However if you had register access
you could probably achieve the same thing after the fact by examining
the opcode and pulling the values from the registers.
>
> -Aaron
--
Alex Bennée
next prev parent reply other threads:[~2020-12-08 13:09 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-07 21:03 Plugin Register Accesses Aaron Lindsay
2020-12-08 12:17 ` Alex Bennée [this message]
2020-12-08 14:46 ` Aaron Lindsay via
2020-12-08 17:56 ` Alex Bennée
2020-12-08 19:44 ` Aaron Lindsay via
2020-12-30 21:12 ` Aaron Lindsay via
2021-01-07 16:49 ` Alex Bennée
2021-01-07 20:45 ` Aaron Lindsay via
2020-12-08 19:49 ` Aaron Lindsay via
2020-12-08 22:34 ` Alex Bennée
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=87a6uoh2fp.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=aaron@os.amperecomputing.com \
--cc=cota@braap.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).