qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC PATCH 0/3] TranslationBlock annotation mechanism
@ 2016-01-08 16:36 Peer Adelt
  0 siblings, 0 replies; only message in thread
From: Peer Adelt @ 2016-01-08 16:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Bastian Koppelmann

[-- Attachment #1: Type: text/plain, Size: 2680 bytes --]

Hey guys

We have developed a generic concept to annotate TranslationBlocks during
runtime. The initial idea was to use it for time annotation with data from
static analysis tools. However, we have kept this approach as generic as
possible to allow other kinds of annotation (e.g. power consumption, etc.).

Our extension expects an XML file specifying the CFG of the program (similar
to what you get from "gcc -ftree-dump-cfg"), where the edges are annotated
with the data, that QEMU ought to accumulate during program execution. Each
edge has a source and target context in which it is executed.
For example: a for-loop that runs several times has its own context dependent
edge for each iteration. We plan on making this more flexible by allowing
to specify iterative context edges, i.e. from context n to context n+1.

This approach is not limited to one target architecture but we only tested
it for ARM and TriCore so far.

To show the current state of this patch we have attached a very small example
consisting of an ARM STM32F205 program and a timing annotation XML file. You
can provide the XML file to QEMU with the "-annotation <XML-File>" option.
During execution, the "value_sum" field of the CPUState data structure will
accumulate a total value of 70 (cycles).

Are there any comments? Is this in general a good idea to be added to upstream
QEMU?

All the best,
Peer

  Peer Adelt (3):
   tb-annotation: Added annotation XML file parser
   tb-annotation: Add control flow graph mapper
   tb-annotation: Activate annotation extension

  Makefile                                     |   5 +-
  Makefile.objs                                |   4 +
  Makefile.target                              |   4 +-
  configure                                    |  13 ++
  include/exec/gen-icount.h                    |  18 +++
  include/qom/cpu.h                            |   9 ++
  include/tb-annotation/tb-annotation-parser.h |  29 +++++
  include/tb-annotation/tb-annotation.h        |  64 ++++++++++
  qemu-options.hx                              |   8 ++
  tb-annotation/Makefile.objs                  |   1 +
  tb-annotation/tb-annotation-parser.c         | 174 +++++++++++++++++++++++++++
  tcg-runtime.c                                |  99 +++++++++++++++
  tcg/tcg-runtime.h                            |   4 +
  vl.c                                         |  25 ++++
  14 files changed, 454 insertions(+), 3 deletions(-)
  create mode 100644 include/tb-annotation/tb-annotation-parser.h
  create mode 100644 include/tb-annotation/tb-annotation.h
  create mode 100644 tb-annotation/Makefile.objs
  create mode 100644 tb-annotation/tb-annotation-parser.c

-- 2.5.0


[-- Attachment #2: annotation-example-project.tar.bz2 --]
[-- Type: application/x-bzip, Size: 6529 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-01-08 16:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-08 16:36 [Qemu-devel] [RFC PATCH 0/3] TranslationBlock annotation mechanism Peer Adelt

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).