From: Peer Adelt <peer.adelt@c-lab.de>
To: qemu-devel@nongnu.org
Cc: Peer Adelt <peer.adelt@c-lab.de>, kbastian@mail.upb.de
Subject: [Qemu-devel] [RFC PATCH 3/3] tb-annotation: Activate annotation extension
Date: Thu, 14 Jan 2016 11:55:23 +0100 [thread overview]
Message-ID: <1452768923-13787-4-git-send-email-peer.adelt@c-lab.de> (raw)
In-Reply-To: <1452768923-13787-1-git-send-email-peer.adelt@c-lab.de>
This changeset activates the TranslationBlock annotation
mechanism for the QEMU system mode.
Signed-off-by: Peer Adelt <peer.adelt@c-lab.de>
---
Makefile | 5 +++--
Makefile.objs | 4 ++++
Makefile.target | 4 +++-
configure | 13 +++++++++++++
qemu-options.hx | 8 ++++++++
tb-annotation/Makefile.objs | 1 +
vl.c | 25 +++++++++++++++++++++++++
7 files changed, 57 insertions(+), 3 deletions(-)
create mode 100644 tb-annotation/Makefile.objs
diff --git a/Makefile b/Makefile
index 82b2fc8..c351b31 100644
--- a/Makefile
+++ b/Makefile
@@ -161,7 +161,8 @@ dummy := $(call unnest-vars,, \
qom-obj-y \
io-obj-y \
common-obj-y \
- common-obj-m)
+ common-obj-m \
+ annotation-obj-y)
ifneq ($(wildcard config-host.mak),)
include $(SRC_PATH)/tests/Makefile
@@ -204,7 +205,7 @@ subdir-dtc:dtc/libfdt dtc/tests
dtc/%:
mkdir -p $@
-$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y) $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
+$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y) $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY)) $(annotation-obj-$(CONFIG_TB_ANNOTATION))
ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
romsubdir-%:
diff --git a/Makefile.objs b/Makefile.objs
index dac2c02..9b64358 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -116,3 +116,7 @@ qga-vss-dll-obj-y = qga/
# contrib
ivshmem-client-obj-y = contrib/ivshmem-client/
ivshmem-server-obj-y = contrib/ivshmem-server/
+
+######################################################################
+# annotation
+annotation-obj-y = tb-annotation/
\ No newline at end of file
diff --git a/Makefile.target b/Makefile.target
index 34ddb7e..50a969d 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -178,7 +178,8 @@ dummy := $(call unnest-vars,.., \
qom-obj-y \
io-obj-y \
common-obj-y \
- common-obj-m)
+ common-obj-m \
+ annotation-obj-y)
target-obj-y := $(target-obj-y-save)
all-obj-y += $(common-obj-y)
all-obj-y += $(target-obj-y)
@@ -187,6 +188,7 @@ all-obj-$(CONFIG_SOFTMMU) += $(block-obj-y)
all-obj-$(CONFIG_USER_ONLY) += $(crypto-aes-obj-y)
all-obj-$(CONFIG_SOFTMMU) += $(crypto-obj-y)
all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y)
+all-obj-$(CONFIG_TB_ANNOTATION) += $(annotation-obj-y)
$(QEMU_PROG_BUILD): config-devices.mak
diff --git a/configure b/configure
index 83b40fc..5e72e06 100755
--- a/configure
+++ b/configure
@@ -345,6 +345,7 @@ vhdx=""
numa=""
tcmalloc="no"
jemalloc="no"
+tbannotation="no"
# parse CC options first
for opt do
@@ -1169,6 +1170,10 @@ for opt do
;;
--enable-jemalloc) jemalloc="yes"
;;
+ --disable-tbannotation) tbannotation="no"
+ ;;
+ --enable-tbannotation) tbannotation="yes"
+ ;;
*)
echo "ERROR: unknown option $opt"
echo "Try '$0 --help' for more information"
@@ -1391,6 +1396,7 @@ disabled with --disable-FEATURE, default is enabled if available:
numa libnuma support
tcmalloc tcmalloc support
jemalloc jemalloc support
+ tbannotation TB annotation support
NOTE: The object files are built at the place where configure is launched
EOF
@@ -4855,6 +4861,7 @@ echo "bzip2 support $bzip2"
echo "NUMA host support $numa"
echo "tcmalloc support $tcmalloc"
echo "jemalloc support $jemalloc"
+echo "TB annotation support $tbannotation"
if test "$sdl_too_old" = "yes"; then
echo "-> Your SDL version is too old - please upgrade to have SDL support"
@@ -5400,6 +5407,12 @@ if test "$rdma" = "yes" ; then
echo "CONFIG_RDMA=y" >> $config_host_mak
fi
+if test "$tbannotation" = "yes" ; then
+ echo "CONFIG_TB_ANNOTATION=y" >> $config_host_mak
+ echo "LIBS+=-lxml2" >> $config_host_mak
+ QEMU_CFLAGS="-I/usr/include/libxml2 $QEMU_CFLAGS"
+fi
+
# Hold two types of flag:
# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
# a thread we have a handle to
diff --git a/qemu-options.hx b/qemu-options.hx
index 215d00d..e3d9df9 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2737,6 +2737,14 @@ Use @var{bzImage} as kernel image. The kernel can be either a Linux kernel
or in multiboot format.
ETEXI
+DEF("annotation", HAS_ARG, QEMU_OPTION_annotation, \
+ "-annotation tbAnnotation use 'tbAnnotation' as annotation file\n", QEMU_ARCH_ALL)
+STEXI
+@item -annotation @var{tbAnnotation}
+@findex -annotation
+Use @var{tbAnnotation} as annotation file. TODO: specify file format...
+ETEXI
+
DEF("append", HAS_ARG, QEMU_OPTION_append, \
"-append cmdline use 'cmdline' as kernel command line\n", QEMU_ARCH_ALL)
STEXI
diff --git a/tb-annotation/Makefile.objs b/tb-annotation/Makefile.objs
new file mode 100644
index 0000000..468cd42
--- /dev/null
+++ b/tb-annotation/Makefile.objs
@@ -0,0 +1 @@
+annotation-obj-y += tb-annotation-parser.o
\ No newline at end of file
diff --git a/vl.c b/vl.c
index 5aaea77..02bb11e 100644
--- a/vl.c
+++ b/vl.c
@@ -125,6 +125,8 @@ int main(int argc, char **argv)
#include "sysemu/replay.h"
#include "qapi/qmp/qerror.h"
+#include "tb-annotation/tb-annotation-parser.h"
+
#define MAX_VIRTIO_CONSOLES 1
#define MAX_SCLP_CONSOLES 1
@@ -2971,6 +2973,10 @@ int main(int argc, char **argv, char **envp)
int snapshot, linux_boot;
const char *initrd_filename;
const char *kernel_filename, *kernel_cmdline;
+#ifdef CONFIG_TB_ANNOTATION
+ CPUState *cpu = NULL;
+ const char *annotation_filename = NULL;
+#endif
const char *boot_order = NULL;
const char *boot_once = NULL;
DisplayState *ds;
@@ -4017,6 +4023,11 @@ int main(int argc, char **argv, char **envp)
exit(1);
}
break;
+#ifdef CONFIG_TB_ANNOTATION
+ case QEMU_OPTION_annotation:
+ annotation_filename = optarg;
+ break;
+#endif
default:
os_parse_cmd_args(popt->index, optarg);
}
@@ -4629,6 +4640,20 @@ int main(int argc, char **argv, char **envp)
qdev_machine_creation_done();
+#ifdef CONFIG_TB_ANNOTATION
+ if (annotation_filename && (smp_cpus > 1 || smp_cores > 1)) {
+ perror("At the moment only single CPU/core systems are supported " \
+ "by the annotation extension.");
+ exit(1);
+ }
+ if (annotation_filename) {
+ cpu = qemu_get_cpu(0);
+ if (cpu != NULL) {
+ cpu->tb_annotation = tb_annotation_parse(annotation_filename);
+ }
+ }
+#endif
+
/* TODO: once all bus devices are qdevified, this should be done
* when bus is created by qdev.c */
qemu_register_reset(qbus_reset_all_fn, sysbus_get_default());
--
2.5.0
next prev parent reply other threads:[~2016-01-14 10:55 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-14 10:55 [Qemu-devel] [RFC PATCH 0/3] (Resend) TranslationBlock annotation mechanism Peer Adelt
2016-01-14 10:55 ` [Qemu-devel] [RFC PATCH 1/3] tb-annotation: Added annotation XML file parser Peer Adelt
2016-01-14 10:55 ` [Qemu-devel] [RFC PATCH 2/3] tb-annotation: Add control flow graph mapper Peer Adelt
2016-01-14 10:55 ` Peer Adelt [this message]
2016-01-14 10:57 ` [Qemu-devel] [RFC PATCH 0/3] (Resend) TranslationBlock annotation mechanism Peer Adelt
2016-01-25 13:54 ` Peter Maydell
2016-01-26 11:02 ` Bastian Koppelmann
2016-01-27 18:54 ` Lluís Vilanova
2016-01-28 13:40 ` Bastian Koppelmann
2016-01-28 18:29 ` Lluís Vilanova
2016-02-01 22:33 ` Lluís Vilanova
2016-01-28 15:26 ` Frederic Konrad
2016-02-04 14:59 ` Bastian Koppelmann
-- strict thread matches above, loose matches on Subject: below --
2016-01-08 16:36 [Qemu-devel] [RFC PATCH 1/3] tb-annotation: Added annotation XML file parser Peer Adelt
2016-01-08 16:36 ` [Qemu-devel] [RFC PATCH 3/3] tb-annotation: Activate annotation extension Peer Adelt
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=1452768923-13787-4-git-send-email-peer.adelt@c-lab.de \
--to=peer.adelt@c-lab.de \
--cc=kbastian@mail.upb.de \
--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 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).