Skip to content
Snippets Groups Projects
  1. May 25, 2022
  2. May 20, 2022
    • Richard Henderson's avatar
      Merge tag 'pull-request-2022-05-18' of https://gitlab.com/thuth/qemu into staging · 3757b0d0
      Richard Henderson authored
      * Remove Ubuntu 18.04 containers (not supported anymore)
      * Improve the cleanup of the QEMU binary in case of failing qtests
      * Update the Windows support statement
      * Remove the capstone submodule (and rely on Capstone of the distros instead)
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmKEovQRHHRodXRoQHJl
      # ZGhhdC5jb20ACgkQLtnXdP5wLbXXtxAAsjL2M/kUcr1KBSfkaMhTa0D3OKPQ+p/e
      # Bac/9+l7UhZZLLffzg53lSsCmlj9cSr5cVUkooT7IFS03wauH7ZJ/wuefIS8IYED
      # jREmeMWXmVTTfQo4QQZ+6T+XknG2DWjzXQ3sNat71LH4RbHXO5um3zYIdDUaujP+
      # v4sAKKH+F/FUsEXMP1rFmZpkaWOcvsuSwP/H4kEfhlovebAZINPow26eYYRrTM2t
      # Ifs7HelO12TlmqlBFn0UzHj8bV8MZkqcjj0efocVzuYMQ8DVcxE7IPc3tft2PuUu
      # Ia+Czh1hLsLA1zYiO/nN9bVIIewFGOErASzjlYWUlQwNRc1nLik+m+p4Cl9WOEhL
      # JpkN/yY3pTI5uC6a4KgxDQGTeFUR4D5la6Hg7yQjQbTBMEeGFCV50iOdkItdnRBx
      # ByReVctXS3oIhsDqHMb8qydlBkPp5pUrAXdj43IBCUb3UsrHmCxH+z8U5BhHvv4D
      # OleykLKyMcuff6HcEpC1fBQNIFJX5uS69EtAXYtyo2kb5zAJWezCv65UPldAZJCT
      # kRT4beueQ+d5t+4LZn1qNePdoyeFArdCLlOqg/3Fx08kM5eEv22pSQhOtWclE7U3
      # tgorikFybClvKJ+YnXBAxD7oFKe+h9L+RYCFOgoTebrbMX54IjjJfeo2DydhHTt7
      # IaJnsI+vvAA=
      # =z6e9
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Wed 18 May 2022 12:40:36 AM PDT
      # gpg:                using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
      # gpg:                issuer "thuth@redhat.com"
      # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [undefined]
      # gpg:                 aka "Thomas Huth <thuth@redhat.com>" [undefined]
      # gpg:                 aka "Thomas Huth <th.huth@posteo.de>" [unknown]
      # gpg:                 aka "Thomas Huth <huth@tuxfamily.org>" [undefined]
      # gpg: WARNING: This key is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5
      
      * tag 'pull-request-2022-05-18' of https://gitlab.com/thuth/qemu
      
      :
        capstone: Remove the capstone submodule
        capstone: Allow version 3.0.5 again
        tests/vm: Add capstone to the NetBSD and OpenBSD VMs
        docs/about: Update the support statement for Windows
        tests/qtest: use prctl(PR_SET_PDEATHSIG) as fallback to kill QEMU
        tests/qtest: fix registration of ABRT handler for QEMU cleanup
        Remove Ubuntu 18.04 container support from the repository
        gitlab-ci: Switch the container of the 'check-patch' & 'check-dco' jobs
      
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      3757b0d0
  3. May 19, 2022
    • Richard Henderson's avatar
      Merge tag 'pull-target-arm-20220519' of... · 3a650ac9
      Richard Henderson authored
      Merge tag 'pull-target-arm-20220519' of https://git.linaro.org/people/pmaydell/qemu-arm into staging
      
      target-arm queue:
       * Implement FEAT_S2FWB
       * Implement FEAT_IDST
       * Drop unsupported_encoding() macro
       * hw/intc/arm_gicv3: Use correct number of priority bits for the CPU
       * Fix aarch64 debug register names
       * hw/adc/zynq-xadc: Use qemu_irq typedef
       * target/arm/helper.c: Delete stray obsolete comment
       * Make number of counters in PMCR follow the CPU
       * hw/arm/virt: Fix dtb nits
       * ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY
       * target/arm: Fix PAuth keys access checks for disabled SEL2
       * Enable FEAT_HCX for -cpu max
       * Use FIELD definitions for CPACR, CPTR_ELx
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmKGf/kZHHBldGVyLm1h
      # eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3h5fD/9+2ymBkwX9jIaaOooejZrJ
      # CUVCPL2w206eZbPihgE4snZcZdkGjteDhS30kipyJxFNaCE0d2qQLTMrPXQMKyGz
      # aqCcvSSdb+VraVOP7RpfqYrkzFsj/+K/F5NHn3Vf/T7ULLQJFk0JZ4UWnt7/rkhL
      # oaXGDm79JrFfMTWUu2AKtCGj132YXyH2YP7GmvYyIty3l+hR9a8mwx3EcFTewuEn
      # U7AZGZL2GfixGLZU/nNRcTu/BOlkdU6PM1BZoprs7HwbMXR1+pBCX6bwIXK35Q6/
      # vCu8e/4+Hi4cd7nxRXqQ7+KuIdcEB+LwupN61othVUl2lnfQgNcvj2hhiWJkxdRI
      # gpRktnnf6QNWsQ7HWShB5o8HhDN9v82wMf8VSiN1XncN6oYWZSEAMa4NbV/1ditY
      # yolJww/onnre8A07xTzBqIXqKRViwUMltXSamUpuWx4UsSMOql/ktJYsXqSnJWP+
      # cpTqQ+VQKj8cTotvDTnxKsOiI/RraSAzW1amle0x2Ff8I6AN45j1S3GuT9EyJJ3w
      # CabegyYloJChI2Gnqf5Pc+B108E/GwHlcsmgaN5FEjlGzluKa7Ii0D2f1Cey1tAl
      # iTqJ3dRFjhkll6a88TN47QRtDJadXp+PjQzzQxtEM1wXhJLWXTxocvBn0cGg2OnY
      # 4eMY1YLtD9neCnKvdZdw9g==
      # =F3ow
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Thu 19 May 2022 10:35:53 AM PDT
      # gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
      # gpg:                issuer "peter.maydell@linaro.org"
      # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [full]
      # gpg:                 aka "Peter Maydell <pmaydell@gmail.com>" [full]
      # gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [full]
      
      * tag 'pull-target-arm-20220519' of https://git.linaro.org/people/pmaydell/qemu-arm
      
      : (22 commits)
        target/arm: Use FIELD definitions for CPACR, CPTR_ELx
        target/arm: Enable FEAT_HCX for -cpu max
        target/arm: Fix PAuth keys access checks for disabled SEL2
        ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY
        hw/arm/virt: Drop #size-cells and #address-cells from gpio-keys dtb node
        hw/arm/virt: Fix incorrect non-secure flash dtb node name
        target/arm: Make number of counters in PMCR follow the CPU
        target/arm/helper.c: Delete stray obsolete comment
        hw/adc/zynq-xadc: Use qemu_irq typedef
        Fix aarch64 debug register names.
        hw/intc/arm_gicv3: Provide ich_num_aprs()
        hw/intc/arm_gicv3: Use correct number of priority bits for the CPU
        hw/intc/arm_gicv3: Support configurable number of physical priority bits
        hw/intc/arm_gicv3_kvm.c: Stop using GIC_MIN_BPR constant
        hw/intc/arm_gicv3: report correct PRIbits field in ICV_CTLR_EL1
        hw/intc/arm_gicv3_cpuif: Handle CPUs that don't specify GICv3 parameters
        target/arm: Drop unsupported_encoding() macro
        target/arm: Implement FEAT_IDST
        target/arm: Enable FEAT_S2FWB for -cpu max
        target/arm: Implement FEAT_S2FWB
        ...
      
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      3a650ac9
    • Richard Henderson's avatar
      target/arm: Use FIELD definitions for CPACR, CPTR_ELx · fab8ad39
      Richard Henderson authored
      
      We had a few CPTR_* bits defined, but missed quite a few.
      Complete all of the fields up to ARMv9.2.
      Use FIELD_EX64 instead of manual extract32.
      
      Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220517054850.177016-3-richard.henderson@linaro.org
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      fab8ad39
    • Richard Henderson's avatar
      target/arm: Enable FEAT_HCX for -cpu max · 5814d587
      Richard Henderson authored
      
      This feature adds a new register, HCRX_EL2, which controls
      many of the newer AArch64 features.  So far the register is
      effectively RES0, because none of the new features are done.
      
      Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220517054850.177016-2-richard.henderson@linaro.org
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      5814d587
    • Florian Lugou's avatar
      target/arm: Fix PAuth keys access checks for disabled SEL2 · 07b034ea
      Florian Lugou authored
      
      As per the description of the HCR_EL2.APK field in the ARMv8 ARM,
      Pointer Authentication keys accesses should only be trapped to Secure
      EL2 if it is enabled.
      
      Signed-off-by: default avatarFlorian Lugou <florian.lugou@provenrun.com>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220517145242.1215271-1-florian.lugou@provenrun.com
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      07b034ea
    • Peter Maydell's avatar
      ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY · 9598c1bb
      Peter Maydell authored
      
      The traditional ptimer behaviour includes a collection of weird edge
      case behaviours.  In 2016 we improved the ptimer implementation to
      fix these and generally make the behaviour more flexible, with
      ptimers opting in to the new behaviour by passing an appropriate set
      of policy flags to ptimer_init().  For backwards-compatibility, we
      defined PTIMER_POLICY_DEFAULT (which sets no flags) to give the old
      weird behaviour.
      
      This turns out to be a poor choice of name, because people writing
      new devices which use ptimers are misled into thinking that the
      default is probably a sensible choice of flags, when in fact it is
      almost always not what you want.  Rename PTIMER_POLICY_DEFAULT to
      PTIMER_POLICY_LEGACY and beef up the comment to more clearly say that
      new devices should not be using it.
      
      The code-change part of this commit was produced by
        sed -i -e 's/PTIMER_POLICY_DEFAULT/PTIMER_POLICY_LEGACY/g' $(git grep -l PTIMER_POLICY_DEFAULT)
      with the exception of a test name string change in
      tests/unit/ptimer-test.c which was added manually.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarFrancisco Iglesias <francisco.iglesias@amd.com>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220516103058.162280-1-peter.maydell@linaro.org
      9598c1bb
    • Peter Maydell's avatar
      hw/arm/virt: Drop #size-cells and #address-cells from gpio-keys dtb node · afdcbddc
      Peter Maydell authored
      
      The virt board generates a gpio-keys node in the dtb, but it
      incorrectly gives this node #size-cells and #address-cells
      properties. If you dump the dtb with 'machine dumpdtb=file.dtb'
      and run it through dtc, dtc will warn about this:
      
      Warning (avoid_unnecessary_addr_size): /gpio-keys: unnecessary #address-cells/#size-cells without "ranges" or child "reg" property
      
      Remove the bogus properties.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220513131316.4081539-3-peter.maydell@linaro.org
      afdcbddc
    • Peter Maydell's avatar
      hw/arm/virt: Fix incorrect non-secure flash dtb node name · e8ca920f
      Peter Maydell authored
      
      In the virt board with secure=on we put two nodes in the dtb
      for flash devices: one for the secure-only flash, and one
      for the non-secure flash. We get the reg properties for these
      correct, but in the DT node name, which by convention includes
      the base address of devices, we used the wrong address. Fix it.
      
      Spotted by dtc, which will complain
      Warning (unique_unit_address): /flash@0: duplicate unit-address (also used in node /secflash@0)
      if you dump the dtb from QEMU with -machine dumpdtb=file.dtb
      and then decompile it with dtc.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220513131316.4081539-2-peter.maydell@linaro.org
      e8ca920f
    • Peter Maydell's avatar
      target/arm: Make number of counters in PMCR follow the CPU · 24526bb9
      Peter Maydell authored
      
      Currently we give all the v7-and-up CPUs a PMU with 4 counters.  This
      means that we don't provide the 6 counters that are required by the
      Arm BSA (Base System Architecture) specification if the CPU supports
      the Virtualization extensions.
      
      Instead of having a single PMCR_NUM_COUNTERS, make each CPU type
      specify the PMCR reset value (obtained from the appropriate TRM), and
      use the 'N' field of that value to define the number of counters
      provided.
      
      This means that we now supply 6 counters instead of 4 for:
       Cortex-A9, Cortex-A15, Cortex-A53, Cortex-A57, Cortex-A72,
       Cortex-A76, Neoverse-N1, '-cpu max'
      This CPU goes from 4 to 8 counters:
       A64FX
      These CPUs remain with 4 counters:
       Cortex-A7, Cortex-A8
      This CPU goes down from 4 to 3 counters:
       Cortex-R5
      
      Note that because we now use the PMCR reset value of the specific
      implementation, we no longer set the LC bit out of reset.  This has
      an UNKNOWN value out of reset for all cores with any AArch32 support,
      so guest software should be setting it anyway if it wants it.
      
      This change was originally landed in commit f7fb73b8 (during
      the 6.0 release cycle) but was then reverted by commit
      21c2dd77 before that release because it did not work with KVM.
      This version fixes that by creating the scratch vCPU in
      kvm_arm_get_host_cpu_features() with the KVM_ARM_VCPU_PMU_V3 feature
      if KVM supports it, and then only asking KVM for the PMCR_EL0 value
      if the vCPU has a PMU.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      [PMM: Added the correct value for a64fx]
      Message-id: 20220513122852.4063586-1-peter.maydell@linaro.org
      24526bb9
    • Peter Maydell's avatar
      target/arm/helper.c: Delete stray obsolete comment · 1a13efcc
      Peter Maydell authored
      
      In commit 88ce6c6e we switched from directly fishing the number
      of breakpoints and watchpoints out of the ID register fields to
      abstracting out functions to do this job, but we forgot to delete the
      now-obsolete comment in define_debug_regs() about the relation
      between the ID field value and the actual number of breakpoints and
      watchpoints.  Delete the obsolete comment.
      
      Reported-by: default avatarCHRIS HOWARD <cvz185@web.de>
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220513131801.4082712-1-peter.maydell@linaro.org
      1a13efcc
    • Philippe Mathieu-Daudé's avatar
      hw/adc/zynq-xadc: Use qemu_irq typedef · 6e76d35f
      Philippe Mathieu-Daudé authored
      
      Except hw/core/irq.c which implements the forward-declared opaque
      qemu_irq structure, hw/adc/zynq-xadc.{c,h} are the only files not
      using the typedef. Fix this single exception.
      
      Signed-off-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: default avatarBernhard Beschow <shentey@gmail.com>
      Message-id: 20220509202035.50335-1-philippe.mathieu.daude@gmail.com
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      6e76d35f
    • Chris Howard's avatar
      Fix aarch64 debug register names. · e1be11a5
      Chris Howard authored
      
      Give all the debug registers their correct names including the
      index, rather than having multiple registers all with the
      same name string, which is confusing when viewed over the
      gdbstub interface.
      
      Signed-off-by: default avatarCHRIS HOWARD <cvz185@web.de>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 4127D8CA-D54A-47C7-A039-0DB7361E30C0@web.de
      [PMM: expanded commit message]
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      e1be11a5
    • Peter Maydell's avatar
      hw/intc/arm_gicv3: Provide ich_num_aprs() · 5d55f827
      Peter Maydell authored
      
      We previously open-coded the expression for the number of virtual APR
      registers and the assertion that it was not going to cause us to
      overflow the cs->ich_apr[] array.  Factor this out into a new
      ich_num_aprs() function, for consistency with the icc_num_aprs()
      function we just added for the physical APR handling.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220512151457.3899052-7-peter.maydell@linaro.org
      Message-id: 20220506162129.2896966-6-peter.maydell@linaro.org
      5d55f827
    • Peter Maydell's avatar
      hw/intc/arm_gicv3: Use correct number of priority bits for the CPU · 39f29e59
      Peter Maydell authored
      
      Make the GICv3 set its number of bits of physical priority from the
      implementation-specific value provided in the CPU state struct, in
      the same way we already do for virtual priority bits.  Because this
      would be a migration compatibility break, we provide a property
      force-8-bit-prio which is enabled for 7.0 and earlier versioned board
      models to retain the legacy "always use 8 bits" behaviour.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220512151457.3899052-6-peter.maydell@linaro.org
      Message-id: 20220506162129.2896966-5-peter.maydell@linaro.org
      39f29e59
    • Peter Maydell's avatar
      hw/intc/arm_gicv3: Support configurable number of physical priority bits · 84597ff3
      Peter Maydell authored
      
      The GICv3 code has always supported a configurable number of virtual
      priority and preemption bits, but our implementation currently
      hardcodes the number of physical priority bits at 8.  This is not
      what most hardware implementations provide; for instance the
      Cortex-A53 provides only 5 bits of physical priority.
      
      Make the number of physical priority/preemption bits driven by fields
      in the GICv3CPUState, the way that we already do for virtual
      priority/preemption bits.  We set cs->pribits to 8, so there is no
      behavioural change in this commit.  A following commit will add the
      machinery for CPUs to set this to the correct value for their
      implementation.
      
      Note that changing the number of priority bits would be a migration
      compatibility break, because the semantics of the icc_apr[][] array
      changes.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220512151457.3899052-5-peter.maydell@linaro.org
      Message-id: 20220506162129.2896966-4-peter.maydell@linaro.org
      84597ff3
    • Peter Maydell's avatar
      hw/intc/arm_gicv3_kvm.c: Stop using GIC_MIN_BPR constant · 9774c0f7
      Peter Maydell authored
      
      The GIC_MIN_BPR constant defines the minimum BPR value that the TCG
      emulated GICv3 supports.  We're currently using this also as the
      value we reset the KVM GICv3 ICC_BPR registers to, but this is only
      right by accident.
      
      We want to make the emulated GICv3 use a configurable number of
      priority bits, which means that GIC_MIN_BPR will no longer be a
      constant.  Replace the uses in the KVM reset code with literal 0,
      plus a constant explaining why this is reasonable.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220512151457.3899052-4-peter.maydell@linaro.org
      Message-id: 20220506162129.2896966-3-peter.maydell@linaro.org
      9774c0f7
    • Peter Maydell's avatar
      hw/intc/arm_gicv3: report correct PRIbits field in ICV_CTLR_EL1 · 9c6f933e
      Peter Maydell authored
      
      As noted in the comment, the PRIbits field in ICV_CTLR_EL1 is
      supposed to match the ICH_VTR_EL2 PRIbits setting; that is, it is the
      virtual priority bit setting, not the physical priority bit setting.
      (For QEMU currently we always implement 8 bits of physical priority,
      so the PRIbits field was previously 7, since it is defined to be
      "priority bits - 1".)
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220512151457.3899052-3-peter.maydell@linaro.org
      Message-id: 20220506162129.2896966-2-peter.maydell@linaro.org
      9c6f933e
    • Peter Maydell's avatar
      hw/intc/arm_gicv3_cpuif: Handle CPUs that don't specify GICv3 parameters · 272f75e8
      Peter Maydell authored
      
      We allow a GICv3 to be connected to any CPU, but we don't do anything
      to handle the case where the CPU type doesn't in hardware have a
      GICv3 CPU interface and so the various GIC configuration fields
      (gic_num_lrs, vprebits, vpribits) are not specified.
      
      The current behaviour is that we will add the EL1 CPU interface
      registers, but will not put in the EL2 CPU interface registers, even
      if the CPU has EL2, which will leave the GIC in a broken state and
      probably result in the guest crashing as it tries to set it up.  This
      only affects the virt board when using the cortex-a15 or cortex-a7
      CPU types (both 32-bit) with -machine gic-version=3 (or 'max')
      and -machine virtualization=on.
      
      Instead of failing to set up the EL2 registers, if the CPU doesn't
      define the GIC configuration set it to a reasonable default, matching
      the standard configuration for most Arm CPUs.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220512151457.3899052-2-peter.maydell@linaro.org
      272f75e8
    • Peter Maydell's avatar
      target/arm: Drop unsupported_encoding() macro · 3d52472f
      Peter Maydell authored
      
      The unsupported_encoding() macro logs a LOG_UNIMP message and then
      generates code to raise the usual exception for an unallocated
      encoding.  Back when we were still implementing the A64 decoder this
      was helpful for flagging up when guest code was using something we
      hadn't yet implemented.  Now we completely cover the A64 instruction
      set it is barely used.  The only remaining uses are for five
      instructions whose semantics are "UNDEF, unless being run under
      external halting debug":
       * HLT (when not being used for semihosting)
       * DCPSR1, DCPS2, DCPS3
       * DRPS
      
      QEMU doesn't implement external halting debug, so for us the UNDEF is
      the architecturally correct behaviour (because it's not possible to
      execute these instructions with halting debug enabled).  The
      LOG_UNIMP doesn't serve a useful purpose; replace these uses of
      unsupported_encoding() with unallocated_encoding(), and delete the
      macro.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220509160443.3561604-1-peter.maydell@linaro.org
      3d52472f
    • Peter Maydell's avatar
      target/arm: Implement FEAT_IDST · 75662f36
      Peter Maydell authored
      
      The Armv8.4 feature FEAT_IDST specifies that exceptions generated by
      read accesses to the feature ID space should report a syndrome code
      of 0x18 (EC_SYSTEMREGISTERTRAP) rather than 0x00 (EC_UNCATEGORIZED).
      The feature ID space is defined to be:
       op0 == 3, op1 == {0,1,3}, CRn == 0, CRm == {0-7}, op2 == {0-7}
      
      In our implementation we might return the EC_UNCATEGORIZED syndrome
      value for a system register access in four cases:
       * no reginfo struct in the hashtable
       * cp_access_ok() fails (ie ri->access doesn't permit the access)
       * ri->accessfn returns CP_ACCESS_TRAP_UNCATEGORIZED at runtime
       * ri->type includes ARM_CP_RAISES_EXC, and the readfn raises
         an UNDEF exception at runtime
      
      We have very few regdefs that set ARM_CP_RAISES_EXC, and none of
      them are in the feature ID space. (In the unlikely event that any
      are added in future they would need to take care of setting the
      correct syndrome themselves.) This patch deals with the other
      three cases, and enables FEAT_IDST for AArch64 -cpu max.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220509155457.3560724-1-peter.maydell@linaro.org
      75662f36
    • Peter Maydell's avatar
      target/arm: Enable FEAT_S2FWB for -cpu max · e04bf5a7
      Peter Maydell authored
      
      Enable the FEAT_S2FWB for -cpu max. Since FEAT_S2FWB requires that
      CLIDR_EL1.{LoUU,LoUIS} are zero, we explicitly squash these (the
      inherited CLIDR_EL1 value from the Cortex-A57 has them as 1).
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220505183950.2781801-5-peter.maydell@linaro.org
      e04bf5a7
    • Peter Maydell's avatar
      target/arm: Implement FEAT_S2FWB · 8c7e17ef
      Peter Maydell authored
      
      Implement the handling of FEAT_S2FWB; the meat of this is in the new
      combined_attrs_fwb() function which combines S1 and S2 attributes
      when HCR_EL2.FWB is set.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220505183950.2781801-4-peter.maydell@linaro.org
      8c7e17ef
    • Peter Maydell's avatar
      target/arm: Factor out FWB=0 specific part of combine_cacheattrs() · 4a0b47c8
      Peter Maydell authored
      
      Factor out the part of combine_cacheattrs() that is specific to
      handling HCR_EL2.FWB == 0.  This is the part where we combine the
      memory type and cacheability attributes.
      
      The "force Outer Shareable for Device or Normal Inner-NC Outer-NC"
      logic remains in combine_cacheattrs() because it holds regardless
      (this is the equivalent of the pseudocode EffectiveShareability()
      function).
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220505183950.2781801-3-peter.maydell@linaro.org
      4a0b47c8
    • Peter Maydell's avatar
      target/arm: Postpone interpretation of stage 2 descriptor attribute bits · 9f225e60
      Peter Maydell authored
      
      In the original Arm v8 two-stage translation, both stage 1 and stage
      2 specify memory attributes (memory type, cacheability,
      shareability); these are then combined to produce the overall memory
      attributes for the whole stage 1+2 access.  In QEMU we implement this
      by having get_phys_addr() fill in an ARMCacheAttrs struct, and we
      convert both the stage 1 and stage 2 attribute bit formats to the
      same encoding (an 8-bit attribute value matching the MAIR_EL1 fields,
      plus a 2-bit shareability value).
      
      The new FEAT_S2FWB feature allows the guest to enable a different
      interpretation of the attribute bits in the stage 2 descriptors.
      These bits can now be used to control details of how the stage 1 and
      2 attributes should be combined (for instance they can say "always
      use the stage 1 attributes" or "ignore the stage 1 attributes and
      always be Device memory").  This means we need to pass the raw bit
      information for stage 2 down to the function which combines the stage
      1 and stage 2 information.
      
      Add a field to ARMCacheAttrs that indicates whether the attrs field
      should be interpreted as MAIR format, or as the raw stage 2 attribute
      bits from the descriptor, and store the appropriate values when
      filling in cacheattrs.
      
      We only need to interpret the attrs field in a few places:
       * in do_ats_write(), where we know to expect a MAIR value
         (there is no ATS instruction to do a stage-2-only walk)
       * in S1_ptw_translate(), where we want to know whether the
         combined S1 + S2 attributes indicate Device memory that
         should provoke a fault
       * in combine_cacheattrs(), which does the S1 + S2 combining
      Update those places accordingly.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20220505183950.2781801-2-peter.maydell@linaro.org
      9f225e60
  4. May 18, 2022
    • Richard Henderson's avatar
      Merge tag 'artist-cursor-fix-final-pull-request' of... · 78ac2eeb
      Richard Henderson authored
      Merge tag 'artist-cursor-fix-final-pull-request' of https://github.com/hdeller/qemu-hppa
      
       into staging
      
      hppa: Artist graphics driver fixes for HP-UX and keyboard fix in firmware boot console
      
      This series updates the SeaBIOS-hppa firmware to version 5, in which additional
      HP fonts were added to the firmware and the firmware boot console was fixed to
      accept input from the emulated PS/2 keyboard when running in graphical mode
      (serial console was working before already). To test use the "-boot menu=on"
      qemu option.
      
      The artist graphics card driver got various fixes when running the X11-Windows
      on HP-UX:
      - fixes the horizontal and vertical postioning of the X11 cursor with HP-UX
      - allows X11 to blank the screen (e.g. screensaver)
      - allows the X11 driver to turn the X11 cursor on/off
      
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      
      --
      Changes compared to version 2 of this series:
      - Fixed style issues in the X-cursor positioning patch (noticed by Mark Cave-Ayland)
      
      Changes compared to version 1 of this series:
      - Added some Acked-by's from Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      - SeaBIOS-hppa v5 instead of v4 (PS/2 keyboard now works in boot console)
      - integrated artist X11 X-cusor positioning fix (which was sent serperately before)
      
      --
      This series should apply cleanly on git head and can be pulled for testing
      from: https://github.com/hdeller/qemu-hppa.git   artist-cursor-fix-final
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iHUEABYKAB0WIQS86RI+GtKfB8BJu973ErUQojoPXwUCYoUcLwAKCRD3ErUQojoP
      # X/joAQCmuV5MD+BTWf91fRTfzXSfOYSp1XahTaItUldKG2ZBWQD+Lflhsoyg4xLd
      # 2daeDRN1tH2HWldjnCPyMyZ5Ag97PwY=
      # =ZrTm
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Wed 18 May 2022 09:17:51 AM PDT
      # gpg:                using EDDSA key BCE9123E1AD29F07C049BBDEF712B510A23A0F5F
      # gpg: Good signature from "Helge Deller <deller@gmx.de>" [unknown]
      # gpg:                 aka "Helge Deller <deller@kernel.org>" [unknown]
      # gpg: WARNING: This key is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: 4544 8228 2CD9 10DB EF3D  25F8 3E5F 3D04 A7A2 4603
      #      Subkey fingerprint: BCE9 123E 1AD2 9F07 C049  BBDE F712 B510 A23A 0F5F
      
      * tag 'artist-cursor-fix-final-pull-request' of https://github.com/hdeller/qemu-hppa
      
      :
        artist: Fix X cursor position calculation in X11
        artist: Emulate screen blanking
        artist: Allow to turn cursor on or off
        artist: Fix vertical X11 cursor position in HP-UX
        artist: Use human-readable variable names instead of reg_xxx
        artist: Introduce constant for max cursor size
        seabios-hppa: Update SeaBIOS-hppa to VERSION 5
      
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      78ac2eeb
    • Thomas Huth's avatar
      capstone: Remove the capstone submodule · 83602083
      Thomas Huth authored
      
      Now that we allow compiling with Capstone v3.0.5 again, all our supported
      build hosts should provide at least this version of the disassembler
      library, so we do not need to ship this as a submodule anymore.
      
      Message-Id: <20220516145823.148450-4-thuth@redhat.com>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      83602083
    • Thomas Huth's avatar
      capstone: Allow version 3.0.5 again · 43ecd166
      Thomas Huth authored
      According to
      
       https://lore.kernel.org/qemu-devel/20200921174118.39352-1-richard.henderson@linaro.org/
      
      
      
      there was an issue with Capstone 3.0.4 from Ubuntu 18, which was the reason
      for bumping our minimum Capstone requirement to version 4.0. And indeed,
      compiling with that version 3.0.4 from Ubuntu 18.04 still fails (after
      allowing it with a hack in meson.build). But now that we've dropped support
      for Ubuntu 18.04, that issue is not relevant anymore. Compiling with Capstone
      version 3.0.5 (e.g. used in Ubuntu 20.04) seems to work fine, so let's allow
      that version again.
      
      Message-Id: <20220516145823.148450-3-thuth@redhat.com>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      43ecd166
    • Thomas Huth's avatar
      tests/vm: Add capstone to the NetBSD and OpenBSD VMs · 28e7e95e
      Thomas Huth authored
      
      The Capstone library that is shipped with NetBSD and OpenBSD works
      fine when compiling QEMU, so let's enable this in our build-test
      VMs to get a little bit more build-test coverage.
      
      Message-Id: <20220516145823.148450-2-thuth@redhat.com>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      28e7e95e
    • Thomas Huth's avatar
      docs/about: Update the support statement for Windows · 0ce9b08c
      Thomas Huth authored
      Our support statement for Windows currently talks about "Vista / Server
      2008" - which is related to the API of Windows, and this is not easy
      to understand for the non-technical users. Additionally, glib sets the
      _WIN32_WINNT macro to 0x0601 already, which indicates the Windows 7 API,
      so QEMU effectively depends on the Windows 7 API, too.
      
      Thus let's bump the _WIN32_WINNT setting in QEMU to the same level as
      glib uses and adjust our support statement in the documentation to
      something similar that we're using for Linux and the *BSD systems
      (i.e. only the two most recent versions), which should hopefully be
      easier to understand for the users now.
      
      And since we're nowadays also compile-testing QEMU with MSYS2 on Windows
      itself, I think we could mention this build environment here, too.
      
      Resolves: https://gitlab.com/qemu-project/qemu/-/issues/880
      
      
      Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Reviewed-by: default avatarStefan Weil <sw@weilnetz.de>
      Message-Id: <20220513063958.1181443-1-thuth@redhat.com>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      0ce9b08c
    • Daniel P. Berrangé's avatar
      tests/qtest: use prctl(PR_SET_PDEATHSIG) as fallback to kill QEMU · 6cbde91a
      Daniel P. Berrangé authored
      
      Although we register a ABRT handler to kill off QEMU when g_assert()
      triggers, we want an extra safety net. The QEMU process might be
      non-functional and thus not have responded to SIGTERM. The test script
      might also have crashed with SEGV, in which case the cleanup handlers
      won't ever run.
      
      Using the Linux specific prctl(PR_SET_PDEATHSIG) syscall, we
      can ensure that QEMU gets sent SIGKILL as soon as the controlling
      qtest exits, if nothing else has correctly told it to quit.
      
      Note, technically the death signal is sent when the *thread* that
      called fork() exits. IOW, if you are calling qtest_init() in one
      thread, letting that thread exit, and then expecting to run
      qtest_quit() in a different thread, things are not going to work
      out. Fortunately that is not a scenario that exists in qtests,
      as pairs of qtest_init and qtest_quit are always called from the
      same thread.
      
      Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Message-Id: <20220513154906.206715-3-berrange@redhat.com>
      Reviewed-by: default avatarThomas Huth <thuth@redhat.com>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      6cbde91a
    • Daniel P. Berrangé's avatar
      tests/qtest: fix registration of ABRT handler for QEMU cleanup · 83f79d4e
      Daniel P. Berrangé authored
      
      qtest_init registers a hook to cleanup the running QEMU process
      should g_assert() fire before qtest_quit is called. When the first
      hook is registered, it is supposed to triggere registration of the
      SIGABRT handler. Unfortunately the logic in hook_list_is_empty is
      inverted, so the SIGABRT handler never gets registered, unless
      2 or more QEMU processes are run concurrently. This caused qtest
      to leak QEMU processes anytime g_assert triggers.
      
      Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Message-Id: <20220513154906.206715-2-berrange@redhat.com>
      Reviewed-by: default avatarThomas Huth <thuth@redhat.com>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      83f79d4e
    • Thomas Huth's avatar
      Remove Ubuntu 18.04 container support from the repository · f3f0cbaf
      Thomas Huth authored
      
      According to our "Supported build platforms" policy, we now do not support
      Ubuntu 18.04 anymore. Remove the related container files and entries from
      our CI.
      
      Message-Id: <20220516115912.120951-1-thuth@redhat.com>
      Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      f3f0cbaf
Loading