mbox series

[00/26] Maintainer updates (testing, gdbstub, plugins)

Message ID 20240910140733.4007719-1-alex.bennee@linaro.org
Headers show
Series Maintainer updates (testing, gdbstub, plugins) | expand

Message

Alex Bennée Sept. 10, 2024, 2:07 p.m. UTC
Hi,

Here is the current state of my maintainer trees.

Testing

I've updated a number of the docker containers to deal with breakages
in the crossdev environments as bullseye moves to LTS. I've dropped
the armel environment which doesn't really add much to the armhf cross
build we have that works. i686 and mipsel cross containers are bumped
up to bookworm. Currently mips64el is still broken.

gdbstub

This brings in Gustavo's patches to support MTE for system mode
expanding on the previously implemented user mode support.

plugins

I start by deprecating some options that don't make much sense for
instrumentation including 32 bit and TCI support. They will still work
but there are caveats and it doesn't seem worth wasting CI time
keeping track of them.

There are a couple of new plugins including some useful analysis ones.
The bbv plugin can generate files that can be fed into simpoint. The
cflow plugin I've posted before separately but takes advantage of the
new conditional and store helpers to try and be more efficient tracing
control flow.

Finally there is not one but two memory APIs. Pierrick's updates to
the main memory instrumentation now makes values available to the
plugins and should be used if you absolutely want to track what value
was read or stored. I've added a softmmu test case building on
memory.c and I'll merge the updated linux-user test case once its been
re-spun.

Rowan's API provides a more direct access through the existing debug
API but comes with the caveats that it should only used on memory you
don't expect to be changing. The example provided allows for the
contents of syscalls to be probed at the syscall point.

Finally there is a RFC for a gdbstub hook which I mostly wrote while I
was debugging weirdness in the memory stuff. I'll probably drop it
before the PR and let it cook a bit more on plugins/next.

The following still need review:

  plugins: add ability to register a GDB triggered callback
  util/timer: avoid deadlock when shutting down
  tests/tcg: add a system test to check memory instrumentation
  tests/tcg: only read/write 64 bit words on 64 bit systems
  tests/tcg: clean up output of memory system test
  contrib/plugins: control flow plugin
  deprecation: don't enable TCG plugins by default with TCI
  deprecation: don't enable TCG plugins by default on 32 bit hosts
  scripts/ci: update the gitlab-runner playbook
  docs/devel: fix duplicate line
  tests/docker: update debian i686 and mipsel images to bookworm
  tests/docker: remove debian-armel-cross

Akihiko Odaki (1):
  contrib/plugins: Add a plugin to generate basic block vectors

Alex Bennée (12):
  tests/docker: remove debian-armel-cross
  tests/docker: update debian i686 and mipsel images to bookworm
  docs/devel: fix duplicate line
  scripts/ci: update the gitlab-runner playbook
  deprecation: don't enable TCG plugins by default on 32 bit hosts
  deprecation: don't enable TCG plugins by default with TCI
  contrib/plugins: control flow plugin
  tests/tcg: clean up output of memory system test
  tests/tcg: only read/write 64 bit words on 64 bit systems
  tests/tcg: add a system test to check memory instrumentation
  util/timer: avoid deadlock when shutting down
  plugins: add ability to register a GDB triggered callback

Gustavo Romero (5):
  gdbstub: Use specific MMU index when probing MTE addresses
  gdbstub: Add support for MTE in system mode
  tests/guest-debug: Support passing arguments to the GDB test script
  tests/tcg/aarch64: Improve linker script organization
  tests/tcg/aarch64: Extend MTE gdbstub tests to system mode

Pierrick Bouvier (5):
  plugins: save value during memory accesses
  plugins: extend API to get latest memory value accessed
  tests/tcg: add mechanism to run specific tests with plugins
  tests/tcg: allow to check output of plugins
  tests/plugin/mem: add option to print memory accesses

Rowan Hart (2):
  plugins: add plugin API to read guest memory
  plugins: add option to dump write argument to syscall plugin

Thomas Huth (1):
  contrib/plugins/Makefile: Add a 'distclean' target

 docs/about/deprecated.rst                     |  19 +
 docs/about/emulation.rst                      |  44 +-
 docs/devel/testing/main.rst                   |   6 -
 configure                                     |  37 +-
 accel/tcg/atomic_template.h                   |  66 ++-
 include/hw/core/cpu.h                         |   4 +
 include/qemu/plugin-event.h                   |   1 +
 include/qemu/plugin.h                         |   4 +
 include/qemu/qemu-plugin.h                    |  80 +++-
 plugins/plugin.h                              |   9 +
 contrib/plugins/bbv.c                         | 158 +++++++
 contrib/plugins/cflow.c                       | 413 ++++++++++++++++++
 plugins/api.c                                 |  71 +++
 plugins/core.c                                |  43 ++
 target/arm/gdbstub64.c                        |  21 +-
 tcg/tcg-op-ldst.c                             |  66 ++-
 tests/tcg/multiarch/system/memory.c           | 123 ++++--
 tests/tcg/plugins/mem.c                       | 254 ++++++++++-
 tests/tcg/plugins/syscall.c                   | 117 +++++
 util/qemu-timer.c                             |  14 +-
 accel/tcg/atomic_common.c.inc                 |  13 +-
 accel/tcg/ldst_common.c.inc                   |  38 +-
 .gitlab-ci.d/buildtest.yml                    |   2 +
 .gitlab-ci.d/container-cross.yml              |   6 -
 .gitlab-ci.d/crossbuilds.yml                  |   7 -
 contrib/plugins/Makefile                      |   4 +-
 plugins/qemu-plugins.symbols                  |   3 +
 scripts/ci/setup/gitlab-runner.yml            |  39 +-
 .../dockerfiles/debian-armel-cross.docker     | 179 --------
 .../dockerfiles/debian-i686-cross.docker      |  10 +-
 .../dockerfiles/debian-mipsel-cross.docker    |  10 +-
 tests/guest-debug/run-test.py                 |   6 +
 tests/guest-debug/test_gdbstub.py             |   5 +
 tests/lcitool/refresh                         |  10 +-
 tests/tcg/Makefile.target                     |  12 +-
 tests/tcg/aarch64/Makefile.softmmu-target     |  49 ++-
 tests/tcg/aarch64/Makefile.target             |   3 +-
 tests/tcg/aarch64/gdbstub/test-mte.py         |  71 ++-
 tests/tcg/aarch64/system/boot.S               |  11 +
 tests/tcg/aarch64/system/kernel.ld            |  33 +-
 tests/tcg/aarch64/system/mte.S                | 109 +++++
 tests/tcg/alpha/Makefile.softmmu-target       |   2 +-
 .../multiarch/system/Makefile.softmmu-target  |   6 +
 .../system/validate-memory-counts.py          | 115 +++++
 44 files changed, 1935 insertions(+), 358 deletions(-)
 create mode 100644 contrib/plugins/bbv.c
 create mode 100644 contrib/plugins/cflow.c
 delete mode 100644 tests/docker/dockerfiles/debian-armel-cross.docker
 create mode 100644 tests/tcg/aarch64/system/mte.S
 create mode 100755 tests/tcg/multiarch/system/validate-memory-counts.py

Comments

Pierrick Bouvier Sept. 10, 2024, 2:42 p.m. UTC | #1
On 9/10/24 07:07, Alex Bennée wrote:
> I guess the same change came in via two patch series. Remove the
> repetition.
> 
> Fixes: 2a851fca9f (docs/devel: remind developers to run CI container pipeline when updating images)
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>   docs/devel/testing/main.rst | 6 ------
>   1 file changed, 6 deletions(-)
> 
> diff --git a/docs/devel/testing/main.rst b/docs/devel/testing/main.rst
> index e9921a4b10..09725e8ea9 100644
> --- a/docs/devel/testing/main.rst
> +++ b/docs/devel/testing/main.rst
> @@ -500,12 +500,6 @@ first to contribute the mapping to the ``libvirt-ci`` project:
>      `CI <https://www.qemu.org/docs/master/devel/ci.html>`__ documentation
>      page on how to trigger gitlab CI pipelines on your change.
>   
> - * Please also trigger gitlab container generation pipelines on your change
> -   for as many OS distros as practical to make sure that there are no
> -   obvious breakages when adding the new pre-requisite. Please see
> -   `CI <https://www.qemu.org/docs/master/devel/ci.html>`__ documentation
> -   page on how to trigger gitlab CI pipelines on your change.
> -
>   For enterprise distros that default to old, end-of-life versions of the
>   Python runtime, QEMU uses a separate set of mappings that work with more
>   recent versions.  These can be found in ``tests/lcitool/mappings.yml``.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Pierrick Bouvier Sept. 10, 2024, 2:43 p.m. UTC | #2
On 9/10/24 07:07, Alex Bennée wrote:
> The upstream install instructions:
> 
>    https://docs.gitlab.com/runner/install/linux-repository.html
> 
> Now refer to repositories and a setup script. Modernise the playbook
> to use the preferred delivery method.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>   scripts/ci/setup/gitlab-runner.yml | 39 +++++++++++++++++++++++-------
>   1 file changed, 30 insertions(+), 9 deletions(-)
> 
> diff --git a/scripts/ci/setup/gitlab-runner.yml b/scripts/ci/setup/gitlab-runner.yml
> index 7bdafab511..57e7faebf1 100644
> --- a/scripts/ci/setup/gitlab-runner.yml
> +++ b/scripts/ci/setup/gitlab-runner.yml
> @@ -49,30 +49,51 @@
>       - debug:
>           msg: gitlab-runner arch is {{ gitlab_runner_arch }}
>   
> -    - name: Download the matching gitlab-runner (DEB)
> +    # Debian/Ubuntu setup
> +    - name: Get gitlab-runner repo setup script (DEB)
>         get_url:
>           dest: "/root/"
> -        url: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_{{ gitlab_runner_arch }}.deb"
> +        url: "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh"
> +        mode: 0755
>         when:
>           - ansible_facts['distribution'] == 'Ubuntu'
>   
> -    - name: Download the matching gitlab-runner (RPM)
> +    - name: Run gitlab-runner repo setup script (DEB)
> +      shell: "/root/script.deb.sh"
> +      when:
> +        - ansible_facts['distribution'] == 'Ubuntu'
> +
> +    - name: Install gitlab-runner (DEB)
> +      ansible.builtin.apt:
> +          name: gitlab-runner
> +          update_cache: yes
> +          state: present
> +      when:
> +        - ansible_facts['distribution'] == 'Ubuntu'
> +
> +    # RPM setup
> +    - name: Get gitlab-runner repo setup script (RPM)
>         get_url:
>           dest: "/root/"
> -        url: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_{{ gitlab_runner_arch }}.rpm"
> +        url: "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh"
> +        mode: 0755
>         when:
>           - ansible_facts['distribution'] == 'CentOS'
>   
> -    - name: Install gitlab-runner via package manager (DEB)
> -      apt: deb="/root/gitlab-runner_{{ gitlab_runner_arch }}.deb"
> +    - name: Run gitlab-runner repo setup script (RPM)
> +      shell: "/root/script.rpm.sh"
>         when:
> -        - ansible_facts['distribution'] == 'Ubuntu'
> +        - ansible_facts['distribution'] == 'CentOS'
>   
> -    - name: Install gitlab-runner via package manager (RPM)
> -      yum: name="/root/gitlab-runner_{{ gitlab_runner_arch }}.rpm"
> +    - name: Install gitlab-runner (RPM)
> +      yum:
> +        name: gitlab-runner
> +        update_cache: yes
> +        state: present
>         when:
>           - ansible_facts['distribution'] == 'CentOS'
>   
> +    # Register Runners
>       - name: Register the gitlab-runner
>         command: "/usr/bin/gitlab-runner register --non-interactive --url {{ gitlab_runner_server_url }} --registration-token {{ gitlab_runner_registration_token }} --executor shell --tag-list {{ ansible_facts[\"architecture\"] }},{{ ansible_facts[\"distribution\"]|lower }}_{{ ansible_facts[\"distribution_version\"] }} --description '{{ ansible_facts[\"distribution\"] }} {{ ansible_facts[\"distribution_version\"] }} {{ ansible_facts[\"architecture\"] }} ({{ ansible_facts[\"os_family\"] }})'"
>   

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>