All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH  v3 00/19] testing & plugin updates
@ 2020-02-25 12:46 Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 01/19] tests/tcg: include a skip runner for pauth3 with plugins Alex Bennée
                   ` (19 more replies)
  0 siblings, 20 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, marcandre.lureau, aaron,
	cota, stefanha, kuhn.chenqun, peter.puhov, aurelien

Hi,

Nothing over v2 apart from signoffs. It would be nice to get the last
one reviewed before I roll the PR.

 - tests/iotests: be a little more forgiving on the size test

Alex Bennée (13):
  tests/tcg: include a skip runner for pauth3 with plugins
  tests/rcutorture: update usage hint
  tests/rcutorture: better document locking of stats
  tests/rcutorture: mild documenting refactor of update thread
  travis.yml: single-thread build-tcg stages
  tests/iotests: be a little more forgiving on the size test
  tracing: only allow -trace to override -D if set
  docs/devel: document query handle lifetimes
  target/riscv: progressively load the instruction during decode
  tests/plugins: make howvec clean-up after itself.
  tests/tcg: give debug builds a little bit longer
  tests/tcg: fix typo in configure.sh test for v8.3
  tests/tcg: take into account expected clashes pauth-4

Chen Qun (1):
  tests/plugin: prevent uninitialized warning

Emilio G. Cota (1):
  plugins/core: add missing break in cb_to_tcg_flags

Richard Henderson (1):
  tcg: save vaddr temp for plugin usage

Thomas Huth (1):
  travis.yml: Test the s390-ccw build, too

Wainer dos Santos Moschetta (1):
  travis.yml: Fix Travis YAML configuration warnings

Yoshinori Sato (1):
  qemu/bitops.h: Add extract8 and extract16

 docs/devel/tcg-plugins.rst                | 13 +++-
 include/qemu/bitops.h                     | 38 ++++++++++++
 target/riscv/instmap.h                    |  8 +--
 plugins/core.c                            |  1 +
 target/riscv/translate.c                  | 40 ++++++------
 tcg/tcg-op.c                              | 23 ++++++-
 tests/plugin/bb.c                         |  6 +-
 tests/plugin/howvec.c                     | 26 +++++---
 tests/plugin/insn.c                       |  3 +-
 tests/rcutorture.c                        | 74 ++++++++++++++++-------
 tests/tcg/aarch64/pauth-4.c               | 54 +++++++++++------
 trace/control.c                           | 11 +++-
 .travis.yml                               | 23 ++++---
 tests/qemu-iotests/214                    |  4 +-
 tests/tcg/Makefile.target                 |  4 +-
 tests/tcg/aarch64/Makefile.softmmu-target |  2 +
 tests/tcg/configure.sh                    |  2 +-
 17 files changed, 235 insertions(+), 97 deletions(-)

-- 
2.20.1



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [PATCH v3 01/19] tests/tcg: include a skip runner for pauth3 with plugins
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
@ 2020-02-25 12:46 ` Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 02/19] tests/rcutorture: update usage hint Alex Bennée
                   ` (18 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, Peter Maydell, berrange, robert.foley, pbonzini, stefanb,
	Alex Bennée, richard.henderson, f4bug, robhenry,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, open list:ARM TCG CPUs, aurelien

If we have plugins enabled we still need to have built the test to be
able to run it.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Robert Foley <robert.foley@linaro.org>
---
 tests/tcg/aarch64/Makefile.softmmu-target | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tests/tcg/aarch64/Makefile.softmmu-target b/tests/tcg/aarch64/Makefile.softmmu-target
index d2299b98b76..71f72cfbe34 100644
--- a/tests/tcg/aarch64/Makefile.softmmu-target
+++ b/tests/tcg/aarch64/Makefile.softmmu-target
@@ -70,4 +70,6 @@ pauth-3:
 	$(call skip-test, "BUILD of $@", "missing compiler support")
 run-pauth-3:
 	$(call skip-test, "RUN of pauth-3", "not built")
+run-plugin-pauth-3-with-%:
+	$(call skip-test, "RUN of pauth-3 ($*)", "not built")
 endif
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 02/19] tests/rcutorture: update usage hint
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 01/19] tests/tcg: include a skip runner for pauth3 with plugins Alex Bennée
@ 2020-02-25 12:46 ` Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 03/19] tests/rcutorture: better document locking of stats Alex Bennée
                   ` (17 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, Philippe Mathieu-Daudé,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien

Although documented in the comments we don't display all the various
invocations we can in the usage.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 tests/rcutorture.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/rcutorture.c b/tests/rcutorture.c
index 49311c82ea4..e8b2169e7dd 100644
--- a/tests/rcutorture.c
+++ b/tests/rcutorture.c
@@ -413,7 +413,8 @@ static void gtest_stress_10_5(void)
 
 static void usage(int argc, char *argv[])
 {
-    fprintf(stderr, "Usage: %s [nreaders [ perf | stress ] ]\n", argv[0]);
+    fprintf(stderr, "Usage: %s [nreaders [ [r|u]perf | stress [duration]]\n",
+            argv[0]);
     exit(-1);
 }
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 03/19] tests/rcutorture: better document locking of stats
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 01/19] tests/tcg: include a skip runner for pauth3 with plugins Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 02/19] tests/rcutorture: update usage hint Alex Bennée
@ 2020-02-25 12:46 ` Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 04/19] tests/rcutorture: mild documenting refactor of update thread Alex Bennée
                   ` (16 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, Philippe Mathieu-Daudé,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien

This is pure code motion with no functional effect.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 tests/rcutorture.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/tests/rcutorture.c b/tests/rcutorture.c
index e8b2169e7dd..256d24ed5ba 100644
--- a/tests/rcutorture.c
+++ b/tests/rcutorture.c
@@ -65,8 +65,6 @@
 #include "qemu/rcu.h"
 #include "qemu/thread.h"
 
-long long n_reads = 0LL;
-long n_updates = 0L;
 int nthreadsrunning;
 
 #define GOFLAG_INIT 0
@@ -78,11 +76,20 @@ static volatile int goflag = GOFLAG_INIT;
 #define RCU_READ_RUN 1000
 
 #define NR_THREADS 100
-static QemuMutex counts_mutex;
 static QemuThread threads[NR_THREADS];
 static struct rcu_reader_data *data[NR_THREADS];
 static int n_threads;
 
+/*
+ * Statistical counts
+ *
+ * These are the sum of local counters at the end of a run.
+ * Updates are protected by a mutex.
+ */
+static QemuMutex counts_mutex;
+long long n_reads = 0LL;
+long n_updates = 0L;
+
 static void create_thread(void *(*func)(void *))
 {
     if (n_threads >= NR_THREADS) {
@@ -230,8 +237,9 @@ struct rcu_stress {
 struct rcu_stress rcu_stress_array[RCU_STRESS_PIPE_LEN] = { { 0 } };
 struct rcu_stress *rcu_stress_current;
 int rcu_stress_idx;
-
 int n_mberror;
+
+/* Updates protected by counts_mutex */
 long long rcu_stress_count[RCU_STRESS_PIPE_LEN + 1];
 
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 04/19] tests/rcutorture: mild documenting refactor of update thread
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (2 preceding siblings ...)
  2020-02-25 12:46 ` [PATCH v3 03/19] tests/rcutorture: better document locking of stats Alex Bennée
@ 2020-02-25 12:46 ` Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 05/19] travis.yml: Test the s390-ccw build, too Alex Bennée
                   ` (15 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, marcandre.lureau, aaron,
	cota, stefanha, kuhn.chenqun, peter.puhov, aurelien

This is mainly to help with reasoning what the test is trying to do.
We can move rcu_stress_idx to a local variable as there is only ever
one updater thread. I've also added an assert to catch the case where
we end up updating the current structure to itself which is the only
way I can see the mberror cases we are seeing on Travis.

We shall see if the rcutorture test failures go away now.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

---
v3
  - explicit atomic_read/set
  - rename pipe_count to age
  - fix whitespace
---
 tests/rcutorture.c | 55 +++++++++++++++++++++++++++++++---------------
 1 file changed, 37 insertions(+), 18 deletions(-)

diff --git a/tests/rcutorture.c b/tests/rcutorture.c
index 256d24ed5ba..732f03abdaa 100644
--- a/tests/rcutorture.c
+++ b/tests/rcutorture.c
@@ -230,13 +230,12 @@ static void uperftest(int nupdaters, int duration)
 #define RCU_STRESS_PIPE_LEN 10
 
 struct rcu_stress {
-    int pipe_count;
+    int age;  /* how many update cycles while not rcu_stress_current */
     int mbtest;
 };
 
 struct rcu_stress rcu_stress_array[RCU_STRESS_PIPE_LEN] = { { 0 } };
 struct rcu_stress *rcu_stress_current;
-int rcu_stress_idx;
 int n_mberror;
 
 /* Updates protected by counts_mutex */
@@ -261,7 +260,7 @@ static void *rcu_read_stress_test(void *arg)
     while (goflag == GOFLAG_RUN) {
         rcu_read_lock();
         p = atomic_rcu_read(&rcu_stress_current);
-        if (p->mbtest == 0) {
+        if (atomic_read(&p->mbtest) == 0) {
             n_mberror++;
         }
         rcu_read_lock();
@@ -269,7 +268,7 @@ static void *rcu_read_stress_test(void *arg)
             garbage++;
         }
         rcu_read_unlock();
-        pc = p->pipe_count;
+        pc = atomic_read(&p->age);
         rcu_read_unlock();
         if ((pc > RCU_STRESS_PIPE_LEN) || (pc < 0)) {
             pc = RCU_STRESS_PIPE_LEN;
@@ -288,32 +287,52 @@ static void *rcu_read_stress_test(void *arg)
     return NULL;
 }
 
+/*
+ * Stress Test Updater
+ *
+ * The updater cycles around updating rcu_stress_current to point at
+ * one of the rcu_stress_array_entries and resets it's age. It
+ * then increments the age of all the other entries. The age
+ * will be read under an rcu_read_lock() and distribution of values
+ * calculated. The final result gives an indication of how many
+ * previously current rcu_stress entries are in flight until the RCU
+ * cycle complete.
+ */
 static void *rcu_update_stress_test(void *arg)
 {
-    int i;
-    struct rcu_stress *p;
+    int i, rcu_stress_idx = 0;
+    struct rcu_stress *cp = atomic_read(&rcu_stress_current);
 
     rcu_register_thread();
-
     *(struct rcu_reader_data **)arg = &rcu_reader;
+
     while (goflag == GOFLAG_INIT) {
         g_usleep(1000);
     }
+
     while (goflag == GOFLAG_RUN) {
-        i = rcu_stress_idx + 1;
-        if (i >= RCU_STRESS_PIPE_LEN) {
-            i = 0;
+        struct rcu_stress *p;
+        rcu_stress_idx++;
+        if (rcu_stress_idx >= RCU_STRESS_PIPE_LEN) {
+            rcu_stress_idx = 0;
         }
-        p = &rcu_stress_array[i];
-        p->mbtest = 0;
+        p = &rcu_stress_array[rcu_stress_idx];
+        /* catching up with ourselves would be a bug */
+        assert(p != cp);
+        atomic_set(&p->mbtest, 0);
         smp_mb();
-        p->pipe_count = 0;
-        p->mbtest = 1;
+        atomic_set(&p->age, 0);
+        atomic_set(&p->mbtest, 1);
         atomic_rcu_set(&rcu_stress_current, p);
-        rcu_stress_idx = i;
+        cp = p;
+        /*
+         * New RCU structure is now live, update pipe counts on old
+         * ones.
+         */
         for (i = 0; i < RCU_STRESS_PIPE_LEN; i++) {
             if (i != rcu_stress_idx) {
-                rcu_stress_array[i].pipe_count++;
+                atomic_set(&rcu_stress_array[i].age,
+                           rcu_stress_array[i].age + 1);
             }
         }
         synchronize_rcu();
@@ -346,7 +365,7 @@ static void stresstest(int nreaders, int duration)
     int i;
 
     rcu_stress_current = &rcu_stress_array[0];
-    rcu_stress_current->pipe_count = 0;
+    rcu_stress_current->age = 0;
     rcu_stress_current->mbtest = 1;
     for (i = 0; i < nreaders; i++) {
         create_thread(rcu_read_stress_test);
@@ -376,7 +395,7 @@ static void gtest_stress(int nreaders, int duration)
     int i;
 
     rcu_stress_current = &rcu_stress_array[0];
-    rcu_stress_current->pipe_count = 0;
+    rcu_stress_current->age = 0;
     rcu_stress_current->mbtest = 1;
     for (i = 0; i < nreaders; i++) {
         create_thread(rcu_read_stress_test);
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 05/19] travis.yml: Test the s390-ccw build, too
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (3 preceding siblings ...)
  2020-02-25 12:46 ` [PATCH v3 04/19] tests/rcutorture: mild documenting refactor of update thread Alex Bennée
@ 2020-02-25 12:46 ` Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 06/19] travis.yml: Fix Travis YAML configuration warnings Alex Bennée
                   ` (14 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, Thomas Huth, berrange, robert.foley, pbonzini, stefanb,
	open list:S390 general arch...,
	Alex Bennée, Cornelia Huck, richard.henderson, f4bug,
	robhenry, Philippe Mathieu-Daudé,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien

From: Thomas Huth <thuth@redhat.com>

Since we can now use a s390x host on Travis, we can also build and
test the s390-ccw bios images there. For this we have to make sure
that roms/SLOF is checked out, too, and then move the generated *.img
files to the right location before running the tests.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <20200206202543.7085-1-thuth@redhat.com>
---
 .travis.yml | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/.travis.yml b/.travis.yml
index 58870559515..ea13e071795 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -509,6 +509,16 @@ matrix:
       env:
         - TEST_CMD="make check check-tcg V=1"
         - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user"
+      script:
+        - ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
+        - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
+        - |
+          if [ "$BUILD_RC" -eq 0 ] ; then
+              mv pc-bios/s390-ccw/*.img pc-bios/ ;
+              ${TEST_CMD} ;
+          else
+              $(exit $BUILD_RC);
+          fi
 
     # Release builds
     # The make-release script expect a QEMU version, so our tag must start with a 'v'.
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 06/19] travis.yml: Fix Travis YAML configuration warnings
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (4 preceding siblings ...)
  2020-02-25 12:46 ` [PATCH v3 05/19] travis.yml: Test the s390-ccw build, too Alex Bennée
@ 2020-02-25 12:46 ` Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 07/19] travis.yml: single-thread build-tcg stages Alex Bennée
                   ` (13 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, Philippe Mathieu-Daudé,
	marcandre.lureau, aaron, cota, Wainer dos Santos Moschetta,
	stefanha, kuhn.chenqun, peter.puhov, aurelien

From: Wainer dos Santos Moschetta <wainersm@redhat.com>

This fixes the following warnings Travis has detected on the
YAML configuration:

- 'on root: missing os, using the default "linux"'
- 'on root: the key matrix is an alias for jobs, using jobs'
- 'on jobs.include.python: unexpected sequence, using the first value (3.5)'
- 'on jobs.include.python: unexpected sequence, using the first value (3.6)'

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20200207210124.141119-2-wainersm@redhat.com>
---
 .travis.yml | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index ea13e071795..0612998958b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,7 @@
 # The current Travis default is a VM based 16.04 Xenial on GCE
 # Additional builds with specific requirements for a full VM need to
 # be added as additional matrix: entries later on
+os: linux
 dist: xenial
 language: c
 compiler:
@@ -113,7 +114,7 @@ after_script:
   - if command -v ccache ; then ccache --show-stats ; fi
 
 
-matrix:
+jobs:
   include:
     - name: "GCC static (user)"
       env:
@@ -297,8 +298,7 @@ matrix:
         - CONFIG="--target-list=x86_64-softmmu"
         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
       language: python
-      python:
-        - "3.5"
+      python: 3.5
 
 
     - name: "GCC Python 3.6 (x86_64-softmmu)"
@@ -306,8 +306,7 @@ matrix:
         - CONFIG="--target-list=x86_64-softmmu"
         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
       language: python
-      python:
-        - "3.6"
+      python: 3.6
 
 
     # Acceptance (Functional) tests
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 07/19] travis.yml: single-thread build-tcg stages
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (5 preceding siblings ...)
  2020-02-25 12:46 ` [PATCH v3 06/19] travis.yml: Fix Travis YAML configuration warnings Alex Bennée
@ 2020-02-25 12:46 ` Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 08/19] tests/iotests: be a little more forgiving on the size test Alex Bennée
                   ` (12 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, Philippe Mathieu-Daudé,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien

This still seems to be a problem for Travis.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 .travis.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 0612998958b..f4020dcc6c8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -400,7 +400,7 @@ jobs:
     - name: "GCC check-tcg (some-softmmu)"
       env:
         - CONFIG="--enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
-        - TEST_BUILD_CMD="make -j${JOBS} build-tcg"
+        - TEST_BUILD_CMD="make build-tcg"
         - TEST_CMD="make check-tcg"
         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
 
@@ -409,7 +409,7 @@ jobs:
     - name: "GCC plugins check-tcg (some-softmmu)"
       env:
         - CONFIG="--enable-plugins --enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
-        - TEST_BUILD_CMD="make -j${JOBS} build-tcg"
+        - TEST_BUILD_CMD="make build-tcg"
         - TEST_CMD="make check-tcg"
         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 08/19] tests/iotests: be a little more forgiving on the size test
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (6 preceding siblings ...)
  2020-02-25 12:46 ` [PATCH v3 07/19] travis.yml: single-thread build-tcg stages Alex Bennée
@ 2020-02-25 12:46 ` Alex Bennée
  2020-02-25 14:11   ` Robert Foley
  2020-02-25 18:22   ` Stefan Berger
  2020-02-25 12:47 ` [PATCH v3 09/19] tracing: only allow -trace to override -D if set Alex Bennée
                   ` (11 subsequent siblings)
  19 siblings, 2 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, Kevin Wolf, berrange, robert.foley, pbonzini, stefanb,
	Alex Bennée, richard.henderson, f4bug, robhenry, Max Reitz,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, open list:Block layer core, aurelien

At least on ZFS this was failing as 512 was less than or equal to 512.
I suspect the reason is additional compression done by ZFS and however
qemu-img gets the actual size.

Loosen the criteria to make sure after is not bigger than before and
also dump the values in the report.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 tests/qemu-iotests/214 | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/qemu-iotests/214 b/tests/qemu-iotests/214
index 3500e0c47a2..6d1324cd157 100755
--- a/tests/qemu-iotests/214
+++ b/tests/qemu-iotests/214
@@ -125,9 +125,9 @@ $QEMU_IO -c "write -P 0xcc $offset $data_size" "json:{\
 sizeB=$($QEMU_IMG info --output=json "$TEST_IMG" |
         sed -n '/"actual-size":/ s/[^0-9]//gp')
 
-if [ $sizeA -le $sizeB ]
+if [ $sizeA -lt $sizeB ]
 then
-    echo "Compression ERROR"
+    echo "Compression ERROR ($sizeA vs $sizeB)"
 fi
 
 $QEMU_IMG check --output=json "$TEST_IMG" |
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 09/19] tracing: only allow -trace to override -D if set
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (7 preceding siblings ...)
  2020-02-25 12:46 ` [PATCH v3 08/19] tests/iotests: be a little more forgiving on the size test Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-25 12:47 ` [PATCH v3 10/19] docs/devel: document query handle lifetimes Alex Bennée
                   ` (10 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, Laurent Vivier,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien

Otherwise any -D settings the user may have made get ignored.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Robert Foley <robert.foley@linaro.org>
---
 trace/control.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/trace/control.c b/trace/control.c
index 6c775e68eba..2ffe0008184 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -226,10 +226,15 @@ void trace_init_file(const char *file)
 #ifdef CONFIG_TRACE_SIMPLE
     st_set_trace_file(file);
 #elif defined CONFIG_TRACE_LOG
-    /* If both the simple and the log backends are enabled, "--trace file"
-     * only applies to the simple backend; use "-D" for the log backend.
+    /*
+     * If both the simple and the log backends are enabled, "--trace file"
+     * only applies to the simple backend; use "-D" for the log
+     * backend. However we should only override -D if we actually have
+     * something to override it with.
      */
-    qemu_set_log_filename(file, &error_fatal);
+    if (file) {
+        qemu_set_log_filename(file, &error_fatal);
+    }
 #else
     if (file) {
         fprintf(stderr, "error: --trace file=...: "
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 10/19] docs/devel: document query handle lifetimes
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (8 preceding siblings ...)
  2020-02-25 12:47 ` [PATCH v3 09/19] tracing: only allow -trace to override -D if set Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-25 12:47 ` [PATCH v3 11/19] plugins/core: add missing break in cb_to_tcg_flags Alex Bennée
                   ` (9 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, marcandre.lureau, aaron,
	cota, stefanha, kuhn.chenqun, peter.puhov, aurelien

I forgot to document the lifetime of handles in the developer
documentation. Do so now.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Robert Foley <robert.foley@linaro.org>
Reviewed-by: Robert Foley <robert.foley@linaro.org>
---
 docs/devel/tcg-plugins.rst | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/docs/devel/tcg-plugins.rst b/docs/devel/tcg-plugins.rst
index 718eef00f22..a05990906cc 100644
--- a/docs/devel/tcg-plugins.rst
+++ b/docs/devel/tcg-plugins.rst
@@ -51,8 +51,17 @@ about how QEMU's translation works to the plugins. While there are
 conceptions such as translation time and translation blocks the
 details are opaque to plugins. The plugin is able to query select
 details of instructions and system configuration only through the
-exported *qemu_plugin* functions. The types used to describe
-instructions and events are opaque to the plugins themselves.
+exported *qemu_plugin* functions.
+
+Query Handle Lifetime
+---------------------
+
+Each callback provides an opaque anonymous information handle which
+can usually be further queried to find out information about a
+translation, instruction or operation. The handles themselves are only
+valid during the lifetime of the callback so it is important that any
+information that is needed is extracted during the callback and saved
+by the plugin.
 
 Usage
 =====
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 11/19] plugins/core: add missing break in cb_to_tcg_flags
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (9 preceding siblings ...)
  2020-02-25 12:47 ` [PATCH v3 10/19] docs/devel: document query handle lifetimes Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-25 12:47 ` [PATCH v3 12/19] tests/plugin: prevent uninitialized warning Alex Bennée
                   ` (8 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, qemu-stable,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien

From: "Emilio G. Cota" <cota@braap.org>

Fixes: 54cb65d8588
Reported-by: Robert Henry <robhenry@microsoft.com>
Signed-off-by: Emilio G. Cota <cota@braap.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20200105072940.32204-1-cota@braap.org>
Cc: qemu-stable@nongnu.org
---
 plugins/core.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/plugins/core.c b/plugins/core.c
index 9e1b9e7a915..ed863011baf 100644
--- a/plugins/core.c
+++ b/plugins/core.c
@@ -286,6 +286,7 @@ static inline uint32_t cb_to_tcg_flags(enum qemu_plugin_cb_flags flags)
     switch (flags) {
     case QEMU_PLUGIN_CB_RW_REGS:
         ret = 0;
+        break;
     case QEMU_PLUGIN_CB_R_REGS:
         ret = TCG_CALL_NO_WG;
         break;
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 12/19] tests/plugin: prevent uninitialized warning
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (10 preceding siblings ...)
  2020-02-25 12:47 ` [PATCH v3 11/19] plugins/core: add missing break in cb_to_tcg_flags Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-26 13:59   ` Philippe Mathieu-Daudé
  2020-02-25 12:47 ` [PATCH v3 13/19] qemu/bitops.h: Add extract8 and extract16 Alex Bennée
                   ` (7 subsequent siblings)
  19 siblings, 1 reply; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, Thomas Huth, berrange, robert.foley, pbonzini, stefanb,
	Alex Bennée, Euler Robot, richard.henderson, f4bug,
	robhenry, marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien

From: Chen Qun <kuhn.chenqun@huawei.com>

According to the glibc function requirements, we need initialise
 the variable. Otherwise there will be compilation warnings:

glib-autocleanups.h:28:3: warning: ‘out’ may be
used uninitialized in this function [-Wmaybe-uninitialized]
   g_free (*pp);
   ^~~~~~~~~~~~

Reported-by: Euler Robot <euler.robot@huawei.com>
Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20200206093238.203984-1-kuhn.chenqun@huawei.com>
[AJB: uses Thomas's single line allocation]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/plugin/bb.c   | 6 +++---
 tests/plugin/insn.c | 3 +--
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/tests/plugin/bb.c b/tests/plugin/bb.c
index f30bea08dcc..df19fd359df 100644
--- a/tests/plugin/bb.c
+++ b/tests/plugin/bb.c
@@ -22,9 +22,9 @@ static bool do_inline;
 
 static void plugin_exit(qemu_plugin_id_t id, void *p)
 {
-    g_autofree gchar *out;
-    out = g_strdup_printf("bb's: %" PRIu64", insns: %" PRIu64 "\n",
-                          bb_count, insn_count);
+    g_autofree gchar *out = g_strdup_printf(
+        "bb's: %" PRIu64", insns: %" PRIu64 "\n",
+        bb_count, insn_count);
     qemu_plugin_outs(out);
 }
 
diff --git a/tests/plugin/insn.c b/tests/plugin/insn.c
index 0a8f5a0000e..a9a6e412373 100644
--- a/tests/plugin/insn.c
+++ b/tests/plugin/insn.c
@@ -44,8 +44,7 @@ static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
 
 static void plugin_exit(qemu_plugin_id_t id, void *p)
 {
-    g_autofree gchar *out;
-    out = g_strdup_printf("insns: %" PRIu64 "\n", insn_count);
+    g_autofree gchar *out = g_strdup_printf("insns: %" PRIu64 "\n", insn_count);
     qemu_plugin_outs(out);
 }
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 13/19] qemu/bitops.h: Add extract8 and extract16
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (11 preceding siblings ...)
  2020-02-25 12:47 ` [PATCH v3 12/19] tests/plugin: prevent uninitialized warning Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-25 14:04   ` Philippe Mathieu-Daudé
  2020-02-25 12:47   ` Alex Bennée
                   ` (6 subsequent siblings)
  19 siblings, 1 reply; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb,
	Philippe Mathieu-Daudé,
	richard.henderson, f4bug, robhenry, Yoshinori Sato,
	Alex Bennée, marcandre.lureau, aaron, cota, stefanha,
	kuhn.chenqun, peter.puhov, aurelien

From: Yoshinori Sato <ysato@users.sourceforge.jp>

Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190607091116.49044-10-ysato@users.sourceforge.jp>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20200212130311.127515-3-ysato@users.sourceforge.jp>
---
 include/qemu/bitops.h | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h
index 02c1ce6a5d4..f55ce8b320b 100644
--- a/include/qemu/bitops.h
+++ b/include/qemu/bitops.h
@@ -301,6 +301,44 @@ static inline uint32_t extract32(uint32_t value, int start, int length)
     return (value >> start) & (~0U >> (32 - length));
 }
 
+/**
+ * extract8:
+ * @value: the value to extract the bit field from
+ * @start: the lowest bit in the bit field (numbered from 0)
+ * @length: the length of the bit field
+ *
+ * Extract from the 8 bit input @value the bit field specified by the
+ * @start and @length parameters, and return it. The bit field must
+ * lie entirely within the 8 bit word. It is valid to request that
+ * all 8 bits are returned (ie @length 8 and @start 0).
+ *
+ * Returns: the value of the bit field extracted from the input value.
+ */
+static inline uint8_t extract8(uint8_t value, int start, int length)
+{
+    assert(start >= 0 && length > 0 && length <= 8 - start);
+    return extract32(value, start, length);
+}
+
+/**
+ * extract16:
+ * @value: the value to extract the bit field from
+ * @start: the lowest bit in the bit field (numbered from 0)
+ * @length: the length of the bit field
+ *
+ * Extract from the 16 bit input @value the bit field specified by the
+ * @start and @length parameters, and return it. The bit field must
+ * lie entirely within the 16 bit word. It is valid to request that
+ * all 16 bits are returned (ie @length 16 and @start 0).
+ *
+ * Returns: the value of the bit field extracted from the input value.
+ */
+static inline uint16_t extract16(uint16_t value, int start, int length)
+{
+    assert(start >= 0 && length > 0 && length <= 16 - start);
+    return extract32(value, start, length);
+}
+
 /**
  * extract64:
  * @value: the value to extract the bit field from
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 14/19] target/riscv: progressively load the instruction during decode
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
@ 2020-02-25 12:47   ` Alex Bennée
  2020-02-25 12:46 ` [PATCH v3 02/19] tests/rcutorture: update usage hint Alex Bennée
                     ` (18 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, Sagar Karandikar, Alistair Francis, kuhn.chenqun, stefanb,
	aaron, cota, marcandre.lureau, robert.foley, richard.henderson,
	stefanha, peter.puhov, open list:RISC-V TCG CPUs,
	Alex Bennée, berrange, Bastian Koppelmann, f4bug, robhenry,
	Palmer Dabbelt, pbonzini, aurelien

The plugin system would throw up a harmless warning when it detected
that a disassembly of an instruction didn't use all it's bytes. Fix
the riscv decoder to only load the instruction bytes it needs as it
needs them.

This drops opcode from the ctx in favour if passing the appropriately
sized opcode down a few levels of the decode.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Robert Foley <robert.foley@linaro.org>

---
v2
  - use extract16 for uint16_t opcodes
---
 target/riscv/instmap.h   |  8 ++++----
 target/riscv/translate.c | 40 +++++++++++++++++++++-------------------
 2 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/target/riscv/instmap.h b/target/riscv/instmap.h
index f8ad7d60fd5..40b6d2b64de 100644
--- a/target/riscv/instmap.h
+++ b/target/riscv/instmap.h
@@ -344,8 +344,8 @@ enum {
 #define GET_C_LW_IMM(inst)          ((extract32(inst, 6, 1) << 2) \
                                     | (extract32(inst, 10, 3) << 3) \
                                     | (extract32(inst, 5, 1) << 6))
-#define GET_C_LD_IMM(inst)          ((extract32(inst, 10, 3) << 3) \
-                                    | (extract32(inst, 5, 2) << 6))
+#define GET_C_LD_IMM(inst)          ((extract16(inst, 10, 3) << 3) \
+                                    | (extract16(inst, 5, 2) << 6))
 #define GET_C_J_IMM(inst)           ((extract32(inst, 3, 3) << 1) \
                                     | (extract32(inst, 11, 1) << 4) \
                                     | (extract32(inst, 2, 1) << 5) \
@@ -363,7 +363,7 @@ enum {
 #define GET_C_RD(inst)              GET_RD(inst)
 #define GET_C_RS1(inst)             GET_RD(inst)
 #define GET_C_RS2(inst)             extract32(inst, 2, 5)
-#define GET_C_RS1S(inst)            (8 + extract32(inst, 7, 3))
-#define GET_C_RS2S(inst)            (8 + extract32(inst, 2, 3))
+#define GET_C_RS1S(inst)            (8 + extract16(inst, 7, 3))
+#define GET_C_RS2S(inst)            (8 + extract16(inst, 2, 3))
 
 #endif
diff --git a/target/riscv/translate.c b/target/riscv/translate.c
index 14dc71156be..d5de7f468a7 100644
--- a/target/riscv/translate.c
+++ b/target/riscv/translate.c
@@ -44,7 +44,6 @@ typedef struct DisasContext {
     /* pc_succ_insn points to the instruction following base.pc_next */
     target_ulong pc_succ_insn;
     target_ulong priv_ver;
-    uint32_t opcode;
     uint32_t mstatus_fs;
     uint32_t misa;
     uint32_t mem_idx;
@@ -492,45 +491,45 @@ static void gen_set_rm(DisasContext *ctx, int rm)
     tcg_temp_free_i32(t0);
 }
 
-static void decode_RV32_64C0(DisasContext *ctx)
+static void decode_RV32_64C0(DisasContext *ctx, uint16_t opcode)
 {
-    uint8_t funct3 = extract32(ctx->opcode, 13, 3);
-    uint8_t rd_rs2 = GET_C_RS2S(ctx->opcode);
-    uint8_t rs1s = GET_C_RS1S(ctx->opcode);
+    uint8_t funct3 = extract16(opcode, 13, 3);
+    uint8_t rd_rs2 = GET_C_RS2S(opcode);
+    uint8_t rs1s = GET_C_RS1S(opcode);
 
     switch (funct3) {
     case 3:
 #if defined(TARGET_RISCV64)
         /* C.LD(RV64/128) -> ld rd', offset[7:3](rs1')*/
         gen_load_c(ctx, OPC_RISC_LD, rd_rs2, rs1s,
-                 GET_C_LD_IMM(ctx->opcode));
+                 GET_C_LD_IMM(opcode));
 #else
         /* C.FLW (RV32) -> flw rd', offset[6:2](rs1')*/
         gen_fp_load(ctx, OPC_RISC_FLW, rd_rs2, rs1s,
-                    GET_C_LW_IMM(ctx->opcode));
+                    GET_C_LW_IMM(opcode));
 #endif
         break;
     case 7:
 #if defined(TARGET_RISCV64)
         /* C.SD (RV64/128) -> sd rs2', offset[7:3](rs1')*/
         gen_store_c(ctx, OPC_RISC_SD, rs1s, rd_rs2,
-                  GET_C_LD_IMM(ctx->opcode));
+                  GET_C_LD_IMM(opcode));
 #else
         /* C.FSW (RV32) -> fsw rs2', offset[6:2](rs1')*/
         gen_fp_store(ctx, OPC_RISC_FSW, rs1s, rd_rs2,
-                     GET_C_LW_IMM(ctx->opcode));
+                     GET_C_LW_IMM(opcode));
 #endif
         break;
     }
 }
 
-static void decode_RV32_64C(DisasContext *ctx)
+static void decode_RV32_64C(DisasContext *ctx, uint16_t opcode)
 {
-    uint8_t op = extract32(ctx->opcode, 0, 2);
+    uint8_t op = extract16(opcode, 0, 2);
 
     switch (op) {
     case 0:
-        decode_RV32_64C0(ctx);
+        decode_RV32_64C0(ctx, opcode);
         break;
     }
 }
@@ -709,22 +708,25 @@ static bool gen_shift(DisasContext *ctx, arg_r *a,
 /* Include the auto-generated decoder for 16 bit insn */
 #include "decode_insn16.inc.c"
 
-static void decode_opc(DisasContext *ctx)
+static void decode_opc(CPURISCVState *env, DisasContext *ctx, uint16_t opcode)
 {
     /* check for compressed insn */
-    if (extract32(ctx->opcode, 0, 2) != 3) {
+    if (extract16(opcode, 0, 2) != 3) {
         if (!has_ext(ctx, RVC)) {
             gen_exception_illegal(ctx);
         } else {
             ctx->pc_succ_insn = ctx->base.pc_next + 2;
-            if (!decode_insn16(ctx, ctx->opcode)) {
+            if (!decode_insn16(ctx, opcode)) {
                 /* fall back to old decoder */
-                decode_RV32_64C(ctx);
+                decode_RV32_64C(ctx, opcode);
             }
         }
     } else {
+        uint32_t opcode32 = opcode;
+        opcode32 = deposit32(opcode32, 16, 16,
+                             translator_lduw(env, ctx->base.pc_next + 2));
         ctx->pc_succ_insn = ctx->base.pc_next + 4;
-        if (!decode_insn32(ctx, ctx->opcode)) {
+        if (!decode_insn32(ctx, opcode32)) {
             gen_exception_illegal(ctx);
         }
     }
@@ -776,9 +778,9 @@ static void riscv_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
 {
     DisasContext *ctx = container_of(dcbase, DisasContext, base);
     CPURISCVState *env = cpu->env_ptr;
+    uint16_t opcode16 = translator_lduw(env, ctx->base.pc_next);
 
-    ctx->opcode = translator_ldl(env, ctx->base.pc_next);
-    decode_opc(ctx);
+    decode_opc(env, ctx, opcode16);
     ctx->base.pc_next = ctx->pc_succ_insn;
 
     if (ctx->base.is_jmp == DISAS_NEXT) {
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 14/19] target/riscv: progressively load the instruction during decode
@ 2020-02-25 12:47   ` Alex Bennée
  0 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: cota, aaron, peter.puhov, robert.foley, kuhn.chenqun, robhenry,
	fam, berrange, f4bug, richard.henderson, balrogg, aurelien,
	pbonzini, stefanha, stefanb, marcandre.lureau, Alex Bennée,
	Alistair Francis, Palmer Dabbelt, Alistair Francis,
	Sagar Karandikar, Bastian Koppelmann, open list:RISC-V TCG CPUs

The plugin system would throw up a harmless warning when it detected
that a disassembly of an instruction didn't use all it's bytes. Fix
the riscv decoder to only load the instruction bytes it needs as it
needs them.

This drops opcode from the ctx in favour if passing the appropriately
sized opcode down a few levels of the decode.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Robert Foley <robert.foley@linaro.org>

---
v2
  - use extract16 for uint16_t opcodes
---
 target/riscv/instmap.h   |  8 ++++----
 target/riscv/translate.c | 40 +++++++++++++++++++++-------------------
 2 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/target/riscv/instmap.h b/target/riscv/instmap.h
index f8ad7d60fd5..40b6d2b64de 100644
--- a/target/riscv/instmap.h
+++ b/target/riscv/instmap.h
@@ -344,8 +344,8 @@ enum {
 #define GET_C_LW_IMM(inst)          ((extract32(inst, 6, 1) << 2) \
                                     | (extract32(inst, 10, 3) << 3) \
                                     | (extract32(inst, 5, 1) << 6))
-#define GET_C_LD_IMM(inst)          ((extract32(inst, 10, 3) << 3) \
-                                    | (extract32(inst, 5, 2) << 6))
+#define GET_C_LD_IMM(inst)          ((extract16(inst, 10, 3) << 3) \
+                                    | (extract16(inst, 5, 2) << 6))
 #define GET_C_J_IMM(inst)           ((extract32(inst, 3, 3) << 1) \
                                     | (extract32(inst, 11, 1) << 4) \
                                     | (extract32(inst, 2, 1) << 5) \
@@ -363,7 +363,7 @@ enum {
 #define GET_C_RD(inst)              GET_RD(inst)
 #define GET_C_RS1(inst)             GET_RD(inst)
 #define GET_C_RS2(inst)             extract32(inst, 2, 5)
-#define GET_C_RS1S(inst)            (8 + extract32(inst, 7, 3))
-#define GET_C_RS2S(inst)            (8 + extract32(inst, 2, 3))
+#define GET_C_RS1S(inst)            (8 + extract16(inst, 7, 3))
+#define GET_C_RS2S(inst)            (8 + extract16(inst, 2, 3))
 
 #endif
diff --git a/target/riscv/translate.c b/target/riscv/translate.c
index 14dc71156be..d5de7f468a7 100644
--- a/target/riscv/translate.c
+++ b/target/riscv/translate.c
@@ -44,7 +44,6 @@ typedef struct DisasContext {
     /* pc_succ_insn points to the instruction following base.pc_next */
     target_ulong pc_succ_insn;
     target_ulong priv_ver;
-    uint32_t opcode;
     uint32_t mstatus_fs;
     uint32_t misa;
     uint32_t mem_idx;
@@ -492,45 +491,45 @@ static void gen_set_rm(DisasContext *ctx, int rm)
     tcg_temp_free_i32(t0);
 }
 
-static void decode_RV32_64C0(DisasContext *ctx)
+static void decode_RV32_64C0(DisasContext *ctx, uint16_t opcode)
 {
-    uint8_t funct3 = extract32(ctx->opcode, 13, 3);
-    uint8_t rd_rs2 = GET_C_RS2S(ctx->opcode);
-    uint8_t rs1s = GET_C_RS1S(ctx->opcode);
+    uint8_t funct3 = extract16(opcode, 13, 3);
+    uint8_t rd_rs2 = GET_C_RS2S(opcode);
+    uint8_t rs1s = GET_C_RS1S(opcode);
 
     switch (funct3) {
     case 3:
 #if defined(TARGET_RISCV64)
         /* C.LD(RV64/128) -> ld rd', offset[7:3](rs1')*/
         gen_load_c(ctx, OPC_RISC_LD, rd_rs2, rs1s,
-                 GET_C_LD_IMM(ctx->opcode));
+                 GET_C_LD_IMM(opcode));
 #else
         /* C.FLW (RV32) -> flw rd', offset[6:2](rs1')*/
         gen_fp_load(ctx, OPC_RISC_FLW, rd_rs2, rs1s,
-                    GET_C_LW_IMM(ctx->opcode));
+                    GET_C_LW_IMM(opcode));
 #endif
         break;
     case 7:
 #if defined(TARGET_RISCV64)
         /* C.SD (RV64/128) -> sd rs2', offset[7:3](rs1')*/
         gen_store_c(ctx, OPC_RISC_SD, rs1s, rd_rs2,
-                  GET_C_LD_IMM(ctx->opcode));
+                  GET_C_LD_IMM(opcode));
 #else
         /* C.FSW (RV32) -> fsw rs2', offset[6:2](rs1')*/
         gen_fp_store(ctx, OPC_RISC_FSW, rs1s, rd_rs2,
-                     GET_C_LW_IMM(ctx->opcode));
+                     GET_C_LW_IMM(opcode));
 #endif
         break;
     }
 }
 
-static void decode_RV32_64C(DisasContext *ctx)
+static void decode_RV32_64C(DisasContext *ctx, uint16_t opcode)
 {
-    uint8_t op = extract32(ctx->opcode, 0, 2);
+    uint8_t op = extract16(opcode, 0, 2);
 
     switch (op) {
     case 0:
-        decode_RV32_64C0(ctx);
+        decode_RV32_64C0(ctx, opcode);
         break;
     }
 }
@@ -709,22 +708,25 @@ static bool gen_shift(DisasContext *ctx, arg_r *a,
 /* Include the auto-generated decoder for 16 bit insn */
 #include "decode_insn16.inc.c"
 
-static void decode_opc(DisasContext *ctx)
+static void decode_opc(CPURISCVState *env, DisasContext *ctx, uint16_t opcode)
 {
     /* check for compressed insn */
-    if (extract32(ctx->opcode, 0, 2) != 3) {
+    if (extract16(opcode, 0, 2) != 3) {
         if (!has_ext(ctx, RVC)) {
             gen_exception_illegal(ctx);
         } else {
             ctx->pc_succ_insn = ctx->base.pc_next + 2;
-            if (!decode_insn16(ctx, ctx->opcode)) {
+            if (!decode_insn16(ctx, opcode)) {
                 /* fall back to old decoder */
-                decode_RV32_64C(ctx);
+                decode_RV32_64C(ctx, opcode);
             }
         }
     } else {
+        uint32_t opcode32 = opcode;
+        opcode32 = deposit32(opcode32, 16, 16,
+                             translator_lduw(env, ctx->base.pc_next + 2));
         ctx->pc_succ_insn = ctx->base.pc_next + 4;
-        if (!decode_insn32(ctx, ctx->opcode)) {
+        if (!decode_insn32(ctx, opcode32)) {
             gen_exception_illegal(ctx);
         }
     }
@@ -776,9 +778,9 @@ static void riscv_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
 {
     DisasContext *ctx = container_of(dcbase, DisasContext, base);
     CPURISCVState *env = cpu->env_ptr;
+    uint16_t opcode16 = translator_lduw(env, ctx->base.pc_next);
 
-    ctx->opcode = translator_ldl(env, ctx->base.pc_next);
-    decode_opc(ctx);
+    decode_opc(env, ctx, opcode16);
     ctx->base.pc_next = ctx->pc_succ_insn;
 
     if (ctx->base.is_jmp == DISAS_NEXT) {
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 15/19] tests/plugins: make howvec clean-up after itself.
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (13 preceding siblings ...)
  2020-02-25 12:47   ` Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-25 12:47 ` [PATCH v3 16/19] tests/tcg: give debug builds a little bit longer Alex Bennée
                   ` (4 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, marcandre.lureau, aaron,
	cota, stefanha, kuhn.chenqun, peter.puhov, aurelien

TCG plugins are responsible for their own memory usage and although
the plugin_exit is tied to the end of execution in this case it is
still poor practice. Ensure we delete the hash table and related data
when we are done to be a good plugin citizen.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Robert Foley <robert.foley@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

---
v2
  - re-use counts for g_list_sort() as it modifies list
  - drop it list

squash! tests/plugins: make howvec clean-up after itself.
---
 tests/plugin/howvec.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/tests/plugin/howvec.c b/tests/plugin/howvec.c
index 4ca555e1239..3b9a6939f23 100644
--- a/tests/plugin/howvec.c
+++ b/tests/plugin/howvec.c
@@ -163,6 +163,13 @@ static gint cmp_exec_count(gconstpointer a, gconstpointer b)
     return ea->count > eb->count ? -1 : 1;
 }
 
+static void free_record(gpointer data)
+{
+    InsnExecCount *rec = (InsnExecCount *) data;
+    g_free(rec->insn);
+    g_free(rec);
+}
+
 static void plugin_exit(qemu_plugin_id_t id, void *p)
 {
     g_autoptr(GString) report = g_string_new("Instruction Classes:\n");
@@ -195,30 +202,31 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
 
     counts = g_hash_table_get_values(insns);
     if (counts && g_list_next(counts)) {
-        GList *it;
-
         g_string_append_printf(report,"Individual Instructions:\n");
+        counts = g_list_sort(counts, cmp_exec_count);
 
-        it = g_list_sort(counts, cmp_exec_count);
-
-        for (i = 0; i < limit && it->next; i++, it = it->next) {
-            InsnExecCount *rec = (InsnExecCount *) it->data;
-            g_string_append_printf(report, "Instr: %-24s\t(%ld hits)\t(op=%#08x/%s)\n",
+        for (i = 0; i < limit && g_list_next(counts);
+             i++, counts = g_list_next(counts)) {
+            InsnExecCount *rec = (InsnExecCount *) counts->data;
+            g_string_append_printf(report,
+                                   "Instr: %-24s\t(%ld hits)\t(op=%#08x/%s)\n",
                                    rec->insn,
                                    rec->count,
                                    rec->opcode,
                                    rec->class ?
                                    rec->class->class : "un-categorised");
         }
-        g_list_free(it);
+        g_list_free(counts);
     }
 
+    g_hash_table_destroy(insns);
+
     qemu_plugin_outs(report->str);
 }
 
 static void plugin_init(void)
 {
-    insns = g_hash_table_new(NULL, g_direct_equal);
+    insns = g_hash_table_new_full(NULL, g_direct_equal, NULL, &free_record);
 }
 
 static void vcpu_insn_exec_before(unsigned int cpu_index, void *udata)
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 16/19] tests/tcg: give debug builds a little bit longer
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (14 preceding siblings ...)
  2020-02-25 12:47 ` [PATCH v3 15/19] tests/plugins: make howvec clean-up after itself Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-25 12:47 ` [PATCH v3 17/19] tcg: save vaddr temp for plugin usage Alex Bennée
                   ` (3 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, Philippe Mathieu-Daudé,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien

When combined with heavy plugins we occasionally hit the timeouts.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/tcg/Makefile.target | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target
index 3c7421a356e..b3cff3cad1a 100644
--- a/tests/tcg/Makefile.target
+++ b/tests/tcg/Makefile.target
@@ -79,7 +79,7 @@ QEMU_OPTS=
 
 # If TCG debugging is enabled things are a lot slower
 ifeq ($(CONFIG_DEBUG_TCG),y)
-TIMEOUT=45
+TIMEOUT=60
 else
 TIMEOUT=15
 endif
@@ -137,7 +137,7 @@ PLUGINS=$(notdir $(wildcard $(PLUGIN_DIR)/*.so))
 $(foreach p,$(PLUGINS), \
 	$(foreach t,$(TESTS),\
 		$(eval run-plugin-$(t)-with-$(p): $t $p) \
-		$(eval run-plugin-$(t)-with-$(p): TIMEOUT=30) \
+		$(eval run-plugin-$(t)-with-$(p): TIMEOUT=60) \
 		$(eval RUN_TESTS+=run-plugin-$(t)-with-$(p))))
 endif
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 17/19] tcg: save vaddr temp for plugin usage
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (15 preceding siblings ...)
  2020-02-25 12:47 ` [PATCH v3 16/19] tests/tcg: give debug builds a little bit longer Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-25 12:47 ` [PATCH v3 18/19] tests/tcg: fix typo in configure.sh test for v8.3 Alex Bennée
                   ` (2 subsequent siblings)
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, qemu-stable,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien, Richard Henderson

From: Richard Henderson <richard.henderson@linaro.org>

While do_gen_mem_cb does copy (via extu_tl_i64) vaddr into a new temp
this won't help if the vaddr temp gets clobbered by the actual
load/store op. To avoid this clobbering we explicitly copy vaddr
before the op to ensure it is live my the time we do the
instrumentation.

Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Emilio G. Cota <cota@braap.org>
Cc: qemu-stable@nongnu.org
---
 tcg/tcg-op.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index 7d782002e3f..e2e25ebf7db 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -2794,13 +2794,26 @@ static void tcg_gen_req_mo(TCGBar type)
     }
 }
 
+static inline TCGv plugin_prep_mem_callbacks(TCGv vaddr)
+{
+#ifdef CONFIG_PLUGIN
+    if (tcg_ctx->plugin_insn != NULL) {
+        /* Save a copy of the vaddr for use after a load.  */
+        TCGv temp = tcg_temp_new();
+        tcg_gen_mov_tl(temp, vaddr);
+        return temp;
+    }
+#endif
+    return vaddr;
+}
+
 static inline void plugin_gen_mem_callbacks(TCGv vaddr, uint16_t info)
 {
 #ifdef CONFIG_PLUGIN
-    if (tcg_ctx->plugin_insn == NULL) {
-        return;
+    if (tcg_ctx->plugin_insn != NULL) {
+        plugin_gen_empty_mem_callback(vaddr, info);
+        tcg_temp_free(vaddr);
     }
-    plugin_gen_empty_mem_callback(vaddr, info);
 #endif
 }
 
@@ -2822,6 +2835,7 @@ void tcg_gen_qemu_ld_i32(TCGv_i32 val, TCGv addr, TCGArg idx, MemOp memop)
         }
     }
 
+    addr = plugin_prep_mem_callbacks(addr);
     gen_ldst_i32(INDEX_op_qemu_ld_i32, val, addr, memop, idx);
     plugin_gen_mem_callbacks(addr, info);
 
@@ -2868,6 +2882,7 @@ void tcg_gen_qemu_st_i32(TCGv_i32 val, TCGv addr, TCGArg idx, MemOp memop)
         memop &= ~MO_BSWAP;
     }
 
+    addr = plugin_prep_mem_callbacks(addr);
     gen_ldst_i32(INDEX_op_qemu_st_i32, val, addr, memop, idx);
     plugin_gen_mem_callbacks(addr, info);
 
@@ -2905,6 +2920,7 @@ void tcg_gen_qemu_ld_i64(TCGv_i64 val, TCGv addr, TCGArg idx, MemOp memop)
         }
     }
 
+    addr = plugin_prep_mem_callbacks(addr);
     gen_ldst_i64(INDEX_op_qemu_ld_i64, val, addr, memop, idx);
     plugin_gen_mem_callbacks(addr, info);
 
@@ -2967,6 +2983,7 @@ void tcg_gen_qemu_st_i64(TCGv_i64 val, TCGv addr, TCGArg idx, MemOp memop)
         memop &= ~MO_BSWAP;
     }
 
+    addr = plugin_prep_mem_callbacks(addr);
     gen_ldst_i64(INDEX_op_qemu_st_i64, val, addr, memop, idx);
     plugin_gen_mem_callbacks(addr, info);
 
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH  v3 18/19] tests/tcg: fix typo in configure.sh test for v8.3
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (16 preceding siblings ...)
  2020-02-25 12:47 ` [PATCH v3 17/19] tcg: save vaddr temp for plugin usage Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-25 12:47 ` [PATCH v3 19/19] tests/tcg: take into account expected clashes pauth-4 Alex Bennée
  2020-02-26 13:36 ` [PATCH v3 00/19] testing & plugin updates no-reply
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb, Alex Bennée,
	richard.henderson, f4bug, robhenry, marcandre.lureau, aaron,
	cota, stefanha, kuhn.chenqun, peter.puhov, aurelien

Although most people use the docker images this can trip up on
developer systems with actual valid cross-compilers!

Fixes: bb516dfc5b3
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/configure.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index 9eb6ba3b7ea..eaaaff6233a 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -228,7 +228,7 @@ for target in $target_list; do
                 echo "CROSS_CC_HAS_SVE=y" >> $config_target_mak
             fi
             if do_compiler "$target_compiler" $target_compiler_cflags \
-               -march=-march=armv8.3-a -o $TMPE $TMPC; then
+               -march=armv8.3-a -o $TMPE $TMPC; then
                 echo "CROSS_CC_HAS_ARMV8_3=y" >> $config_target_mak
             fi
         ;;
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 19/19] tests/tcg: take into account expected clashes pauth-4
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (17 preceding siblings ...)
  2020-02-25 12:47 ` [PATCH v3 18/19] tests/tcg: fix typo in configure.sh test for v8.3 Alex Bennée
@ 2020-02-25 12:47 ` Alex Bennée
  2020-02-26 13:36 ` [PATCH v3 00/19] testing & plugin updates no-reply
  19 siblings, 0 replies; 28+ messages in thread
From: Alex Bennée @ 2020-02-25 12:47 UTC (permalink / raw)
  To: qemu-devel
  Cc: fam, Peter Maydell, berrange, robert.foley, pbonzini, stefanb,
	Alex Bennée, richard.henderson, f4bug, robhenry,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, open list:ARM TCG CPUs, aurelien

Pointer authentication isn't perfect so measure the percentage of
failed checks. As we want to vary the pointer we work through a bunch
of different addresses.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Robert Foley <robert.foley@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/aarch64/pauth-4.c | 54 +++++++++++++++++++++++++------------
 1 file changed, 37 insertions(+), 17 deletions(-)

diff --git a/tests/tcg/aarch64/pauth-4.c b/tests/tcg/aarch64/pauth-4.c
index 1040e92aec3..24a639e36ca 100644
--- a/tests/tcg/aarch64/pauth-4.c
+++ b/tests/tcg/aarch64/pauth-4.c
@@ -1,25 +1,45 @@
 #include <stdint.h>
 #include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define TESTS 1000
 
 int main()
 {
-  uintptr_t x, y;
+    int i, count = 0;
+    float perc;
+    void *base = malloc(TESTS);
+
+    for (i = 0; i < TESTS; i++) {
+        uintptr_t in, x, y;
+
+        in = i + (uintptr_t) base;
+
+        asm("mov %0, %[in]\n\t"
+            "pacia %0, sp\n\t"        /* sigill if pauth not supported */
+            "eor %0, %0, #4\n\t"      /* corrupt single bit */
+            "mov %1, %0\n\t"
+            "autia %1, sp\n\t"        /* validate corrupted pointer */
+            "xpaci %0\n\t"            /* strip pac from corrupted pointer */
+            : /* out */ "=r"(x), "=r"(y)
+            : /* in */ [in] "r" (in)
+            : /* clobbers */);
 
-  asm("mov %0, lr\n\t"
-      "pacia %0, sp\n\t"        /* sigill if pauth not supported */
-      "eor %0, %0, #4\n\t"      /* corrupt single bit */
-      "mov %1, %0\n\t"
-      "autia %1, sp\n\t"        /* validate corrupted pointer */
-      "xpaci %0\n\t"            /* strip pac from corrupted pointer */
-      : "=r"(x), "=r"(y));
+        /*
+         * Once stripped, the corrupted pointer is of the form 0x0000...wxyz.
+         * We expect the autia to indicate failure, producing a pointer of the
+         * form 0x000e....wxyz.  Use xpaci and != for the test, rather than
+         * extracting explicit bits from the top, because the location of the
+         * error code "e" depends on the configuration of virtual memory.
+         */
+        if (x != y) {
+            count++;
+        }
 
-  /*
-   * Once stripped, the corrupted pointer is of the form 0x0000...wxyz.
-   * We expect the autia to indicate failure, producing a pointer of the
-   * form 0x000e....wxyz.  Use xpaci and != for the test, rather than
-   * extracting explicit bits from the top, because the location of the
-   * error code "e" depends on the configuration of virtual memory.
-   */
-  assert(x != y);
-  return 0;
+    }
+    perc = (float) count / (float) TESTS;
+    printf("Checks Passed: %0.2f%%", perc * 100.0);
+    assert(perc > 0.95);
+    return 0;
 }
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 13/19] qemu/bitops.h: Add extract8 and extract16
  2020-02-25 12:47 ` [PATCH v3 13/19] qemu/bitops.h: Add extract8 and extract16 Alex Bennée
@ 2020-02-25 14:04   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 28+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-25 14:04 UTC (permalink / raw)
  To: Alex Bennée, qemu-devel
  Cc: fam, berrange, robert.foley, pbonzini, stefanb,
	richard.henderson, f4bug, robhenry, Yoshinori Sato,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	peter.puhov, aurelien

On 2/25/20 1:47 PM, Alex Bennée wrote:
> From: Yoshinori Sato <ysato@users.sourceforge.jp>
> 
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Message-Id: <20190607091116.49044-10-ysato@users.sourceforge.jp>

^ This tag can go.

> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Message-Id: <20200212130311.127515-3-ysato@users.sourceforge.jp>
> ---
>   include/qemu/bitops.h | 38 ++++++++++++++++++++++++++++++++++++++
>   1 file changed, 38 insertions(+)
> 
> diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h
> index 02c1ce6a5d4..f55ce8b320b 100644
> --- a/include/qemu/bitops.h
> +++ b/include/qemu/bitops.h
> @@ -301,6 +301,44 @@ static inline uint32_t extract32(uint32_t value, int start, int length)
>       return (value >> start) & (~0U >> (32 - length));
>   }
>   
> +/**
> + * extract8:
> + * @value: the value to extract the bit field from
> + * @start: the lowest bit in the bit field (numbered from 0)
> + * @length: the length of the bit field
> + *
> + * Extract from the 8 bit input @value the bit field specified by the
> + * @start and @length parameters, and return it. The bit field must
> + * lie entirely within the 8 bit word. It is valid to request that
> + * all 8 bits are returned (ie @length 8 and @start 0).
> + *
> + * Returns: the value of the bit field extracted from the input value.
> + */
> +static inline uint8_t extract8(uint8_t value, int start, int length)
> +{
> +    assert(start >= 0 && length > 0 && length <= 8 - start);
> +    return extract32(value, start, length);
> +}
> +
> +/**
> + * extract16:
> + * @value: the value to extract the bit field from
> + * @start: the lowest bit in the bit field (numbered from 0)
> + * @length: the length of the bit field
> + *
> + * Extract from the 16 bit input @value the bit field specified by the
> + * @start and @length parameters, and return it. The bit field must
> + * lie entirely within the 16 bit word. It is valid to request that
> + * all 16 bits are returned (ie @length 16 and @start 0).
> + *
> + * Returns: the value of the bit field extracted from the input value.
> + */
> +static inline uint16_t extract16(uint16_t value, int start, int length)
> +{
> +    assert(start >= 0 && length > 0 && length <= 16 - start);
> +    return extract32(value, start, length);
> +}
> +
>   /**
>    * extract64:
>    * @value: the value to extract the bit field from
> 



^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 08/19] tests/iotests: be a little more forgiving on the size test
  2020-02-25 12:46 ` [PATCH v3 08/19] tests/iotests: be a little more forgiving on the size test Alex Bennée
@ 2020-02-25 14:11   ` Robert Foley
  2020-02-25 18:22   ` Stefan Berger
  1 sibling, 0 replies; 28+ messages in thread
From: Robert Foley @ 2020-02-25 14:11 UTC (permalink / raw)
  To: Alex Bennée
  Cc: fam, Kevin Wolf, berrange, open list:Block layer core, pbonzini,
	stefanb, Richard Henderson, qemu-devel, robhenry, f4bug,
	marcandre.lureau, aaron, cota, stefanha, kuhn.chenqun,
	Peter Puhov, Max Reitz, aurelien

On Tue, 25 Feb 2020 at 07:47, Alex Bennée <alex.bennee@linaro.org> wrote:
>
> At least on ZFS this was failing as 512 was less than or equal to 512.
> I suspect the reason is additional compression done by ZFS and however
> qemu-img gets the actual size.
>
> Loosen the criteria to make sure after is not bigger than before and
> also dump the values in the report.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

Reviewed-by: Robert Foley <robert.foley@linaro.org>


^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 08/19] tests/iotests: be a little more forgiving on the size test
  2020-02-25 12:46 ` [PATCH v3 08/19] tests/iotests: be a little more forgiving on the size test Alex Bennée
  2020-02-25 14:11   ` Robert Foley
@ 2020-02-25 18:22   ` Stefan Berger
  2020-02-25 18:39     ` Philippe Mathieu-Daudé
  1 sibling, 1 reply; 28+ messages in thread
From: Stefan Berger @ 2020-02-25 18:22 UTC (permalink / raw)
  To: Alex Bennée, qemu-devel
  Cc: fam, Kevin Wolf, berrange, robert.foley, pbonzini, stefanb,
	richard.henderson, f4bug, robhenry, Max Reitz, marcandre.lureau,
	aaron, cota, stefanha, kuhn.chenqun, peter.puhov,
	open list:Block layer core, aurelien

On 2/25/20 7:46 AM, Alex Bennée wrote:
> At least on ZFS this was failing as 512 was less than or equal to 512.
> I suspect the reason is additional compression done by ZFS and however
> qemu-img gets the actual size.
>
> Loosen the criteria to make sure after is not bigger than before and
> also dump the values in the report.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>   tests/qemu-iotests/214 | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tests/qemu-iotests/214 b/tests/qemu-iotests/214
> index 3500e0c47a2..6d1324cd157 100755
> --- a/tests/qemu-iotests/214
> +++ b/tests/qemu-iotests/214
> @@ -125,9 +125,9 @@ $QEMU_IO -c "write -P 0xcc $offset $data_size" "json:{\
>   sizeB=$($QEMU_IMG info --output=json "$TEST_IMG" |
>           sed -n '/"actual-size":/ s/[^0-9]//gp')
>
> -if [ $sizeA -le $sizeB ]
> +if [ $sizeA -lt $sizeB ]
>   then
> -    echo "Compression ERROR"
> +    echo "Compression ERROR ($sizeA vs $sizeB)"
>   fi

Nit: $sizeA < $sizeB ?

Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>



>   $QEMU_IMG check --output=json "$TEST_IMG" |




^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 08/19] tests/iotests: be a little more forgiving on the size test
  2020-02-25 18:22   ` Stefan Berger
@ 2020-02-25 18:39     ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 28+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-25 18:39 UTC (permalink / raw)
  To: Stefan Berger, Alex Bennée, qemu-devel
  Cc: fam, Kevin Wolf, berrange, robert.foley, kuhn.chenqun, stefanb,
	peter.puhov, richard.henderson, f4bug, robhenry, Max Reitz,
	aaron, cota, stefanha, marcandre.lureau, pbonzini,
	open list:Block layer core, aurelien

On 2/25/20 7:22 PM, Stefan Berger wrote:
> On 2/25/20 7:46 AM, Alex Bennée wrote:
>> At least on ZFS this was failing as 512 was less than or equal to 512.
>> I suspect the reason is additional compression done by ZFS and however
>> qemu-img gets the actual size.
>>
>> Loosen the criteria to make sure after is not bigger than before and
>> also dump the values in the report.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>>   tests/qemu-iotests/214 | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/tests/qemu-iotests/214 b/tests/qemu-iotests/214
>> index 3500e0c47a2..6d1324cd157 100755
>> --- a/tests/qemu-iotests/214
>> +++ b/tests/qemu-iotests/214
>> @@ -125,9 +125,9 @@ $QEMU_IO -c "write -P 0xcc $offset $data_size" 
>> "json:{\
>>   sizeB=$($QEMU_IMG info --output=json "$TEST_IMG" |
>>           sed -n '/"actual-size":/ s/[^0-9]//gp')
>>
>> -if [ $sizeA -le $sizeB ]
>> +if [ $sizeA -lt $sizeB ]
>>   then
>> -    echo "Compression ERROR"
>> +    echo "Compression ERROR ($sizeA vs $sizeB)"
>>   fi
> 
> Nit: $sizeA < $sizeB ?

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> 
> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
> 
> 
> 
>>   $QEMU_IMG check --output=json "$TEST_IMG" |
> 
> 
> 



^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH  v3 00/19] testing & plugin updates
  2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
                   ` (18 preceding siblings ...)
  2020-02-25 12:47 ` [PATCH v3 19/19] tests/tcg: take into account expected clashes pauth-4 Alex Bennée
@ 2020-02-26 13:36 ` no-reply
  19 siblings, 0 replies; 28+ messages in thread
From: no-reply @ 2020-02-26 13:36 UTC (permalink / raw)
  To: alex.bennee
  Cc: fam, berrange, robert.foley, kuhn.chenqun, stefanb, peter.puhov,
	richard.henderson, qemu-devel, robhenry, f4bug, aaron, cota,
	stefanha, marcandre.lureau, pbonzini, alex.bennee, aurelien

Patchew URL: https://patchew.org/QEMU/20200225124710.14152-1-alex.bennee@linaro.org/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH  v3 00/19] testing & plugin updates
Message-id: 20200225124710.14152-1-alex.bennee@linaro.org
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 * [new tag]         patchew/158271897341.44994.2741557659975232894.stgit@lep8c.aus.stglabs.ibm.com -> patchew/158271897341.44994.2741557659975232894.stgit@lep8c.aus.stglabs.ibm.com
 - [tag update]      patchew/20200205112041.6003-1-vsementsov@virtuozzo.com -> patchew/20200205112041.6003-1-vsementsov@virtuozzo.com
 - [tag update]      patchew/20200226094357.25061-1-jasowang@redhat.com -> patchew/20200226094357.25061-1-jasowang@redhat.com
 - [tag update]      patchew/20200226102549.12158-1-eric.auger@redhat.com -> patchew/20200226102549.12158-1-eric.auger@redhat.com
 * [new tag]         patchew/20200226122054.366b9cda@table.localdomain -> patchew/20200226122054.366b9cda@table.localdomain
 * [new tag]         patchew/20200226125424.481840-1-eblake@redhat.com -> patchew/20200226125424.481840-1-eblake@redhat.com
Auto packing the repository for optimum performance. You may also
run "git gc" manually. See "git help gc" for more information.
Switched to a new branch 'test'
f5a36bd tests/tcg: take into account expected clashes pauth-4
a912120 tests/tcg: fix typo in configure.sh test for v8.3
460922a tcg: save vaddr temp for plugin usage
765efaa tests/tcg: give debug builds a little bit longer
3ef8a10 tests/plugins: make howvec clean-up after itself.
22744b6 target/riscv: progressively load the instruction during decode
8ae738a qemu/bitops.h: Add extract8 and extract16
d2a1203 tests/plugin: prevent uninitialized warning
b1a5387 plugins/core: add missing break in cb_to_tcg_flags
34893a2 docs/devel: document query handle lifetimes
a15f458 tracing: only allow -trace to override -D if set
a4963d5 tests/iotests: be a little more forgiving on the size test
c88b071 travis.yml: single-thread build-tcg stages
145aad2 travis.yml: Fix Travis YAML configuration warnings
2944b87 travis.yml: Test the s390-ccw build, too
901bfdf tests/rcutorture: mild documenting refactor of update thread
38d1f0b tests/rcutorture: better document locking of stats
549cbb3 tests/rcutorture: update usage hint
39535f9 tests/tcg: include a skip runner for pauth3 with plugins

=== OUTPUT BEGIN ===
1/19 Checking commit 39535f9b7a09 (tests/tcg: include a skip runner for pauth3 with plugins)
2/19 Checking commit 549cbb301602 (tests/rcutorture: update usage hint)
3/19 Checking commit 38d1f0b4951e (tests/rcutorture: better document locking of stats)
4/19 Checking commit 901bfdfaa514 (tests/rcutorture: mild documenting refactor of update thread)
5/19 Checking commit 2944b8798439 (travis.yml: Test the s390-ccw build, too)
6/19 Checking commit 145aad29e004 (travis.yml: Fix Travis YAML configuration warnings)
7/19 Checking commit c88b0718ccdf (travis.yml: single-thread build-tcg stages)
8/19 Checking commit a4963d59b0a5 (tests/iotests: be a little more forgiving on the size test)
9/19 Checking commit a15f458976b5 (tracing: only allow -trace to override -D if set)
10/19 Checking commit 34893a28f7fc (docs/devel: document query handle lifetimes)
11/19 Checking commit b1a5387c45a5 (plugins/core: add missing break in cb_to_tcg_flags)
12/19 Checking commit d2a1203bbd09 (tests/plugin: prevent uninitialized warning)
13/19 Checking commit 8ae738a574f7 (qemu/bitops.h: Add extract8 and extract16)
14/19 Checking commit 22744b62fd12 (target/riscv: progressively load the instruction during decode)
15/19 Checking commit 3ef8a10a32b7 (tests/plugins: make howvec clean-up after itself.)
16/19 Checking commit 765efaae0c80 (tests/tcg: give debug builds a little bit longer)
17/19 Checking commit 460922a55240 (tcg: save vaddr temp for plugin usage)
18/19 Checking commit a9121200ef14 (tests/tcg: fix typo in configure.sh test for v8.3)
19/19 Checking commit f5a36bd9ce81 (tests/tcg: take into account expected clashes pauth-4)
WARNING: Block comments use a leading /* on a separate line
#62: FILE: tests/tcg/aarch64/pauth-4.c:25:
+            : /* out */ "=r"(x), "=r"(y)

WARNING: Block comments use a leading /* on a separate line
#63: FILE: tests/tcg/aarch64/pauth-4.c:26:
+            : /* in */ [in] "r" (in)

ERROR: space prohibited before open square bracket '['
#63: FILE: tests/tcg/aarch64/pauth-4.c:26:
+            : /* in */ [in] "r" (in)

WARNING: Block comments use a leading /* on a separate line
#64: FILE: tests/tcg/aarch64/pauth-4.c:27:
+            : /* clobbers */);

total: 1 errors, 3 warnings, 62 lines checked

Patch 19/19 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20200225124710.14152-1-alex.bennee@linaro.org/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 12/19] tests/plugin: prevent uninitialized warning
  2020-02-25 12:47 ` [PATCH v3 12/19] tests/plugin: prevent uninitialized warning Alex Bennée
@ 2020-02-26 13:59   ` Philippe Mathieu-Daudé
  2020-02-27  7:01     ` Chenqun (kuhn)
  0 siblings, 1 reply; 28+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-26 13:59 UTC (permalink / raw)
  To: Alex Bennée, qemu-devel
  Cc: fam, Thomas Huth, berrange, robert.foley, kuhn.chenqun, stefanb,
	peter.puhov, richard.henderson, f4bug, robhenry,
	marcandre.lureau, aaron, cota, stefanha, Euler Robot, pbonzini,
	aurelien

On 2/25/20 1:47 PM, Alex Bennée wrote:
> From: Chen Qun <kuhn.chenqun@huawei.com>
> 
> According to the glibc function requirements, we need initialise

GLib?

>   the variable. Otherwise there will be compilation warnings:
> 
> glib-autocleanups.h:28:3: warning: ‘out’ may be
> used uninitialized in this function [-Wmaybe-uninitialized]
>     g_free (*pp);
>     ^~~~~~~~~~~~
> 
> Reported-by: Euler Robot <euler.robot@huawei.com>
> Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> Message-Id: <20200206093238.203984-1-kuhn.chenqun@huawei.com>
> [AJB: uses Thomas's single line allocation]
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   tests/plugin/bb.c   | 6 +++---
>   tests/plugin/insn.c | 3 +--
>   2 files changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/tests/plugin/bb.c b/tests/plugin/bb.c
> index f30bea08dcc..df19fd359df 100644
> --- a/tests/plugin/bb.c
> +++ b/tests/plugin/bb.c
> @@ -22,9 +22,9 @@ static bool do_inline;
>   
>   static void plugin_exit(qemu_plugin_id_t id, void *p)
>   {
> -    g_autofree gchar *out;
> -    out = g_strdup_printf("bb's: %" PRIu64", insns: %" PRIu64 "\n",
> -                          bb_count, insn_count);
> +    g_autofree gchar *out = g_strdup_printf(
> +        "bb's: %" PRIu64", insns: %" PRIu64 "\n",
> +        bb_count, insn_count);
>       qemu_plugin_outs(out);
>   }
>   
> diff --git a/tests/plugin/insn.c b/tests/plugin/insn.c
> index 0a8f5a0000e..a9a6e412373 100644
> --- a/tests/plugin/insn.c
> +++ b/tests/plugin/insn.c
> @@ -44,8 +44,7 @@ static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
>   
>   static void plugin_exit(qemu_plugin_id_t id, void *p)
>   {
> -    g_autofree gchar *out;
> -    out = g_strdup_printf("insns: %" PRIu64 "\n", insn_count);
> +    g_autofree gchar *out = g_strdup_printf("insns: %" PRIu64 "\n", insn_count);
>       qemu_plugin_outs(out);
>   }
>   
> 



^ permalink raw reply	[flat|nested] 28+ messages in thread

* RE: [PATCH v3 12/19] tests/plugin: prevent uninitialized warning
  2020-02-26 13:59   ` Philippe Mathieu-Daudé
@ 2020-02-27  7:01     ` Chenqun (kuhn)
  0 siblings, 0 replies; 28+ messages in thread
From: Chenqun (kuhn) @ 2020-02-27  7:01 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Alex Bennée, qemu-devel
  Cc: fam, Thomas Huth, berrange, robert.foley, stefanb, peter.puhov,
	richard.henderson, f4bug, robhenry, marcandre.lureau, aaron,
	cota, stefanha, Euler Robot, pbonzini, aurelien


>-----Original Message-----
>From: Philippe Mathieu-Daudé [mailto:philmd@redhat.com]
>Sent: Wednesday, February 26, 2020 10:00 PM
>To: Alex Bennée <alex.bennee@linaro.org>; qemu-devel@nongnu.org
>Cc: fam@euphon.net; Thomas Huth <thuth@redhat.com>;
>berrange@redhat.com; robert.foley@linaro.org; pbonzini@redhat.com;
>stefanb@linux.vnet.ibm.com; Euler Robot <euler.robot@huawei.com>;
>richard.henderson@linaro.org; f4bug@amsat.org; robhenry@microsoft.com;
>marcandre.lureau@redhat.com; aaron@os.amperecomputing.com;
>cota@braap.org; stefanha@redhat.com; Chenqun (kuhn)
><kuhn.chenqun@huawei.com>; peter.puhov@linaro.org;
>aurelien@aurel32.net
>Subject: Re: [PATCH v3 12/19] tests/plugin: prevent uninitialized warning
>
>On 2/25/20 1:47 PM, Alex Bennée wrote:
>> From: Chen Qun <kuhn.chenqun@huawei.com>
>>
>> According to the glibc function requirements, we need initialise
>
>GLib?
Yes, Glib function requirements.
https://developer.gnome.org/glib/stable/glib-Miscellaneous-Macros.html#g-autofree

Thanks.
>
>>   the variable. Otherwise there will be compilation warnings:
>>
>> glib-autocleanups.h:28:3: warning: ‘out’ may be used uninitialized in
>> this function [-Wmaybe-uninitialized]
>>     g_free (*pp);
>>     ^~~~~~~~~~~~
>>
>> Reported-by: Euler Robot <euler.robot@huawei.com>
>> Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>
>> Reviewed-by: Thomas Huth <thuth@redhat.com>
>> Message-Id: <20200206093238.203984-1-kuhn.chenqun@huawei.com>
>> [AJB: uses Thomas's single line allocation]
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>>   tests/plugin/bb.c   | 6 +++---
>>   tests/plugin/insn.c | 3 +--
>>   2 files changed, 4 insertions(+), 5 deletions(-)
>>
>> diff --git a/tests/plugin/bb.c b/tests/plugin/bb.c index
>> f30bea08dcc..df19fd359df 100644
>> --- a/tests/plugin/bb.c
>> +++ b/tests/plugin/bb.c
>> @@ -22,9 +22,9 @@ static bool do_inline;
>>
>>   static void plugin_exit(qemu_plugin_id_t id, void *p)
>>   {
>> -    g_autofree gchar *out;
>> -    out = g_strdup_printf("bb's: %" PRIu64", insns: %" PRIu64 "\n",
>> -                          bb_count, insn_count);
>> +    g_autofree gchar *out = g_strdup_printf(
>> +        "bb's: %" PRIu64", insns: %" PRIu64 "\n",
>> +        bb_count, insn_count);
>>       qemu_plugin_outs(out);
>>   }
>>
>> diff --git a/tests/plugin/insn.c b/tests/plugin/insn.c index
>> 0a8f5a0000e..a9a6e412373 100644
>> --- a/tests/plugin/insn.c
>> +++ b/tests/plugin/insn.c
>> @@ -44,8 +44,7 @@ static void vcpu_tb_trans(qemu_plugin_id_t id,
>> struct qemu_plugin_tb *tb)
>>
>>   static void plugin_exit(qemu_plugin_id_t id, void *p)
>>   {
>> -    g_autofree gchar *out;
>> -    out = g_strdup_printf("insns: %" PRIu64 "\n", insn_count);
>> +    g_autofree gchar *out = g_strdup_printf("insns: %" PRIu64 "\n",
>> + insn_count);
>>       qemu_plugin_outs(out);
>>   }
>>
>>


^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2020-02-27  7:03 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-25 12:46 [PATCH v3 00/19] testing & plugin updates Alex Bennée
2020-02-25 12:46 ` [PATCH v3 01/19] tests/tcg: include a skip runner for pauth3 with plugins Alex Bennée
2020-02-25 12:46 ` [PATCH v3 02/19] tests/rcutorture: update usage hint Alex Bennée
2020-02-25 12:46 ` [PATCH v3 03/19] tests/rcutorture: better document locking of stats Alex Bennée
2020-02-25 12:46 ` [PATCH v3 04/19] tests/rcutorture: mild documenting refactor of update thread Alex Bennée
2020-02-25 12:46 ` [PATCH v3 05/19] travis.yml: Test the s390-ccw build, too Alex Bennée
2020-02-25 12:46 ` [PATCH v3 06/19] travis.yml: Fix Travis YAML configuration warnings Alex Bennée
2020-02-25 12:46 ` [PATCH v3 07/19] travis.yml: single-thread build-tcg stages Alex Bennée
2020-02-25 12:46 ` [PATCH v3 08/19] tests/iotests: be a little more forgiving on the size test Alex Bennée
2020-02-25 14:11   ` Robert Foley
2020-02-25 18:22   ` Stefan Berger
2020-02-25 18:39     ` Philippe Mathieu-Daudé
2020-02-25 12:47 ` [PATCH v3 09/19] tracing: only allow -trace to override -D if set Alex Bennée
2020-02-25 12:47 ` [PATCH v3 10/19] docs/devel: document query handle lifetimes Alex Bennée
2020-02-25 12:47 ` [PATCH v3 11/19] plugins/core: add missing break in cb_to_tcg_flags Alex Bennée
2020-02-25 12:47 ` [PATCH v3 12/19] tests/plugin: prevent uninitialized warning Alex Bennée
2020-02-26 13:59   ` Philippe Mathieu-Daudé
2020-02-27  7:01     ` Chenqun (kuhn)
2020-02-25 12:47 ` [PATCH v3 13/19] qemu/bitops.h: Add extract8 and extract16 Alex Bennée
2020-02-25 14:04   ` Philippe Mathieu-Daudé
2020-02-25 12:47 ` [PATCH v3 14/19] target/riscv: progressively load the instruction during decode Alex Bennée
2020-02-25 12:47   ` Alex Bennée
2020-02-25 12:47 ` [PATCH v3 15/19] tests/plugins: make howvec clean-up after itself Alex Bennée
2020-02-25 12:47 ` [PATCH v3 16/19] tests/tcg: give debug builds a little bit longer Alex Bennée
2020-02-25 12:47 ` [PATCH v3 17/19] tcg: save vaddr temp for plugin usage Alex Bennée
2020-02-25 12:47 ` [PATCH v3 18/19] tests/tcg: fix typo in configure.sh test for v8.3 Alex Bennée
2020-02-25 12:47 ` [PATCH v3 19/19] tests/tcg: take into account expected clashes pauth-4 Alex Bennée
2020-02-26 13:36 ` [PATCH v3 00/19] testing & plugin updates no-reply

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.