diff --git a/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml b/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml index 50e5646a44..b8a0d75162 100644 --- a/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml +++ b/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml @@ -1,6 +1,6 @@ # All ubuntu-22.04 jobs should run successfully in an environment # setup by the scripts/ci/setup/qemu/build-environment.yml task -# "Install basic packages to build QEMU on Ubuntu 20.04" +# "Install basic packages to build QEMU on Ubuntu 22.04" ubuntu-22.04-aarch32-all: extends: .custom_runner_template diff --git a/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml b/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml index 13e14a0f87..374b0956c3 100644 --- a/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml +++ b/.gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml @@ -1,6 +1,6 @@ -# All ubuntu-20.04 jobs should run successfully in an environment +# All ubuntu-22.04 jobs should run successfully in an environment # setup by the scripts/ci/setup/qemu/build-environment.yml task -# "Install basic packages to build QEMU on Ubuntu 20.04" +# "Install basic packages to build QEMU on Ubuntu 22.04" ubuntu-22.04-aarch64-all-linux-static: extends: .custom_runner_template @@ -45,6 +45,28 @@ ubuntu-22.04-aarch64-all: - make --output-sync -j`nproc --ignore=40` - make --output-sync -j`nproc --ignore=40` check +ubuntu-22.04-aarch64-without-defaults: + extends: .custom_runner_template + needs: [] + stage: build + tags: + - ubuntu_22.04 + - aarch64 + rules: + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/' + when: manual + allow_failure: true + - if: "$AARCH64_RUNNER_AVAILABLE" + when: manual + allow_failure: true + script: + - mkdir build + - cd build + - ../configure --disable-user --without-default-devices --without-default-features + || { cat config.log meson-logs/meson-log.txt; exit 1; } + - make --output-sync -j`nproc --ignore=40` + - make --output-sync -j`nproc --ignore=40` check + ubuntu-22.04-aarch64-alldbg: extends: .custom_runner_template needs: [] @@ -123,7 +145,7 @@ ubuntu-22.04-aarch64-notcg: script: - mkdir build - cd build - - ../configure --disable-tcg + - ../configure --disable-tcg --with-devices-aarch64=minimal || { cat config.log meson-logs/meson-log.txt; exit 1; } - make --output-sync -j`nproc --ignore=40` - make --output-sync -j`nproc --ignore=40` check diff --git a/docs/system/gdb.rst b/docs/system/gdb.rst index 453eb73f6c..7d3718deef 100644 --- a/docs/system/gdb.rst +++ b/docs/system/gdb.rst @@ -46,6 +46,28 @@ Here are some useful tips in order to use gdb on system code: 3. Use ``set architecture i8086`` to dump 16 bit code. Then use ``x/10i $cs*16+$eip`` to dump the code at the PC position. +Breakpoint and Watchpoint support +================================= + +While GDB can always fall back to inserting breakpoints into memory +(if writable) other features are very much dependent on support of the +accelerator. For TCG system emulation we advertise an infinite number +of hardware assisted breakpoints and watchpoints. For other +accelerators it will depend on if support has been added (see +supports_guest_debug and related hooks in AccelOpsClass). + +As TCG cannot track all memory accesses in user-mode there is no +support for watchpoints. + +Relocating code +--------------- + +On modern kernels confusion can be caused by code being relocated by +features such as address space layout randomisation. To avoid +confusion when debugging such things you either need to update gdb's +view of where things are in memory or perhaps more trivially disable +ASLR when booting the system. + Debugging multicore machines ============================ diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 2d7c457955..0f42c556d7 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -436,6 +436,7 @@ config XLNX_VERSAL select OR_IRQ select XLNX_BBRAM select XLNX_EFUSE_VERSAL + select XLNX_USB_SUBSYS config NPCM7XX bool diff --git a/hw/usb/Kconfig b/hw/usb/Kconfig index ce4f433976..0ec6def4b8 100644 --- a/hw/usb/Kconfig +++ b/hw/usb/Kconfig @@ -136,5 +136,4 @@ config USB_DWC3 config XLNX_USB_SUBSYS bool - default y if XLNX_VERSAL select USB_DWC3 diff --git a/scripts/ci/setup/build-environment.yml b/scripts/ci/setup/build-environment.yml index 78b1021cd4..f344d1a850 100644 --- a/scripts/ci/setup/build-environment.yml +++ b/scripts/ci/setup/build-environment.yml @@ -24,7 +24,6 @@ when: - ansible_facts['distribution'] == 'Ubuntu' - ansible_facts['architecture'] == 'aarch64' - - ansible_facts['distribution_version'] == '20.04' - name: Update apt cache / upgrade packages via apt apt: @@ -33,87 +32,131 @@ when: - ansible_facts['distribution'] == 'Ubuntu' - - name: Install basic packages to build QEMU on Ubuntu 20.04 + # lcitool variables -f json ubuntu-2204 qemu | jq -r '.pkgs[]' | xargs -n 1 echo "-" + - name: Install basic packages to build QEMU on Ubuntu 22.04 package: name: + - bash + - bc + - bison + - bsdextrautils + - bzip2 + - ca-certificates - ccache + - clang + - dbus + - debianutils + - diffutils + - exuberant-ctags + - findutils + - flex + - g++ - gcc + - gcovr + - genisoimage - gettext - git - - glusterfs-common + - hostname - libaio-dev + - libasan5 + - libasound2-dev - libattr1-dev + - libbpf-dev - libbrlapi-dev - libbz2-dev + - libc6-dev - libcacard-dev - - libcapstone-dev - libcap-ng-dev + - libcapstone-dev + - libcmocka-dev - libcurl4-gnutls-dev + - libdaxctl-dev - libdrm-dev - libepoxy-dev - libfdt-dev + - libffi-dev - libgbm-dev + - libgcrypt20-dev + - libglib2.0-dev + - libglusterfs-dev + - libgnutls28-dev - libgtk-3-dev + - libibumad-dev - libibverbs-dev - libiscsi-dev - libjemalloc-dev - libjpeg-turbo8-dev + - libjson-c-dev + - liblttng-ust-dev - liblzo2-dev - - libncurses5-dev - libncursesw5-dev - libnfs-dev - - libnss3-dev - libnuma-dev + - libpam0g-dev + - libpcre2-dev - libpixman-1-dev - - librados-dev + - libpmem-dev + - libpng-dev + - libpulse-dev - librbd-dev - librdmacm-dev - libsasl2-dev - libsdl2-dev + - libsdl2-image-dev - libseccomp-dev + - libslirp-dev - libsnappy-dev - libspice-protocol-dev + - libspice-server-dev - libssh-dev + - libsystemd-dev + - libtasn1-6-dev + - libubsan1 + - libudev-dev + - liburing-dev - libusb-1.0-0-dev - libusbredirhost-dev - libvdeplug-dev + - libvirglrenderer-dev - libvte-2.91-dev + - libxen-dev + - libxml2-dev - libzstd-dev + - llvm + - locales - make - - python3-yaml + - meson + - multipath-tools + - ncat + - nettle-dev + - ninja-build + - openssh-client + - pkgconf + - python3 + - python3-numpy + - python3-opencv + - python3-pillow + - python3-pip - python3-sphinx - python3-sphinx-rtd-theme - - ninja-build + - python3-venv + - python3-yaml + - rpm2cpio + - sed - sparse + - systemtap-sdt-dev + - tar + - tesseract-ocr + - tesseract-ocr-eng + - texinfo - xfslibs-dev + - zlib1g-dev state: present when: - ansible_facts['distribution'] == 'Ubuntu' + - ansible_facts['distribution_version'] == '22.04' - - name: Install packages to build QEMU on Ubuntu 20.04 on non-s390x - package: - name: - - libspice-server-dev - - libxen-dev - state: present - when: - - ansible_facts['distribution'] == 'Ubuntu' - - ansible_facts['architecture'] == 'aarch64' or ansible_facts['architecture'] == 'x86_64' - - - name: Install basic packages to build QEMU on Ubuntu 20.04 - package: - name: - # Originally from tests/docker/dockerfiles/ubuntu2004.docker - - clang-10 - - genisoimage - - liblttng-ust-dev - - libslirp-dev - - netcat-openbsd - when: - - ansible_facts['distribution'] == 'Ubuntu' - - ansible_facts['distribution_version'] == '20.04' - - - name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 20.04 + - name: Install armhf cross-compile packages to build QEMU on AArch64 Ubuntu 22.04 package: name: - binutils-arm-linux-gnueabihf @@ -128,7 +171,7 @@ - zlib1g-dev:armhf when: - ansible_facts['distribution'] == 'Ubuntu' - - ansible_facts['distribution_version'] == '20.04' + - ansible_facts['distribution_version'] == '22.04' - ansible_facts['architecture'] == 'aarch64' - name: Enable EPEL repo on EL8 diff --git a/scripts/ci/setup/gitlab-runner.yml b/scripts/ci/setup/gitlab-runner.yml index 1a1b270ff2..7bdafab511 100644 --- a/scripts/ci/setup/gitlab-runner.yml +++ b/scripts/ci/setup/gitlab-runner.yml @@ -26,6 +26,7 @@ user: user: gitlab-runner group: gitlab-runner + groups: kvm comment: GitLab Runner home: /home/gitlab-runner shell: /bin/bash diff --git a/tests/avocado/replay_kernel.py b/tests/avocado/replay_kernel.py index f13456e1ec..fe1e901f4b 100644 --- a/tests/avocado/replay_kernel.py +++ b/tests/avocado/replay_kernel.py @@ -493,7 +493,7 @@ class ReplayKernelSlow(ReplayKernelBase): :avocado: tags=endian:little :avocado: tags=cpu:I7200 """ - kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/' + kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 'generic_nano32r6el_page4k.xz') kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6' @@ -507,7 +507,7 @@ class ReplayKernelSlow(ReplayKernelBase): :avocado: tags=endian:little :avocado: tags=cpu:I7200 """ - kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/' + kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 'generic_nano32r6el_page16k_up.xz') kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc' @@ -521,7 +521,7 @@ class ReplayKernelSlow(ReplayKernelBase): :avocado: tags=endian:little :avocado: tags=cpu:I7200 """ - kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/' + kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 'generic_nano32r6el_page64k_dbg.xz') kernel_hash = '18d1c68f2e23429e266ca39ba5349ccd0aeb7180' diff --git a/tests/docker/dockerfiles/debian-xtensa-cross.docker b/tests/docker/dockerfiles/debian-xtensa-cross.docker index 082b50da19..72c25d63d9 100644 --- a/tests/docker/dockerfiles/debian-xtensa-cross.docker +++ b/tests/docker/dockerfiles/debian-xtensa-cross.docker @@ -5,7 +5,7 @@ # using a prebuilt toolchains for Xtensa cores from: # https://github.com/foss-xtensa/toolchain/releases # -FROM docker.io/library/debian:stretch-slim +FROM docker.io/library/debian:11-slim RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \