From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809220; cv=none; d=zohomail.com; s=zohoarc; b=QrG4HwjWy5gQ7Jq2WogC+48nRpZpoiBup3YRwU4is6VV8XngRz9dpfB0RNatfyRvaq9ycNgEshUGzUH4OdOdSEbSDFl3zcjsimFFS70Wgq61Px5Pxnqk9bdbhHz1+iNLIYqcwWZdnEJEwhFsJ2FN/kf9ycqeH1te9TOM4ziDk1Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809220; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=etcRpKtfheOQfGw/Xi3cx/GcjPUQ+Xa3rHRL6tXwgSI=; b=ZGCoOfqetQ2lfUZoi+AoR/1L4VdYf1iGHhDhMB8bWQIPR4dfAGxddJNg+JF5Ooe6OaA/nURxG9craAMgSlAHdp8/InmM5DRfN9fikDC7NQi4g2GEpHTanSvwrLOMW3dzgmvJqXxcgd5d0ma2/ithm4xozVpKtSmOwifku0+w1pI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177280922041318.350274360537014; Fri, 6 Mar 2026 07:00:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWeb-0003TV-L2; Fri, 06 Mar 2026 09:59:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeZ-0003Rb-V8 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:47 -0500 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeW-0002Hq-GI for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:47 -0500 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-439a89b6fd0so5991748f8f.2 for ; Fri, 06 Mar 2026 06:59:44 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809183; x=1773413983; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=etcRpKtfheOQfGw/Xi3cx/GcjPUQ+Xa3rHRL6tXwgSI=; b=ChwfURt7TWEYMArK8eNHHrS79zjNCiTQ5rZDq/hiTjLN5GCvusc0B10mDaiKZ//jVG 387Qw32AVTsmDfEqyDtqhd3vJigj+oaEHjmBSV62C3Ku/UoJveKyaiqaVUefqYyTliud mEtN5SkRDDm1Ed6/kyI/llFaDHPtihQat6CDrE+faNa9SlQ7U9ITqY4Ri0beE6WgIyv/ veBB7bEAoe0j81G7xIntuRU4qSn8F/U12tsXLLOsEIdRBpfr+e7uYv+Yh+jPft1m10Qa bi1WieyKJvKG70MHfDOMEHb0Tduwvb8SZ3RiGSU+X1aedQJTgAiXeHQWbN/D1Ar5YnIh DEjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809183; x=1773413983; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=etcRpKtfheOQfGw/Xi3cx/GcjPUQ+Xa3rHRL6tXwgSI=; b=YN/AD5X0BWtKqQTpPiC6Im/8j0oBS5MJQcoym6Gjajxv80WsldX3IHbvu/iWrW9qfo vwdMtIev0sab9Y6BhZmYSOoz8Xou//iQ8KAapEQiH9/THyQt210r/5QS0SKkiRL0st8w 6lIEqJYZCjrLZlQUi39wf2Vo3gPHfYti68859sVF7gRjiHxt1rPacEySsUNqz5DERYmA P4sCD1Za3AsPjg6W+/pfnjqbmDYTfwrcH6jzAzshMZ5jaYKl6/8Cs191yVTU5C41F6Kv Jcf9fT6P+JPXacL5Q/U/nSnbTaOsC+4WH8deU5i+bV6Ird/PCLbgplUBGaiUqvnTj/Ge vlGg== X-Gm-Message-State: AOJu0YyG1/sn8d/Q8dhg7FwR7Qhb6GzF8fFmuZPtbnzqTYwUA7jJ2pBr /7+o4UbAPf7As8GyfQKlkufvwEhM15kSlVuBkj6VSPio77yC0bhdakLxZrZRnTJCmFUgUT3AiOi J7n1e X-Gm-Gg: ATEYQzzjDCBLhDHBjMkyRPudSRZKKFiBRgbbIk9xYTJCKR4mdwpZ5urOD2uLl5VC1Tf ltdguAhFofHpeE+eiX/V7Y4sbV36ylA6MMLaOv2bGCjMwkKJpy50IW1NWS/rOrSinHVBQfcp1xo 5EmVaUq8Z23nwKRD6Mqgz25YFntBQVJrrAZWR0K/OszwuVfyH7+7FOJnWE0fJVtItSth2UuSvA9 aE89XEc1yLa7qyKmFyT0+FXjyVurqNJksuRw8TXUPJZ+fibYVsLd/Iu8dZbEDFskJCTA19Fd4yI FIU8qtj8gocTzojA7k7zKLaMHdAuDqof/24FJOoCJ1BIJ0J6jQeB26LybbN20A+OVxKIhACWTN8 Rgm3mnrSvXsoigJA4n5nWm6ULDKC/EnqQNdSLC3KaqFo9t/Zpdg5rI4BY7p87IhkPt57kxFWgql FTKNb7V+hB8dWnZ/iXBr+SjHWbQwwTPdcTljkfIuT+4ueAJep9NxaWs5+eWr9z+RrXI8L89lPkx +3okrgJvj96eixm1UiBnvOEuwalOyg= X-Received: by 2002:a05:600c:45d1:b0:483:a361:41a5 with SMTP id 5b1f17b1804b1-4852697866fmr40113425e9.30.1772809182676; Fri, 06 Mar 2026 06:59:42 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 01/49] hw/arm: Remove the deprecated "highbank" and "midway" machines Date: Fri, 6 Mar 2026 14:58:51 +0000 Message-ID: <20260306145939.2162189-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809222320158500 Content-Type: text/plain; charset="utf-8" From: Thomas Huth These machines have been marked as deprecated two releases ago, and so far nobody complained that they are still useful, so it's time to remove these now. Signed-off-by: Thomas Huth Reviewed-by: Peter Maydell Message-id: 20260226090704.27699-1-thuth@redhat.com Signed-off-by: Peter Maydell --- MAINTAINERS | 9 - configs/devices/arm-softmmu/default.mak | 1 - docs/about/deprecated.rst | 7 - docs/about/removed-features.rst | 7 + docs/system/arm/highbank.rst | 19 -- docs/system/target-arm.rst | 1 - hw/arm/Kconfig | 16 - hw/arm/highbank.c | 404 ------------------------ hw/arm/meson.build | 1 - 9 files changed, 7 insertions(+), 458 deletions(-) delete mode 100644 docs/system/arm/highbank.rst delete mode 100644 hw/arm/highbank.c diff --git a/MAINTAINERS b/MAINTAINERS index 6698e5ff69..a3245fdcd2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -833,15 +833,6 @@ F: include/hw/*/exynos* F: docs/system/arm/exynos.rst F: tests/functional/arm/test_smdkc210.py =20 -Calxeda Highbank -M: Rob Herring -M: Peter Maydell -L: qemu-arm@nongnu.org -S: Odd Fixes -F: hw/arm/highbank.c -F: hw/net/xgmac.c -F: docs/system/arm/highbank.rst - Canon DIGIC M: Antony Pavlov M: Peter Maydell diff --git a/configs/devices/arm-softmmu/default.mak b/configs/devices/arm-= softmmu/default.mak index 57ef1b8a70..71cf164511 100644 --- a/configs/devices/arm-softmmu/default.mak +++ b/configs/devices/arm-softmmu/default.mak @@ -12,7 +12,6 @@ # keep out of the build. # CONFIG_CUBIEBOARD=3Dn # CONFIG_EXYNOS4=3Dn -# CONFIG_HIGHBANK=3Dn # CONFIG_INTEGRATOR=3Dn # CONFIG_FSL_IMX31=3Dn # CONFIG_MUSICPAL=3Dn diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index d0ce914d85..99b6b8e0e0 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -293,13 +293,6 @@ they want to use and avoids confusion. Existing users= of the ``spike`` machine must ensure that they're setting the ``spike`` machine in the command line (``-M spike``). =20 -Arm ``highbank`` and ``midway`` machines (since 10.1) -''''''''''''''''''''''''''''''''''''''''''''''''''''' - -There are no known users left for these machines (if you still use it, -please write a mail to the qemu-devel mailing list). If you just want to -boot a Cortex-A15 or Cortex-A9 Linux, use the ``virt`` machine instead. - =20 Backend options --------------- diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.= rst index c6ee20ff62..6f4447993c 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -1180,6 +1180,13 @@ and serves as the initial engineering sample rather = than a production version. A newer revision, A1, is now supported, and the ``ast2700a1-evb`` should replace the older A0 version. =20 +Arm ``highbank`` and ``midway`` machines (removed in 11.0) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +There were no known users left for these machines. If you just want to +boot a Cortex-A15 or Cortex-A9 Linux, use the ``virt`` machine instead. + + linux-user mode CPUs -------------------- =20 diff --git a/docs/system/arm/highbank.rst b/docs/system/arm/highbank.rst deleted file mode 100644 index bb4965b367..0000000000 --- a/docs/system/arm/highbank.rst +++ /dev/null @@ -1,19 +0,0 @@ -Calxeda Highbank and Midway (``highbank``, ``midway``) -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D - -``highbank`` is a model of the Calxeda Highbank (ECX-1000) system, -which has four Cortex-A9 cores. - -``midway`` is a model of the Calxeda Midway (ECX-2000) system, -which has four Cortex-A15 cores. - -Emulated devices: - -- L2x0 cache controller -- SP804 dual timer -- PL011 UART -- PL061 GPIOs -- PL031 RTC -- PL022 synchronous serial port controller -- AHCI -- XGMAC ethernet controllers diff --git a/docs/system/target-arm.rst b/docs/system/target-arm.rst index a96d1867df..89f7b77313 100644 --- a/docs/system/target-arm.rst +++ b/docs/system/target-arm.rst @@ -83,7 +83,6 @@ Board-specific documentation arm/bananapi_m2u.rst arm/b-l475e-iot01a.rst arm/sabrelite - arm/highbank arm/digic arm/cubieboard arm/emcraft-sf2 diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index c66c452737..45fe8575fb 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -64,22 +64,6 @@ config EXYNOS4 select USB_EHCI_SYSBUS select OR_IRQ =20 -config HIGHBANK - bool - default y - depends on TCG && ARM - select A9MPCORE - select A15MPCORE - select AHCI_SYSBUS - select ARM_TIMER # sp804 - select ARM_V7M - select PL011 # UART - select PL022 # SPI - select PL031 # RTC - select PL061 # GPIO - select PL310 # cache controller - select XGMAC # ethernet - config INTEGRATOR bool default y diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c deleted file mode 100644 index 92d497999c..0000000000 --- a/hw/arm/highbank.c +++ /dev/null @@ -1,404 +0,0 @@ -/* - * Calxeda Highbank SoC emulation - * - * Copyright (c) 2010-2012 Calxeda - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2 or later, as published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License f= or - * more details. - * - * You should have received a copy of the GNU General Public License along= with - * this program. If not, see . - * - */ - -#include "qemu/osdep.h" -#include "qemu/datadir.h" -#include "qapi/error.h" -#include "hw/core/sysbus.h" -#include "migration/vmstate.h" -#include "hw/arm/boot.h" -#include "hw/arm/machines-qom.h" -#include "hw/core/loader.h" -#include "net/net.h" -#include "system/runstate.h" -#include "system/system.h" -#include "hw/core/boards.h" -#include "qemu/error-report.h" -#include "hw/char/pl011.h" -#include "hw/ide/ahci-sysbus.h" -#include "hw/cpu/a9mpcore.h" -#include "hw/cpu/a15mpcore.h" -#include "qemu/log.h" -#include "qom/object.h" -#include "cpu.h" -#include "target/arm/cpu-qom.h" - -#define SMP_BOOT_ADDR 0x100 -#define SMP_BOOT_REG 0x40 -#define MPCORE_PERIPHBASE 0xfff10000 - -#define MVBAR_ADDR 0x200 -#define BOARD_SETUP_ADDR (MVBAR_ADDR + 8 * sizeof(uint32_t)) - -#define GIC_EXT_IRQS 128 /* EnergyCore ECX-1000 & ECX-2000 */ - -/* Board init. */ - -#define NUM_REGS 0x200 -static void hb_regs_write(void *opaque, hwaddr offset, - uint64_t value, unsigned size) -{ - uint32_t *regs =3D opaque; - - if (offset =3D=3D 0xf00) { - if (value =3D=3D 1 || value =3D=3D 2) { - qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); - } else if (value =3D=3D 3) { - qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); - } - } - - if (offset / 4 >=3D NUM_REGS) { - qemu_log_mask(LOG_GUEST_ERROR, - "highbank: bad write offset 0x%" HWADDR_PRIx "\n", offse= t); - return; - } - regs[offset / 4] =3D value; -} - -static uint64_t hb_regs_read(void *opaque, hwaddr offset, - unsigned size) -{ - uint32_t value; - uint32_t *regs =3D opaque; - - if (offset / 4 >=3D NUM_REGS) { - qemu_log_mask(LOG_GUEST_ERROR, - "highbank: bad read offset 0x%" HWADDR_PRIx "\n", offset= ); - return 0; - } - value =3D regs[offset / 4]; - - if ((offset =3D=3D 0x100) || (offset =3D=3D 0x108) || (offset =3D=3D 0= x10C)) { - value |=3D 0x30000000; - } - - return value; -} - -static const MemoryRegionOps hb_mem_ops =3D { - .read =3D hb_regs_read, - .write =3D hb_regs_write, - .endianness =3D DEVICE_NATIVE_ENDIAN, -}; - -#define TYPE_HIGHBANK_REGISTERS "highbank-regs" -OBJECT_DECLARE_SIMPLE_TYPE(HighbankRegsState, HIGHBANK_REGISTERS) - -struct HighbankRegsState { - /*< private >*/ - SysBusDevice parent_obj; - /*< public >*/ - - MemoryRegion iomem; - uint32_t regs[NUM_REGS]; -}; - -static const VMStateDescription vmstate_highbank_regs =3D { - .name =3D "highbank-regs", - .version_id =3D 0, - .minimum_version_id =3D 0, - .fields =3D (const VMStateField[]) { - VMSTATE_UINT32_ARRAY(regs, HighbankRegsState, NUM_REGS), - VMSTATE_END_OF_LIST(), - }, -}; - -static void highbank_regs_reset(DeviceState *dev) -{ - HighbankRegsState *s =3D HIGHBANK_REGISTERS(dev); - - s->regs[0x40] =3D 0x05F20121; - s->regs[0x41] =3D 0x2; - s->regs[0x42] =3D 0x05F30121; - s->regs[0x43] =3D 0x05F40121; -} - -static void highbank_regs_init(Object *obj) -{ - HighbankRegsState *s =3D HIGHBANK_REGISTERS(obj); - SysBusDevice *dev =3D SYS_BUS_DEVICE(obj); - - memory_region_init_io(&s->iomem, obj, &hb_mem_ops, s->regs, - "highbank_regs", 0x1000); - sysbus_init_mmio(dev, &s->iomem); -} - -static void highbank_regs_class_init(ObjectClass *klass, const void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - - dc->desc =3D "Calxeda Highbank registers"; - dc->vmsd =3D &vmstate_highbank_regs; - device_class_set_legacy_reset(dc, highbank_regs_reset); -} - -static const TypeInfo highbank_regs_info =3D { - .name =3D TYPE_HIGHBANK_REGISTERS, - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(HighbankRegsState), - .instance_init =3D highbank_regs_init, - .class_init =3D highbank_regs_class_init, -}; - -static void highbank_regs_register_types(void) -{ - type_register_static(&highbank_regs_info); -} - -type_init(highbank_regs_register_types) - -static struct arm_boot_info highbank_binfo; - -enum cxmachines { - CALXEDA_HIGHBANK, - CALXEDA_MIDWAY, -}; - -/* ram_size must be set to match the upper bound of memory in the - * device tree (linux/arch/arm/boot/dts/highbank.dts), which is - * normally 0xff900000 or -m 4089. When running this board on a - * 32-bit host, set the reg value of memory to 0xf7ff00000 in the - * device tree and pass -m 2047 to QEMU. - */ -static void calxeda_init(MachineState *machine, enum cxmachines machine_id) -{ - DeviceState *dev =3D NULL; - SysBusDevice *busdev; - qemu_irq pic[GIC_EXT_IRQS]; - int n; - unsigned int smp_cpus =3D machine->smp.cpus; - qemu_irq cpu_irq[4]; - qemu_irq cpu_fiq[4]; - qemu_irq cpu_virq[4]; - qemu_irq cpu_vfiq[4]; - MemoryRegion *sysram; - MemoryRegion *sysmem; - char *sysboot_filename; - - switch (machine_id) { - case CALXEDA_HIGHBANK: - machine->cpu_type =3D ARM_CPU_TYPE_NAME("cortex-a9"); - break; - case CALXEDA_MIDWAY: - machine->cpu_type =3D ARM_CPU_TYPE_NAME("cortex-a15"); - break; - default: - g_assert_not_reached(); - } - - for (n =3D 0; n < smp_cpus; n++) { - Object *cpuobj; - ARMCPU *cpu; - - cpuobj =3D object_new(machine->cpu_type); - cpu =3D ARM_CPU(cpuobj); - - object_property_add_child(OBJECT(machine), "cpu[*]", cpuobj); - object_property_set_int(cpuobj, "psci-conduit", QEMU_PSCI_CONDUIT_= SMC, - &error_abort); - - if (object_property_find(cpuobj, "reset-cbar")) { - object_property_set_int(cpuobj, "reset-cbar", MPCORE_PERIPHBAS= E, - &error_abort); - } - qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); - cpu_irq[n] =3D qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ); - cpu_fiq[n] =3D qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_FIQ); - cpu_virq[n] =3D qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_VIRQ); - cpu_vfiq[n] =3D qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_VFIQ); - } - - sysmem =3D get_system_memory(); - /* SDRAM at address zero. */ - memory_region_add_subregion(sysmem, 0, machine->ram); - - sysram =3D g_new(MemoryRegion, 1); - memory_region_init_ram(sysram, NULL, "highbank.sysram", 0x8000, - &error_fatal); - memory_region_add_subregion(sysmem, 0xfff88000, sysram); - if (machine->firmware !=3D NULL) { - sysboot_filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, machine->= firmware); - if (sysboot_filename !=3D NULL) { - if (load_image_targphys(sysboot_filename, 0xfff88000, 0x8000, - NULL) < 0) { - error_report("Unable to load %s", machine->firmware); - exit(1); - } - g_free(sysboot_filename); - } else { - error_report("Unable to find %s", machine->firmware); - exit(1); - } - } - - switch (machine_id) { - case CALXEDA_HIGHBANK: - dev =3D qdev_new("l2x0"); - busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); - sysbus_mmio_map(busdev, 0, 0xfff12000); - - dev =3D qdev_new(TYPE_A9MPCORE_PRIV); - break; - case CALXEDA_MIDWAY: - dev =3D qdev_new(TYPE_A15MPCORE_PRIV); - break; - } - qdev_prop_set_uint32(dev, "num-cpu", smp_cpus); - qdev_prop_set_uint32(dev, "num-irq", GIC_EXT_IRQS + GIC_INTERNAL); - busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); - sysbus_mmio_map(busdev, 0, MPCORE_PERIPHBASE); - for (n =3D 0; n < smp_cpus; n++) { - sysbus_connect_irq(busdev, n, cpu_irq[n]); - sysbus_connect_irq(busdev, n + smp_cpus, cpu_fiq[n]); - sysbus_connect_irq(busdev, n + 2 * smp_cpus, cpu_virq[n]); - sysbus_connect_irq(busdev, n + 3 * smp_cpus, cpu_vfiq[n]); - } - - for (n =3D 0; n < GIC_EXT_IRQS; n++) { - pic[n] =3D qdev_get_gpio_in(dev, n); - } - - dev =3D qdev_new("sp804"); - qdev_prop_set_uint32(dev, "freq0", 150000000); - qdev_prop_set_uint32(dev, "freq1", 150000000); - busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); - sysbus_mmio_map(busdev, 0, 0xfff34000); - sysbus_connect_irq(busdev, 0, pic[18]); - pl011_create(0xfff36000, pic[20], serial_hd(0)); - - dev =3D qdev_new(TYPE_HIGHBANK_REGISTERS); - busdev =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(busdev, &error_fatal); - sysbus_mmio_map(busdev, 0, 0xfff3c000); - - sysbus_create_simple("pl061", 0xfff30000, pic[14]); - sysbus_create_simple("pl061", 0xfff31000, pic[15]); - sysbus_create_simple("pl061", 0xfff32000, pic[16]); - sysbus_create_simple("pl061", 0xfff33000, pic[17]); - sysbus_create_simple("pl031", 0xfff35000, pic[19]); - sysbus_create_simple("pl022", 0xfff39000, pic[23]); - - sysbus_create_simple(TYPE_SYSBUS_AHCI, 0xffe08000, pic[83]); - - dev =3D qemu_create_nic_device("xgmac", true, NULL); - if (dev) { - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff50000); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[77]); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 1, pic[78]); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 2, pic[79]); - } - - dev =3D qemu_create_nic_device("xgmac", true, NULL); - if (dev) { - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff51000); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[80]); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 1, pic[81]); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 2, pic[82]); - } - - /* TODO create and connect IDE devices for ide_drive_get() */ - - highbank_binfo.ram_size =3D machine->ram_size; - /* highbank requires a dtb in order to boot, and the dtb will override - * the board ID. The following value is ignored, so set it to -1 to be - * clear that the value is meaningless. - */ - highbank_binfo.board_id =3D -1; - highbank_binfo.loader_start =3D 0; - highbank_binfo.board_setup_addr =3D BOARD_SETUP_ADDR; - highbank_binfo.psci_conduit =3D QEMU_PSCI_CONDUIT_SMC; - - arm_load_kernel(ARM_CPU(first_cpu), machine, &highbank_binfo); -} - -static void highbank_init(MachineState *machine) -{ - calxeda_init(machine, CALXEDA_HIGHBANK); -} - -static void midway_init(MachineState *machine) -{ - calxeda_init(machine, CALXEDA_MIDWAY); -} - -static void highbank_class_init(ObjectClass *oc, const void *data) -{ - static const char * const valid_cpu_types[] =3D { - ARM_CPU_TYPE_NAME("cortex-a9"), - NULL - }; - MachineClass *mc =3D MACHINE_CLASS(oc); - - mc->desc =3D "Calxeda Highbank (ECX-1000)"; - mc->init =3D highbank_init; - mc->valid_cpu_types =3D valid_cpu_types; - mc->block_default_type =3D IF_IDE; - mc->units_per_default_bus =3D 1; - mc->max_cpus =3D 4; - mc->ignore_memory_transaction_failures =3D true; - mc->default_ram_id =3D "highbank.dram"; - mc->deprecation_reason =3D "no known users left for this machine"; -} - -static const TypeInfo highbank_type =3D { - .name =3D MACHINE_TYPE_NAME("highbank"), - .parent =3D TYPE_MACHINE, - .class_init =3D highbank_class_init, - .interfaces =3D arm_machine_interfaces, -}; - -static void midway_class_init(ObjectClass *oc, const void *data) -{ - static const char * const valid_cpu_types[] =3D { - ARM_CPU_TYPE_NAME("cortex-a15"), - NULL - }; - MachineClass *mc =3D MACHINE_CLASS(oc); - - mc->desc =3D "Calxeda Midway (ECX-2000)"; - mc->init =3D midway_init; - mc->valid_cpu_types =3D valid_cpu_types; - mc->block_default_type =3D IF_IDE; - mc->units_per_default_bus =3D 1; - mc->max_cpus =3D 4; - mc->ignore_memory_transaction_failures =3D true; - mc->default_ram_id =3D "highbank.dram"; - mc->deprecation_reason =3D "no known users left for this machine"; -} - -static const TypeInfo midway_type =3D { - .name =3D MACHINE_TYPE_NAME("midway"), - .parent =3D TYPE_MACHINE, - .class_init =3D midway_class_init, - .interfaces =3D arm_machine_interfaces, -}; - -static void calxeda_machines_init(void) -{ - type_register_static(&highbank_type); - type_register_static(&midway_type); -} - -type_init(calxeda_machines_init) diff --git a/hw/arm/meson.build b/hw/arm/meson.build index 47cdc51d13..b187b946f0 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -4,7 +4,6 @@ arm_common_ss.add(when: 'CONFIG_ARM_VIRT', if_true: files('= virt.c')) arm_common_ss.add(when: 'CONFIG_ACPI', if_true: files('virt-acpi-build.c')) arm_common_ss.add(when: 'CONFIG_DIGIC', if_true: files('digic_boards.c')) arm_common_ss.add(when: 'CONFIG_EMCRAFT_SF2', if_true: files('msf2-som.c')) -arm_common_ss.add(when: 'CONFIG_HIGHBANK', if_true: files('highbank.c')) arm_common_ss.add(when: 'CONFIG_INTEGRATOR', if_true: files('integratorcp.= c')) arm_common_ss.add(when: 'CONFIG_MICROBIT', if_true: files('microbit.c')) arm_common_ss.add(when: 'CONFIG_MPS3R', if_true: files('mps3r.c')) --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809297; cv=none; d=zohomail.com; s=zohoarc; b=eMZ1ha3Rgvu4/Ry8ltN7+FRwZ9KA+L8/4XXOyhwcZ6JwQX90vfs4UzeT2BE6aPB5q2XfgFAqm1dYxn59UNA1tRZRi2vc5Q/fo065gLiUgqRDt/z1fIp5cv3dK4ASlbMbFIWkfDq0h6MIgDuthAhUQ7SWEuwe7mwC6vKRBS7onr0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809297; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=qem4NSUeey+gyvvqF8jLOvpUBmOw/plAG9yiUehSpt8=; b=X4dyGbkOjC9wdCB9zuNB3PsfmXEENXZ06vA62BOycnsAHKPxOKtOlRxAfCBfrZqI0VpuTCnZ5TlNV1TomPce3CVkb0xS7gGAIcskrl2YkVfWv7CNxPflBcwheLxVejOzPkNeXMaNaXYjAwJCGmNipthdp2DYuMqTKPYqhlClc6g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809297851834.1807523028447; Fri, 6 Mar 2026 07:01:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWed-0003Zn-R2; Fri, 06 Mar 2026 09:59:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWea-0003Sd-Jb for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:48 -0500 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeX-0002I1-Qa for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:48 -0500 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-483703e4b08so91108905e9.1 for ; Fri, 06 Mar 2026 06:59:45 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809184; x=1773413984; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=qem4NSUeey+gyvvqF8jLOvpUBmOw/plAG9yiUehSpt8=; b=rUdsyQIspNWCC87m7mjjzvlMW+zaibM56RiS8s+5vXKpFrOigIiT9aCy3Ut03RAJbU ZgEam3lGF7Y/VY5p1bisYp6yzwW73yQhx7Gyu5bHgbP7F2ciyC0sHJpk0EdfnPMkUgEX LOeTXPUur6fF+Tpslf27O7nw7tjFu9739mF+xfOC/OIfS7kWQ1JPG1MfDjsN/nWTN52w acRd0p2jYRx0vJsqXOoydovWhp6fyVVPDb5W2c0csgi2HQXA0oHu+Gs+nleZtnJLRyyT QivX9BhKiZvTZPLU238S1nNaK344eiP5d4Jri/ncvkjijVTSetNwfQ2mp8VPSRp5FuVZ cn7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809184; x=1773413984; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=qem4NSUeey+gyvvqF8jLOvpUBmOw/plAG9yiUehSpt8=; b=d+1Kj1+X5OB8tNyHOdvKMEsbr+FjTCsDLGyLz5KeuCt/OOEdFl3e257DCFptAlMFEM vxqTf/OMJ8ZZC1xS8VWJ98CkpaLAJ4nrA5vLPUOPaq4E/nXR1h8BuuaKBmNKOMDaEkGi sVfBz4knSAWW9SBUmM0ML9pS9ocM5E8y2PFcbSDQqeG1riBxQnCnuItTA1KxkUgtOnn+ +el/yVTAr3LspN2OLXyXn/MqZHmr9zuZ4pXDr3C+Aj558b3t1b2JqUiwTayJa/8LD/1j jQk3uzKwxomYmSyUg2949Rl2oaObgBCFnfrWm3jGhZkLaMhOPBQEa4JMl8z28sw0cefr PX0w== X-Gm-Message-State: AOJu0YwgdWLepRp7QHKpm9RFrXoXQ5+xiTD9PsRSJDJribgnFXygb5ZP LMI+oYpbrpCXyJhBYq3Tv3QoTaOz1AC5PufELsbcSB1GVfutG9lYOmC3UYpgwk/kWwEQx9T+jEa AnbAV X-Gm-Gg: ATEYQzx7g7yW3AtlRxgOFRD/SFx4dDswFZL1tDPkdKLIFOlmj7+S7pZ3PdVXr5d9iFb T/3dFzCNayJqWxjE+Xeq8pSstpDUioDasu8c765PzhCxNDuCIsnGtZ6zxtUcMfyBYarNmQ4jcVY 0Us5+9WEtq83X+Br6llx/xymfNCoNILCa8jAQBwwbbCQh98tROyAmZMmlXbOfafDSC9XCeB/J5e 7pV6DCP+QbyDdny3a7bpFB9ZP5eQaktV/NVgH1zxiq0Bpe9ypZYQfmux0ow0etijiAU/uTqik5z Ci8ihVU0qtk6qIr/CgNFFj9glbhoBFdLaqUU7nKrv/AmNlLxmEpKfmxpzt7FVje+E1Vk7iYWw6M hE+3t+hzE1AIF2TZoiwJjqqDUu8ZUdKLO/QimgefyTbVGSzcdTwGMQ+zS0LfDnmrQOL9OPG/x6a a6DbtReVBuHW696G7JHY1INAQPZVvPwcR+8hjkpTfh34ALHIeEZZEEacCkltT7NFpbJsa0T27LM 0LUE77UxxMZMtfS5U/BjqtAOVyga+g= X-Received: by 2002:a05:600c:4446:b0:483:29f4:26b3 with SMTP id 5b1f17b1804b1-48526715248mr37914635e9.1.1772809183720; Fri, 06 Mar 2026 06:59:43 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 02/49] hw/net: Remove the xgmac device Date: Fri, 6 Mar 2026 14:58:52 +0000 Message-ID: <20260306145939.2162189-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809298899158500 Content-Type: text/plain; charset="utf-8" From: Thomas Huth The xgmac device was only used by the highbank machine that just has been removed. Being a sysbus device that cannot be instantiated by the user, this is dead code now and thus can be removed, too. Signed-off-by: Thomas Huth Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/net/Kconfig | 3 - hw/net/meson.build | 1 - hw/net/xgmac.c | 443 ---------------------------- scripts/coverity-scan/COMPONENTS.md | 2 +- 4 files changed, 1 insertion(+), 448 deletions(-) delete mode 100644 hw/net/xgmac.c diff --git a/hw/net/Kconfig b/hw/net/Kconfig index 2b513d6895..f9a1dfb80d 100644 --- a/hw/net/Kconfig +++ b/hw/net/Kconfig @@ -79,9 +79,6 @@ config NE2000_ISA config OPENCORES_ETH bool =20 -config XGMAC - bool - config ALLWINNER_EMAC bool =20 diff --git a/hw/net/meson.build b/hw/net/meson.build index 913eaedbc5..1feabe991f 100644 --- a/hw/net/meson.build +++ b/hw/net/meson.build @@ -22,7 +22,6 @@ system_ss.add(when: 'CONFIG_LAN9118', if_true: files('lan= 9118.c')) system_ss.add(when: 'CONFIG_LAN9118_PHY', if_true: files('lan9118_phy.c')) system_ss.add(when: 'CONFIG_NE2000_ISA', if_true: files('ne2000-isa.c')) system_ss.add(when: 'CONFIG_OPENCORES_ETH', if_true: files('opencores_eth.= c')) -system_ss.add(when: 'CONFIG_XGMAC', if_true: files('xgmac.c')) system_ss.add(when: 'CONFIG_XILINX_AXI', if_true: files('xilinx_axienet.c'= )) system_ss.add(when: 'CONFIG_ALLWINNER_EMAC', if_true: files('allwinner_ema= c.c')) system_ss.add(when: 'CONFIG_ALLWINNER_SUN8I_EMAC', if_true: files('allwinn= er-sun8i-emac.c')) diff --git a/hw/net/xgmac.c b/hw/net/xgmac.c deleted file mode 100644 index 204c78aba3..0000000000 --- a/hw/net/xgmac.c +++ /dev/null @@ -1,443 +0,0 @@ -/* - * QEMU model of XGMAC Ethernet. - * - * derived from the Xilinx AXI-Ethernet by Edgar E. Iglesias. - * - * Copyright (c) 2011 Calxeda, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. - */ - -#include "qemu/osdep.h" -#include "hw/core/irq.h" -#include "hw/core/qdev-properties.h" -#include "hw/core/sysbus.h" -#include "exec/cpu-common.h" -#include "migration/vmstate.h" -#include "qemu/module.h" -#include "net/net.h" -#include "qom/object.h" - -#ifdef DEBUG_XGMAC -#define DEBUGF_BRK(message, args...) do { \ - fprintf(stderr, (message), ## arg= s); \ - } while (0) -#else -#define DEBUGF_BRK(message, args...) do { } while (0) -#endif - -#define XGMAC_CONTROL 0x00000000 /* MAC Configuration */ -#define XGMAC_FRAME_FILTER 0x00000001 /* MAC Frame Filter */ -#define XGMAC_FLOW_CTRL 0x00000006 /* MAC Flow Control */ -#define XGMAC_VLAN_TAG 0x00000007 /* VLAN Tags */ -#define XGMAC_VERSION 0x00000008 /* Version */ -/* VLAN tag for insertion or replacement into tx frames */ -#define XGMAC_VLAN_INCL 0x00000009 -#define XGMAC_LPI_CTRL 0x0000000a /* LPI Control and Status */ -#define XGMAC_LPI_TIMER 0x0000000b /* LPI Timers Control */ -#define XGMAC_TX_PACE 0x0000000c /* Transmit Pace and Stretch = */ -#define XGMAC_VLAN_HASH 0x0000000d /* VLAN Hash Table */ -#define XGMAC_DEBUG 0x0000000e /* Debug */ -#define XGMAC_INT_STATUS 0x0000000f /* Interrupt and Control */ -/* HASH table registers */ -#define XGMAC_HASH(n) ((0x00000300/4) + (n)) -#define XGMAC_NUM_HASH 16 -/* Operation Mode */ -#define XGMAC_OPMODE (0x00000400/4) -/* Remote Wake-Up Frame Filter */ -#define XGMAC_REMOTE_WAKE (0x00000700/4) -/* PMT Control and Status */ -#define XGMAC_PMT (0x00000704/4) - -#define XGMAC_ADDR_HIGH(reg) (0x00000010+((reg) * 2)) -#define XGMAC_ADDR_LOW(reg) (0x00000011+((reg) * 2)) - -#define DMA_BUS_MODE 0x000003c0 /* Bus Mode */ -#define DMA_XMT_POLL_DEMAND 0x000003c1 /* Transmit Poll Demand */ -#define DMA_RCV_POLL_DEMAND 0x000003c2 /* Received Poll Demand */ -#define DMA_RCV_BASE_ADDR 0x000003c3 /* Receive List Base */ -#define DMA_TX_BASE_ADDR 0x000003c4 /* Transmit List Base */ -#define DMA_STATUS 0x000003c5 /* Status Register */ -#define DMA_CONTROL 0x000003c6 /* Ctrl (Operational Mode) */ -#define DMA_INTR_ENA 0x000003c7 /* Interrupt Enable */ -#define DMA_MISSED_FRAME_CTR 0x000003c8 /* Missed Frame Counter */ -/* Receive Interrupt Watchdog Timer */ -#define DMA_RI_WATCHDOG_TIMER 0x000003c9 -#define DMA_AXI_BUS 0x000003ca /* AXI Bus Mode */ -#define DMA_AXI_STATUS 0x000003cb /* AXI Status */ -#define DMA_CUR_TX_DESC_ADDR 0x000003d2 /* Current Host Tx Descriptor= */ -#define DMA_CUR_RX_DESC_ADDR 0x000003d3 /* Current Host Rx Descriptor= */ -#define DMA_CUR_TX_BUF_ADDR 0x000003d4 /* Current Host Tx Buffer */ -#define DMA_CUR_RX_BUF_ADDR 0x000003d5 /* Current Host Rx Buffer */ -#define DMA_HW_FEATURE 0x000003d6 /* Enabled Hardware Features = */ - -/* DMA Status register defines */ -#define DMA_STATUS_GMI 0x08000000 /* MMC interrupt */ -#define DMA_STATUS_GLI 0x04000000 /* GMAC Line interface int */ -#define DMA_STATUS_EB_MASK 0x00380000 /* Error Bits Mask */ -#define DMA_STATUS_EB_TX_ABORT 0x00080000 /* Error Bits - TX Abort */ -#define DMA_STATUS_EB_RX_ABORT 0x00100000 /* Error Bits - RX Abort */ -#define DMA_STATUS_TS_MASK 0x00700000 /* Transmit Process State */ -#define DMA_STATUS_TS_SHIFT 20 -#define DMA_STATUS_RS_MASK 0x000e0000 /* Receive Process State */ -#define DMA_STATUS_RS_SHIFT 17 -#define DMA_STATUS_NIS 0x00010000 /* Normal Interrupt Summary */ -#define DMA_STATUS_AIS 0x00008000 /* Abnormal Interrupt Summary= */ -#define DMA_STATUS_ERI 0x00004000 /* Early Receive Interrupt */ -#define DMA_STATUS_FBI 0x00002000 /* Fatal Bus Error Interrupt = */ -#define DMA_STATUS_ETI 0x00000400 /* Early Transmit Interrupt */ -#define DMA_STATUS_RWT 0x00000200 /* Receive Watchdog Timeout */ -#define DMA_STATUS_RPS 0x00000100 /* Receive Process Stopped */ -#define DMA_STATUS_RU 0x00000080 /* Receive Buffer Unavailable= */ -#define DMA_STATUS_RI 0x00000040 /* Receive Interrupt */ -#define DMA_STATUS_UNF 0x00000020 /* Transmit Underflow */ -#define DMA_STATUS_OVF 0x00000010 /* Receive Overflow */ -#define DMA_STATUS_TJT 0x00000008 /* Transmit Jabber Timeout */ -#define DMA_STATUS_TU 0x00000004 /* Transmit Buffer Unavailabl= e */ -#define DMA_STATUS_TPS 0x00000002 /* Transmit Process Stopped */ -#define DMA_STATUS_TI 0x00000001 /* Transmit Interrupt */ - -/* DMA Control register defines */ -#define DMA_CONTROL_ST 0x00002000 /* Start/Stop Transmission */ -#define DMA_CONTROL_SR 0x00000002 /* Start/Stop Receive */ -#define DMA_CONTROL_DFF 0x01000000 /* Disable flush of rx frames= */ - -struct desc { - uint32_t ctl_stat; - uint16_t buffer1_size; - uint16_t buffer2_size; - uint32_t buffer1_addr; - uint32_t buffer2_addr; - uint32_t ext_stat; - uint32_t res[3]; -}; - -#define R_MAX 0x400 - -typedef struct RxTxStats { - uint64_t rx_bytes; - uint64_t tx_bytes; - - uint64_t rx; - uint64_t rx_bcast; - uint64_t rx_mcast; -} RxTxStats; - -#define TYPE_XGMAC "xgmac" -OBJECT_DECLARE_SIMPLE_TYPE(XgmacState, XGMAC) - -struct XgmacState { - SysBusDevice parent_obj; - - MemoryRegion iomem; - qemu_irq sbd_irq; - qemu_irq pmt_irq; - qemu_irq mci_irq; - NICState *nic; - NICConf conf; - - struct RxTxStats stats; - uint32_t regs[R_MAX]; -}; - -static const VMStateDescription vmstate_rxtx_stats =3D { - .name =3D "xgmac_stats", - .version_id =3D 1, - .minimum_version_id =3D 1, - .fields =3D (const VMStateField[]) { - VMSTATE_UINT64(rx_bytes, RxTxStats), - VMSTATE_UINT64(tx_bytes, RxTxStats), - VMSTATE_UINT64(rx, RxTxStats), - VMSTATE_UINT64(rx_bcast, RxTxStats), - VMSTATE_UINT64(rx_mcast, RxTxStats), - VMSTATE_END_OF_LIST() - } -}; - -static const VMStateDescription vmstate_xgmac =3D { - .name =3D "xgmac", - .version_id =3D 1, - .minimum_version_id =3D 1, - .fields =3D (const VMStateField[]) { - VMSTATE_STRUCT(stats, XgmacState, 0, vmstate_rxtx_stats, RxTxStats= ), - VMSTATE_UINT32_ARRAY(regs, XgmacState, R_MAX), - VMSTATE_END_OF_LIST() - } -}; - -static void xgmac_read_desc(XgmacState *s, struct desc *d, int rx) -{ - uint32_t addr =3D rx ? s->regs[DMA_CUR_RX_DESC_ADDR] : - s->regs[DMA_CUR_TX_DESC_ADDR]; - cpu_physical_memory_read(addr, d, sizeof(*d)); -} - -static void xgmac_write_desc(XgmacState *s, struct desc *d, int rx) -{ - int reg =3D rx ? DMA_CUR_RX_DESC_ADDR : DMA_CUR_TX_DESC_ADDR; - uint32_t addr =3D s->regs[reg]; - - if (!rx && (d->ctl_stat & 0x00200000)) { - s->regs[reg] =3D s->regs[DMA_TX_BASE_ADDR]; - } else if (rx && (d->buffer1_size & 0x8000)) { - s->regs[reg] =3D s->regs[DMA_RCV_BASE_ADDR]; - } else { - s->regs[reg] +=3D sizeof(*d); - } - cpu_physical_memory_write(addr, d, sizeof(*d)); -} - -static void xgmac_enet_send(XgmacState *s) -{ - struct desc bd; - int frame_size; - int len; - QEMU_UNINITIALIZED uint8_t frame[8192]; - uint8_t *ptr; - - ptr =3D frame; - frame_size =3D 0; - while (1) { - xgmac_read_desc(s, &bd, 0); - if ((bd.ctl_stat & 0x80000000) =3D=3D 0) { - /* Run out of descriptors to transmit. */ - break; - } - len =3D (bd.buffer1_size & 0xfff) + (bd.buffer2_size & 0xfff); - - /* - * FIXME: these cases of malformed tx descriptors (bad sizes) - * should probably be reported back to the guest somehow - * rather than simply silently stopping processing, but we - * don't know what the hardware does in this situation. - * This will only happen for buggy guests anyway. - */ - if ((bd.buffer1_size & 0xfff) > 2048) { - DEBUGF_BRK("qemu:%s:ERROR...ERROR...ERROR... -- " - "xgmac buffer 1 len on send > 2048 (0x%x)\n", - __func__, bd.buffer1_size & 0xfff); - break; - } - if ((bd.buffer2_size & 0xfff) !=3D 0) { - DEBUGF_BRK("qemu:%s:ERROR...ERROR...ERROR... -- " - "xgmac buffer 2 len on send !=3D 0 (0x%x)\n", - __func__, bd.buffer2_size & 0xfff); - break; - } - if (frame_size + len >=3D sizeof(frame)) { - DEBUGF_BRK("qemu:%s: buffer overflow %d read into %zu " - "buffer\n" , __func__, frame_size + len, sizeof(fr= ame)); - DEBUGF_BRK("qemu:%s: buffer1.size=3D%d; buffer2.size=3D%d\n", - __func__, bd.buffer1_size, bd.buffer2_size); - break; - } - - cpu_physical_memory_read(bd.buffer1_addr, ptr, len); - ptr +=3D len; - frame_size +=3D len; - if (bd.ctl_stat & 0x20000000) { - /* Last buffer in frame. */ - qemu_send_packet(qemu_get_queue(s->nic), frame, len); - ptr =3D frame; - frame_size =3D 0; - s->regs[DMA_STATUS] |=3D DMA_STATUS_TI | DMA_STATUS_NIS; - } - bd.ctl_stat &=3D ~0x80000000; - /* Write back the modified descriptor. */ - xgmac_write_desc(s, &bd, 0); - } -} - -static void enet_update_irq(XgmacState *s) -{ - int stat =3D s->regs[DMA_STATUS] & s->regs[DMA_INTR_ENA]; - qemu_set_irq(s->sbd_irq, !!stat); -} - -static uint64_t enet_read(void *opaque, hwaddr addr, unsigned size) -{ - XgmacState *s =3D opaque; - uint64_t r =3D 0; - addr >>=3D 2; - - switch (addr) { - case XGMAC_VERSION: - r =3D 0x1012; - break; - default: - if (addr < ARRAY_SIZE(s->regs)) { - r =3D s->regs[addr]; - } - break; - } - return r; -} - -static void enet_write(void *opaque, hwaddr addr, - uint64_t value, unsigned size) -{ - XgmacState *s =3D opaque; - - addr >>=3D 2; - switch (addr) { - case DMA_BUS_MODE: - s->regs[DMA_BUS_MODE] =3D value & ~0x1; - break; - case DMA_XMT_POLL_DEMAND: - xgmac_enet_send(s); - break; - case DMA_STATUS: - s->regs[DMA_STATUS] =3D s->regs[DMA_STATUS] & ~value; - break; - case DMA_RCV_BASE_ADDR: - s->regs[DMA_RCV_BASE_ADDR] =3D s->regs[DMA_CUR_RX_DESC_ADDR] =3D v= alue; - break; - case DMA_TX_BASE_ADDR: - s->regs[DMA_TX_BASE_ADDR] =3D s->regs[DMA_CUR_TX_DESC_ADDR] =3D va= lue; - break; - default: - if (addr < ARRAY_SIZE(s->regs)) { - s->regs[addr] =3D value; - } - break; - } - enet_update_irq(s); -} - -static const MemoryRegionOps enet_mem_ops =3D { - .read =3D enet_read, - .write =3D enet_write, - .endianness =3D DEVICE_LITTLE_ENDIAN, -}; - -static int eth_can_rx(XgmacState *s) -{ - /* RX enabled? */ - return s->regs[DMA_CONTROL] & DMA_CONTROL_SR; -} - -static ssize_t eth_rx(NetClientState *nc, const uint8_t *buf, size_t size) -{ - XgmacState *s =3D qemu_get_nic_opaque(nc); - static const unsigned char sa_bcast[6] =3D {0xff, 0xff, 0xff, - 0xff, 0xff, 0xff}; - int unicast, broadcast, multicast; - struct desc bd; - ssize_t ret; - - if (!eth_can_rx(s)) { - return -1; - } - unicast =3D ~buf[0] & 0x1; - broadcast =3D memcmp(buf, sa_bcast, 6) =3D=3D 0; - multicast =3D !unicast && !broadcast; - if (size < 12) { - s->regs[DMA_STATUS] |=3D DMA_STATUS_RI | DMA_STATUS_NIS; - ret =3D -1; - goto out; - } - - xgmac_read_desc(s, &bd, 1); - if ((bd.ctl_stat & 0x80000000) =3D=3D 0) { - s->regs[DMA_STATUS] |=3D DMA_STATUS_RU | DMA_STATUS_AIS; - ret =3D size; - goto out; - } - - cpu_physical_memory_write(bd.buffer1_addr, buf, size); - - /* Add in the 4 bytes for crc (the real hw returns length incl crc) */ - size +=3D 4; - bd.ctl_stat =3D (size << 16) | 0x300; - xgmac_write_desc(s, &bd, 1); - - s->stats.rx_bytes +=3D size; - s->stats.rx++; - if (multicast) { - s->stats.rx_mcast++; - } else if (broadcast) { - s->stats.rx_bcast++; - } - - s->regs[DMA_STATUS] |=3D DMA_STATUS_RI | DMA_STATUS_NIS; - ret =3D size; - -out: - enet_update_irq(s); - return ret; -} - -static NetClientInfo net_xgmac_enet_info =3D { - .type =3D NET_CLIENT_DRIVER_NIC, - .size =3D sizeof(NICState), - .receive =3D eth_rx, -}; - -static void xgmac_enet_realize(DeviceState *dev, Error **errp) -{ - SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); - XgmacState *s =3D XGMAC(dev); - - memory_region_init_io(&s->iomem, OBJECT(s), &enet_mem_ops, s, - "xgmac", 0x1000); - sysbus_init_mmio(sbd, &s->iomem); - sysbus_init_irq(sbd, &s->sbd_irq); - sysbus_init_irq(sbd, &s->pmt_irq); - sysbus_init_irq(sbd, &s->mci_irq); - - qemu_macaddr_default_if_unset(&s->conf.macaddr); - s->nic =3D qemu_new_nic(&net_xgmac_enet_info, &s->conf, - object_get_typename(OBJECT(dev)), dev->id, - &dev->mem_reentrancy_guard, s); - qemu_format_nic_info_str(qemu_get_queue(s->nic), s->conf.macaddr.a); - - s->regs[XGMAC_ADDR_HIGH(0)] =3D (s->conf.macaddr.a[5] << 8) | - s->conf.macaddr.a[4]; - s->regs[XGMAC_ADDR_LOW(0)] =3D (s->conf.macaddr.a[3] << 24) | - (s->conf.macaddr.a[2] << 16) | - (s->conf.macaddr.a[1] << 8) | - s->conf.macaddr.a[0]; -} - -static const Property xgmac_properties[] =3D { - DEFINE_NIC_PROPERTIES(XgmacState, conf), -}; - -static void xgmac_enet_class_init(ObjectClass *klass, const void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - - dc->realize =3D xgmac_enet_realize; - dc->vmsd =3D &vmstate_xgmac; - device_class_set_props(dc, xgmac_properties); -} - -static const TypeInfo xgmac_enet_info =3D { - .name =3D TYPE_XGMAC, - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(XgmacState), - .class_init =3D xgmac_enet_class_init, -}; - -static void xgmac_enet_register_types(void) -{ - type_register_static(&xgmac_enet_info); -} - -type_init(xgmac_enet_register_types) diff --git a/scripts/coverity-scan/COMPONENTS.md b/scripts/coverity-scan/CO= MPONENTS.md index 95805b536b..02131f1388 100644 --- a/scripts/coverity-scan/COMPONENTS.md +++ b/scripts/coverity-scan/COMPONENTS.md @@ -4,7 +4,7 @@ alpha ~ .*/qemu((/include)?/hw/alpha/.*|/target/alpha/.*) =20 arm - ~ .*/qemu((/include)?/hw/arm/.*|(/include)?/hw/.*/(arm|allwinner-a10|bcm= 28|digic|exynos|imx|omap|stellaris|pxa2xx|versatile|zynq|cadence).*|/hw/net= /xgmac.c|/hw/ssi/xilinx_spips.c|/target/arm/.*) + ~ .*/qemu((/include)?/hw/arm/.*|(/include)?/hw/.*/(arm|allwinner-a10|bcm= 28|digic|exynos|imx|omap|stellaris|pxa2xx|versatile|zynq|cadence).*|/hw/ssi= /xilinx_spips.c|/target/arm/.*) =20 avr ~ .*/qemu((/include)?/hw/avr/.*|/target/avr/.*) --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809382; cv=none; d=zohomail.com; s=zohoarc; b=XGofPFlxgmzoRG3bEYLKPaxI2lxEWuxNsbau34H7BQnMtqXFWRC506zoPcLqueFjzkH3WVZ03GxSlOxTTyMB6FhjJr0dyMJJOph8twiPaDsLBOdw6ioEUVThfhLiO09CksrXrWI8x0+I/LXIOXeyF8dN64HIf7wvHKSwmwI3kfo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809382; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=BbwoDl8zktcPH1pK65Fdey58LvopgakU7g1LQRQm7qc=; b=GCnKqXZs8afSXeB+365q2TO4TpgLUjc3X+yL0Mb5hs5yilwpWqacF4Kzt9oWxBhjrHnFekNdAaTSiRC8LOcuYNa2s5ulAVaX4+qVku6gfQiE1q4Dj4W6gK8OMDTQciGnGHZdKGrC6KRdguxURxHudGjrCh3DCJoS6xQabzFcrCQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809382423103.49905718222908; Fri, 6 Mar 2026 07:03:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWeb-0003Su-3g; Fri, 06 Mar 2026 09:59:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeZ-0003RU-Hl for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:47 -0500 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeY-0002IB-3r for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:47 -0500 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-4806cc07ce7so107212345e9.1 for ; Fri, 06 Mar 2026 06:59:45 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809185; x=1773413985; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BbwoDl8zktcPH1pK65Fdey58LvopgakU7g1LQRQm7qc=; b=FmIvhBNYiPzDvd7vcCzdHQSc9SGqorG0dGUhNs2t0DMeq7bKXAN4eppY8YLsY66rTa ynr49j0OrL2D8FEfSveUu+Dh2oTWi51CdHGJHeHsiJzTMi7IRl2u6qkTJDD8qUdeNkpF axqnCUCGKI5xAkH/XESLomDI70Ygc+cf7L2k5DIvtLotyDO+FmPmV25ckVY6nB4jXiB4 t5B2kM1oDAvctoCoEAjWM1TZcf5mjkup5onaFdh37XMTCWKz9I1BJ5zTeipPRtnr+ioo BalQNlpLH8z4cP3fNBQCYyZFZdPaHzjQKtRQWkdCGRU/mMpVdT0LoHNFgvkhX1tndySJ EG3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809185; x=1773413985; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=BbwoDl8zktcPH1pK65Fdey58LvopgakU7g1LQRQm7qc=; b=pFnMtTX/WmI4/9WHF3lV+cCM7akdNGb/SSQrndfMKtBi7GGpG6TRLuRXNE/W01mYND P5ayVs/a64ifQXzWIb51A2Kzd0hZNvNSSQX0fYWhI8KFradINhVBh+bC1oCj8BVHTC2o FetXprDpH9bUEWmIBZrKN3aK/yrtMhD6Bcx8EU6rwto9ZvwUM6GvT6sffHmyYTRXWrlx uhj4uv3q8ngnSxXOfJbvnwPhOw4dDfCotC1O17S73hv3FxScoDqiWIScsLc5ncABCTCT x/5uZovUuDndRvfUe7WQw83WI/nK0EjzHm8VO+7undzOdj776zeVtItSnxIdNEbORCpo HkQg== X-Gm-Message-State: AOJu0Ywp77Zmh3s+6Hk9aMhu478t+xOI8gKR/uQVsq/npldTyY+28GqV fTOrf0sJ290/LVtd/qESvsAXSgaRzht7Wqr3ire0O7JgIPbu+2Z6L0RQkj/lur9gkHfAROKUgqE HVTdt X-Gm-Gg: ATEYQzxHUUVYRI/k/7xzHHc49bmY/DEF8DeTtKAZU4zysLccRrcfh/nThkE5IYItZK7 hZMCue8ivkIivAGqrKpyRCKCUPbvT6ubanrwlQeLEal3z3TVYPKK8ZxBLPjJqSTLjof4RBwbB+2 q4gG0Aue41jYmNsG3IClMXe8ZWSn8fHYabcWHlkN1FwSLgb8O1TIa2i8P4pxy4mVOIJM0KzjK+K LFMuSxhPBC7BMq/IkVdteUaQ0rumpZ7Brs1NRH0oSMTdOCVr3WXIB3/69EI0wwiVAm8getSvTP9 g8PMbFT/sAjj9sigS4W6U0QQSFXbufICtGHPqzTU9aIyqyXNglgaFReSAS1YX+MRG7qw940PAI4 CaGxAfHfI/hK39JupyPsQmpXzG3z7sbM37aXZNQKY76l+CuKq8OeUmQcB1W7oZgYlcYhFQV0GVa MGDLOalo4eKViSdv5iphvK5oh2FjH8eD9qhfb7t2ajpG9jTqy+EU6Io6vBbOVupMppsLYPRFzzX o0Ueog6ql/C0bSHF+6Z7Lmi7hsf0II= X-Received: by 2002:a05:600c:c491:b0:480:20f1:7aa6 with SMTP id 5b1f17b1804b1-4852695880emr41903375e9.21.1772809184617; Fri, 06 Mar 2026 06:59:44 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 03/49] hw/arm: Add missing dependencies for STM32F405 SoC Date: Fri, 6 Mar 2026 14:58:53 +0000 Message-ID: <20260306145939.2162189-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809383668158500 Content-Type: text/plain; charset="utf-8" From: Chisheng Chen The STM32F405 SoC relies on STM32F2xx peripherals (ADC, SPI, TIMER, USART) and the unimplemented device (UNIMP). However, they are not selected in Kconfig. This added these dependencies. Signed-off-by: Chisheng Chen Message-id: 20260228070622.2195836-1-johnny1001s000602@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/arm/Kconfig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 45fe8575fb..8bc23b61df 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -387,8 +387,13 @@ config STM32F405_SOC select ARM_V7M select OR_IRQ select STM32_RCC + select STM32F2XX_ADC + select STM32F2XX_SPI + select STM32F2XX_TIMER + select STM32F2XX_USART select STM32F4XX_SYSCFG select STM32F4XX_EXTI + select UNIMP =20 config B_L475E_IOT01A bool --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809284; cv=none; d=zohomail.com; s=zohoarc; b=BTPVRrkCvg/AiLq+ZmTzzz176XDQen2SQtpGMpLFezGJb8poqi87xlrEXrCENhPyaB87/MmH+BJ/HTFlP2nXBRdShx2DjsX8a24ZI74LAeORmrWa12bUMaHlPJo4lHU1GuT2bTDfkULvBqVN4XdJ9huEQwu7EBLSCBRY/a8Bq3s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809284; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=pNOqPEMn8ejxtDW65Z3UaWor69sYIcoIPnJUidDNtdM=; b=B93lSqBfeLZ43QIjAHlXptNS7uxGchzmWWZxQGolJrFl40p/E9qb+i8P2f5Jch0ZA0ngT0UpeWjlmqytkawMAV/YaNdE81D9N3TiKwYQMS7y34CLUVMqMycD4TEzZPfidJPvNBkeqKjTmbTMkk2jeFPEl3DQRqlKy6e3/gPccxs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809284823807.9976509003195; Fri, 6 Mar 2026 07:01:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWed-0003Uf-8V; Fri, 06 Mar 2026 09:59:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeb-0003T4-2E for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:49 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeZ-0002IN-4W for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:48 -0500 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-4837634de51so40738965e9.1 for ; Fri, 06 Mar 2026 06:59:46 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809186; x=1773413986; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=pNOqPEMn8ejxtDW65Z3UaWor69sYIcoIPnJUidDNtdM=; b=g2tW+8CdrlRDN5ZKvlM0532EIRgxF9U7NM9Es5ABW5gISo7KRVRDuvIkZhBuODnqvg 4sBqsJ8rGnAvqllWH0nmmDEv1CRI9JKgqozFoiQAJ44xa4YF+bNXWodISdwIDXjoR7IG EBDW8nNtNs58HiCxBkfakT8eEwfzzcb6C/s9+6McPXTTm6DHfaUdcJgH5d8bM+yn1k0g OZQBxFfY2DigLkf0Tu+cvjbas3c72SvTyKlzxe2ulWrLJO77Vy9ppP8c4ObGIzmG6yhm qsTysgs16DqHRSQV3VgLK/PXPqCC+vbKLeUx5UXK2S5/vPOtxHhp+xLimrqE6nZWJ2Mu WY+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809186; x=1773413986; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=pNOqPEMn8ejxtDW65Z3UaWor69sYIcoIPnJUidDNtdM=; b=atnn/iVyul/gRJrKffTwi/jgfnIvEkvJE92UNhQJ5W53qShiq9a92GkjH2U4jzvizp 8qgHh4knEf0ZJVphXJRo7UlnEVt6VnjMOBHZ6cY3PxGe+Idvy90w6xRCBasuUpBEUd7i UEqrcWRpMG3jeHRuF3BGp48qa+RJgvtFhI64diErbGnfOuLl0KY7Mhrw1AJzlqZKxZOL PdbmgWh8OeLj7eKwFF9pwmk6m8xQ5XHTerYZUQ8vBdG2JNAMR4sKY3a65ByXdKid5Ywq 2ThGOBaelu3liNxsYs+Vv/rPpka2aoEpLHpcPTBd8YOI+zssaByEOqOxtBXYD/pmXYgG PQSw== X-Gm-Message-State: AOJu0YyCuNVKcvIBF/u5VU2dxjWbXpYa+3FaAKODp6hTOAKMU7olrd6m r4Q5+WbaG0gPZMrbOfd3ssSd1CjQ2XK4sxGK6zH+EVrpE/R8v8AJ6fpggigUFH3kDFqMBB2pkxp E4Dts X-Gm-Gg: ATEYQzx0SarDzNPU/x7fw4ZxOzQ5cQ/K8B2w5eDO60jx587KucYuPRxgmhWyLusQq8Q 0e5d/ZiLoekCJll5aGBTKDD2vKuK374tRhqXuDI5B0aq/pHOtLedxLbXYjuBznqUnIJQpQqkfOg DNyF9HXeFmNgqHDud8E1zAFBeqTpVc3vGpe1XF4ykxE8zeBaFMcOVEMTw/oxopBbpp8tf4Afmj/ YRjQG1Mx55s4Tjj3eQ6wompkqDIATz6ePU8W0DBLsOoGvuwPB2iTZzASWKmNgtCfgwXjpgevwGk sJhnh6LQf+SxIzUYQkdGcYYU/F/1hsHBsaRSBULoRnZ97jZzhU1bQaOkoCqifO/dC8mm0R/r3Xj Rmo2QPPWfxS3jZg66k9uJEw8zWssaUlP9fTlTXymEBXpkygDB/XKq2KloxHcZGEPcAUBBBmucdA dPINR8bH8ACEZ5bruIHP/nwvuZfbwt5ATFb97dAsOWZ6GtVePgCVHbOumKgNVAZZ5lCqJ0xVm0K hdoAKysxnDH66+ldqZa64THU7P0lGs= X-Received: by 2002:a05:600c:1d1e:b0:483:c35d:3659 with SMTP id 5b1f17b1804b1-48526957d5cmr40470835e9.18.1772809185448; Fri, 06 Mar 2026 06:59:45 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 04/49] backends/iommufd: Introduce iommufd_backend_alloc_veventq Date: Fri, 6 Mar 2026 14:58:54 +0000 Message-ID: <20260306145939.2162189-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809286337154100 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Add a new helper for IOMMU_VEVENTQ_ALLOC ioctl to allocate a virtual event queue (vEVENTQ) for a vIOMMU object. Signed-off-by: Nicolin Chen Tested-by: Nicolin Chen Reviewed-by: Eric Auger Reviewed-by: Nicolin Chen Tested-by: Eric Auger Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum Message-id: 20260226084456.112142-2-skolothumtho@nvidia.com Signed-off-by: Peter Maydell --- backends/iommufd.c | 31 +++++++++++++++++++++++++++++++ backends/trace-events | 1 + include/system/iommufd.h | 14 ++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/backends/iommufd.c b/backends/iommufd.c index 13822df82f..acfab907c0 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -504,6 +504,37 @@ bool iommufd_backend_alloc_vdev(IOMMUFDBackend *be, ui= nt32_t dev_id, return true; } =20 +bool iommufd_backend_alloc_veventq(IOMMUFDBackend *be, uint32_t viommu_id, + uint32_t type, uint32_t depth, + uint32_t *out_veventq_id, + uint32_t *out_veventq_fd, Error **errp) +{ + int ret; + struct iommu_veventq_alloc alloc_veventq =3D { + .size =3D sizeof(alloc_veventq), + .flags =3D 0, + .type =3D type, + .veventq_depth =3D depth, + .viommu_id =3D viommu_id, + }; + + ret =3D ioctl(be->fd, IOMMU_VEVENTQ_ALLOC, &alloc_veventq); + + trace_iommufd_viommu_alloc_eventq(be->fd, viommu_id, type, + alloc_veventq.out_veventq_id, + alloc_veventq.out_veventq_fd, ret); + if (ret) { + error_setg_errno(errp, errno, "IOMMU_VEVENTQ_ALLOC failed"); + return false; + } + + g_assert(out_veventq_id); + g_assert(out_veventq_fd); + *out_veventq_id =3D alloc_veventq.out_veventq_id; + *out_veventq_fd =3D alloc_veventq.out_veventq_fd; + return true; +} + bool host_iommu_device_iommufd_attach_hwpt(HostIOMMUDeviceIOMMUFD *idev, uint32_t hwpt_id, Error **errp) { diff --git a/backends/trace-events b/backends/trace-events index 8dc64a20d3..b9365113e7 100644 --- a/backends/trace-events +++ b/backends/trace-events @@ -23,6 +23,7 @@ iommufd_backend_get_dirty_bitmap(int iommufd, uint32_t hw= pt_id, uint64_t iova, u iommufd_backend_invalidate_cache(int iommufd, uint32_t id, uint32_t data_t= ype, uint32_t entry_len, uint32_t entry_num, uint32_t done_num, uint64_t da= ta_ptr, int ret) " iommufd=3D%d id=3D%u data_type=3D%u entry_len=3D%u entry= _num=3D%u done_num=3D%u data_ptr=3D0x%"PRIx64" (%d)" iommufd_backend_alloc_viommu(int iommufd, uint32_t dev_id, uint32_t type, = uint32_t hwpt_id, uint32_t viommu_id, int ret) " iommufd=3D%d type=3D%u dev= _id=3D%u hwpt_id=3D%u viommu_id=3D%u (%d)" iommufd_backend_alloc_vdev(int iommufd, uint32_t dev_id, uint32_t viommu_i= d, uint64_t virt_id, uint32_t vdev_id, int ret) " iommufd=3D%d dev_id=3D%u = viommu_id=3D%u virt_id=3D0x%"PRIx64" vdev_id=3D%u (%d)" +iommufd_viommu_alloc_eventq(int iommufd, uint32_t viommu_id, uint32_t type= , uint32_t veventq_id, uint32_t veventq_fd, int ret) " iommufd=3D%d viommu_= id=3D%u type=3D%u veventq_id=3D%u veventq_fd=3D%u (%d)" =20 # igvm-cfg.c igvm_reset_enter(int type) "type=3D%u" diff --git a/include/system/iommufd.h b/include/system/iommufd.h index 80d72469a9..7062944fe6 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -56,6 +56,15 @@ typedef struct IOMMUFDVdev { uint32_t virt_id; /* virtual device ID */ } IOMMUFDVdev; =20 +/* Virtual event queue interface for a vIOMMU */ +typedef struct IOMMUFDVeventq { + IOMMUFDViommu *viommu; + uint32_t veventq_id; + uint32_t veventq_fd; + uint32_t last_event_seq; /* Sequence number of last processed event */ + bool event_start; /* True after first valid event; cleared on overflow= */ +} IOMMUFDVeventq; + bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp); void iommufd_backend_disconnect(IOMMUFDBackend *be); =20 @@ -86,6 +95,11 @@ bool iommufd_backend_alloc_vdev(IOMMUFDBackend *be, uint= 32_t dev_id, uint32_t viommu_id, uint64_t virt_id, uint32_t *out_vdev_id, Error **errp); =20 +bool iommufd_backend_alloc_veventq(IOMMUFDBackend *be, uint32_t viommu_id, + uint32_t type, uint32_t depth, + uint32_t *out_veventq_id, + uint32_t *out_veventq_fd, Error **errp); + bool iommufd_backend_set_dirty_tracking(IOMMUFDBackend *be, uint32_t hwpt_= id, bool start, Error **errp); bool iommufd_backend_get_dirty_bitmap(IOMMUFDBackend *be, uint32_t hwpt_id, --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809288; cv=none; d=zohomail.com; s=zohoarc; b=NdrvrEc8FAVJMJhDn76qd8+P1cMf48LgwXuYgWVFnI1Ac8irm/7Bkg/cMSrWvp2wAULXLIepfe2ITmhAK4jreedH/VWo/SsUiGa4swplgLKuHmxyhCM+4diJzSKwyWlXVogfo1BHAIy9f6f2NjvGLmi+LodGfJdeOfgUnpoZIyE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809288; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=VgeSwyGlOOL9FXbTfD4CL4jcvQ444n+6TDIZiWIbUQo=; b=LtTpZj5okIG7SRzzHh8iYHexQEvvXEuKOirBLeNkhbWkY7fzaCCTEBCtC8HvGy/t7WqX2KG/hictx25E18EjbOpDgg6iWa5Ev7eD1b5Y4yed13XDKK1etZRnUyrZ0Jsa0nutRuxCkRbMsGR+ni4OcespXdBkQ4fy1EGw8ON2uso= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809288183544.9872502268605; Fri, 6 Mar 2026 07:01:28 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWec-0003U1-NN; Fri, 06 Mar 2026 09:59:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeb-0003TX-Kp for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:49 -0500 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWea-0002IY-0L for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:49 -0500 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-4836f4cbe0bso81284325e9.3 for ; Fri, 06 Mar 2026 06:59:47 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809186; x=1773413986; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=VgeSwyGlOOL9FXbTfD4CL4jcvQ444n+6TDIZiWIbUQo=; b=wt1TmgxBDWg0QGElGh85zL+qLMz+0OHqJX448qN0uPpIRXyaQaX6qwaivfewuINyIZ 35nKbXMgRtCM+7npvQ/0Mr5aDQoATiwZNLZzAN/J8ygRAhwo5Qm+45JBL/R0kJIARx8t iHU6k7z2FGlqz9i03qhgCLlmjjxzO21n94eHu93reD+yyNMDW744izyKnx+1BeBG22Ap o7zQl1RywEMVOf7Q6XFIdhTm/iXO0DSFEth9tAdd044LQNu5z19Ukm8wuwJqW8M/EXVB hwi0RdaCm+U3ZgA2PstWFU4Ooi544IdKcvuki+yJQ7GguMcncCEkLABufydRtbc+x1vw xBcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809186; x=1773413986; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=VgeSwyGlOOL9FXbTfD4CL4jcvQ444n+6TDIZiWIbUQo=; b=ZArN1xYTmMI99SAvH0TiFxCfmcptARy9xBLzWeSOmuXmsqnLWF5SqhlrnXpY1CtsBl itUbqkJDB6WnvmTkZ+EgYgTthGC7co4b9WseN7fZaLWlClpO8NqdxoYQqWBbBHhW+Bbl PHU5G14+Oq+YXNLTtFYffVhuV4QEWnVrV9uw3wBcXpTR2oIf1dPSKOL0ZPTeU0clDIVM gjZpAhMSXW1LLwJhHyZ9kcktP7UoU8S/BBahAyZX7nAJulFsvcvZblORCCeYigF0ls+c MVzvjPYouFRxqnSN+2HKFliqhn2dI9VjfAbwr5O3ryoc9T7GQ2vgdpqdlpmZoaZ+AoGF 7j6A== X-Gm-Message-State: AOJu0YyZXO8EU1uRNsX9nFlf97nmxitYUp1sPPA7F1X43R74AcboU8T7 fks5CWOFZ3/gwBfy4kUR2/flhViqNqBn1dZoNUgM+RLwShpsLId1nYepcvtZGyhy417H+eejySc RASql X-Gm-Gg: ATEYQzzCPBfavB4NFH0tgpaztzaxOgvFlrypAmoG+lYrwWesOR7iAZoXR7QiZcRLppG 6ol6ku5ZELIA4/d5WoZMUpbLblsMNIV3JfURfE0y0twyXzTQUHDWi7Vj7CU/V88Ga/A1OHc3UJj zJm3GDfU3bY6nqu9Vf0OvuPhnTUXyX1EyT4SCus1QI+aw6/cDR/HHJ0DUghdcusVntwUbRqzB35 vygS+nLW3dAdWBsVf+6EpYhOpmyDD1JCHXcKGzlAPEwgrq2OS+/nV/sm5HmNLQUry0AeYfet47G R+iPTF01jO6ORk0FG2UGFClLt+fgxMmReaZFaVXDjAEoXfo31GL9AA4RZReZ4UyDe8tTGpDNpbz /RiZcwYyZEMeTst6PfRam4Y6YM+ZAIS/oSpgg8D01j67FMpviGRL+sdQdIOpYG3IXYSGK4aLVop Z7q1zRMXJ8EBeckRbvEMVH80loNWB9ipo593NG+eFgpsxb2F6Fv9L0C1AP3Rx9jvSpgVKIRF0zy UcBZyyQK54w4cp9xjiwlwfAu420niQ= X-Received: by 2002:a05:600c:8b8b:b0:485:16d8:4741 with SMTP id 5b1f17b1804b1-4852690f681mr42810375e9.6.1772809186397; Fri, 06 Mar 2026 06:59:46 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 05/49] hw/arm/smmuv3-accel: Add viommu free helper Date: Fri, 6 Mar 2026 14:58:55 +0000 Message-ID: <20260306145939.2162189-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809290437154100 Content-Type: text/plain; charset="utf-8" From: Shameer Kolothum Move viommu teardown into a helper function and use it from the last device removal path. This groups related cleanup logic in one place and improves readability. It also makes it easier to extend the teardown in future, for example when freeing related objects such as vEVENTQ. No functional change. Reviewed-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Eric Auger Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum Message-id: 20260226084456.112142-3-skolothumtho@nvidia.com Signed-off-by: Peter Maydell --- hw/arm/smmuv3-accel.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index f5cd4df336..c19c526fca 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -390,6 +390,20 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *bs, void = *cmd, SMMUDevice *sdev, sizeof(Cmd), &entry_num, cmd, errp); } =20 +static void smmuv3_accel_free_viommu(SMMUv3AccelState *accel) +{ + IOMMUFDViommu *viommu =3D accel->viommu; + + if (!viommu) { + return; + } + iommufd_backend_free_id(viommu->iommufd, accel->bypass_hwpt_id); + iommufd_backend_free_id(viommu->iommufd, accel->abort_hwpt_id); + iommufd_backend_free_id(viommu->iommufd, accel->viommu->viommu_id); + g_free(viommu); + accel->viommu =3D NULL; +} + static bool smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *idev, Error **errp) @@ -549,12 +563,7 @@ static void smmuv3_accel_unset_iommu_device(PCIBus *bu= s, void *opaque, trace_smmuv3_accel_unset_iommu_device(devfn, idev->devid); =20 if (QLIST_EMPTY(&accel->device_list)) { - iommufd_backend_free_id(accel->viommu->iommufd, accel->bypass_hwpt= _id); - iommufd_backend_free_id(accel->viommu->iommufd, accel->abort_hwpt_= id); - iommufd_backend_free_id(accel->viommu->iommufd, - accel->viommu->viommu_id); - g_free(accel->viommu); - accel->viommu =3D NULL; + smmuv3_accel_free_viommu(accel); } } =20 --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809282; cv=none; d=zohomail.com; s=zohoarc; b=M7GAqyJEAkqOOVaSwHqdiHwo8KVVkdnfSdszBT3/6VZ6a9rhfpwWaosbWx3toBh7rJMg3yQLoLo8lNbHwzv+culwgmxamBvb5u3KiwNeJ9LYgCWaVW7qnBCiy0mnMU2GzFHGLP3TxCus8xBZsJ8Im9K9O2Euf531jwLYxQXrU7s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809282; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=y+UJrf0+XqVFVS2uBBH5yz9W2AfmeAVb1aoauvtaMS8=; b=EudonA2YJs03IoUCW/ny1LuYy1Hj6ltShJHevmUYd4RD17xkYv0hmnLupnVb/JZ+8nEJuMWM6NKpmqKGt+APLSVfzYB/HqfRI8lobMpoW7pueF02bu//3Y1EeFsc4MaJ8FQGTVbzuUQpA1AN5yq7eLNeuRosrOdkCw2ET6kOmzc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809282454519.6307279514546; Fri, 6 Mar 2026 07:01:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWef-0003gw-O7; Fri, 06 Mar 2026 09:59:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWec-0003UH-SV for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:50 -0500 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWea-0002Il-Uy for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:50 -0500 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-48375f1defeso70384575e9.0 for ; Fri, 06 Mar 2026 06:59:48 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809187; x=1773413987; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=y+UJrf0+XqVFVS2uBBH5yz9W2AfmeAVb1aoauvtaMS8=; b=puRonhcHAYXBTDsiJFq69xysBzMg+jb+JrMW8nTJnFSkLwxIqUGmH1e64lNfqNatO4 aA4QRx5tDkUwt7QtIowPiEmMW9uSDIlP513R9YxaDJqN02kw1fqYMjjUKVBobJj+vjSL AumIfrLbukLQkLoXvJtiBrlDarSiiCmL1enJFOjawcRqEnqmRhbOJVJBqvvgA5QeIsk1 LU0uUMuip605u/Y3T41uEtayPSzQyEU/BfqY0XW91TD6dd2edHsLQZ1jQarzdozURc35 ThF9fvN+q5lA5DaJntmu3us09WGaXxAeghaKwfBgnPcHqrW+QrfmXu44IlxQLaOBkAPw 745A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809187; x=1773413987; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=y+UJrf0+XqVFVS2uBBH5yz9W2AfmeAVb1aoauvtaMS8=; b=bEcwPI5eMWhUqaegNrPc2+6cMNdbKeQ5Jckz+UVhG2UBcUadkrRz5Yzq7lBbD0GLSJ TCGXrSV2iBTQ/Ts5xZwiJyJ90VR5o/Uv1IR+5gqxCt6RCQzL96rjvDyR2IIRutHWKzBM i/hXJu7GImPF0kebzrq9TejEbjJTVpobAABZ6q1pzcBEbkoNkoEufHkJ1eNfum3y+NbM BcQ2sjf9Uw7ErNH7mB3VV5FG3Di3VF0h1bKoi1pGCKsEqiq57xPglmTa6gztIu9you1t 1KOpMKqmSCcHMCoUKzNvLVHZSweEQjL0gS76ahYzOEEeX/vxZAINmPjeCEzTQbJ0FhM3 65vQ== X-Gm-Message-State: AOJu0YwitcasfUUB/ecX2Pc7mebS4XbnYLtOfDLo/6z7L68haVuejnCU o02YWtpFSMYYot1UBUWWQmKW5rALxPpr/rf8fhx0Dcju56TU9X4kgvw4Fb9TfCMrXFVPz/Q8DMY jRsnt X-Gm-Gg: ATEYQzyfF0Rn9/vqAA1Fv5ailTEDBedlFiHm/6Siyt6U/dlE11rrRx9MEBpnG0Do6u/ xJ9w0EoxnG/1C/+d/KA7IfGYvyM9+YLxbFF7DhIZswe5dCwITGHfc49+Q254SRcS6ODmKBotJUt nJ+NHbxwIXJgSpQSfGv3Qvtbil/dGEN/93XS07UZqWEx9DuftdF53uml0Si4ZwiQQbLbR0/+kZj 7SApolMdPctsZyUZzOEVz4GzcVRtTfiGee8JosmnWD+QVwikUtq0rzcl5soMHV26Shn1hPyxgjN MdLVeugl8WT4lEcI+oowvf3BVtNt9jUyxeEIwlivF6R/hvMevtfFpKasPTnBeefYEjTBHUJ2j8r yPebwUld58LXP0jcd6tC2o4fMqtB+Gt+paZy5a4MK30WCQeLnr7dg0dR0tsDS8Lt0FHXf0tCSAN h6HdL/UV+jo8PvElG4yRGVJEHVXbXhZpskVmEn8X+J2vbrUqkRKAAczBcBykSiqH4JRKFuvi+i6 IzCTBb30DPT2lLWcikHvdgNfTTi5rw= X-Received: by 2002:a05:600c:6489:b0:47e:e712:aa88 with SMTP id 5b1f17b1804b1-4852697758amr37308165e9.31.1772809187264; Fri, 06 Mar 2026 06:59:47 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 06/49] hw/arm/smmuv3-accel: Allocate vEVENTQ for accelerated SMMUv3 devices Date: Fri, 6 Mar 2026 14:58:56 +0000 Message-ID: <20260306145939.2162189-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809282801158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen When the guest enables the Event Queue and a vIOMMU is present, allocate a vEVENTQ object so that host-side events related to the vIOMMU can be received and propagated back to the guest. Allocate a vEVENTQ only when both of the following conditions are met: 1) The guest SMMUv3 driver has set EVENTQEN =3D 1 in SMMU_CR0. 2) A vIOMMU exists (created when the first VFIO device is attached). These two conditions may occur in any order. In the cold-plug case, the vIOMMU already exists before the guest driver probes. When the guest sets EVENTQEN =3D 1 during driver probe, the vEVENTQ is allocated at that point. With hot-plug, the VFIO device may be attached either before or after the guest sets EVENTQEN. If the vIOMMU is created first, allocation is deferred until EVENTQEN =3D 1. If EVENTQEN is already set, allocation happens when the vIOMMU is created. In all cases, allocation is triggered when the second required condition becomes true. Errors from command queue consumption and vEVENTQ allocation are reported independently as the two operations are unrelated. Event read and propagation will be added in a later patch. Signed-off-by: Nicolin Chen Tested-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Eric Auger Signed-off-by: Shameer Kolothum Message-id: 20260226084456.112142-4-skolothumtho@nvidia.com Signed-off-by: Peter Maydell --- hw/arm/smmuv3-accel.c | 61 +++++++++++++++++++++++++++++++++++++++++-- hw/arm/smmuv3-accel.h | 6 +++++ hw/arm/smmuv3.c | 6 +++++ 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index c19c526fca..f703ea1aac 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -390,6 +390,19 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *bs, void = *cmd, SMMUDevice *sdev, sizeof(Cmd), &entry_num, cmd, errp); } =20 +static void smmuv3_accel_free_veventq(SMMUv3AccelState *accel) +{ + IOMMUFDVeventq *veventq =3D accel->veventq; + + if (!veventq) { + return; + } + close(veventq->veventq_fd); + iommufd_backend_free_id(accel->viommu->iommufd, veventq->veventq_id); + g_free(veventq); + accel->veventq =3D NULL; +} + static void smmuv3_accel_free_viommu(SMMUv3AccelState *accel) { IOMMUFDViommu *viommu =3D accel->viommu; @@ -397,6 +410,7 @@ static void smmuv3_accel_free_viommu(SMMUv3AccelState *= accel) if (!viommu) { return; } + smmuv3_accel_free_veventq(accel); iommufd_backend_free_id(viommu->iommufd, accel->bypass_hwpt_id); iommufd_backend_free_id(viommu->iommufd, accel->abort_hwpt_id); iommufd_backend_free_id(viommu->iommufd, accel->viommu->viommu_id); @@ -404,6 +418,41 @@ static void smmuv3_accel_free_viommu(SMMUv3AccelState = *accel) accel->viommu =3D NULL; } =20 +bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error **errp) +{ + SMMUv3AccelState *accel =3D s->s_accel; + IOMMUFDVeventq *veventq; + uint32_t veventq_id; + uint32_t veventq_fd; + + if (!accel || !accel->viommu) { + return true; + } + + if (accel->veventq) { + return true; + } + + if (!smmuv3_eventq_enabled(s)) { + return true; + } + + if (!iommufd_backend_alloc_veventq(accel->viommu->iommufd, + accel->viommu->viommu_id, + IOMMU_VEVENTQ_TYPE_ARM_SMMUV3, + 1 << s->eventq.log2size, &veventq_i= d, + &veventq_fd, errp)) { + return false; + } + + veventq =3D g_new0(IOMMUFDVeventq, 1); + veventq->veventq_id =3D veventq_id; + veventq->veventq_fd =3D veventq_fd; + veventq->viommu =3D accel->viommu; + accel->veventq =3D veventq; + return true; +} + static bool smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *idev, Error **errp) @@ -429,6 +478,7 @@ smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDevi= ceIOMMUFD *idev, viommu->viommu_id =3D viommu_id; viommu->s2_hwpt_id =3D s2_hwpt_id; viommu->iommufd =3D idev->iommufd; + accel->viommu =3D viommu; =20 /* * Pre-allocate HWPTs for S1 bypass and abort cases. These will be att= ached @@ -448,14 +498,20 @@ smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDe= viceIOMMUFD *idev, goto free_abort_hwpt; } =20 + /* Allocate a vEVENTQ if guest has enabled event queue */ + if (!smmuv3_accel_alloc_veventq(s, errp)) { + goto free_bypass_hwpt; + } + /* Attach a HWPT based on SMMUv3 GBPA.ABORT value */ hwpt_id =3D smmuv3_accel_gbpa_hwpt(s, accel); if (!host_iommu_device_iommufd_attach_hwpt(idev, hwpt_id, errp)) { - goto free_bypass_hwpt; + goto free_veventq; } - accel->viommu =3D viommu; return true; =20 +free_veventq: + smmuv3_accel_free_veventq(accel); free_bypass_hwpt: iommufd_backend_free_id(idev->iommufd, accel->bypass_hwpt_id); free_abort_hwpt: @@ -463,6 +519,7 @@ free_abort_hwpt: free_viommu: iommufd_backend_free_id(idev->iommufd, viommu->viommu_id); g_free(viommu); + accel->viommu =3D NULL; return false; } =20 diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index a8a64802ec..dba6c71de5 100644 --- a/hw/arm/smmuv3-accel.h +++ b/hw/arm/smmuv3-accel.h @@ -22,6 +22,7 @@ */ typedef struct SMMUv3AccelState { IOMMUFDViommu *viommu; + IOMMUFDVeventq *veventq; uint32_t bypass_hwpt_id; uint32_t abort_hwpt_id; QLIST_HEAD(, SMMUv3AccelDevice) device_list; @@ -50,6 +51,7 @@ bool smmuv3_accel_attach_gbpa_hwpt(SMMUv3State *s, Error = **errp); bool smmuv3_accel_issue_inv_cmd(SMMUv3State *s, void *cmd, SMMUDevice *sde= v, Error **errp); void smmuv3_accel_idr_override(SMMUv3State *s); +bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error **errp); void smmuv3_accel_reset(SMMUv3State *s); #else static inline void smmuv3_accel_init(SMMUv3State *s) @@ -80,6 +82,10 @@ smmuv3_accel_issue_inv_cmd(SMMUv3State *s, void *cmd, SM= MUDevice *sdev, static inline void smmuv3_accel_idr_override(SMMUv3State *s) { } +static inline bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error **errp) +{ + return true; +} static inline void smmuv3_accel_reset(SMMUv3State *s) { } diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index c08d58c579..5d718da764 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1605,6 +1605,12 @@ static MemTxResult smmu_writel(SMMUv3State *s, hwadd= r offset, s->cr0ack =3D data & ~SMMU_CR0_RESERVED; /* in case the command queue has been enabled */ smmuv3_cmdq_consume(s, &local_err); + if (local_err) { + error_report_err(local_err); + local_err =3D NULL; + } + /* Allocate vEVENTQ if EVENTQ is enabled and a vIOMMU is available= */ + smmuv3_accel_alloc_veventq(s, &local_err); break; case A_CR1: s->cr[1] =3D data; --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809521; cv=none; d=zohomail.com; s=zohoarc; b=PEokVDGVCWwd8L/SAdqGdDLjBviYCJv/wjGvEYQucl0YtwUBCTxdwRvJY3IWR9d2sGBOxKoHMdx73N5Op9DBCOnGW40Na3HWxHuI16kXye0hAp7LIvS74Mm7PX/10jJw8jsTOGJDr3YjaSaXatkGr/jpqfDYaT8bDN3laQoE4YU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809521; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=+gNqFXUqIbXenOcWJQEnfBJDWo4MPWIcT3pXhz76S+8=; b=L+Mgf+El7iGPppGIpB245IvQXnKABN8SX8VLUOzR8xtvXbTLVNGAvp69ukqhE4Yrv8objvoctMfw/wzvCczzpprylk1S7u/0dOkGNJCenHtQpNpd4uRJkrKxHUM9kgTI9GB63u0PGow/1iJ+tBU6g5DS6Z4uumbBh0bgS9eYDFs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809521789544.4464882530623; Fri, 6 Mar 2026 07:05:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWeg-0003jZ-9z; Fri, 06 Mar 2026 09:59:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWed-0003Zr-TS for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:51 -0500 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWec-0002Iy-3Q for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:51 -0500 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-439ce3605ecso1481334f8f.0 for ; Fri, 06 Mar 2026 06:59:49 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809188; x=1773413988; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+gNqFXUqIbXenOcWJQEnfBJDWo4MPWIcT3pXhz76S+8=; b=wReDVYFBCU+7KCDq6v0fJDJ7L429bOoNU7zDFazPYkF/tA+CuAZ/WIsKsgfUckLMl+ YYQLmXGyFXTfVDO4gnKO+8YR+ISGrhd8yBxXfJg7o7TbRu4Nq744549/tH2WVuPVvou/ k+q4XBFUnlxo+0Il48cF0j3ng+CkGquSGtCWljz9vJb1iig9ZF+WZJ60zs3OHF3nWJiP vNw01LhAOSq7C+moLsdTPRBajdFYyub43GqZmmV7siWFykoy+mFh2PzTayGfnwwmTrGC R2HDLMiq6jYOeCnyajWJ8qobu5xGNAdP/bpgC1w2SXuz3sXrJG09OdY9wBmrzQ4lQZ5k /oDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809188; x=1773413988; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+gNqFXUqIbXenOcWJQEnfBJDWo4MPWIcT3pXhz76S+8=; b=MtlZNe3nb+kBxGtHK/9EmA4CV5/X0vJ14nmVJc/QsGHdBTImtQqH0NmIdc8pIDkD2c NnCFVkwZFCu2KhFmWjsGYtFuJn1qTKV79MHPdn07SAyu5OcDPEyozpElkMkI50UFW6i9 ow2n++lnRL/+E+8CjYZn4/j3y6T4Onb5Y9vyYlATVq3Cxa2KEyTlgcO4GAqN3PdFX7sd nPSlel+QfY89KdWVIS3J/eYqi5NSElbyXrKyqAe1pdHSJ3Gd3utnDbjHejrAdqziRKvF Wmn9m6rXVOC69/4u0LDZzUiRkY/gJ935GNPlA/RCWVZdoRMSQ6d/8zApo21gYwY36fS5 oJVg== X-Gm-Message-State: AOJu0YxErAmZQP0J3RjeMI2wxrQV8kmk/+sEoQdBQcqsohpq4ZpQky3z jcLOUsS4OBmE1EgFbhjXZYuaWftr1lKO6yEDF5wS3wXsN4of0fBw8DUzH84thFo17x4riBngfls bjdQr X-Gm-Gg: ATEYQzz9h7WTqDBZADwQAhpquiY3rii10v7YFK2py0qNjwl5pI6+290gtHHE1kVWWtA 4SuZkb/TfPsWxsJemFmq5/HLw0bFnmxvCbosynowUG7OmYWQSZIV9wO3k37bVrsBATioLnHSEKJ JGpnpdCO7mv94VwopIc+dwrOb9h516xuZ2lrJZyBsRhwgojms5RSNt5OiB4OMHJg0WYgvMImE/x DsL7FWPEfboD5lIAh6ATFqNpyDFkP68wJo5lcmc6iQK7H0993UZSC4NOs+JhLx8PEg1/YGZwdDr 7ZrsLOg4LwMta2wzxFpByo4z12GSY22+JwdIkxWRaXb8LDdbprqZiEqaMiD4zErUfz2L5LY//QW 8a1wkrSd6jCYUlK9ArraHoI76a1uayX4CXmkZMe+Y8Xu93TumpGZW5X6rguo+2lhZMN6vs/lAIH j0gSvhnzQSl+gGDe76pLaNVMre7tn1Ic7DMElUJ9ZF3pVrf5DV42k/H/3fzxhM4a4irdz5taUiY SmUlwaz7TF+C112/pzfkQX51aU1WEU= X-Received: by 2002:a05:600c:8b0d:b0:482:dbd7:a1c1 with SMTP id 5b1f17b1804b1-48526984289mr37146415e9.34.1772809188178; Fri, 06 Mar 2026 06:59:48 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 07/49] hw/arm/smmuv3: Introduce a helper function for event propagation Date: Fri, 6 Mar 2026 14:58:57 +0000 Message-ID: <20260306145939.2162189-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809524322154100 Content-Type: text/plain; charset="utf-8" From: Shameer Kolothum Factor out the code that propagates event records to the guest into a helper function. The accelerated SMMUv3 path can use this to propagate host events in a subsequent patch. Take the mutex inside the helper before accessing the Event Queue. Today event propagation occurs only in the core SMMUv3 path and is effectively serialized. A subsequent patch will also invoke this helper from the accelerated event read path, which may run concurrently. Therefore serialization is required here. No functional change intended. Reviewed-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Nicolin Chen Tested-by: Eric Auger Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum Message-id: 20260226084456.112142-5-skolothumtho@nvidia.com Signed-off-by: Peter Maydell --- hw/arm/smmuv3-internal.h | 4 ++++ hw/arm/smmuv3.c | 20 ++++++++++++++------ hw/arm/trace-events | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index a6464425ec..b666109ad9 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -352,7 +352,11 @@ typedef struct SMMUEventInfo { (x)->word[6] =3D (uint32_t)(addr & 0xffffffff); \ } while (0) =20 +#define EVT_GET_TYPE(x) extract32((x)->word[0], 0, 8) +#define EVT_GET_SID(x) ((x)->word[1]) + void smmuv3_record_event(SMMUv3State *s, SMMUEventInfo *event); +void smmuv3_propagate_event(SMMUv3State *s, Evt *evt); int smmu_find_ste(SMMUv3State *s, uint32_t sid, STE *ste, SMMUEventInfo *e= vent); =20 static inline int oas2bits(int oas_field) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 5d718da764..af7a54143f 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -168,10 +168,22 @@ static MemTxResult smmuv3_write_eventq(SMMUv3State *s= , Evt *evt) return MEMTX_OK; } =20 +void smmuv3_propagate_event(SMMUv3State *s, Evt *evt) +{ + MemTxResult r; + + trace_smmuv3_propagate_event(smmu_event_string(EVT_GET_TYPE(evt)), + EVT_GET_SID(evt)); + QEMU_LOCK_GUARD(&s->mutex); + r =3D smmuv3_write_eventq(s, evt); + if (r !=3D MEMTX_OK) { + smmuv3_trigger_irq(s, SMMU_IRQ_GERROR, R_GERROR_EVENTQ_ABT_ERR_MAS= K); + } +} + void smmuv3_record_event(SMMUv3State *s, SMMUEventInfo *info) { Evt evt =3D {}; - MemTxResult r; =20 if (!smmuv3_eventq_enabled(s)) { return; @@ -251,11 +263,7 @@ void smmuv3_record_event(SMMUv3State *s, SMMUEventInfo= *info) g_assert_not_reached(); } =20 - trace_smmuv3_record_event(smmu_event_string(info->type), info->sid); - r =3D smmuv3_write_eventq(s, &evt); - if (r !=3D MEMTX_OK) { - smmuv3_trigger_irq(s, SMMU_IRQ_GERROR, R_GERROR_EVENTQ_ABT_ERR_MAS= K); - } + smmuv3_propagate_event(s, &evt); info->recorded =3D true; } =20 diff --git a/hw/arm/trace-events b/hw/arm/trace-events index 8135c0c734..3457536fb0 100644 --- a/hw/arm/trace-events +++ b/hw/arm/trace-events @@ -40,7 +40,7 @@ smmuv3_cmdq_opcode(const char *opcode) "<--- %s" smmuv3_cmdq_consume_out(uint32_t prod, uint32_t cons, uint8_t prod_wrap, u= int8_t cons_wrap) "prod:%d, cons:%d, prod_wrap:%d, cons_wrap:%d " smmuv3_cmdq_consume_error(const char *cmd_name, uint8_t cmd_error) "Error = on %s command execution: %d" smmuv3_write_mmio(uint64_t addr, uint64_t val, unsigned size, uint32_t r) = "addr: 0x%"PRIx64" val:0x%"PRIx64" size: 0x%x(%d)" -smmuv3_record_event(const char *type, uint32_t sid) "%s sid=3D0x%x" +smmuv3_propagate_event(const char *type, uint32_t sid) "%s sid=3D0x%x" smmuv3_find_ste(uint16_t sid, uint32_t features, uint16_t sid_split) "sid= =3D0x%x features:0x%x, sid_split:0x%x" smmuv3_find_ste_2lvl(uint64_t strtab_base, uint64_t l1ptr, int l1_ste_offs= et, uint64_t l2ptr, int l2_ste_offset, int max_l2_ste) "strtab_base:0x%"PRI= x64" l1ptr:0x%"PRIx64" l1_off:0x%x, l2ptr:0x%"PRIx64" l2_off:0x%x max_l2_st= e:%d" smmuv3_get_ste(uint64_t addr) "STE addr: 0x%"PRIx64 --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809204; cv=none; d=zohomail.com; s=zohoarc; b=MX44Ms/OVV5y7/UNumgaPIrrCtPwA00eEgY7QmrFFUEuDhKZ2bOY3ETU+KN/D0DQ5CV4nEjBTASAsJ9jX7qt2YR/TuruxxK1WJ4GIMPw6XVSaPPJf5R32UbYMZ9yPbtoPMEP6A8QZMatuDtRXVNbjBph1/EAly7TbOV7dm658Hg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809204; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=WCR0Wsa3KNmvE4hvefzUstZHB/A8U7VaN0odN4WHJOc=; b=C29yHIiOso1Fe01E95PBSJhXAZQ6pKZctFMcuuaajj9FKKFc8noLO+boeQQMTM+lDbwSJZzMYAjtYTvhJs4hU6/reNMs8ANkhv9RIszNq9OlXOTnMuGo1yehOIZaP7EPQgPikv5RwJ862KKJN1E6htCqi3cqQ/P0vY4aPLS6r20= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809204000247.36063863604772; Fri, 6 Mar 2026 07:00:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWef-0003gW-Jz; Fri, 06 Mar 2026 09:59:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWee-0003bJ-Ac for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:52 -0500 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWec-0002J9-Is for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:52 -0500 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-4833115090dso96352835e9.3 for ; Fri, 06 Mar 2026 06:59:50 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809189; x=1773413989; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=WCR0Wsa3KNmvE4hvefzUstZHB/A8U7VaN0odN4WHJOc=; b=avA/mMher6kt4M01uquUWJRfALpG84T/DwQmWsoixTRPw966TBfmQJ7258GA8FVDWn EmcUqpkoHIi7HJRY87ylQzosIBFaTmA43q+04MLICfrJfCfTntt3ROrt1p7OtJxK41Vy qTQZWUALQ67BLOYTEUlk521/CwLYpR9XvVjMP4p/4NtBthCXKeWAncWxmXyCxAFy+IeX 7r+yYEId9nevWIRrOgBh3a2/M4qQUD9fhIwUY86L2+J8ZwFJBNFcg5O1KolS+BQdKA+n u8+qP8D3BVF+8N8tjx7xWdOiFvXT0xGnGvI7BplMnhyvJ6LFcExujGX+3gliFURYLcRM ZtMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809189; x=1773413989; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=WCR0Wsa3KNmvE4hvefzUstZHB/A8U7VaN0odN4WHJOc=; b=r5eVKW68ai5WXkeUq58d9bjJT772Skni2dVQcE1jcR3vtS9+zUYWChX7ARHRvcG3cA /dLmGaZl0nXocLFvWsQ6A/WCfeqWIznxVUzupeUtjxwrIWaLVPZ4s01L5oKvmQ4GkDyV oAsTs+NoYFJ7aO4xbeWbbjjos8qYeOY3m6+Pbo9IPqGBmHCf6BBbzLtFjC5Rl9X37HdI 7IlgO8kv5tNttQbzx58NjL2p4DqZkPX5L7HsH141p8uUFZ9CSyDKpMckZJi69Vzo9r/+ hngls1WgC9yi1wWOs+97t/WyJL3BgFjBomKoT1QBll44bCv3c49veS6U3Wbz32MUnO/D 2B/A== X-Gm-Message-State: AOJu0Yxq9EO+SmCVkKACgZv4GOQJ7wmdeWcmHYp8QoIwCqPimNGO8YiD FzjUNo/mmeQhBLwQ1w0NZU0lj/QIwqoEMwyQJW6bvUz7cv4Iz89birQ2v9od1BaETTmNn3mhlk9 PO5UE X-Gm-Gg: ATEYQzxybiiaS4FVY3sAgFT2CKTaBCFB0wyqARY8WBarF6iclNGu3d6zy5Z3/5O0wkj 52s5PmoYKMnDGF3GVWJem6KEznCzBg+GEbf9CoFQje7yUoJN13a2kcaPnfk2IFdUnwQeZ0z5xBT SYpn7+1ucG5AsoF+wovaZFbn6vhPtE1d530vYt+Vc5eiONtPIl8gyNKCpGStdMo2neR6pXuDIfc a3tw8PVhZooBNV+WEkhAyzdvVlTGKAJ8fxJ598n9iaDwsFonxuk1AQtsIrxE0mstBkIKwlI+8vo zcinEhIRn7Rypnc05xGNKAS0raTPtgc4jvfVMI5JbMCI1RI1tCgXGAd29fCKOCQZOzzmTlzsTbO EyLsvzi1+49688uMG3/HitmxZ/cnbP1oHh08xHQ+8jgoQQqj5rY2o33R01CzkGX8ksg0z2UEB/B wVmNzqHdsVi985FyQTh+TpFDYFteNwH/pm9KprMaC4335lniBtuBLzGIAdMrbZIBn916HcBuloR zDeAWsErcLEYiwNg8shydWUd9To9PM= X-Received: by 2002:a05:600c:470e:b0:480:7162:fa48 with SMTP id 5b1f17b1804b1-485269304c0mr40981925e9.13.1772809189053; Fri, 06 Mar 2026 06:59:49 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 08/49] hw/arm/smmuv3-accel: Read and propagate host vIOMMU events Date: Fri, 6 Mar 2026 14:58:58 +0000 Message-ID: <20260306145939.2162189-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809206175158500 Content-Type: text/plain; charset="utf-8" From: Shameer Kolothum Install an event handler on the vEVENTQ fd to read and propagate host generated vIOMMU events to the guest. The handler runs in QEMU's main loop, using a non-blocking fd registered via qemu_set_fd_handler(). Tested-by: Nicolin Chen Reviewed-by: Eric Auger Reviewed-by: Nicolin Chen Tested-by: Eric Auger Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum Message-id: 20260226084456.112142-6-skolothumtho@nvidia.com Signed-off-by: Peter Maydell --- hw/arm/smmuv3-accel.c | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index f703ea1aac..17306cd04b 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -390,6 +390,50 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *bs, void = *cmd, SMMUDevice *sdev, sizeof(Cmd), &entry_num, cmd, errp); } =20 +static void smmuv3_accel_event_read(void *opaque) +{ + SMMUv3State *s =3D opaque; + IOMMUFDVeventq *veventq =3D s->s_accel->veventq; + struct { + struct iommufd_vevent_header hdr; + struct iommu_vevent_arm_smmuv3 vevent; + } buf; + enum iommu_veventq_type type =3D IOMMU_VEVENTQ_TYPE_ARM_SMMUV3; + uint32_t id =3D veventq->veventq_id; + uint32_t last_seq =3D veventq->last_event_seq; + ssize_t bytes; + + bytes =3D read(veventq->veventq_fd, &buf, sizeof(buf)); + if (bytes <=3D 0) { + if (errno =3D=3D EAGAIN || errno =3D=3D EINTR) { + return; + } + error_report_once("vEVENTQ(type %u id %u): read failed (%m)", type= , id); + return; + } + + if (bytes =3D=3D sizeof(buf.hdr) && + (buf.hdr.flags & IOMMU_VEVENTQ_FLAG_LOST_EVENTS)) { + error_report_once("vEVENTQ(type %u id %u): overflowed", type, id); + veventq->event_start =3D false; + return; + } + if (bytes < sizeof(buf)) { + error_report_once("vEVENTQ(type %u id %u): short read(%zd/%zd byte= s)", + type, id, bytes, sizeof(buf)); + return; + } + + /* Check sequence in hdr for lost events if any */ + if (veventq->event_start && (buf.hdr.sequence - last_seq !=3D 1)) { + error_report_once("vEVENTQ(type %u id %u): lost %u event(s)", + type, id, buf.hdr.sequence - last_seq - 1); + } + veventq->last_event_seq =3D buf.hdr.sequence; + veventq->event_start =3D true; + smmuv3_propagate_event(s, (Evt *)&buf.vevent); +} + static void smmuv3_accel_free_veventq(SMMUv3AccelState *accel) { IOMMUFDVeventq *veventq =3D accel->veventq; @@ -397,6 +441,7 @@ static void smmuv3_accel_free_veventq(SMMUv3AccelState = *accel) if (!veventq) { return; } + qemu_set_fd_handler(veventq->veventq_fd, NULL, NULL, NULL); close(veventq->veventq_fd); iommufd_backend_free_id(accel->viommu->iommufd, veventq->veventq_id); g_free(veventq); @@ -424,6 +469,7 @@ bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error *= *errp) IOMMUFDVeventq *veventq; uint32_t veventq_id; uint32_t veventq_fd; + int flags; =20 if (!accel || !accel->viommu) { return true; @@ -445,12 +491,30 @@ bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error= **errp) return false; } =20 + flags =3D fcntl(veventq_fd, F_GETFL); + if (flags < 0) { + error_setg_errno(errp, errno, "Failed to get flags for vEVENTQ fd"= ); + goto free_veventq; + } + if (fcntl(veventq_fd, F_SETFL, flags | O_NONBLOCK) < 0) { + error_setg_errno(errp, errno, "Failed to set O_NONBLOCK on vEVENTQ= fd"); + goto free_veventq; + } + veventq =3D g_new0(IOMMUFDVeventq, 1); veventq->veventq_id =3D veventq_id; veventq->veventq_fd =3D veventq_fd; veventq->viommu =3D accel->viommu; accel->veventq =3D veventq; + + /* Set up event handler for veventq fd */ + qemu_set_fd_handler(veventq_fd, smmuv3_accel_event_read, NULL, s); return true; + +free_veventq: + close(veventq_fd); + iommufd_backend_free_id(accel->viommu->iommufd, veventq_id); + return false; } =20 static bool --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809301; cv=none; d=zohomail.com; s=zohoarc; b=JepG9rdGDLWvkxrJVt8wyy9lln9mtN1OZnab0djY6+ZBU5s245EeVjv3vxOHu6kzF2gHMU+wohyAXeWCcTZKMAd4hq+We0+pc/W5YLqAWAbupn4EryJZrU0Dwjj37vmtftzNxApyTV7qkTeKNJY0Wj/fJp3RE+wAOXdks/1cZpE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809301; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=cCN+SNdahMWTqcQKACyPmGcrF0RK5lEl6zLjOWcoCMY=; b=jXIgLsy0iVlLr3IGZ54YKPEYAoFdPcImVt7IJ7eKIVkBdhCP8GNf9JekooODT6Rw2shwj6aL9CYcQo6/+Ti/T54ps4CjdYsxJVlWAEc85YI1hXw0izpq45bwpTXkN1Caug001pWIaXURAY/0d03foaw6Ir0s5tkpI1pMr9VCW9c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17728093016411014.9335665547188; Fri, 6 Mar 2026 07:01:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWeg-0003m8-R0; Fri, 06 Mar 2026 09:59:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWef-0003eq-76 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:53 -0500 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWed-0002JH-Jj for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:52 -0500 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-48529c325f0so2588325e9.0 for ; Fri, 06 Mar 2026 06:59:51 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809190; x=1773413990; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=cCN+SNdahMWTqcQKACyPmGcrF0RK5lEl6zLjOWcoCMY=; b=n5HVz/rq6nuEtZtCeaENXPm6YkbzoQRTDlBF3aOjWZWYOwVojCCwWVLsWP5rbpD/tv j3kceOVlKag3VzaQqQEd+O3bV1Py7wfL0xdERTL35Sa01BeZMWC/qWFAVJvZGyTDHXEk Zqj94nXMRzr/9QD29z16xnCda4kMI9SzieCGxOkLoZUephdT2tjTkpAY4MHSr1a04Xpv lgcrW8GBBQBqUDDJ9SrdCMAUbFclZuPRiNaTQYRYCgnLyXOKVhq/8QgG8MtjvCS6a1dv ONoJe/E6sQkZy2hxvHTf1//TLwI6WoZ2JiwGq7fpJ2cgpL9c/nJyVNFkjRo1KlHpLaTM Q75w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809190; x=1773413990; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=cCN+SNdahMWTqcQKACyPmGcrF0RK5lEl6zLjOWcoCMY=; b=OWSyOuzD/pnKV4G/Bn0roph0IDGv83BKd776+K4Ki7ZKgDMTWbPK5OGjUMslvkrFmB SyRT7SLFJbNLQo+9aL8Pb3qZwZyuwhAMER/qLFVnt652IHXzkxBWge1fAh8xpRmLA6Dt bz9scU3FLM12W3vQOnaUn2886T58oyf79o9OstrNcF2jQaNUGWAaF9ZYqsXaSh9LRwad x2j/b+EyMKB5OSBpV9ujfVQq4mvh10lwKk64kNk0eBCrNhbmrnET/vpsijZVqB630hhz /jeE0InqINwmoHNUZ8TqOGNENn+pazKxiR9BeHxb0VOmvUyQqCVM5TLz71lkkh4dygj3 bCrw== X-Gm-Message-State: AOJu0YyzNAxGik+qctsZykxLX8OOZLkpBAQCnv0L2Syuj7stJmbwdmM1 JBoBQUEavjTA0BW+DkIGk01e2QTvBkjy3vA8FKAkDZTp4sirzJ9gBHnY2/GwcBGMAgmHlf6JeeV XaLBs X-Gm-Gg: ATEYQzzK4UKyVGM1dISqiNJRvGogDySF58rxCooBTOs2lkWpZEEdBRqw0AJj1P2+G2z BH126PKWnkQtN29LGJz6oTq3JWtImcjTnPyS79h62ybvNdeGOq/+pyfhwLUfkVUDgqEuvJAE+H/ tWsy40Qoypa7G1/exw7sOqSdp1n5026S0hxgpP3wz7EcocPBY4Ne+lr8NQERSPnUHuuOOSERAT9 WUPpssCnf/2QSUokBwDrAleeZSSqNWze/bAl4DxCF1h6xBRLSufvGcyg9VubJNgDibnT4QoBggA HWO7SoglR+8Stfhi95yif58ZAgbccFuAwYoGGXQPuXWF0GEuZGu6PNsEEakFe5HVHX8fd6t9lRO HMWnox0kg3/7PoJ4b34pVowaEnC2sRR+6dvnT4g8n4HOUoiI/dQKfOJMk46jtA4xqzgetRv7Tuk CpmXVhBteCvlfzPrv92jwKjenhCLwTMe43UVTzAJyjG+4KXI6ocDP3B8SmgwP+Ze94KBb53E9v/ SLPwDPk9Iqs5NMpD9OO/6dwnI272DY= X-Received: by 2002:a05:600c:3b17:b0:477:76bf:e1fb with SMTP id 5b1f17b1804b1-485269587bbmr41502965e9.16.1772809189985; Fri, 06 Mar 2026 06:59:49 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 09/49] MAINTAINERS: remove myself as a Xen maintainer Date: Fri, 6 Mar 2026 14:58:59 +0000 Message-ID: <20260306145939.2162189-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x329.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809302912158500 Content-Type: text/plain; charset="utf-8" From: Paul Durrant I am no longer actively involved in the Xen Project. Signed-off-by: Paul Durrant Message-id: 20260224112215.83355-1-paul@xen.org Signed-off-by: Peter Maydell --- MAINTAINERS | 1 - 1 file changed, 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index a3245fdcd2..57524906fd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -619,7 +619,6 @@ Guest CPU Cores (Xen) X86 Xen CPUs M: Stefano Stabellini M: Anthony PERARD -M: Paul Durrant M: Edgar E. Iglesias L: xen-devel@lists.xenproject.org S: Supported --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809209; cv=none; d=zohomail.com; s=zohoarc; b=chKAtuC9qrJ+OnBV2/rCBvsZCvGKqRu6PN/BAofZyFVLj1ui8UDnk1WQGrDkXVCAIQUITslBfgjrP5nqnp0QQiCVreJJFzDTvJBB5JBsbwjnegl2masUYMDVss8cKj3w2wxn7w3aqtLGE+Ea3MhPHZJOxAH3XK170JbWoIGMlTk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809209; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=WmH46hjbMjuCGuK64rW1+BKahR52hA+ENLPSQFUcPqw=; b=IW15J6hOwgMfdBo9W6CC73uz8etYRQPngRkeftn3DsHgr7ndgzoBsPELqrh/2yTdJEU3Vl/gOBqnrshzXCjJmagzJUU2RgHBJvv0Oawg/sJA9KiO1hnty94ijcFU6rfiaDS4lCn1V4PRK+k6UtbcoipyTnXuc4gBBF+SLeoJRDM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809209652889.484613566409; Fri, 6 Mar 2026 07:00:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWei-0003o5-8m; Fri, 06 Mar 2026 09:59:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeg-0003iJ-11 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:54 -0500 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWee-0002JS-Bs for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:53 -0500 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-48336a6e932so60108915e9.3 for ; Fri, 06 Mar 2026 06:59:51 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809191; x=1773413991; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=WmH46hjbMjuCGuK64rW1+BKahR52hA+ENLPSQFUcPqw=; b=hKBORA+I0SI9/uGNXAjcL07VxF6w4p83BIZTyo3sX5HQ/0YffBLZ6pCOr6D6e1vt+4 NghcrtPEUNtkxESjWMSeNw/gJncr6wGS+/GspbJJXEmhHB0F99hc+9auESgLpatb8qPs 73XtrJyirYVeXbV23pySi2tFGbIKGYEa2KWAIUzlu2GoFz1PSp4OmumHKS3+NClDMASb V3FSQF3OxgT0E3/vO1lgqBG+FjPHlzaONESKmv3t957uqSuHgLef8swr5tcAOMnOjvef DfT02c9+wgQWEzV+w90JOdGWMPaijQhRugcO0PHF9OkSCd3+6veS4+ymOHdfHyozYXWe XujQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809191; x=1773413991; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=WmH46hjbMjuCGuK64rW1+BKahR52hA+ENLPSQFUcPqw=; b=XnlbsJp8V2/vM62tnoFvT20IACVZNUPxLRFHe/L6ok6yUbEVH0clubmhJhcbvmNQC0 Z9gDu/Xfx4oksUo8AtS8RWdxM82uuzCWPeKZXZomNdOy/X4EgvMlgenyhQijvMwDmAqT TuIwEgn4OvLxHIubPc2ueWwn+e0JrFSaMBgAe5LhxQ6cJH4Hy3uUrS6pqVoMAWcCVZ4I z27lZOBujVcJELc7yJRZ3nsUTAHbsukDI7EtLkTndvH994ltak5jL8S9Q9MxEuEnkAB8 d/usvd98hsIbq0rsmnIg4YlVEUF4i/rGYbEtY5lRjKzx77J6qyfmt4pifjsENs+fqUDD GH0A== X-Gm-Message-State: AOJu0YzIWGZp5u3fDeGVGHSyqMfnLhUN2FVU904TOtrS/ALdqrjDi8W/ ltIPZE+kz/gjj776UaP71wTQSD1qoCBn7+t6VjPkNw+VJl6hu4huHUEYatamQN3XBZ+Uh5YeV+2 IofPa X-Gm-Gg: ATEYQzxBNue9IQ4LYQMJ0Sf2tN2cqcdpx6gwop62OgeMCzJlLciFDvxin58INrgtVug gvdCn0639mcJJAR3Jg8NaOvZk5FfEJSoHRvbsHz6s7ZZ9T3S7sF/1xKkNbxA4gfvq5Ma2i5BxLR 67tAOq8Nv2voWrSDaSRaC2XvjdcyKwhBNLLt+3py/LGMtNSexwWXK5elAZqphURmNksLqn0m/Nj q7HWj3PBGjSCyIJ+1K2jBd/5WgiEIYAqnZj+azNZh/FxqSgOHphRToHChOmB1a8q+bUDMSTtA6s GiJP9ID7kBYd15M3zQewzwtOmVUofAUuP3opqqzSpp0Pc4jzdoS46DMl/V4rwDbtyskjTTK/B/F 8LQqvWRpnUBEerEfQmqhp4ssCp1dk5e2QM7/snLWtcqyqvJnAH2eWEBV4P+gkeea/mbAlepwpXW gACThOS1VOn0L7S4K5onPKMprrPfIi0aY6Zpizle0n0AKa+5E3fE8iER39hyupw8+a8TYfoJ8o5 r72bzEmGhzoCRaH2bNxtPA7cxzSQGY= X-Received: by 2002:a05:600c:3b8d:b0:47e:e946:3a72 with SMTP id 5b1f17b1804b1-485269692e2mr41331145e9.27.1772809190848; Fri, 06 Mar 2026 06:59:50 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 10/49] MAINTAINERS: Update Clement Mathieu--Drif's email address Date: Fri, 6 Mar 2026 14:59:00 +0000 Message-ID: <20260306145939.2162189-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809211211154100 From: CLEMENT MATHIEU--DRIF Switch to bull.com email address following a company split. The previous eviden.com address will remain active for a few months. Signed-off-by: Clement Mathieu--Drif Message-id: 20260302143403.1778326-1-clement.mathieu--drif@bull.com Signed-off-by: Peter Maydell --- MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 57524906fd..4e428dca49 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4003,7 +4003,7 @@ VT-d Emulation M: Michael S. Tsirkin R: Jason Wang R: Yi Liu -R: Cl=C3=A9ment Mathieu--Drif +R: Cl=C3=A9ment Mathieu--Drif S: Supported F: hw/i386/intel_iommu.c F: hw/i386/intel_iommu_internal.h --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809199; cv=none; d=zohomail.com; s=zohoarc; b=LKs7+sMMnq3NxTgd7dz9aGBydAoYc8xykj2IEJxUi/XLbf7kNjEDXT9qQ9ePBnVgLMqlFDVvUa9WSgJsenz3Xya4LRKUR3w1WAxGMjTDEe+x6vhmVI4T0qBy6hTe4aP+aBnKw0fPWlOvF/u1febv4Hm9BvFzEu0pdDl8YyIrovk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809199; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ZX+SSdfmU5nT1e9Fk2QahSpoug4gowcMeR6aG8EzY+A=; b=V3AImk5Ey17W4t/PuzXegwS3R6+Jo/36DIyhumqDjZp5Rt7/A6rSEP3ZdHVzq+yWze+BkzUucdpDMngkGkvz+7aMzsPxmAShi9Ah7ydBZPVvTvf3Zy9WP7n28lLJHJZefCkjIuV/YmzQNpJ9nPqRSR/qulXLBg/1U23/WTKEV34= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809199330674.8416654224719; Fri, 6 Mar 2026 06:59:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWei-0003qN-T2; Fri, 06 Mar 2026 09:59:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeg-0003mE-QW for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:54 -0500 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWef-0002Jg-7W for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:54 -0500 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-483703e4b08so91110475e9.1 for ; Fri, 06 Mar 2026 06:59:52 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809192; x=1773413992; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ZX+SSdfmU5nT1e9Fk2QahSpoug4gowcMeR6aG8EzY+A=; b=bYA4fcIVdzXm9nWDWYO0+6H0esUiHsNPR8yK0pYooFFh5MiFikl/mC2Enyav/YeUab TRclOmbgrLNm5wyxcVQpjItdsD4X4C5Y8RJsXOPWsdJ26P59VgisMppjd0PP1VZllifN T9bwmWx/FWPm4rx8AKX1uY2V1A4eoqdII/tXHI52UAHGrBqyhvDFAe2A1euWA+enkjM0 jxlyF/D67CodB2WHUq+o4wC38wV+wFp/Q25P7Hm35vuWKoTCU4uwZHnWS9L3ekfdYB8q mdLGt4IXy1F3f6b5H++0C4vdq38qOoqUjjOGrldCm+Xi4yB9w+ZZVtI3oKB3EWBuAxNC PA+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809192; x=1773413992; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ZX+SSdfmU5nT1e9Fk2QahSpoug4gowcMeR6aG8EzY+A=; b=kJR+/I2GKMdx8ZCjUmJo3Rr2L6VW/2Qs2Peqhw3gUCJ2X7FqaWTzKcJdq+5wbSn0nG l+avU5AhjxDipTxwbO4rldDobWyKRBq0UWjQmEwfxV7zktrIYkaewbHlLj1rHKN5/BfD otsPOK3nbJB92WLzsXAavnrXzQIXEtCA/P810QhesIbfkLaFEyZ6OraZXT/ohIGXdPHa Cen9J9Q7LPRFIvFisYkFW51U/NLbMpmUw5ElK+0q6AXLgvgAtLRR196qUM4qLQfexDEq XwzTItzNz5xeF8G7jKfS4qieXIoHSPMh4G5ftGOS9XLbUsTUndEhRV/zQ0/FEjbf6opu Xfww== X-Gm-Message-State: AOJu0Yz31iJ7n/rjNaxW5C62FS2x7740SgbqWrSE+l63gWIV6Zgud9Nu iutdaZMtK3m6F16eeuD/6tRJSNDvLh4k52HJBRL5xuigKEdjpsLiRzPggSjuQm2jRCtxLdZP1nN 2fBnc X-Gm-Gg: ATEYQzxoAaJUMP8UCyWXdvoS905w4P10xrZCB/o3jw39VjhPPDZ2WIEbTu9dgtybuZY B9OKKhmp071sXT+k9JnarEhaj2CN/0F63h91EIEMHA87crW4+e52gr8u4SVmzuP1mR37rphY5fT MbFIWAfChhKO2qmToS7JrMBrhSIhVq/bGmAO7HmAbgck+Foq69AOR8rqmvJm4ROUuKxXeTvuLnW hbpm+WzK6p0HKWQCrl3pmFkM9PPjRBfswhIdtAmZgNy5xc568tp91Vz7DNwVcQwtgCtQ4W11Vzd InN6xgxLqKpNfi0PlY34DtHm/vNnO/h5/fbiWXBe3mUOG/gA6sgfiCWkKGqu2bk/nLoc/jiz4zq MEeeX04eq3izuNVweUT+a8XNBa+96m7oZQhKide7jSnL92jiLW5WfsfPlXBalj4UlOW/MQGck2Y dnQqGrw5eSt1neKa12XvQ/MfhZJJh2Hwvla+Bdd0vMxaP2dwOn7qkWgF14i2aeclZGSIpqaKYDB flCxlP3ez0CmLmYjG7hx1XPHvuMbPc= X-Received: by 2002:a05:600c:8b6f:b0:46e:59bd:f7e2 with SMTP id 5b1f17b1804b1-4852674e8f7mr40228525e9.11.1772809191655; Fri, 06 Mar 2026 06:59:51 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 11/49] system/qtest: Support comments in input commands Date: Fri, 6 Mar 2026 14:59:01 +0000 Message-ID: <20260306145939.2162189-12-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809201382154100 Allow the qtest input to include comment lines, which start with '#'. This allows writing an input file for qtest which includes commentary, like this: # set up TCR in bank 0 write 0x1001000e 2 0 # TCR TXEN write 0x10010000 2 1 which can make hand-writing or annotating reproduce cases a bit more convenient. Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260226175700.1319767-1-peter.maydell@linaro.org --- system/qtest.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/system/qtest.c b/system/qtest.c index e42b83ce67..cf90cd53ad 100644 --- a/system/qtest.c +++ b/system/qtest.c @@ -71,6 +71,7 @@ static void *qtest_server_send_opaque; * * Extra ASCII space characters in command inputs are permitted and ignore= d. * Lines containing only spaces are permitted and ignored. + * Lines that start with a '#' character (comments) are permitted and igno= red. * * Valid requests * ^^^^^^^^^^^^^^ @@ -370,8 +371,8 @@ static void qtest_process_command(CharFrontend *chr, gc= har **words) fprintf(qtest_log_fp, "\n"); } =20 - if (!command) { - /* Input line was blank: ignore it */ + if (!command || command[0] =3D=3D '#') { + /* Input line was blank or a comment: ignore it */ return; } =20 --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809528; cv=none; d=zohomail.com; s=zohoarc; b=fFXZKTJ8/D9PEW77hK4rntROtjpp3w+9lqA2YlmVNTVno76oeCHqCZ4EfNAmujLpxEDaHfj+orLGjZPicwVZhzafYSh9dCtkw7qCtuTh2A/nFSRBrJjv+r4N7Zm9FHiU54QVl/cSP6ODTCPjE7oJgEEGWwckwwuZzF8wfkUwCtk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809528; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=gJ7VFJWuSeydb2nt0OqrAAoYzkq0sPNDXVosGYHOAwY=; b=jzl+dNnE4B0hOYRJakLWi0JY+lrOJS+msqtZrVuFS9vPIzhG96iYK98prLkZYz2ZpSjt9INxz15ztVzXjBnrzSQ9XAsr8vb7KikALaH4m0JbvbwSFaEGJh4Xsxioxegjilfv/b9AVpOkNbQUcKb7D2qdvksfl73KPAP73iBkJvU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809528942615.068646255794; Fri, 6 Mar 2026 07:05:28 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWej-0003rx-AS; Fri, 06 Mar 2026 09:59:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWei-0003o4-5T for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:56 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeg-0002Jv-AD for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:55 -0500 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-48334ee0aeaso77578705e9.1 for ; Fri, 06 Mar 2026 06:59:53 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809193; x=1773413993; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=gJ7VFJWuSeydb2nt0OqrAAoYzkq0sPNDXVosGYHOAwY=; b=mc744WCU7SIWY9hJKvHwuVWYddEqILxPAjsvHl3zL84TlLZAwCEn8SVfw1IbtZRq0z m2T45e5F4rhMF8RdrjAcCEdA4LXXQlrwinx1/eCK32PkN+4yFOBKnFrYY+cEbpZfw1wh 25eIcP0lznXSk9hMF9luBSfi0z4FOiZUv4y4JFVvMSAMqDlXL1sjHs9pc3YoOYEF9mWG Od6H8V7RZGCBqPM4Fx/c54ydfCbV0HHVa37h+ee5xjWqDflybedy3cxzPwwa6IzJnl69 oAZ2uWtDYY5XIbvol0KdzEPGj/4Szn+4hSw8GeqGVvFVQnZBYJz6WrAKMXtk853AgYi+ x8nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809193; x=1773413993; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gJ7VFJWuSeydb2nt0OqrAAoYzkq0sPNDXVosGYHOAwY=; b=bjQFB2D49HXWt3MPXubZgVEv+dPRVPxSAH2n16dwmDqf7WoiInPJcL+mW+jYlTgqiU efYlb3o5xWYbTjGfUbVzAaObgpepf29GISW1qeyMDnl6FmpbSE2fEO0YpnQEjlnRhEKL Hmz9tquz4b1qZK26EtQ4pFdG3tSxcfumIrVfpWho6jhowRn5VmpP0oUpw/vkLkuKO+OM PPrrfdWASaYZ1iE4RcltN6J3G9e+G2siTwl4FQ5BqUNWyvgMnWzQN2xrNybexSPLmxZP /+L15HlmAE6T6THh1FKL/k3I8zgUmi2fGsJ8x2aP+UE+KQWvs6iRmO96pc6itVxMuiOe 7pBQ== X-Gm-Message-State: AOJu0YyZYxpIZDPcv0286K/ZOAo8jNHpNkg1Dx/b/NP13K41EJQVKOiy Qn8gjCR2aFWseUN3wYX3Lve45phfbDl7X8ky9CzMXy92/oRGmmzkBuoKMAoeVz1UBUceTMvhaZu 8HmqV X-Gm-Gg: ATEYQzwga8B1iKTjSGl1qvhL/eUCrAY9N1qy+sQ0VlN8czTIQHMioScqv41HKq0gaS/ B+vI0BqIXm6KJPLzhGJ/L5TpejPd6/cN3JW6CwUu4tU8RBk/Vbn7vX1+6lKnZAMUU4ciH1T+iA6 LCqUDaXf65LMIIxrlERBYWyIBic8CTWOuvB3flDicELXKhQVDlfYQuixxz87kuria6Xcl0tzraa cVggLrUE8B2ZONMipKdLR5Ez+Hb+8bMymXc6BBPOvgpQ/jU+SfPLRkXes9MVB08Y9zAIOS/sO6M F+R780yOOMJrvnW5BfkQPA1GT4mFrd/0QAePpLB4NctV9wlRHAIDMehFWLrnNCxJ5AQAxviQbCF 6WxQ+ZKpcqh4VPG1Jz6fyd/XEFsU9w04t8xu4Q5BkqCksfPsOP7Ao7eU+AUVUymDIn+Gt/bscw6 3zSkE+LK+NdbyiUThJJdX64/mP0d66P0/pFRNXn+f+CloaoZQvxaNuO0BMo4nb3xW9E/49dQ9SH IuNoElch3yjoL9XHw2ndCI6rnFgrqo= X-Received: by 2002:a05:600c:4e89:b0:480:1e9e:f9b with SMTP id 5b1f17b1804b1-48526951acemr36430665e9.16.1772809192516; Fri, 06 Mar 2026 06:59:52 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 12/49] hw/net/smc91c111: Don't allow negative-length packets Date: Fri, 6 Mar 2026 14:59:02 +0000 Message-ID: <20260306145939.2162189-13-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809530361154100 The smc91c111 data frame format in memory (figure 8-1 in the datasheet) includes a "byte count" field which is intended to be the total size of the data frame, including not just the packet data but also the leading and trailing information like the status word and the byte count field itself. It is therefore possible for the guest to set this to a value so small that the leading and trailing fields won't fit and the packet has effectively a negative area. We weren't checking for this, with the result that when we subtract 6 from the length to get the length of the packet proper we end up with a negative length, which is then inconsistently handled in the qemu_send_packet() code such that we can try to transmit a very large amount of data and read off the end of the device's data array. Treat excessively small length values the same way we do excessively large values. As with the oversized case, the datasheet does not describe what happens for this software error case, and there is no relevant tx error condition for this, so we just log and drop the packet. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3304 Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260226175549.1319476-1-peter.maydell@linaro.org --- hw/net/smc91c111.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c index 3420d8e28e..3b526524fb 100644 --- a/hw/net/smc91c111.c +++ b/hw/net/smc91c111.c @@ -30,6 +30,12 @@ * LAN91C111 datasheet). */ #define MAX_PACKET_SIZE 2048 +/* + * Size of the non-data fields in a data frame: status word, + * byte count, control byte, and last data byte; this defines + * the smallest value the byte count in the frame can validly be. + */ +#define MIN_PACKET_SIZE 6 =20 #define TYPE_SMC91C111 "smc91c111" OBJECT_DECLARE_SIMPLE_TYPE(smc91c111_state, SMC91C111) @@ -289,7 +295,7 @@ static void smc91c111_do_tx(smc91c111_state *s) *(p++) =3D 0x40; len =3D *(p++); len |=3D ((int)*(p++)) << 8; - if (len > MAX_PACKET_SIZE) { + if (len < MIN_PACKET_SIZE || len > MAX_PACKET_SIZE) { /* * Datasheet doesn't say what to do here, and there is no * relevant tx error condition listed. Log, and drop the packe= t. @@ -300,7 +306,13 @@ static void smc91c111_do_tx(smc91c111_state *s) smc91c111_complete_tx_packet(s, packetnum); continue; } - len -=3D 6; + /* + * Convert from size of the data frame to number of bytes of + * actual packet data. Whether the "last data byte" field is + * included in the packet depends on the ODD bit in the control + * byte at the end of the frame. + */ + len -=3D MIN_PACKET_SIZE; control =3D p[len + 1]; if (control & 0x20) len++; --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809215; cv=none; d=zohomail.com; s=zohoarc; b=PjhgxZ6tAVtFvN1XZrUBysExpq1WpWJ+t3jwCEbv2vRJlrXkli6yrQkGTTdJTa+17mcQx+02h5FEfHcqtJC9vpJNw4/Kz80M3BYwBt4e6cQCypr5nfAfcam0yrx+PZlSoUDdm5GgtUVBjBym8bGHMjBDm/uFxzsGj6gLQv6sF8g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809215; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=PetfWaAVLrOraWUWdnGH3elFRocTA7E9gKRkC93rjbc=; b=ASzvJFrmVax2TIGELDt+GaxxqQbty77VpV/zJntXkTOyAkrOK1ik4qpj39g/4EIcIZUtnbCdfsvzztDlG6DI4VBkVopqu0dWbJmAGEwpVm7i7c6NEF8LJMI3FSiqp64sLS9n91reYWOnt4oaR+L3YdTgGusDOqvUyqnTzCnYrkI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809215082861.5009358203955; Fri, 6 Mar 2026 07:00:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWek-0003sp-0c; Fri, 06 Mar 2026 09:59:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWei-0003pv-FE for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:56 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeg-0002K4-TZ for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:56 -0500 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-4836d4c26d3so73890645e9.2 for ; Fri, 06 Mar 2026 06:59:54 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809193; x=1773413993; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=PetfWaAVLrOraWUWdnGH3elFRocTA7E9gKRkC93rjbc=; b=OFt8I+z3wNyb0t60iB+c5xTqdH4nBScE8s3JvR8Fy7Lx8NfgySvAr+zd5IJrVy8OpQ qORdwMDIprmpaOPt3BM/g9BzZ9kWQnOIVaFegJWqEbfnUNKlDyWdwqvU6JDpAY/JPI97 WveVP8KG/JuJxjYBMhdBReNqSrRPCA+8BiVgcJb6pF14at2RqbNfLz0EW6UDeTTEl6/n /ZbYABe0OsjVTxaSNRirpCc93hCXh92SyR68R8MYQQyDM1v0H6+w72uCUBt9B3yWUM3j re0ya3UzPWO9Ff1KRV6BNkQ3OjC9S0X6KjmMUl2YuaYgrDhzEzuuJdoKqsQBrU2UoWD9 daww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809193; x=1773413993; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=PetfWaAVLrOraWUWdnGH3elFRocTA7E9gKRkC93rjbc=; b=fBXr89/cURNymRaEfOgo8KYEMW3U8SyeiVL8OT7FCoMrr0K4G0YGPb76ckWh2CzZrd v90a9vuYh+cIcxvD4oJSuIPydbMMIELRJ/0NAwUmrzCIkfwfpLwuMZxDqpV2vm0WH4Am 8DjsejcFw3jKxApD+1nkf87T/J9gw3ZVVyvKv0d1uaO+pG6avmNgedqtlJhpfegK81hW xK664qO9SN9yTB+YiJSx2wilVFJlrMW10OO2KtaBv6LgjPYJpUydnMsqSVRxRTljzTWa oB5gtfhiQKthVr6RlxIs8g1e+FtzQ+llcXLByIkbqQUukKkFor4Lam81tv/j0OOu64I1 TVyg== X-Gm-Message-State: AOJu0Yydr2UALgvxBDcMtHhsIXzTwwzLLC2lNSi1jQXGC21WbibWB3vL SXcSxJcAzJh/uLbeO+2ZM2+VMJmKxp0z1AeeEOHzHJPqTZXuToGsSfdV3Ffab8KDua0m0WECFzE ThPd7 X-Gm-Gg: ATEYQzyej+P0nyXjorOjC5r8j2PJEvz5mWSDBcUaCWSPsUzA5dSupuFYcvWEEi2PKj/ xyiIYORYc+LGtrn4cHkLQW69YKuGJrDuh6Q5zaQeiVHH7XVY3Jda4OEUs4uqLE/+YNlLg02woAb owgwLcTACKbxp/lLdcEihUZ7ZkEcgXD7acmsMMfNSGU33kOIi/QRM99j/K0aVS4+QOOzJY8rOiq 2xSeQXQkT9VxISWwPL8/H51DeFwpE6O34MjXZtIQagImF3i93LmoI1VtHCVCHBfeMsyQaL+4s8L okaPqnGOyZhXv9yBzsklE0rDGelfRBxxwZW1j0btOGa7U5NdeUMNS9dUQCULDcm1IeQHGp1CV4H xVWKIv2P6i9KmNngIAo6De7fJhj7uyBJdXdYk2/f0TJTSmyVUN3cAcVbPewDCBul1z9ij1AMYxD 7p2g891G1i6wnipOIlA7hrblzScMkX8Qr27BIzh3gslylWnOc11pP7kfUcH/LgA+kVt1RL79qxk s0PWPafmNiftLh+TKbnUYlQV6Th4bM= X-Received: by 2002:a05:600c:8b58:b0:477:a54a:acba with SMTP id 5b1f17b1804b1-4852695af23mr42278935e9.17.1772809193326; Fri, 06 Mar 2026 06:59:53 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 13/49] MAINTAINERS: fix magnuskulke email-address Date: Fri, 6 Mar 2026 14:59:03 +0000 Message-ID: <20260306145939.2162189-14-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809217542154100 Content-Type: text/plain; charset="utf-8" From: Magnus Kulke Consolidating email aliases. Signed-off-by: Magnus Kulke Signed-off-by: Peter Maydell --- MAINTAINERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 4e428dca49..856181c375 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -586,7 +586,7 @@ F: include/system/whpx-common.h F: include/system/whpx-internal.h =20 MSHV -M: Magnus Kulke +M: Magnus Kulke R: Wei Liu S: Supported F: accel/mshv/ @@ -601,7 +601,7 @@ F: accel/nitro/ F: include/system/nitro-accel.h =20 X86 MSHV CPUs -M: Magnus Kulke +M: Magnus Kulke R: Wei Liu S: Supported F: target/i386/mshv/ --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809240; cv=none; d=zohomail.com; s=zohoarc; b=P5/+aiNlBJ4ACtY4oyZXsaBt7yeDuaoPKpQIxpQfRB7LJV6C9zrVmzuJniPURLI9VtjpNcC8MzWWugrmgUIcWbDOWMlkRl3NSNKcl76I3xbz2lfHPG1sgqXXWDhmRz10kQp261gK8fTWg1y/o2sAEXaoWt0+aj58uYzlyqT3qEM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809240; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=hDDY3r22JGwcDao4tzCI6uIgo6JsYupYAptKIjoTmEI=; b=JbkI7HeBmQPhQxS+JiKOdtWZ7z2y1OYTQStukwAHZWmImJGGHjMSgj6usE4WOv3SXYIs9sED3KkWgKVuEQ27cj/EOZPmTLxGyNs5QCzOqfMkxjlfa03tyTdWjlNnWpXrsYKowE2RcU2r1lf6lwqxCJfDJUi0Hp917uKXEJRESG8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809240423350.7477680783512; Fri, 6 Mar 2026 07:00:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWel-0003vd-Cy; Fri, 06 Mar 2026 09:59:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWej-0003s7-C2 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:57 -0500 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeh-0002KO-No for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:57 -0500 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-439c5b40f60so2778934f8f.0 for ; Fri, 06 Mar 2026 06:59:55 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809194; x=1773413994; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=hDDY3r22JGwcDao4tzCI6uIgo6JsYupYAptKIjoTmEI=; b=c5S+Clhw8rRYs/hsr5ibBIIkEVaKK/prMTYBIOeYLvA5Kb7na9bKvg6zfjWtEvZjJn kZjejH+Nrxhl8GVh8qWfuLEn/8qxtx4dGeLnnG1Q/Lc26wma70XMC8//9h87YqBdwtdN tZUuP42gRv7wsjosqGAJ9ekMPFWo1ZwqktltO9O9BqNNU6/CB1tpyrIGmJIL4mvj3R4X 9+dZUz/vav5j/wlv1Tb8t2kwCIVkgSgABoopAbCIACgzeoYkWgMTUdOwxWtK5ZEQJvCq lhz5Z9c5tnvO1KJLkfvM899M7+O1dRvOYHLobaKApc+b4HauEKfmgABnnVnoJMY19n49 EVQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809194; x=1773413994; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=hDDY3r22JGwcDao4tzCI6uIgo6JsYupYAptKIjoTmEI=; b=hEMrxM9pMwX7SDqMBaHIPDGa9lXF3/+toMutVt073hLm3HPYNJk/VcU5PXKbKZ3Z8l SFUvPN7huEKeZ+gLic6JcLAM1vylVvfURkmE7IJwRBeZyzhr0Y+R4ygrAnSa/sUDnSZz 9rdnmQpkSlVpAD1Is2QkYMnKkaOBSa6rOpEVRCs9fB8JeKoj/zx6qUrreN5nBI6dOUmK Fn81Zhd04hsxq2X7EEH4Q2TtYCuuBWro5ITPatE3Ec0zCH6AXaxPECrDdC+XVPe5S6Mo JHyMmhyFsxmm74/vgGkcS7l+NznafV+ZlfZybPVaSvcEMvLmUehc/sko2H1S4EdZYiX4 1tpg== X-Gm-Message-State: AOJu0YxPSNRbia9fdSh7Slx6aRqrFbiUVsSuwFwB3n8MnoCcUSef1kEw TlLR0vC+bxZNT3n6pBoCHCwU/4/kf9GlM+2ihnBWYzt0/35L2YbXVFUiTFXsCeI4eUsTssH7UId FDyZu X-Gm-Gg: ATEYQzzj2oEyelApZyJi2kWPgOODwqaUgvvRx050V9CdYB0KeOpWXNzaBlx9NpPpoLU llq30azFX8EgmNON2hvQtxNqjIDNr4cPNNJg9dDKpPpl3+1eIbj12HuZZLDOEa9NzK+LMsXmngT FQT/u6Jzf+eLWTOuFT19dU9pkyXEOiSTdGXL36vdGylSGNpRXFN9McJKPCiWFRwR0IBjPDVkadT 2TbjVkK7GTWsNjoKKYngNHWCHlXoSlGkiW3XZ4JDF+GPznfuGtGhqJM5SSn3ELcDmSOLLuBB059 3idZwShhV27pVquaWW3Nc3duTNtu6vdpe+rjVqwK9YfEElbb8Zox2n+2q1RxHHMYLC4hP47Zt2L /rTpfi+jqNqd4AgFO6iUmRMc5X5hVdXJrcgiDV6IhpmJw7nGXRpupuU7vmJ+b76RWlsBiNm6Yez fXrSM8ePHp2IukyLrwn61o//bCxToQ0aOjnM4IJOxsdhGggpAHojTv1FvS5/kT+jNbthr5NUZ05 jw6imOxTKOYXhENQYk9awpzoLbK1hLJ5YuHgKjilQ== X-Received: by 2002:a05:600c:46c3:b0:480:6bef:63a0 with SMTP id 5b1f17b1804b1-48526959433mr41222625e9.21.1772809194172; Fri, 06 Mar 2026 06:59:54 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 14/49] vmstate: Introduce VMSTATE_VARRAY_INT32_ALLOC Date: Fri, 6 Mar 2026 14:59:04 +0000 Message-ID: <20260306145939.2162189-15-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809241797154100 Content-Type: text/plain; charset="utf-8" From: Eric Auger Already existing VMSTATE_VARRAY_INT32 requires an array to be pre-allocated, however there are cases when the size is not known in advance and there is no real need to enforce it. Introduce VMSTATE_VARRAY_INT32_ALLOC as we currently have for UINT32 and UINT16. The first user of this variant will be the target/arm/machine.c cpreg indexes/values arrays. Signed-off-by: Eric Auger Reviewed-by: Peter Maydell Reviewed-by: Peter Xu Message-id: 20260304101625.1962633-2-eric.auger@redhat.com Suggested-by: Peter Maydell Reviewed-by: Peter Maydell Reviewed-by: Peter Xu Signed-off-by: Peter Maydell --- include/migration/vmstate.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 89f9f49d20..62c2abd0c4 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -447,6 +447,16 @@ extern const VMStateInfo vmstate_info_qlist; .offset =3D vmstate_offset_pointer(_state, _field, _type), \ } =20 +#define VMSTATE_VARRAY_INT32_ALLOC(_field, _state, _field_num, _version, _= info, _type) {\ + .name =3D (stringify(_field)), \ + .version_id =3D (_version), \ + .num_offset =3D vmstate_offset_value(_state, _field_num, int32_t), \ + .info =3D &(_info), \ + .size =3D sizeof(_type), \ + .flags =3D VMS_VARRAY_INT32 | VMS_POINTER | VMS_ALLOC, \ + .offset =3D vmstate_offset_pointer(_state, _field, _type), \ +} + #define VMSTATE_VARRAY_UINT32_ALLOC(_field, _state, _field_num, _version, = _info, _type) {\ .name =3D (stringify(_field)), \ .version_id =3D (_version), \ --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809428; cv=none; d=zohomail.com; s=zohoarc; b=QeHHGpON9iXFCZxG2hAJt0hIgXO0SKBdPgBbE6NYEZUntMzhPH1U5f9jKvgWyPW5o/8TL+jaNidzGdwYYpPBmODS/HUU11StBxlEFS/kPnEkH0BHzexuMLfNpvJzUjIy0QgCTBwUI4RhHtvqIWrwM6zylzU40QvFpdZPhSNGGhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809428; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Y9FYmM1iM3mMUsFWjuMRiz+BgnAGri/tKlfBQbVr1MM=; b=hIUYzWVJzxjfSUtO+lyvYGQYXkFpvDNJiQ/MCF+B95NNRN5hjfAAkYYYGJb1wiD05918x/0285x5fTSrDfVWo2R8ZzeRLvQ3y/vPaDg8CUgQXmqgJzR+1ijwu3P0ZSuVviJ8sYqx4syxDh5Lj1SeaPFTKSnaArKOqSDUnxmdkQY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809428952521.3604083249037; Fri, 6 Mar 2026 07:03:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWel-0003we-QZ; Fri, 06 Mar 2026 09:59:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWek-0003tb-L6 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:58 -0500 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWei-0002Ki-N4 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:58 -0500 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-4838c15e3cbso85638975e9.3 for ; Fri, 06 Mar 2026 06:59:56 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809195; x=1773413995; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Y9FYmM1iM3mMUsFWjuMRiz+BgnAGri/tKlfBQbVr1MM=; b=kCVVvaJsUdtWTVRdNaJTXZxQg914IxDT4qWo1+lLTw8tVM3p22IhqWY47TsINhWliw Owf+KXjdMzBtr7KL3D0suW8t/1Tr8jEE9aVjyl8Lm6clWh3+jQAiON3yTd/MHFLxlDjy yKmdPjqxY43MUt39FTm4ZkH/wYY1lfrKjPO9zq59w9cNQTuY29jvSEOU3T7AH3VeGLzD CVgmQihZvcsV3k9Xoyk52buLsVZKEq+SdJO+73fyRZ/UEUSexxuWVQ3NoaCjmEEWi2zo 2RsI1lUNhYgLFl7V53cSXWm2vQi5pTZbEKT4Wwes0HYzNm0CS8u2n7AvAXHc5NxsHqc6 3KBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809195; x=1773413995; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Y9FYmM1iM3mMUsFWjuMRiz+BgnAGri/tKlfBQbVr1MM=; b=HQy3LrIFMRdpjVP7xMhmGV3H5H5RLbdWSu+Z9d1ZlFwCpXbglE6fK6+BWPP7MfzJg4 D+i+Ay+yVyv0hHD8rKfpxw2ExYINrWDlu5TFckjTobEwiNpXiRisZh5ORHYdWiBeDxpM bHqGUnQGZx5va7SsAVxjUn4Oq3pBffBysBVDIYcarRS95uGr7Q9M/Jwr4geEhSsPLQ12 1jtPh/23kELb89uHm3k9m3w8w284G9rIHBRUup6qEGamuco2ORS1nUXnDA1AeDx5ppJf CIuGdiuBA1TAk6gJ+5dDLztZm10k4gCD5R9mFpjjgF4CdQ2RC1dsZ+bu5XUde0rRn81r HUyg== X-Gm-Message-State: AOJu0Ywre8vWmWy8Y1HmW4pKEYvcMBV4sZ0sz6c59bvMrda7TjYEwKgY YCRIIjsqiI1jmAspUzKqwcSFnmgGo+11mQrFAnjiC3DeHnh+gaMbYIJSYCuFvpTDSo3yN6y6MGn nIvJW X-Gm-Gg: ATEYQzw8so8RAYj0Om2iXxmiY7xy3j/J2Y6mAcc5rUjYy6Wh5mcmUp/AL2uCC1wO+4A 66zh3dQgdg4XfqCndFFspHI0A5Xnc27DNPNkLfCxdpESSyEYo6SBjIGu1sJiZ0C+7rZmIe8VGUm BeYZ3LY3IvYegcl8AlLxi3xCuSFDEuxLe1Y8aS5dKjr0kcVoTE3OqhABGH4EJM3pdOUj3VYpklQ pLxPR0hT1YsnIzbOmq13naHctEycz2AHKz12avsdNtAauz/Q3WAUr3UowKkYGynJ9UOze26AyLt jvEdDKCI0gpIqsPjNYPeTFKPiOjQTqOaJPXrRl44i+38mqf794MDmazoNMHqS9P4d8KMHXSBhPY d5n88njleNLd/SAugYP6LGutLKaYTvgQS8NM1RIhxX7TnlM43uyrWasDFawjmRaAXBGVpuDYIf6 t8F/scYYeE7mwR7glbOxoEX6XCkCeO1p5FkrXdU4e2ykYqVjefwsOWKmokrAyaJqMKM6dPU3eYV 4RiSMTMR2LiUC+p22sEnXJy5n1aFZQ= X-Received: by 2002:a05:600c:870b:b0:47e:e8de:7420 with SMTP id 5b1f17b1804b1-48526957c7bmr39167335e9.22.1772809195017; Fri, 06 Mar 2026 06:59:55 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 15/49] target/arm/machine: Use VMSTATE_VARRAY_INT32_ALLOC for cpreg arrays Date: Fri, 6 Mar 2026 14:59:05 +0000 Message-ID: <20260306145939.2162189-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809430842154100 Content-Type: text/plain; charset="utf-8" From: Eric Auger This removes the need for explicitly allocating cpreg_vmstate arrays. On post save we simply point to cpreg arrays and set the length accordingly. Remove VMSTATE_VARRAY_INT32 for cpreg_vmstate_array_len as now the array is dynamically allocated. Also add a trace point on post_load to trace potential mismatch between the number of incoming cpregs versus current ones. Signed-off-by: Eric Auger Reviewed-by: Peter Maydell Message-id: 20260304101625.1962633-3-eric.auger@redhat.com Suggested-by: Peter Maydell Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/helper.c | 5 ----- target/arm/kvm.c | 5 ----- target/arm/machine.c | 45 +++++++++++++++++++++++++++----------- target/arm/trace-events | 3 +++ target/arm/whpx/whpx-all.c | 7 ------ 5 files changed, 35 insertions(+), 30 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 6bfab90981..7389f2988c 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -265,15 +265,10 @@ void arm_init_cpreg_list(ARMCPU *cpu) if (arraylen) { cpu->cpreg_indexes =3D g_new(uint64_t, arraylen); cpu->cpreg_values =3D g_new(uint64_t, arraylen); - cpu->cpreg_vmstate_indexes =3D g_new(uint64_t, arraylen); - cpu->cpreg_vmstate_values =3D g_new(uint64_t, arraylen); } else { cpu->cpreg_indexes =3D NULL; cpu->cpreg_values =3D NULL; - cpu->cpreg_vmstate_indexes =3D NULL; - cpu->cpreg_vmstate_values =3D NULL; } - cpu->cpreg_vmstate_array_len =3D arraylen; cpu->cpreg_array_len =3D 0; =20 g_hash_table_foreach(cpu->cp_regs, add_cpreg_to_list, cpu); diff --git a/target/arm/kvm.c b/target/arm/kvm.c index eaa065d726..555083e7aa 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -864,12 +864,7 @@ static int kvm_arm_init_cpreg_list(ARMCPU *cpu) =20 cpu->cpreg_indexes =3D g_renew(uint64_t, cpu->cpreg_indexes, arraylen); cpu->cpreg_values =3D g_renew(uint64_t, cpu->cpreg_values, arraylen); - cpu->cpreg_vmstate_indexes =3D g_renew(uint64_t, cpu->cpreg_vmstate_in= dexes, - arraylen); - cpu->cpreg_vmstate_values =3D g_renew(uint64_t, cpu->cpreg_vmstate_val= ues, - arraylen); cpu->cpreg_array_len =3D arraylen; - cpu->cpreg_vmstate_array_len =3D arraylen; =20 for (i =3D 0, arraylen =3D 0; i < rlp->n; i++) { uint64_t regidx =3D rlp->reg[i]; diff --git a/target/arm/machine.c b/target/arm/machine.c index bbaae34449..d3d4f2ddc1 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -1,5 +1,6 @@ #include "qemu/osdep.h" #include "cpu.h" +#include "trace.h" #include "qemu/error-report.h" #include "system/kvm.h" #include "system/tcg.h" @@ -984,11 +985,14 @@ static int cpu_pre_save(void *opaque) } } =20 + /* + * On outbound migration, send the data in our cpreg_{values,indexes} + * arrays. The migration code will not allocate anything, but just + * reads the data pointed to by the VMSTATE_VARRAY_INT32_ALLOC() field= s. + */ + cpu->cpreg_vmstate_indexes =3D cpu->cpreg_indexes; + cpu->cpreg_vmstate_values =3D cpu->cpreg_values; cpu->cpreg_vmstate_array_len =3D cpu->cpreg_array_len; - memcpy(cpu->cpreg_vmstate_indexes, cpu->cpreg_indexes, - cpu->cpreg_array_len * sizeof(uint64_t)); - memcpy(cpu->cpreg_vmstate_values, cpu->cpreg_values, - cpu->cpreg_array_len * sizeof(uint64_t)); =20 return 0; } @@ -1001,6 +1005,9 @@ static int cpu_post_save(void *opaque) pmu_op_finish(&cpu->env); } =20 + cpu->cpreg_vmstate_indexes =3D NULL; + cpu->cpreg_vmstate_values =3D NULL; + return 0; } =20 @@ -1034,6 +1041,9 @@ static int cpu_pre_load(void *opaque) pmu_op_start(env); } =20 + g_assert(!cpu->cpreg_vmstate_indexes); + g_assert(!cpu->cpreg_vmstate_values); + return 0; } =20 @@ -1043,6 +1053,9 @@ static int cpu_post_load(void *opaque, int version_id) CPUARMState *env =3D &cpu->env; int i, v; =20 + trace_cpu_post_load(cpu->cpreg_vmstate_array_len, + cpu->cpreg_array_len); + /* * Handle migration compatibility from old QEMU which didn't * send the irq-line-state subsection. A QEMU without it did not @@ -1094,6 +1107,11 @@ static int cpu_post_load(void *opaque, int version_i= d) } } =20 + g_free(cpu->cpreg_vmstate_indexes); + g_free(cpu->cpreg_vmstate_values); + cpu->cpreg_vmstate_indexes =3D NULL; + cpu->cpreg_vmstate_values =3D NULL; + /* * Misaligned thumb pc is architecturally impossible. Fail the * incoming migration. For TCG it would trigger the assert in @@ -1167,16 +1185,17 @@ const VMStateDescription vmstate_arm_cpu =3D { VMSTATE_UINT32_ARRAY(env.fiq_regs, ARMCPU, 5), VMSTATE_UINT64_ARRAY(env.elr_el, ARMCPU, 4), VMSTATE_UINT64_ARRAY(env.sp_el, ARMCPU, 4), - /* The length-check must come before the arrays to avoid - * incoming data possibly overflowing the array. + /* + * The length must come before the arrays so we can + * allocate the arrays before their data arrives */ - VMSTATE_INT32_POSITIVE_LE(cpreg_vmstate_array_len, ARMCPU), - VMSTATE_VARRAY_INT32(cpreg_vmstate_indexes, ARMCPU, - cpreg_vmstate_array_len, - 0, vmstate_info_uint64, uint64_t), - VMSTATE_VARRAY_INT32(cpreg_vmstate_values, ARMCPU, - cpreg_vmstate_array_len, - 0, vmstate_info_uint64, uint64_t), + VMSTATE_INT32(cpreg_vmstate_array_len, ARMCPU), + VMSTATE_VARRAY_INT32_ALLOC(cpreg_vmstate_indexes, ARMCPU, + cpreg_vmstate_array_len, + 0, vmstate_info_uint64, uint64_t), + VMSTATE_VARRAY_INT32_ALLOC(cpreg_vmstate_values, ARMCPU, + cpreg_vmstate_array_len, + 0, vmstate_info_uint64, uint64_t), VMSTATE_UINT64(env.exclusive_addr, ARMCPU), VMSTATE_UINT64(env.exclusive_val, ARMCPU), VMSTATE_UINT64(env.exclusive_high, ARMCPU), diff --git a/target/arm/trace-events b/target/arm/trace-events index 676d29fe51..2de0406f78 100644 --- a/target/arm/trace-events +++ b/target/arm/trace-events @@ -26,3 +26,6 @@ arm_powerctl_reset_cpu(uint64_t mp_aff) "cpu %" PRIu64 =20 # tcg/psci.c and hvf/hvf.c arm_psci_call(uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3, uint32_t= cpuid) "PSCI Call x0=3D0x%016"PRIx64" x1=3D0x%016"PRIx64" x2=3D0x%016"PRIx= 64" x3=3D0x%016"PRIx64" cpuid=3D0x%x" + +# machine.c +cpu_post_load(uint32_t cpreg_vmstate_array_len, uint32_t cpreg_array_len) = "cpreg_vmstate_array_len=3D%d cpreg_array_len=3D%d" diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c index bb94eac7bf..c5b108166a 100644 --- a/target/arm/whpx/whpx-all.c +++ b/target/arm/whpx/whpx-all.c @@ -783,12 +783,6 @@ int whpx_init_vcpu(CPUState *cpu) sregs_match_len); arm_cpu->cpreg_values =3D g_renew(uint64_t, arm_cpu->cpreg_values, sregs_match_len); - arm_cpu->cpreg_vmstate_indexes =3D g_renew(uint64_t, - arm_cpu->cpreg_vmstate_indexe= s, - sregs_match_len); - arm_cpu->cpreg_vmstate_values =3D g_renew(uint64_t, - arm_cpu->cpreg_vmstate_values, - sregs_match_len); =20 memset(arm_cpu->cpreg_values, 0, sregs_match_len * sizeof(uint64_t)); =20 @@ -807,7 +801,6 @@ int whpx_init_vcpu(CPUState *cpu) } } arm_cpu->cpreg_array_len =3D sregs_cnt; - arm_cpu->cpreg_vmstate_array_len =3D sregs_cnt; =20 assert(write_cpustate_to_list(arm_cpu, false)); =20 --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809349; cv=none; d=zohomail.com; s=zohoarc; b=D9hIBtgIE8hIHEQgMy7SX7sA4DjA8GwKJUpoiuNCbhXpHBE2MHSVBbqKJ7jJN6+2J9rIP9ctYIQxR9SMMCT5znf/+GkXobVxrql8pzVR8dc2oPC6jOhO6caeoP80bkdtVnZigjKPKqr9fcQcr8bgc6FkUysKO2r4CYzpg9o+Rj8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809349; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=wxoBstFzbbLu25I1sKHVFqACJTEwFMHaflSQvDtLx5I=; b=Nw+WtLKleYTMyCxWgZZF3GXx5vz8gwUXpsbTFchgG0v/u3e/VX6DlMYv0I6ejkDS3WABLhQ5pYTENyB2+STwn1J+DhwlmAtaWeQabV/l5TWrUAFX861ax0rY1wBOATTV3Nbq6NQjaR5BNGMItH60MNtOKo0XW35yKEOiRfmlupA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809349038244.98507400276094; Fri, 6 Mar 2026 07:02:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWem-0003xS-DO; Fri, 06 Mar 2026 10:00:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWek-0003tj-RI for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:58 -0500 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWej-0002Lc-9i for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:58 -0500 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-48334ee0aeaso77579185e9.1 for ; Fri, 06 Mar 2026 06:59:56 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809196; x=1773413996; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=wxoBstFzbbLu25I1sKHVFqACJTEwFMHaflSQvDtLx5I=; b=XnK99CH4QlaBdBhnrb+F+fCw5s7yuGnbnx5AcSiGQlmP7TYv/UQ77oPQ5adkWVOhqd ux8JhWaM5m7dm1/BggwPUUpHtkjRshHLHcGW2Y5yJ4t40oPG8/5Qpe42o0LPhKW6/yqG CRN9udRyy1KuU6AH5WqXj4A/+0qvvS/3fa4UDcPJy26DgLLAmu6QE3gebXAuPeMyigy+ 1bck604PRYYqYuJjQvzIw7lLAWrywLlCX6zZdXeNBVNwiW6RSvRUK7gFhUCR5o18RkaD yaU09aBiKIAxo0aXt39UesgBD5l4JaKVScmadoUFhE4wS4s/88GogwZjS63pkDHPZA0Q IpvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809196; x=1773413996; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=wxoBstFzbbLu25I1sKHVFqACJTEwFMHaflSQvDtLx5I=; b=wPAcgx7wMLjihywHBzfo8RWkiNR1HfQN6EsUoBQja2ts4zA+7LzX0PgGhv76eaXwZ4 hHzis+JqsW5dlMLl3C9Ey+jY5GUzC8d/XS1rPbWIpYRqmg4rt/BkhOaQzjUcqP5IKARq zQs3cm6tz2Ot7c4F+dk7114kqTfnE2gTx7ByIzTVFdssfLBVnDv7uTFxKi3C8kL6cBOb ZwLp5xaPwSKyMzLsFPnNcyC4/zj9S0FdoI3j44X8ysneK26+35EeovTMx4olu0SHOe1p PNibT9L70xFQMZlKOaPyA+J/5bTR+7xSCRj2jN5GDciTmJl48X/Dy4fQnlscgFrAoQeo Llag== X-Gm-Message-State: AOJu0Yyc1T6u+zd57E2yyJlkyhE0DSRJO6BQMLi7SdIe+E/q1uc2QUzI m+fQXP2orwG0KNgugmGCH3PxQh3ieCC8qCdmaVrVLV4W1ZwrMu6bdk2V+pWO0kYhlfVCEh7E/D7 qFDmF X-Gm-Gg: ATEYQzw6CpTb69KgcIUGmqwi63F5TISNgWspB5DjsbPJrKspEY27YUuQZFmcuBQO/yZ ta1GvZEW7sC8ua6JYQh99I4kxUn87WIZB8yIiqze8l5hXrthPR7t4rwCKM/rvoXcWJu7XHo7C35 DfJnbc2wmE4polLR7dWVLTmg2JnKtS+eGhFgTXPV0n+BiAlx327+SBI2g+YIBJHatAdboeWTXIb Jai5tItuxOKk6pERkxJ8xPx7XvosstiiDv1K7j2ENWo6PMbQ6qvO1vKR4G+Gf5e8RUIs7lOfL9D l9wv8i4GZTCq2T5WbD1dnopf9jmwZJem2d1I7EygBUQxo60mbpC7Z1B7xTdwTiVb4XmVU7PIZPA Q5lqLU6E1Hc5y09raKnWNYr8NAmQw/WelE92UVroEXAgHrgBPo0vgV24uSt5PXhbWfE6xfBLP91 OZhJmXrxD2R8UkVVymujtqJla99UQV91KBOlwB2bcgWQtZhTCA4KCf+wSnZ6AjifvrrdQl9Yl/y U8afhobEx390uhcfojfAIgtnlUfCJc= X-Received: by 2002:a05:600c:620b:b0:483:6d4e:9811 with SMTP id 5b1f17b1804b1-4852696d451mr37899765e9.31.1772809195884; Fri, 06 Mar 2026 06:59:55 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 16/49] target/arm/kvm: Export kvm_print_register_name() Date: Fri, 6 Mar 2026 14:59:06 +0000 Message-ID: <20260306145939.2162189-17-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809349338158500 Content-Type: text/plain; charset="utf-8" From: Eric Auger We want to use kvm_print_register_name() in machine.c so let's export the helper and implement a stub when kvm is not enabled. Signed-off-by: Eric Auger Reviewed-by: Peter Maydell Message-id: 20260304101625.1962633-4-eric.auger@redhat.com Signed-off-by: Peter Maydell --- target/arm/kvm-stub.c | 5 +++++ target/arm/kvm.c | 2 +- target/arm/kvm_arm.h | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/target/arm/kvm-stub.c b/target/arm/kvm-stub.c index 169ef5f206..88cbe8d85c 100644 --- a/target/arm/kvm-stub.c +++ b/target/arm/kvm-stub.c @@ -114,3 +114,8 @@ void arm_gic_cap_kvm_probe(GICCapability *v2, GICCapabi= lity *v3) { g_assert_not_reached(); } + +char *kvm_print_register_name(uint64_t regidx) +{ + g_assert_not_reached(); +} diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 555083e7aa..11f6f2dff0 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -970,7 +970,7 @@ static gchar *kvm_print_sve_register_name(uint64_t regi= dx) } } =20 -static gchar *kvm_print_register_name(uint64_t regidx) +char *kvm_print_register_name(uint64_t regidx) { switch ((regidx & KVM_REG_ARM_COPROC_MASK)) { case KVM_REG_ARM_CORE: diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index 82ac2aae46..e7c40fb003 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -231,4 +231,13 @@ void arm_cpu_kvm_set_irq(void *arm_cpu, int irq, int l= evel); =20 void arm_gic_cap_kvm_probe(GICCapability *v2, GICCapability *v3); =20 +/* + * kvm_print_register_name: + * @regidx: register KVM index + * + * Returns a human-readable string representing this register + * The caller must free the string with g_free(). + */ +char *kvm_print_register_name(uint64_t regidx); + #endif --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809363; cv=none; d=zohomail.com; s=zohoarc; b=BWWiCpRc8URHghlziOU7pjYdkMsPtDkTYXiONhh2QY87iTHtpKidTcUVb0Q6udquZHqt7qycPaCDIMzlIr+sNJGYBvv+wBYQPG4Nq3ZdT8RLiGm3je8Qer8O2A6AaAgKVY+cnHHllgTYFJ1aJ6QzmAbs5HzU+sU/z3CI5JCLfo4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809363; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=E1dcGaWKyR+5TgJfH7tF4p5apo7JtSGgCwG/8xW/MXk=; b=Op5Xk2zzwzjHTaDePRlpXylcMR2KgiGG2LGd9CIc9jtH7cixIVV4nQ4ywHkGTI4htqV6Ep38hZ2rOYPy4f2ueVXCbBRYVN88tMkSnQ6Qn6TRpHY3wcXFD8i0CLmfGLpQUNCbXznlunSDex8lVWO9of4FNzlqM86n/IzmPa/2ENw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177280936333842.6383385735985; Fri, 6 Mar 2026 07:02:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWem-0003zi-Vv; Fri, 06 Mar 2026 10:00:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWel-0003wk-Q8 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:59 -0500 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWek-0002Mf-8Y for qemu-devel@nongnu.org; Fri, 06 Mar 2026 09:59:59 -0500 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-4837f27cf2dso87213725e9.2 for ; Fri, 06 Mar 2026 06:59:57 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809197; x=1773413997; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=E1dcGaWKyR+5TgJfH7tF4p5apo7JtSGgCwG/8xW/MXk=; b=Py5veFxLB9IbgDAPYO5LHHASQHu/GwR1FiTjrBFQsqzI1+v1zyay58IC3oRyWf6jtp 3xNYIA7G7Pu9q+X/It0y4S+emnOE0gkdJV4pChRwwUm6+SLb88b6YuLGXQHCbtKvbeDP bjQdPTB+NIbTn/FgYPsowJbdRXMJHKrrAM/zadWORDS3Z8ZkT5uL224bbPzjpkKM/N9X 5LS+b3GdnvW5Npata0XDkHfyL0J1ALtVHbZSN+8YFtFQq0PCp7MWH1CB+ikrnF8Lwss5 wFlVqhVDD94hvfmuEn6G2VquNkNpN2pz4w3f0qhI7S5sdVxi+XOmcMNYhybcxMxuZnqb /atA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809197; x=1773413997; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=E1dcGaWKyR+5TgJfH7tF4p5apo7JtSGgCwG/8xW/MXk=; b=s0ifsCZESUK9JEvH0yibNRiCyvJTf1anjDk0FPN+Bb4icWmbI33AiAlvY0U7gjNJkC BGT65u/fdWa1gvdTZeE2uqBLdLMlGjiXIfUKxVSWagjzZ3VWSzbpBk6n3QMZzB/uf54W s3ojRVywZhoouJNUYZouIAoS82h4HeAnt3r2T/qyhUObCkhOAa3GgXPh0odz0pIldYP/ 7pT6NsAZQJnOVWw3Kk/NiqX3yBP8T35qyK3nTwGOOZ4npZVniWrdR4QA5N7No9c10tPN 8RuzhP9MzhwPJOzRZOHr1rNSmHss92oESoOpSxm8cp35m7X2/4m3+EDOxv4URhmFvo9j SOnw== X-Gm-Message-State: AOJu0YzXzKKqWNyfLbAR9vE4Q9P/glU1JlZEXucykyjg6KYFVkXWsyuB sKAcqR+Vz9kBRX51FlpgvL70QOi4QV5Bxjawc4nkYGuLv/bDMdmfjXl67J2f48aclwkinQqK71y Dl4Xt X-Gm-Gg: ATEYQzwMSNKkKRPoS0DmoMaqvaR2q6pp+PTSxbbFDVUHC+MoEdd2Tq5z7oSCpuutfms ugvG72Q85m8W0ct27pfHrhn8MZjfT4sM1wsytL9d4uR0b1FDPc24ux14Pi/j0VhysUU79QX4KqK 3/qlt1H/ES5e3W7HDpAmzAjnnV2BmM8lZKx3QJJLdNkejB3J9UK7dtZ3Zi2d15cu0ylbZtEDg/U WXC+rS5zeH48WUS8ZGVrpL+Dm5DxpR5/WUOfgVtimK9191tZ920HMG8hi1KszWeIgAIFsu7LSRM 3+tS+rzT2XDBqCOwyle8tsNkzoAEIyBYB8buP2gxHMSnWCMVsaud3FVHN7k3anVnAkY2+eNYg7h 1iuE3lY61MsB06FxHgPryVRfbFlyQ5pFSOfJWH7Y7R+RxP8XLMya/ENBFpVo95kKA3x8pH0+2Nz hR6dGSjSi/I5h2cWiL9OgI/q5I8Ookwg5ORIh/3ca0k1iQguLZwBk7G1Ax8l7HuDCpUqNt9R8qQ OcWGirG+2X+nZ+xnv9xhAVh6rU89lo= X-Received: by 2002:a05:600c:c16d:b0:480:39ad:3b7c with SMTP id 5b1f17b1804b1-485269582fbmr44110205e9.16.1772809196701; Fri, 06 Mar 2026 06:59:56 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 17/49] target/arm/kvm: Tweak print_register_name() for arm64 system register Date: Fri, 6 Mar 2026 14:59:07 +0000 Message-ID: <20260306145939.2162189-18-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809365445158500 Content-Type: text/plain; charset="utf-8" From: Eric Auger As opposed to other register types, arm64 system register decoding is not introduced by any 'register' mention which can lead to unfriendly user-facing traces. Let's add "system register" Signed-off-by: Eric Auger Reviewed-by: Peter Maydell Message-id: 20260304101625.1962633-5-eric.auger@redhat.com Signed-off-by: Peter Maydell --- target/arm/kvm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 11f6f2dff0..d4a68874b8 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -978,7 +978,7 @@ char *kvm_print_register_name(uint64_t regidx) case KVM_REG_ARM_DEMUX: return g_strdup_printf("demuxed reg %"PRIx64, regidx); case KVM_REG_ARM64_SYSREG: - return g_strdup_printf("op0:%d op1:%d crn:%d crm:%d op2:%d", + return g_strdup_printf("system register op0:%d op1:%d crn:%d c= rm:%d op2:%d", CP_REG_ARM64_SYSREG_OP(regidx, OP0), CP_REG_ARM64_SYSREG_OP(regidx, OP1), CP_REG_ARM64_SYSREG_OP(regidx, CRN), --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809234; cv=none; d=zohomail.com; s=zohoarc; b=ExjIWcTVCVXskE6QkXEv8saNnxbRFoYNSDY7xUlGLCSkspdf2LTwRe/K+9XV7gk+YQjMWpj46FLkxreVhE9Gm4ZHVGTxIFT8GB9UmUIbDXhtP+E6CAzLEDQwd+ggggQK+abAb4fc6oyf3K78HlobDM8Rk9ZSNmzGxavSNa5vUik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809234; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=1gtuIMarbcGPXHXbhN62xYNjrLlfncGqcgn1fgiOBeA=; b=ciAhHHA6rV2fNnME6Qv0vjUV//L1uwbRDM1WOcSOhbmswO6gYyFy3zTP7siz4XTuFUMwSMEXlRXKeu0dj7Vnnqupaa2MD1+W/qQ/yxthQfStSRdATKTNZV2+eZDfmuMYE6WwfXjBqIM8deKotzLeM0uVWOUFWXrr5f6cdukybzo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177280923439394.10404086978201; Fri, 6 Mar 2026 07:00:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWeo-00042E-U2; Fri, 06 Mar 2026 10:00:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWen-0003zs-6o for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:01 -0500 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWel-0002PN-Lp for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:00 -0500 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-439afc58ac7so6374878f8f.0 for ; Fri, 06 Mar 2026 06:59:59 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809198; x=1773413998; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=1gtuIMarbcGPXHXbhN62xYNjrLlfncGqcgn1fgiOBeA=; b=aL7DNDK9SXTSc+IsAU2p50+rlSHARsV5uyB08IqiOAtFRLhn9/cooT1oHL2UVge0tW Dh5Uwk9cf95qeYxLNQagACVzFaFXuSEXd8ds3mQn57L+Qfl9YRieRrS0FWsypEHKq3L1 aTHEI1RNiLyqP5Ib6tTibRct3rVqcHXKfYYjS1JZl3DpryfROK3rA0olMRA+4F+R2Ehg AdrDSX1dlNDYrwdRlzAAIa/aabKbkhobXA5iJWqCATgMew5IN81m/D+gjLqgfDgGOQ1v JrwDjZK/gQ9Ra7CN0bqnS5ip9KSZMY+t9G6HqYJ+lIOKeKbJpIp87SYdpUR5wb0wBbSb Nc/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809198; x=1773413998; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=1gtuIMarbcGPXHXbhN62xYNjrLlfncGqcgn1fgiOBeA=; b=smSujrzkseoikdQSa/DY44uo4wMW2Pis1qG2WJbqtCUpme5KhzNR4vvfIuvXxND8em UZpMo9x26+WYbyj0BJXu2azInOMqWgIIUXy3u6xIc6EhXrk82jOE80dFo3NunxmNs03n CwNlD16H++Rcjl6kRZmxZlJ04DekH5/Pbnbo3/QM8orTu2yJ/UiJDU9lr7qHXlXVlw8K a+sLVyJCUXWBiF+kknAgkzvGxm/rHf5G53vNtL9OrW5CV098F9Zb4YD7ZexT3q51ZYZ0 +wEacoAz+l1Xa+z9CNVOmuqOyXZg0HgYRc0vA2WTww8lsqCcxsWhjwszbmA89b8W0tqj 9tew== X-Gm-Message-State: AOJu0Yws/19iGy3a0ZrUOtg2SYht9CdZCTazXmCafSMQILR8+b89rjbD gu1P+5SJkEfLqqGhafwhjllmSzWgBFr0q8Gjj8eJSMvw/GTnsAVPxHjqMeupslvIz2OOsiRQ2+P mSXuY X-Gm-Gg: ATEYQzz0skhLM2XdU4FMhVP70ISVAI4DjgWUNeYxYnREiLk0EhFX8+QVyzr/IExlusC aSKJpF0Y/E4/q08LWXQmgR4b3M+WmbvBNc7zn+udDWqfu8nVvrfCnMctISDwg7DRcg1ovHDKwkU oyKc4FvvMj2+u33B7za1n/DHYBpFN3nTa0SGGevEk7A2Nj6E0Eg4FjrTKLO1wOZsOHtrO0Y9lVJ 17vKAgnEcYADU0lJGOkqVIZ1VCrojwvFllnErWbHhsfBxAQJEBr3J5JdKxec6UjIDN0gHc+Sv1M FGFI8vqxaZ0cYHTsNeK/yIY+qasRrYWkCLPJ6HC8AyUwYbWas/yYnz34jVPOdMpopZt3S7vsYDB YUaRQFFta1jpiZqDeYE80qY1rEV1GdBXc+JuPZmebw9EFjJCDiyk5DpItrc6C7B4/RQYU4WQDki KpJcUR2C5A1gM8DxRBBPnlyYcMbb931H5she5mpYq32GMIpVFdPg3OEivcp2GwrgGn9CRlFk4b7 cYlrhOPynJtmk+BBgepG2rjxIlmNgg= X-Received: by 2002:a05:600c:1e88:b0:482:eec4:76d with SMTP id 5b1f17b1804b1-48526959464mr39591675e9.17.1772809198203; Fri, 06 Mar 2026 06:59:58 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 18/49] target/arm/machine: Trace cpreg names which do not match on migration Date: Fri, 6 Mar 2026 14:59:08 +0000 Message-ID: <20260306145939.2162189-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809236259158500 Content-Type: text/plain; charset="utf-8" From: Eric Auger Whenever there is a mismatch between cpreg indexes in the incoming stream and cpregs exposed by the destination output the name of the register. We use a print_register_name() wrapper helper. At the moment we are only able to do a nice decoding of the index for KVM regs. Without this patch, the error would be: qemu-system-aarch64: load of migration failed: Operation not permitted: error while loading state for instance 0x0 of device 'cpu': post load hook failed for: cpu, version_id: 22, minimum_version: 22, ret: -1 which is not helpful for the end user to understand the actual issue. This patch adds the actual information about the probme: qemu-system-aarch64: cpu_post_load: system register op0:3 op1:0 crn:2 crm:0 op2:3 in the incoming stream but unknown on the destination, fail migration Signed-off-by: Eric Auger Reviewed-by: Peter Maydell Message-id: 20260304101625.1962633-6-eric.auger@redhat.com Signed-off-by: Peter Maydell --- target/arm/machine.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/target/arm/machine.c b/target/arm/machine.c index d3d4f2ddc1..d9b65b5eed 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -1,5 +1,6 @@ #include "qemu/osdep.h" #include "cpu.h" +#include "cpregs.h" #include "trace.h" #include "qemu/error-report.h" #include "system/kvm.h" @@ -1047,6 +1048,15 @@ static int cpu_pre_load(void *opaque) return 0; } =20 +static gchar *print_register_name(uint64_t kvm_regidx) +{ + if (kvm_enabled()) { + return kvm_print_register_name(kvm_regidx); + } else { + return g_strdup_printf("system register 0x%x", kvm_to_cpreg_id(kvm= _regidx)); + } +} + static int cpu_post_load(void *opaque, int version_id) { ARMCPU *cpu =3D opaque; @@ -1085,11 +1095,18 @@ static int cpu_post_load(void *opaque, int version_= id) for (i =3D 0, v =3D 0; i < cpu->cpreg_array_len && v < cpu->cpreg_vmstate_array_len; i++) { if (cpu->cpreg_vmstate_indexes[v] > cpu->cpreg_indexes[i]) { - /* register in our list but not incoming : skip it */ + g_autofree gchar *name =3D print_register_name(cpu->cpreg_inde= xes[i]); + + warn_report("%s: %s " + "expected by the destination but not in the incomi= ng stream: " + "skip it", __func__, name); continue; } if (cpu->cpreg_vmstate_indexes[v] < cpu->cpreg_indexes[i]) { - /* register in their list but not ours: fail migration */ + g_autofree gchar *name =3D print_register_name(cpu->cpreg_vmst= ate_indexes[v]); + + error_report("%s: %s in the incoming stream but unknown on the= destination: " + "fail migration", __func__, name); return -1; } /* matching register, copy the value over */ --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809415; cv=none; d=zohomail.com; s=zohoarc; b=jT0uL4hJnd3dd+TLfso7+EhU1U4/ZUDKQarr+Zr2vTa6hADSF2vcjZLmHLybW0tEC3gA0lupCdiYmPkE9t17dzNl+6ScX15Yw3tcpvwJIYUxMfEEiVSxgTu0jYCzAkbjljOiGJmuM/JdqJPo3Pb4J58XJy9ot9rqxc8UoA34enI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809415; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=johyxWgACHRod1tW8e+D3L9ds2TR7uVcjXlXo3awJiM=; b=UL2YKjC9lOZx6Fwxn3EdBfxua8PqOQo4bf4JK9EKPwwM1ystlieEy/h/Yb2vCC16wH57DpsJtsZb4VTcNeA9Qe6xN5rfdYonldgGcyP2DuWT4N5f6nMypTB0MY9/7Wn8q+aZPv83LKm8nhSh2+7KA5dxhDHr/IOO0TQ1r3bJBIY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809415056351.6524074632215; Fri, 6 Mar 2026 07:03:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWep-00044e-Hw; Fri, 06 Mar 2026 10:00:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeo-00041j-40 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:02 -0500 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWem-0002R8-HG for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:01 -0500 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-439d8dc4ae4so898319f8f.2 for ; Fri, 06 Mar 2026 07:00:00 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 06:59:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809199; x=1773413999; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=johyxWgACHRod1tW8e+D3L9ds2TR7uVcjXlXo3awJiM=; b=MmnLOeifFgM7jVRs0oHV00X1ymyUVo2YynkFOvdauMkTxDE98hYEVDdr3Z0DBm7xR3 8QEpchGywdzMKzVzhJjU9D5YGHq+bfbMKUUxVDz9dihmk8AXRpecGsIvzHE3J2mBVsik DighV1tXlVyTtcU0L/5Tk2IUOeJ2Y9ngoXeISzQgQZ/4W40clysJeXWsLEqlUhj4lUrQ WuFbe/1o0rOw6IFpydIhGPRvIxmU2EGimidkNt9uj0ZhY5DbxU/5Bto7r773eSk9eXYQ AAadyLvVp3z2fNXkvsYzIf7aoTYih7NdlZUV92h1lbZ/xpLztnntOjQILLmA+KiVKYE2 M3Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809199; x=1773413999; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=johyxWgACHRod1tW8e+D3L9ds2TR7uVcjXlXo3awJiM=; b=khruUJqcnE3xwQyZrOxOjfSuf/++sAlIJfUqWYWcpA7/WjIxdau1f9T3WffmDx9IR6 23jV7tyUbZykPUAxxSNB4VarXDCx1Zn9+TYrAvb+d8+m7CMpb/wukUKdRniIYDfBR3hf TMgHjWNMXexMi98NCtff92q6hCdjs+b2BSJwGFxauGe+rsZEwNajb3mEdsq1z7WgEjlV qBqRKNRMcXFzKAzUlI5TrTN5IFDzCSCk3nwnEGDE9nZ4zcb5Rilb8dYA0f5N7w4JXX9z a0X1jTPTu4Vc3MflsXQgQVBSMvQSgN2muncLqqcgvANHEqtG4D5bqgAgujZFzaaQZiqb A8oQ== X-Gm-Message-State: AOJu0Yy0v4Sp+v/EMApFTrwf1VTkHG3NXqvjEjr9/DRKcXIJt2khetJ9 4+7s5RnxrpQbFY5PLe3/zc9jloVl+XgzN94/D3yY6cXuberzqOW+P4MOKBZQJfGeBDx8JJNjZvn EkHaU X-Gm-Gg: ATEYQzxGAuoexn3EagCwfcNfVkDQTPs2AdXbg5WyRFg9iVRXJziMuYGWHedClwVJGl+ gl0RbY/NYyX3buG1UEpCxviQSdEx/b0dcqUtkQotO9yxoV+W5sRMC8tjwr0sFmTrV/IJlEUWNh6 Jw300Oss/+nfe97mWr35YvlB0AnoZAMXvkspY4EgyT2YExG4UaEEL6LSBY28ZFNe727J35hdpQq g9JYDjePXlF+5RJi9n7G4CfAXx8EuR9orKQ3wR42G4xYXY4cZn4i2zC2roUtwfA2UWrXRNFFEtj pn7us5q7pGVLMv31n0ZecDt9Jww28fIfLkm/IYF6DGquAR4sC5sDnouELqVyAs0apQqUjSHZrT7 /FYqKQ+K3RMOmz0QRio+1XlvPl5xI1ma+h/xuNXUONNRWDSG08+w5KbxRDVN0/ib/FuJJMS1Cto 9Xo9u0TJVA22wdO4dCCDT+yy2TVKbfrvhHmwWBNJUWYCjQY1SG7eJJBQN6PB5zboN5UTNHHKFmk 7qOFF9OC1JPgkTHSdi7HkTW3oyVKvg= X-Received: by 2002:a05:600c:c4a5:b0:46f:c55a:5a8d with SMTP id 5b1f17b1804b1-485269199c0mr33306305e9.4.1772809199068; Fri, 06 Mar 2026 06:59:59 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 19/49] target/arm/machine: Trace all register mismatches Date: Fri, 6 Mar 2026 14:59:09 +0000 Message-ID: <20260306145939.2162189-20-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809416605154100 Content-Type: text/plain; charset="utf-8" From: Eric Auger At the moment, cpu_post_load() exits with error on the first catch of unexpected register in the incoming stream. Let the code go further and trace all the issues before exiting. Signed-off-by: Eric Auger Reviewed-by: Peter Maydell Message-id: 20260304101625.1962633-7-eric.auger@redhat.com Signed-off-by: Peter Maydell --- target/arm/machine.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/target/arm/machine.c b/target/arm/machine.c index d9b65b5eed..4d9158e697 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -1061,6 +1061,7 @@ static int cpu_post_load(void *opaque, int version_id) { ARMCPU *cpu =3D opaque; CPUARMState *env =3D &cpu->env; + bool fail =3D false; int i, v; =20 trace_cpu_post_load(cpu->cpreg_vmstate_array_len, @@ -1093,13 +1094,14 @@ static int cpu_post_load(void *opaque, int version_= id) */ =20 for (i =3D 0, v =3D 0; i < cpu->cpreg_array_len - && v < cpu->cpreg_vmstate_array_len; i++) { + && v < cpu->cpreg_vmstate_array_len;) { if (cpu->cpreg_vmstate_indexes[v] > cpu->cpreg_indexes[i]) { g_autofree gchar *name =3D print_register_name(cpu->cpreg_inde= xes[i]); =20 warn_report("%s: %s " "expected by the destination but not in the incomi= ng stream: " "skip it", __func__, name); + i++; continue; } if (cpu->cpreg_vmstate_indexes[v] < cpu->cpreg_indexes[i]) { @@ -1107,12 +1109,18 @@ static int cpu_post_load(void *opaque, int version_= id) =20 error_report("%s: %s in the incoming stream but unknown on the= destination: " "fail migration", __func__, name); - return -1; + v++; + fail =3D true; + continue; } /* matching register, copy the value over */ cpu->cpreg_values[i] =3D cpu->cpreg_vmstate_values[v]; + i++; v++; } + if (fail) { + return -1; + } =20 if (kvm_enabled()) { if (!kvm_arm_cpu_post_load(cpu)) { --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809607; cv=none; d=zohomail.com; s=zohoarc; b=UVivGKV/Pb+vTJDLInWlWXwWVlE7zBTF3XKTd8DhnpsTwrId3NRQomtfYtmhVmASd3c04jJ67uTLTONK0k2IAZ95+QMEwuseflGG8MwZ8wm3KWYMoaDEBLSPcyCmlc42FrwS0Y7qOOGaPgDtmcxM4lhh1Ry7ABID7f6i7DoSbKU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809607; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=p/30OD+loiPG0qPDuukguw9ZSBdl4fxTm3168Zop0uI=; b=jD0GWOzb5DvINiGXcUD1+JoS34fBI2wP2eKrWtjK7r+oza+EeJe4wSBHJ4AHW8DknJVfnMY2P9stKeHBozYa33WE/roZTwHpHI2EOIcS1AyoelU1noALdT4UkC3TMxA6gsDay6M3mwprTNz4X9zMpc5kHQbR4WcK/Kes+CCyCvw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809607904611.9025826571121; Fri, 6 Mar 2026 07:06:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWes-0004AJ-0Q; Fri, 06 Mar 2026 10:00:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeq-00047h-BU for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:04 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeo-0002Ro-7v for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:03 -0500 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-483a233819aso92167725e9.3 for ; Fri, 06 Mar 2026 07:00:01 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.06.59.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809201; x=1773414001; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=p/30OD+loiPG0qPDuukguw9ZSBdl4fxTm3168Zop0uI=; b=eBjs/6OngDpF0rSulXPHpPpVrYldpUivY87hGfqvjDCLrXpu+MuK9mMW73yCH4CVfm Tsic14ENtz2sBkTj9Cf5MWPf/f2DWXiJjGhbOvzEGDW+xJkM7/onyt4WOw7n72ZmnPob ox6BIM0lHvur4q4UH94ZwliXKPZi9UihLKY6WpaBBRQaYFgTsYS1c8qz0u0woFT7bOHG kelXrAqyO0txVE0EP771fQU1wr5DnlouwOEgPjbkdYu+oHWxgZFf05l8bPQbJg6WrmAp z5NIwqAhNGeRlpQDemyR96lMfQNo8PJOsO9SHl7/SWiXETZpHwJBgo9UYGw+IYl06Qbt meFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809201; x=1773414001; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=p/30OD+loiPG0qPDuukguw9ZSBdl4fxTm3168Zop0uI=; b=QIrLJw2SjvCA1ukzZ10KWnTams0WSvvvnZqFLbvXZe4T/kyJS8PSWe5LdOMwYjXGG3 mk9ektY7UfuVJ70U3o4zPEfOCg5RCYwR4NMTujC6IJK4AON67SLXydFIXmdcLtBC6NlW 5f3337yQpzHrkZUj9YmEfguOPzq8Lx9PYRaE9XZSys20r+VzMuha9stEQjGJrnhen4Nb whPWx7Gz9o3MFH9hYE+bFXI1GgQTvWQ4u3BtU7enrG3563IxBAHuexIjWCHXMrEy/5lu uy5Tm3Ai46yaoJcOIR9sRQWFWTr5Gj7M1mBHjvO5FhImk4QeeCm86NWNnIRfxs7ODkkM 5NQw== X-Gm-Message-State: AOJu0YwcYWkhyqzar/qpI9tLW1feRTXOrfbK9znR0U05t5VtyoVEeVvE 7pM3LaHICUAZ+4z9Y2rG+r5CqhpFVJuuWpjjvVBpqak9DxVJ9ePEz+GTZtaV+HbHBLloIUswSFF FRZlR X-Gm-Gg: ATEYQzy0uYHPRelfDU9ocrll+PXquRkXheRDoVx91tXjMr/pfxo1bt12/2eZYzZQIuM NAH7iOBf53kAsehnUcdUVony+IoiQ2IiUvf8r5hsGAYTeawSKuEKc0UsIp4fGWFcylpylgzTxkx SGygE8nb6QXZEYUHs57ptv2rS/8gRPaqKbVE/B3XEZy7nuF/O40BhcjzXwHXSwsUt5l2ju9Fos7 INQHFTkGfQXqsATY6HQgYcdnbTpRMppwRNPAvLezPVmT9AknLViOHgRmVP6E+MFrIZUOxKJVWaK j90IFz27LjiUkvaZFaUypQuhLuUPogPYJqwxHZ8OHjcCc+jysR/7yY5gLDDwp73e+xYKELR0Gkp FZMCt62qfKuv8Ro0RltTzx0rc7ugwVthpUFTWIaKzbb2rGZhdg9Yk9fQ4pTEBrQm6OOZM2iNag6 wER50peu/CpkkVloZKNhqSR5wX8fdOnxA3q+9KGHsGtw8bPHBibK2/DZXLF8KXyiqMTz+5agYCr ckdQtofdD0aiFcrcqIeGbV3s5/AL9U= X-Received: by 2002:a05:600c:1e88:b0:477:6d96:b3e5 with SMTP id 5b1f17b1804b1-48526916beamr45748115e9.7.1772809200617; Fri, 06 Mar 2026 07:00:00 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 20/49] target/arm/machine: Fix detection of unknown incoming cpregs Date: Fri, 6 Mar 2026 14:59:10 +0000 Message-ID: <20260306145939.2162189-21-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809634678158500 Content-Type: text/plain; charset="utf-8" From: Eric Auger Currently the check of cpreg index matches fail to detect a situation where the length of both arrays is same but - destination has an extra register not found in the incoming stream (idx1) - source has an extra register not found in the destination (idx2) where idx1 < =3D idx2 Normally this should fail but it does not. Fix the logic to scan all indexes. Fixes: 721fae12536 ("target-arm: Convert TCG to using (index,value) list fo= r cp migration") Signed-off-by: Eric Auger Reviewed-by: Peter Maydell Message-id: 20260304101625.1962633-8-eric.auger@redhat.com Signed-off-by: Peter Maydell --- target/arm/machine.c | 61 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/target/arm/machine.c b/target/arm/machine.c index 4d9158e697..476dad00ee 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -1057,6 +1057,35 @@ static gchar *print_register_name(uint64_t kvm_regid= x) } } =20 +/* + * Handle the situation where @kvmidx is on destination but not + * in the incoming stream. This never fails the migration. + */ +static void handle_cpreg_missing_in_incoming_stream(ARMCPU *cpu, uint64_t = kvmidx) +{ + g_autofree gchar *name =3D print_register_name(kvmidx); + + warn_report("%s: %s " + "expected by the destination but not in the incoming strea= m: " + "skip it", __func__, name); +} + +/* + * Handle the situation where @kvmidx is in the incoming stream + * but not on destination. This currently fails the migration but + * we plan to accomodate some exceptions, hence the boolean returned value. + */ +static bool handle_cpreg_only_in_incoming_stream(ARMCPU *cpu, uint64_t kvm= idx) +{ + g_autofree gchar *name =3D print_register_name(kvmidx); + bool fail =3D true; + + error_report("%s: %s in the incoming stream but unknown on the " + "destination: fail migration", __func__, name); + + return fail; +} + static int cpu_post_load(void *opaque, int version_id) { ARMCPU *cpu =3D opaque; @@ -1096,21 +1125,12 @@ static int cpu_post_load(void *opaque, int version_= id) for (i =3D 0, v =3D 0; i < cpu->cpreg_array_len && v < cpu->cpreg_vmstate_array_len;) { if (cpu->cpreg_vmstate_indexes[v] > cpu->cpreg_indexes[i]) { - g_autofree gchar *name =3D print_register_name(cpu->cpreg_inde= xes[i]); - - warn_report("%s: %s " - "expected by the destination but not in the incomi= ng stream: " - "skip it", __func__, name); - i++; + handle_cpreg_missing_in_incoming_stream(cpu, cpu->cpreg_indexe= s[i++]); continue; } if (cpu->cpreg_vmstate_indexes[v] < cpu->cpreg_indexes[i]) { - g_autofree gchar *name =3D print_register_name(cpu->cpreg_vmst= ate_indexes[v]); - - error_report("%s: %s in the incoming stream but unknown on the= destination: " - "fail migration", __func__, name); - v++; - fail =3D true; + fail =3D handle_cpreg_only_in_incoming_stream(cpu, + cpu->cpreg_vmstate= _indexes[v++]); continue; } /* matching register, copy the value over */ @@ -1118,6 +1138,23 @@ static int cpu_post_load(void *opaque, int version_i= d) i++; v++; } + + /* + * if we have reached the end of the incoming array but there are + * still regs in cpreg, continue parsing the regs which are missing + * in the input stream + */ + for ( ; i < cpu->cpreg_array_len; i++) { + handle_cpreg_missing_in_incoming_stream(cpu, cpu->cpreg_indexes[i]= ); + } + /* + * if we have reached the end of the cpreg array but there are + * still regs in the input stream, continue parsing the vmstate array + */ + for ( ; v < cpu->cpreg_vmstate_array_len; v++) { + fail =3D handle_cpreg_only_in_incoming_stream(cpu, + cpu->cpreg_vmstate_ind= exes[v]); + } if (fail) { return -1; } --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809628; cv=none; d=zohomail.com; s=zohoarc; b=Fa/iMHXu8VjYX8JURJXlkPGP4aVeGrqBF9rZ6dkfVBMR01rK0kLiIwRui6FoUSQE6IsCHY34x6m4tH1qw+iRNTxy8VVTrU83dB/NuDe3ceansFKK8K2bsBrN9YBsDk1jdfA1OhNcXHXe9lRyQmqi+igNdC44d1duJblqvkKZRsg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809628; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=mP1M5gBlVb0DOzqQFi7vxvIto0M97Lt8KwvwGVINUDk=; b=V2z5bSJ4PtAI/KimzmZyq3VwNMQKbj/fgwGWjGtCFJ+2yxcKPxvnCOrr0/qOjd8s4M4fypbefHLW7czI6YB1CDjkEGXM6y0rZI7LbWg1rv3DlLqSsA7FqrHKgnZm92Qc+JrgRsM3NSmFvoc/GXI/W3lIug2oKfaBFJm6AkURGUQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809628379161.78401049347121; Fri, 6 Mar 2026 07:07:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWes-0004At-Hx; Fri, 06 Mar 2026 10:00:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeq-00049D-PE for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:04 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWep-0002T6-0C for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:04 -0500 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-48069a48629so97900575e9.0 for ; Fri, 06 Mar 2026 07:00:02 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809201; x=1773414001; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=mP1M5gBlVb0DOzqQFi7vxvIto0M97Lt8KwvwGVINUDk=; b=sV0hmDSsyfJA2+SBQicr9FJUbkv4ZuFebjvaOpnZlTH5jJeai3gvvHSsXt8eP8r4r2 sYOG3s7/PueCvbgM18G97JyHOlV/zAP3Uscsqui5NoK+MKGlyLzwq85iy9xrfjjnH+29 hCZGHsNEy/lkaNbnNPoNyZXbhaRi1pzHzEaBZvhhrizD0iSvWY6jOjNs0o73GLz9qqCG NfOeHz0UySNiGyuYv51USuu8um9RSZy+T4u6seBTsXrWQlaGzSYw7f7kE8oWXqn2GpmY sqq3IGpzkE1rAcnfOrosLS5aoxEdiz7IIsf2PDJpa75Chk5guCtkfCuLfJUZjutYX9YX 9IIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809201; x=1773414001; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=mP1M5gBlVb0DOzqQFi7vxvIto0M97Lt8KwvwGVINUDk=; b=b3RV3/kqXuHLhnVJNH262k9BjQRsgOP7omPw57QyLdpaVlyC2ynqqRO8rAINApEzQh /o2Z10LOkPvSylMyADLayP732NKfH1OKqOgPd/KHz35h5dqCTfCQOEzsA48rEQN3vMCm bTIUtAg2wz493SvBHSyhsBOCbeSsOiLBbb7ebnPinFbUJF5IWVVGjEQBidSrlyhcvvFh Okm3t9riByV3bXc247D7OsFP/96UJHdBXeCh+AKTHyjylYYDVVn/FfyUaIiGWFyF2qC2 WKEHqjVBO6KU1rIXCkQVzAheV6Hx6Lto5sy6MRU2h/Wol2tOpVwv23gBNKJI8pF9tosb lFlw== X-Gm-Message-State: AOJu0YwlD2cB0Z0kxW/IHGpHpaaK70N/3BYlGxkI1UaksVInBCeuqsLr MeSWq7fNBeGWJH0FAMzJ+jiitxUfD4g52YasgiqBCVhqMc8iJv4bqB+GF+I5Vet0RGui1n+eqEA 3cYbs X-Gm-Gg: ATEYQzzvE59jjwztWcUOpB08XQzMevd0MVWTMIH6ifDwXmhsnO++r7VHQ+4/QMbuCLd X5UMGl3ag+e/y6n7er+ox3NL21odUCulvyRb1iT+2IO84HViR0mdgBvegsBXVIZ4seg9L7HWqfn HJlGt9KbrELX/Dhg6xxWdDbw6cRM+xOlZErZ+vJLjSmDC+gNIi2jaTsEhuDxrt2bT1xKqrzeQlX zhJx+j8aqLz0Njx22M2Lu2b5VHItq011PK22wCjcL1mW6FmySB6aqJu8r81Hw2GhpgbBKYFhCIi kfThUOGkR6nyg7+fT9zXFDjaJgsV6+d0CefLYJMZ+7mAGu0h1+IsIujy1PxrfYAeFpvOo8FwkjO MZsXbpFlbYqt/awbYzVITkdkgFI3MoPe9GtWZ/UjuvPsFf5+0xanPZsSiCbbpA+nsr1fyKGwVvs uQYq7LQE/RicQVoAkXzwZ9p68od+IzJtwevChS7lJpvXpY/ggsie4kd4eaYi2FOEiqRVw9Vag6/ A1wzHzDbM2znFaqF6va51zP+TbHt0k= X-Received: by 2002:a05:600c:46c3:b0:483:47ae:7c00 with SMTP id 5b1f17b1804b1-4852695aeaemr40385375e9.20.1772809201402; Fri, 06 Mar 2026 07:00:01 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 21/49] scripts: Move lsan_suppressions.txt out of oss-fuzz subdir Date: Fri, 6 Mar 2026 14:59:11 +0000 Message-ID: <20260306145939.2162189-22-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809630026154101 Content-Type: text/plain; charset="utf-8" The oss-fuzz code uses an lsan_suppressions file to suppress certain leak-sanitizer cases that are known issues or not our code's bug. This is useful more widely than just for the fuzzer harness: if you want to build QEMU with the leak sanitizer enabled and run 'make check' then you will want to suppress some bogus leak reports. Move the file up a directory. Signed-off-by: Peter Maydell Reviewed-by: Thomas Huth Reviewed-by: Yodel Eldar Message-id: 20260302092225.4088227-2-peter.maydell@linaro.org --- .gitlab-ci.d/buildtest.yml | 2 +- scripts/{oss-fuzz =3D> }/lsan_suppressions.txt | 0 tests/docker/test-fuzz | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename scripts/{oss-fuzz =3D> }/lsan_suppressions.txt (100%) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index 6ad3594522..4b1949a3a5 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -614,7 +614,7 @@ build-oss-fuzz: IMAGE: fedora script: - mkdir build-oss-fuzz - - export LSAN_OPTIONS=3Dsuppressions=3Dscripts/oss-fuzz/lsan_suppressi= ons.txt + - export LSAN_OPTIONS=3Dsuppressions=3Dscripts/lsan_suppressions.txt - CC=3D"clang" CXX=3D"clang++" CFLAGS=3D"-fsanitize=3Daddress" ./scripts/oss-fuzz/build.sh - export ASAN_OPTIONS=3D"fast_unwind_on_malloc=3D0" diff --git a/scripts/oss-fuzz/lsan_suppressions.txt b/scripts/lsan_suppress= ions.txt similarity index 100% rename from scripts/oss-fuzz/lsan_suppressions.txt rename to scripts/lsan_suppressions.txt diff --git a/tests/docker/test-fuzz b/tests/docker/test-fuzz index 7e506ae1f6..d2bdc8afba 100755 --- a/tests/docker/test-fuzz +++ b/tests/docker/test-fuzz @@ -18,7 +18,7 @@ cd "$BUILD_DIR" cp -a $QEMU_SRC . cd src mkdir build-oss-fuzz -export LSAN_OPTIONS=3Dsuppressions=3Dscripts/oss-fuzz/lsan_suppressions.txt +export LSAN_OPTIONS=3Dsuppressions=3Dscripts/lsan_suppressions.txt env CC=3D"clang" CXX=3D"clang++" CFLAGS=3D"-fsanitize=3Daddress" ./scripts= /oss-fuzz/build.sh export ASAN_OPTIONS=3D"fast_unwind_on_malloc=3D0" for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f | grep= -v slirp); do --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809366; cv=none; d=zohomail.com; s=zohoarc; b=GYhP5Kw/WvlDks7KXoV/7SqZQikYxau+z3rlkzO6pEk9djqeJ5BD94PmQwiti8R7nq9X3V56KWEiiafHOjtSPxImSFWLuVd0VFL5TNqMyRWMWs7rRbgkBMERNXVmTE80cUtViuZEOfnwinf4a8T39g22Y7xf79ckBXYXvHp1D/s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809366; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=FCcErO1Lc2GPWXlaYX40kIMgUxc5GPWLVNKDekml6yI=; b=fn9jw/d5RY5g6+duxQhgElU/2aBqTXp4LHWl5IbpbmGWZHmgD3UzdA8RiLZ7upUrtzuJUok53sTxYOQXinKhJviUjhfxlSc23WknkOwtAwdaYygJjyfwuJ7zNpT2Ey5TF05VeK/XEEXzv5x1mHBh4rOXj+y0mC1BEjN/Xk1532M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809366454855.2503605073069; Fri, 6 Mar 2026 07:02:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWeu-0004Ct-Do; Fri, 06 Mar 2026 10:00:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWes-0004AQ-3m for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:06 -0500 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeq-0002VE-2c for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:05 -0500 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-4852a9c6309so1984085e9.0 for ; Fri, 06 Mar 2026 07:00:03 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809202; x=1773414002; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=FCcErO1Lc2GPWXlaYX40kIMgUxc5GPWLVNKDekml6yI=; b=EBIU9aF38S+gX9zve7vwoFWZMIUbN2OP8fAG0jduVTRyWUagOABnjh9hpoavn6K+mC Me7hGTrYdnuE2QTnJTvAuoshGwIo53CTRJ6G5c5UqJN/Cr9FDMjNC4gsbtXxgn9YcTba bbmv87/z7qbS/pUNHyvCcxZuN1+2qbaIS0C2dWTseA39auzAyhi2Cj+WGYnLdmHzCfgS scq/3kIdt8H8G3DBa2wQcAL3lED+WVApE3dT31kc6ISLUEXopFR86fTqesWI2evH08Jk 4V8e1F1nkzV+1rpDbcknyWuQVvPxuplDUXN7J2RKCW8iZBt0NMoC96vuPyrcremQs2LI 5V1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809202; x=1773414002; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=FCcErO1Lc2GPWXlaYX40kIMgUxc5GPWLVNKDekml6yI=; b=rWAk5GXj9VjaGZIRpTVivZyfxuaHKtA+CQTNm6ca0fua+teFoRVUrf67IFsdQPT4qZ bXkNpOKpjyRuMmCGB8YjQSI19Ap2Oq5YVaNVB52QyTRFiEzoI/jnezWZwavw1nieqhdH xgC6oejIVHRw8K+dhrCCEdk5jbQZ6GFWq+eWdJdjKkMsGIeeMrNb2WDIUXNCXER6S9d/ CFKwqDUuUQb5dua499kUUUEx+PGSW6d2/t7w1aTbEB26ResdA4oJfz7ucVhrA5xuDblM 3InPxplx1X81gUpmY6yxvFqJfpZHbnoXoXGEFAL0iywLt6/+8OoQlbQB/dNHFLOJ72fH /Oug== X-Gm-Message-State: AOJu0YwqiTt+kwmvQBQCL8cmkl6ZP1t7reJ1ehQraMJtCMBwPchA53bb Mzkjamkj094SGaKpss6/BVzHiYE4P7Xp60L2oPKDtEEjd/9coEeM+Ii1OViR036qCeR1DnRsGgN jIDYC X-Gm-Gg: ATEYQzyV2V2a1ANVlUyORka09PekJOJMNGzGWOMxDRFy5ZJT66qkb8VgA3NNLDUNKlF DHGEWal/sr5Kjh7lkxnTnsyGqGPk2MZYUlK/A7e/ivpTBF5v5IXGCAgnSKMq0uMj59Cy9jUdn94 4YY3y1yo+92bX+B3V1arGVsflncSql0w6yMg7tLqyJ/sP/sj8DNBA14Dmlf8gp7PGZ9sESX84WK OlnzwHTwNSZTHQoXxlsVaK46obWz31Rq+dWtn69S9LFNo+WG/pjtVnjhstqQV5VYHi9zJnPD24t 9B/uW0DEQDdfZhUG5FOPBpCelo51/Q7G1K1eyShnQdEkJGSF8jrZ+rl2MbYDWolD4YMaDT8iTMU XY1keRHA9VzZAZvMlYEvoOOUG0VGXLbn6fDhtdvnY1+IEOtPnoGLoMECJjAbNRE14j+iRVPMEpV o28S66Dj9znidk0H+VYlcG0lU7E1UXPFLu1Zh9mJG8JVLTEsNoaiKOVrtzoqKCoP31y/Zq2ICL8 npb4c/JExuvVwZ0qTBe0ECWBnI4NGw= X-Received: by 2002:a05:600c:1d04:b0:477:7af8:c8ad with SMTP id 5b1f17b1804b1-48526984073mr40690805e9.31.1772809202220; Fri, 06 Mar 2026 07:00:02 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 22/49] scripts/lsan_suppressions.txt: Add more leaks Date: Fri, 6 Mar 2026 14:59:12 +0000 Message-ID: <20260306145939.2162189-23-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809367648154100 Content-Type: text/plain; charset="utf-8" Running "make check" with the clang leak sanitizer reveals some leak reports which are either not our problem or else not a leak which is worth our time to fix. Add some suppressions for these. While we're touching the file, add the usual SPDX header and a comment explaining how to use it. Reviewed-by: Fabiano Rosas Signed-off-by: Peter Maydell Message-id: 20260302092225.4088227-3-peter.maydell@linaro.org --- scripts/lsan_suppressions.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scripts/lsan_suppressions.txt b/scripts/lsan_suppressions.txt index 7d90c280d0..f88bbab18b 100644 --- a/scripts/lsan_suppressions.txt +++ b/scripts/lsan_suppressions.txt @@ -1,5 +1,26 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +# This is a set of suppressions for LeakSanitizer; you can use it by setti= ng +# LSAN_OPTIONS=3D"suppressions=3D/path/to/scripts/lsan_suppressions.txt" +# when running a QEMU built with the leak-sanitizer. + # The tcmalloc on Fedora37 confuses things leak:/lib64/libtcmalloc_minimal.so.4 =20 # libxkbcommon also leaks in qemu-keymap leak:/lib64/libxkbcommon.so.0 + +# g_set_user_dirs() deliberately leaks the previous cached g_get_user_* +# values. This is documented in upstream glib's valgrind-format +# suppression file: +# https://github.com/GNOME/glib/blob/main/tools/glib.supp +# This avoids false positive leak reports for the qga-ssh-test. +leak:g_set_user_dirs + +# qemu_irq_intercept_in is only used by the qtest harness, and +# its API inherently involves a leak. +# While we could keep track of the old IRQ data structure +# in order to free it, it doesn't seem very important to fix +# since it is only used by the qtest test harness. +# Just ignore the leak, at least for the moment. +leak:qemu_irq_intercept_in --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809351; cv=none; d=zohomail.com; s=zohoarc; b=jxlvxFt6JXmC09HDBsgZ3/kFEIdixO7JuLxqah8/8G79pZBWBZhpDtOHTxkSzfGev8lY05T+BQiMNGnbX+wDH2ci1d8w8MyoPH7bKvG8Al+b2Q4T8GcBlPBm7f0oIoAjD39wI+Es8r3qBRdIGfcpb71cN0nIqDbaSz/avmy6KrQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809351; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=URmUpxDAKxkZF/tpctzfZNZZvCGQY0Hg4ZEcA6KURzU=; b=j3JWu1cIM0ihbpff3EbquJ/SN8kycye2gUgOiMRXeoxA+oEZpXnFO1FhrzmTd5VbvWctwyvLFHs+HfXyooIqH+MB4XSN2DTbUL9nObcTIEZcc0pkXYqTOc2WqZMlS27yzMs9wgASNPoPxsqNFLtnkW8worlevEb1KDPbMgayGAA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809351948447.96262596337147; Fri, 6 Mar 2026 07:02:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWet-0004CW-RK; Fri, 06 Mar 2026 10:00:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWes-0004Az-IL for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:06 -0500 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeq-0002WP-Sn for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:06 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-483bd7354efso121936085e9.2 for ; Fri, 06 Mar 2026 07:00:04 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809203; x=1773414003; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=URmUpxDAKxkZF/tpctzfZNZZvCGQY0Hg4ZEcA6KURzU=; b=bX2uHWddwPw+QZGpFhbSuxbjazNCIQiVupdW+cB8Fi8EtYAtK9GajKcrDepXAaIrAR AafCONbR605HtH5zaWwQsLNxxPhc2lM4EnHyokgOHxAKd3Qpm0hSwqbYvYb9CqRbLdYt CYVNb01hdq7XYAU+bVhJig/co7tCya2R9v4I0UBWfYByP2nQ2pNb8SZeMzPe5FUmlTb1 DqrZx2FciO5a6oGTbVg65AKnPU9dydiCTkh4nJWzhiQyGl4oe8yz/5xiMPMdMXsUo4xy PU4rP5iOj1gWnQc0/ErjVhL+HG1d/fwL20IArfUwX0r1ADNZqvdwnJVVu5GbdtI4Oosm rPdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809203; x=1773414003; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=URmUpxDAKxkZF/tpctzfZNZZvCGQY0Hg4ZEcA6KURzU=; b=Rif761tipWr/AWCQF1biTyDU2fZnce0fjZPit7Ug16PhqnipR2C94Im58DqKUnyS3+ hbXh7PQPaz4NouvytV5rhvszN/fo7PPR0G5b7GgwsmhLntxvx5EMvVaNZQA7C7Oz6kC6 jtmCaRSmjM/qoEEfp4oZSNgJE0hKHr0r7lKhHoQ8/4HWRkYwDXsTd7M8kbqr9xZfvIdZ YGIapUorPjUguP6kA5MpXAQ5SOuZ3/poNV/9uOartELcrqO3Jx0UFMTnGFONnLeZupQk cnX4OeWiDa7QpkIpf+xj0Wu8JKMcCcHI4EqxHuORUasowOTDwkhBr2K13nMd0WAHnmom 7e8Q== X-Gm-Message-State: AOJu0YyJVaZq68ommaix9YEOuMgJDwDIUI1L3rBNQv/XsajgVqbIBBiG PWV8M7XSEPr5xP4NXSIrljWqaFWB4AmO0l/AlCOm1h8VoTy7djvnRATm67x+RRtJqAVuDtRbrTb /3sjt X-Gm-Gg: ATEYQzzwODXhzbizj875ZVMw9c0/9+7fSELhRZSXr5nbKzoHgKgQgzW9X+IKh38Yg5E qcEWCu5KRZ3Xa744t00UTdO4SOUY9QjSxDgd44Qx35RzHK/BVpFsIVGC/V4xtcu91tQvgwYlyST gRANPnXeR/ld5JjDRGzYwvySnuTszqPXZzwqe/plgubDO87ybCiTfglLBmFHrzLNjvYUHo0xila kcztcvAEQaHC05rqNCo5ZZAodrWJtjecEwAu5xnpuTwsI2/nwbunTTtj1yEw1ICzOLt9PFRrlA/ LdEXo6bvxCPcAQwqr/lj/aXTRxn3+i+pr1W2EM6gujRMhAYxK7N2KvyZz8/6fsywVAe/d4yt5hv BhXjyNBf3e+MPUc10VaFvqXWqrxNTJotT8hwkmIFYv9kCE/7h5bWiZTFRVy6g8CXl7GYGJVIuNP lvaTiG+lFnyzyJJ67doPtTYB39X49PUOCZp8uhMcZxiM38k5e+DJcmzOWuaO8tmD85Sh4Bh/mdB Sem9c9e+qGgypIwT7SJ4x9whDAZLQY= X-Received: by 2002:a05:600c:1e86:b0:483:5310:dc67 with SMTP id 5b1f17b1804b1-4852695b81cmr36947285e9.20.1772809203096; Fri, 06 Mar 2026 07:00:03 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 23/49] hw/arm/aspeed_gpio: Don't leak string in aspeed_gpio_init() Date: Fri, 6 Mar 2026 14:59:13 +0000 Message-ID: <20260306145939.2162189-24-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809353362158500 We allocate the string for the GPIO property name, but never free it. Use g_autofree to avoid this. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: Peter Maydell Message-id: 20260302092225.4088227-4-peter.maydell@linaro.org --- hw/gpio/aspeed_gpio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/gpio/aspeed_gpio.c b/hw/gpio/aspeed_gpio.c index d9237d4360..7d0f87e90c 100644 --- a/hw/gpio/aspeed_gpio.c +++ b/hw/gpio/aspeed_gpio.c @@ -1488,7 +1488,7 @@ static void aspeed_gpio_init(Object *obj) } =20 for (int i =3D 0; i < agc->nr_gpio_sets; i++) { - char *name =3D g_strdup_printf("gpio-set[%d]", i); + g_autofree char *name =3D g_strdup_printf("gpio-set[%d]", i); object_property_add(obj, name, "uint32", aspeed_gpio_get_set, aspeed_gpio_set_set, NULL, NULL); } --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809659; cv=none; d=zohomail.com; s=zohoarc; b=dGdbpEGDYTFEq2n0cluxqGYwpRr0KXhc5AD4XS+mlVSdwjpR/7r0YWXYnO6OLMhaRwlWIEf4ZGXIa16y3TaRuoKgHyuKE9qlfOK+fY7pppSXajtXCCqJvJARRrQjWva30L2r/txfDfmWTmpnAi4oGFPzOBjrSrsdFmq8Nq77i4c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809659; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=bNW9OAAW7CqT3slS6bSdmD6LPZ5FjcK1/I23zVmHBdI=; b=IMSHH/ERF8NWyz/+p3MP+9cYHHHqa5fagnFWgS7z4aLVrUHIf189dP4sWU/3nsSi7oqECT0ZwZCLspFUA421hG1zfRPwE2F1OCar9qaTHr/hfknj2JFAz3ZogmMkcVsPtf5QsSWhEbJOcHVm490833XOXf+ahAJ9e9gl3H+VK1U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809659048447.8243488859931; Fri, 6 Mar 2026 07:07:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWex-0004GX-16; Fri, 06 Mar 2026 10:00:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeu-0004D8-QM for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:08 -0500 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWet-0002hl-5A for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:08 -0500 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-483770e0b25so80012425e9.0 for ; Fri, 06 Mar 2026 07:00:06 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809206; x=1773414006; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=bNW9OAAW7CqT3slS6bSdmD6LPZ5FjcK1/I23zVmHBdI=; b=Kdl90/4XEyuaRK87++hv/3JWa7GqfZANKTWPqLDILqayi81uSKhFT+0xKm7XLXplun yrDY98+WGLhCOpCEqu/fQwk1jatM2y27vrwnq9AX5V2iRYXNb5ILh4kJNarHc/Zr9iwI y1t2Ml595cyQMyTbOdJYL57d222XeAojwlBjb64Fr41FhbkVm25s/6wbgzpYvC/p8RMa wkp51ipj6Luma5h232EPMglqgzuH0b/S7HA2xHeFbLBAgLhz/N4uGZVLnNhQigbQ1OvD JOB+lpD8YaWwAczI1EvtV5WA3hyU/mEq+xzwR2Zwyj9iHiBc8ocnWgW2t1c8FmdtviBK Gbxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809206; x=1773414006; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=bNW9OAAW7CqT3slS6bSdmD6LPZ5FjcK1/I23zVmHBdI=; b=gC0Iu4VuZ44rppHRWHZznFWJ3QWDKIkwoJf3ydRJYp833p7BlgJPXTe5k7ZyjTANEd JiF2CKsKkI3NWWp2XzJ7gJ17OfykDlFL6Wkbd3cj+SJMRBiQgHD8oe8YhZ8gQ5AlUep5 JA45oPPzJ1RWsku4ipf7Tw06LgEvHfB2QLKvcOwmOUxjK+oJb7B5NjKElm1Yuli4c2lO 8p3rAthnsLKwY2yVDM8uPDUOaiQjJ7P/Mj8tL+hZSvIlxjInhlYPi/ndy/b2UvYbr9MA eddQ0CuOkbioGteJoK3WbPQ49v4AA5ajC4nscnXisoD+AeEmJeuzOGHQypLscjRUpRIB DIVw== X-Gm-Message-State: AOJu0YyOE7R/YeVDIzevqL4nWPA1psIqqeFMBU8LH9L9xRROmq1QVTjb /ztX2JkaBBt/LChKRnjxYIboe2hWkwGk0yrenao3I34ZKpKe4x6g1WwojyozXJLekKOTsWvaD48 Fjyz4 X-Gm-Gg: ATEYQzzaNhrUwHoHovWsnHoceGyMLe8vmcn4JrmdkjR4F2ufOI1R1gjGpJDJEVjvUUZ 9nbUilqvZb2aGPyknBklE3nhitUnBG7vG987Z5jIj/v4QZLkOWL8BPMdC8r3I4FG0CSe658c6ZB kEGOWO5GfvTQd2vxrW724qimTc38rUfOOo9zoBJJrNsz+87ONJNHKdHBw+sJmelOUyfUjzxc2sU ij3yCPqlXwr3l6++P0ybS7kBk8bER5BTd21TNJYmxOYPLi1X+Y+VO97ol9OgbpcOzq8qDQHg/7W KOS/VeCgc5VfzR2bnCNxM1lmKU/k/icDmFUujWdPhtjxion51MmAzlZNh+Jy+fElw+xwRnLbl4F Tltsqm3k0lGqA83/CMlfAh4b6maCBgOnhj6f9+1x6q/C5UUvXN0/2Vsd6NxaKDifSe/8OjTNe8e jHgfiyxFV8ZQlCmiXtGqiDJzYRckNqiSS0Tbarm5VxZoY2va7BuudYiptBh+GQii4MXNkoCsgy+ HBHhovnSzKo/IVDYtwsAfc0i1+8cc8= X-Received: by 2002:a05:600c:1e2a:b0:483:c771:10e with SMTP id 5b1f17b1804b1-48526957d6cmr36362415e9.20.1772809204010; Fri, 06 Mar 2026 07:00:04 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 24/49] tests/qtest/iommu-smmuv3-test: Free QPCIDevice Date: Fri, 6 Mar 2026 14:59:14 +0000 Message-ID: <20260306145939.2162189-25-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809660485154100 Content-Type: text/plain; charset="utf-8" The QPCIDevice we get via qpci_device_foreach() is allocated memory, and we need to g_free() it after use. This fixes asan leaks like this: Direct leak of 64 byte(s) in 1 object(s) allocated from: #0 0x622a5f16913d in calloc (/home/pm215/qemu/build/arm-clang/tests/qte= st/iommu-smmuv3-test+0x1d413d) (BuildId: bc598be1f4ad6d1a9a600c55aeef36108b= db6a04) #1 0x73ee41c0f771 in g_malloc0 (/lib/x86_64-linux-gnu/libglib-2.0.so.0+= 0x63771) (BuildId: 116e142b9b52c8a4dfd403e759e71ab8f95d8bb3) #2 0x622a5f1d4cec in qpci_device_find /home/pm215/qemu/build/arm-clang/= ../../tests/qtest/libqos/pci.c:82:11 #3 0x622a5f1d4cec in qpci_device_foreach /home/pm215/qemu/build/arm-cla= ng/../../tests/qtest/libqos/pci.c:34:19 #4 0x622a5f23cc73 in setup_qtest_pci_device /home/pm215/qemu/build/arm-= clang/../../tests/qtest/iommu-smmuv3-test.c:45:5 #5 0x622a5f23cc73 in run_smmuv3_translation /home/pm215/qemu/build/arm-= clang/../../tests/qtest/iommu-smmuv3-test.c:74:11 Reviewed-by: Fabiano Rosas Signed-off-by: Peter Maydell Message-id: 20260302092225.4088227-5-peter.maydell@linaro.org --- tests/qtest/iommu-smmuv3-test.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/qtest/iommu-smmuv3-test.c b/tests/qtest/iommu-smmuv3-tes= t.c index cced49a9b6..dae9821b92 100644 --- a/tests/qtest/iommu-smmuv3-test.c +++ b/tests/qtest/iommu-smmuv3-test.c @@ -77,6 +77,7 @@ static void run_smmuv3_translation(const QSMMUTestConfig = *cfg) g_test_message("### SMMUv3 translation mode=3D%d sec_sid=3D%d ###", cfg->trans_mode, cfg->sec_sid); qsmmu_run_translation_case(qts, dev, bar, VIRT_SMMU_BASE, cfg); + g_free(dev); qtest_quit(qts); } =20 --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809320; cv=none; d=zohomail.com; s=zohoarc; b=Gwdu7E3mFW+jD2WDOPEsAo1YaMk4wV5ZfawnUi/zUzhfpzY4rqRBvt2KSUpiCH5e79thUzqW3Tl7aOdL7K4eq7Y0tk9fBz2tpfatbQVXJBGWUR7ZC2uRERImQeHko7lACFTR2RyfFdYmpqccoIaCbAV+dc7tB1LCNJc7kKdv1xc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809320; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=wo0rXQ6D0LSglAMllL+ii/BMzV/Kw9eNTOAdJyQWzn0=; b=lfigSyuThmasq63tZGRGAhjt8XDqe7OAaCEVIQLieggQZuE5eSErqzO21knhscizmhhAa0U4E2TFF04IbqWjAW5F0W5acbKFhw65Xq30F2h6hffvYUaJvt4LVbtCqgHnpuTAefZiNQ2YTIdYGD9hM6wASE6JHFT0ppVCAHPbjwk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809320672914.2695780850894; Fri, 6 Mar 2026 07:02:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWew-0004Fm-C6; Fri, 06 Mar 2026 10:00:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWeu-0004Cv-GJ for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:08 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWes-0002hQ-Ju for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:08 -0500 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-4806f3fc50bso101964225e9.0 for ; Fri, 06 Mar 2026 07:00:06 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809205; x=1773414005; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=wo0rXQ6D0LSglAMllL+ii/BMzV/Kw9eNTOAdJyQWzn0=; b=jA+v2S8CWuv/efphyyu/h+0qTQpFsXi1nfWbNi2J0tuREtZPZRZq/Tcx/qpSEII3k0 gcR+Ruvfn9TdMb7tJjh5Ye9PDgoUWyYFN4wWUx9Ng/0AHdAJeZ8xIQCaDvYDIx22nDxj RZGkVCA4LhHcTFaYa1ZlwvkjuIVgHIDGYnjADsv//L1TjUHQU8K9ZnSEhDMsnf/pCj06 lWKxQCHnqqH7pChpESwgUZ7U9Oq9LLuGAc4FaDkp5H/7vzop0KJXEZ1+cCmatRlO73bA csc9myZ9Kg/j3QrRRnierb8P+38bYgMH3Es1+cfPn1UFctAzmWjq05BcaGotDpRYnUSZ o0gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809205; x=1773414005; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=wo0rXQ6D0LSglAMllL+ii/BMzV/Kw9eNTOAdJyQWzn0=; b=UxaGdIxC/tM59DVjDXr6fd8+GrmESifevdvVv7qlpiKmmfH+nIXGhxHvIYQCZOkNWV XYcYpV/A+oy52VaKPhSQuPoGoY0N+otY5QpEQCLD4dGS/SKStR+jAjq4Zqqe6IU4fhaU 0hIPbZSD93FTV10EEiRMBnTLGn/Y+FOs1q7Dotg2LMq9feROnGTGeuYh+vjNJYXDyRe3 pP3gp3niWHyeZ7LjjL6v8/YrGOWA00+CC1RamJKsH4NnmKyclUguMCfHmGRnGw6/Lnab XGh/ITAZdCshrJOBAxaLuWorkPafL0VBjxHN6TURHrbV8+dU1fVsGuLvgtWCfLCLvMr0 HsKA== X-Gm-Message-State: AOJu0YyJTqMrpZ2MIt7D/6f+DGLyDhFKjql0DJwEB9m/5+LBPE6paGdA R42LfJ696kERdxOwFmOAGZYkI/nCGngt8Ikp2owZHZXFeaJywrbBg0dogffLhvoM7mx0ryeDcYa 2kQex X-Gm-Gg: ATEYQzwMXHn/dMRl5OzgPamh/zOOe3dKsJiSOcfoMFx7ewfiwUpyeIuW4Ftyrz8asoI mC9sVndrBlxnGD2KYtpOXAVmb6t0IZPPUvB+2JsRQyAm5t8iHJ3bLP/0UKPiTYUHi2TtEZtbT+E b00OdqrLmgWkYRIFBB+3CHYGMCwoFq6koNJw6Lkc4OWh7O95nycXljRJl56tj22Grb+zC+uP5rU r+bEowHIFB37WpQKzTTGWdaW/pXF5AktZPD3vW4/EcYCelIFr+2zA4iBFBQImaoUpezbG4w9CTz JZiDp93jvCh6Z3QQg4n7pHKMlfDFOUVzbLO2chfquVGoELhumOWm5qJJ4Vy2eQ74QaKF2mdYmjJ 2gED1QwXTc/9scEHjyv9NLjwMvBZXZ03nvzOzl3NRzOsMTy0F6vVzuQo1Q7tjOu52pFQ9WGHsTF c7ZFZXRpfDDuG0WOjlWqmo92xO5LMkVuuqs9KRlRzU7tQyZ0vJ0vDlgt3uvukSFFH0HlADkeBKM C7TWGjQu9sQZV1TWjSfePZI0WpdgjltV5kYr+VlmA== X-Received: by 2002:a05:600c:a0d:b0:485:1878:7b8c with SMTP id 5b1f17b1804b1-4852695b6fcmr38290185e9.18.1772809204932; Fri, 06 Mar 2026 07:00:04 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 25/49] chardev: Fix QIOChannel refcount Date: Fri, 6 Mar 2026 14:59:15 +0000 Message-ID: <20260306145939.2162189-26-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809322891154100 From: Fabiano Rosas The IOWatchPoll holds a reference to the iochannel while the "child" source (iwp->src) is removed from the context and freed. Freeing the source leads to the iochannel being also freed at qio_channel_fd_source_finalize(). Later, io_watch_poll_prepare() tries to create another source with the same iochannel and hits an use after free: =3D=3D8241=3D=3DERROR: AddressSanitizer: heap-use-after-free on address 0x5= 14000000040 READ of size 8 at 0x514000000040 thread T2 #0 0x561c2d272fcd in object_get_class ../qom/object.c:1043:17 #1 0x561c2d338f84 in QIO_CHANNEL_GET_CLASS include/io/channel.h:29:1 #2 0x561c2d33b26f in qio_channel_create_watch ../io/channel.c:388:30 #3 0x561c2d2f0993 in io_watch_poll_prepare ../chardev/char-io.c:65:20 ... 0x514000000040 is located 0 bytes inside of 392-byte region [0x514000000040= ,0x5140000001c8) freed by thread T2 here: #0 0x561c2d2319a5 in free #1 0x7fb2c0926638 in g_free #2 0x561c2d276507 in object_finalize ../qom/object.c:734:9 #3 0x561c2d271d0d in object_unref ../qom/object.c:1231:9 #4 0x561c2d32ef1d in qio_channel_fd_source_finalize ../io/channel-watc= h.c:95:5 #5 0x7fb2c091d124 in g_source_unref_internal ../glib/gmain.c:2298 #6 0x561c2d2f0b6c in io_watch_poll_prepare ../chardev/char-io.c:71:9 ... previously allocated by thread T3 (connect) here: #0 0x561c2d231c69 in malloc #1 0x7fb2c0926518 in g_malloc #2 0x561c2d27246e in object_new_with_type ../qom/object.c:767:15 #3 0x561c2d272530 in object_new ../qom/object.c:789:12 #4 0x561c2d320193 in qio_channel_socket_new ../io/channel-socket.c:64:= 31 #5 0x561c2d308013 in tcp_chr_connect_client_async ../chardev/char-sock= et.c:1181:12 #6 0x561c2d3002e7 in qmp_chardev_open_socket_client ../chardev/char-so= cket.c:1281:9 ... Fix the issue by incrementing the iochannel reference count when the IOWatchPoll takes a reference and decrementing when it is finalized. Signed-off-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Peter Maydell Message-id: 20260302092225.4088227-6-peter.maydell@linaro.org [PMM: rebased] Signed-off-by: Peter Maydell --- chardev/char-io.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/chardev/char-io.c b/chardev/char-io.c index beac5cd245..0e5ba316ed 100644 --- a/chardev/char-io.c +++ b/chardev/char-io.c @@ -88,6 +88,9 @@ static gboolean io_watch_poll_dispatch(GSource *source, G= SourceFunc callback, static void io_watch_poll_finalize(GSource *source) { IOWatchPoll *iwp =3D io_watch_poll_from_source(source); + + object_unref(OBJECT(iwp->ioc)); + if (iwp->src) { g_source_destroy(iwp->src); g_source_unref(iwp->src); @@ -117,6 +120,8 @@ GSource *io_add_watch_poll(Chardev *chr, iwp->fd_can_read =3D fd_can_read; iwp->opaque =3D user_data; iwp->ioc =3D ioc; + object_ref(OBJECT(iwp->ioc)); + iwp->fd_read =3D (GSourceFunc) fd_read; iwp->src =3D NULL; iwp->context =3D context; --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809310; cv=none; d=zohomail.com; s=zohoarc; b=G2cdvoFmPclurdIaqrIR/+97xhfERG6DUkrnTKuiI7NebchRU8EU0ivgNh52FTOLvdDx/l11SPWJu0QLLlXmmJsF01526KygPHFvs4qWFRW6S/eimkc8NCvbZ0xmrC9zLyCgsMbd65FBggfpeE33bm+EjnwU1VAHcu6YJ6qjbkc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809310; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Mpd1fC10sURVISQkh80gCxXKmWzy9rA/S8ZrOhfrDB4=; b=n1vXXgF63zUmtd3Wh3wGyEnO1ZgXwO/9qqIn67sXIu8hoY2AC1FtWBvsKckcqpSZArOgQMWecEo6fChk7gI9Zw1QloKjpcenfpLYvERDBDunGJkSZHYS4G67jh1RnPQKcS0jNURCS66ud9gXQyi85EGnG+KiSodqeqah0B0gzY8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809310681539.3931104989533; Fri, 6 Mar 2026 07:01:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWey-0004KF-7R; Fri, 06 Mar 2026 10:00:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWev-0004FB-Tz for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:09 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWeu-0002iL-8X for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:09 -0500 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-48529c325f0so2591225e9.0 for ; Fri, 06 Mar 2026 07:00:07 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809207; x=1773414007; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Mpd1fC10sURVISQkh80gCxXKmWzy9rA/S8ZrOhfrDB4=; b=gmcEUpJVEPQkfA5pBA6wawxttZ8HvzmSt2o6utHzCT8zETcRneeIkydBTPI1NZJ4e+ xG6xHGkj5eyBtccom/NHwKm3XYmxjd8wuahp21UUUy+OBDrXWy+miPoq5Kk0IEA4NYzi FWD5fsBWc3C1eQGNC0Okj2zsMbhVMHDZGN8t6O8HZKn7m1/TCcEjvOXyiIRSARI/GSg3 OIBdSwkxVJfUCRLwLjoHhzw2tBPtArFoaf8CjfTCLnfg8v0YxUpJBGTaHuk/cI6V2BJC FC6C0XjqPQQHIJz3CwTKB+RNjuEAl8HT/xnWkziS6Pp0q5gfsGZwtEuK0s5wb9ETKrEO LKBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809207; x=1773414007; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Mpd1fC10sURVISQkh80gCxXKmWzy9rA/S8ZrOhfrDB4=; b=DGx5ISp7GoYZVEbOt1b0xvm7CcOQgt2u3Invi05gnB9ykjJAfCC4v6DVahDfT4clgf ERmYFCy6ugdQqjkyN05W8uY5Fq+311dIb5TzvExqtzGLQo9emHWpTK403PPghndITHtK 9KrHRq0hX7fnrWU4NzMukLrPVPfjAH/oHaCYbpJ1KFv6/I1eXZRNsGKKMph3sfI//Hos YiqvH7TrDrR1TVUCyGqtV+3+u0s4L97GzzasMAD196FK0ZAZKSH6pNDooHeEXUWuR+JG WsHJ40UGlaT1qVoro+gBgNMVlEegy/Hl4iIZiqMAqTYIeTxft1KNF+PKH3hhtCoGWhkJ SfoQ== X-Gm-Message-State: AOJu0YxiMgDbbYrmz2sEmFwJWQ9NMUJ88BeSEXtpdnO7MZqEK4FSEOVv zdGIrq9uIYCOPAuzF6BOMQL84npvE09AzMkfXGso7c5SQWAkOFemCs3sGELcMqMcAqqx8lyAOGq v+3xK X-Gm-Gg: ATEYQzxA5GBsdyG8CcvWsVPeVu/ay9alLlpBQZTpTjsDtxLgXvvHFiKL2v8gDL6Xcrn eI/nvsiJBjnf6YGDNkIsBRWE5tKjE/tO8n9djCHFISkn2Zk+OC/BQjJ0toKLGrhfTmUnNWlfoyz x4Wg2xn5C/FiuxXpbpzECxcquwdmMTF5CFsqsrgonI+PEgDXaxp/f8hV5sa9Ofl1wL+YuXcFQBz W8RgXh8emFSkXvi+7sJLbszF7EiwkbsA7f3M9z2KV/qOSLdOnGCYnvfosQmnW3TiH1DEjmiN85V X4Vqo4M+Tlwea0lxgIpvfBVgYXAoKOPb8YxkHMneYYRj8/n3vbXf6urnsACcxeYxg+u/oRKMmiE A+sFaXTaJUxNWObVTq9bpkB+3xfSNpDZAiEAndkC1aOfkMHpYnpe8R1fU+njUmV9vzfp8xb/NkT dyXY4MO5S9bZ2UdbjGQrQj8jNXAuNkHsF4y9X35+WbXML47cMgM1SeVilirsDMrpkJyureErvTo A4/Zeett48lZs8lo2vQDUWykyILdIk= X-Received: by 2002:a05:600c:45d1:b0:480:4a90:1b06 with SMTP id 5b1f17b1804b1-48526978962mr39186815e9.34.1772809206597; Fri, 06 Mar 2026 07:00:06 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 26/49] chardev: Don't attempt to unregister yank function more than once Date: Fri, 6 Mar 2026 14:59:16 +0000 Message-ID: <20260306145939.2162189-27-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809334200158500 From: Fabiano Rosas tcp_chr_free_connection() can be called multiple times in succession, in which case the yank function will get as argument a NULL s->sioc that has been cleared by the previous tcp_chr_free_connection() call. This leads to an abort() at yank_unregister_function(). #0 __GI_raise (sig=3D6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 __GI_abort () at abort.c:79 #2 qtest_check_status (s=3D0x513000005600) at ../tests/qtest/libqtest.c:2= 09 #3 qtest_wait_qemu (s=3D0x513000005600) at ../tests/qtest/libqtest.c:273 #4 qtest_kill_qemu (s=3D0x513000005600) at ../tests/qtest/libqtest.c:285 #5 kill_qemu_hook_func (s=3D0x513000005600) at ../tests/qtest/libqtest.c:= 294 #6 g_hook_list_invoke (hook_list=3D0x55ea9cc750c0 , may_recur= se=3D0) at ../glib/ghook.c:534 #7 sigabrt_handler (signo=3D6) at ../tests/qtest/libqtest.c:299 #8 #9 __GI_raise (sig=3D6) at ../sysdeps/unix/sysv/linux/raise.c:51 #10 __GI_abort () at abort.c:79 #11 yank_unregister_function (instance=3D0x7fb26f2ea9a0, func=3D0x55ea9bcc0a10 , opaque=3D0x0) at ../util/yank.c:151 #12 tcp_chr_free_connection (chr=3D0x51300000ffc0) at ../chardev/char-sock= et.c:385 #13 tcp_chr_disconnect_locked (chr=3D0x51300000ffc0) at ../chardev/char-so= cket.c:477 #14 tcp_chr_disconnect (chr=3D0x51300000ffc0) at ../chardev/char-socket.c:= 495 #15 tcp_chr_hup (channel=3D0x514000000040, cond=3DG_IO_HUP, opaque=3D0x513= 00000ffc0) at ../chardev/char-socket.c:536 #16 qio_channel_fd_source_dispatch (source=3D0x50c0000b5fc0, callback=3D0x= 55ea9bcd6770 , user_data=3D0x51300000ffc0) at ../io/channel-watch.c:84 #17 g_main_dispatch (context=3D0x50f000000040) at ../glib/gmain.c:3381 #18 g_main_context_dispatch (context=3Dcontext@entry=3D0x50f000000040) at = ../glib/gmain.c:4099 #19 g_main_context_iterate (context=3D0x50f000000040, block=3Dblock@entry= =3D1, dispatch=3Ddispatch@entry=3D1, self=3D) at ../glib/gmain.c:4175 #20 g_main_loop_run (loop=3D0x502000055690) at ../glib/gmain.c:4373 Commit ebae6477dc ("chardev: check if the chardev is registered for yanking") seems to have encountered a similar issue, but checking s->registered_yank is not a complete solution because that flag pertains to the yank instance, not to each individual function. Skip the yank_unregister_function() in case s->sioc is already NULL, which indicates the last yank function was already removed. Signed-off-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Peter Maydell Message-id: 20260302092225.4088227-7-peter.maydell@linaro.org [PMM: rebased] Signed-off-by: Peter Maydell --- chardev/char-socket.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 5adeb90865..4e82915cf1 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -370,7 +370,8 @@ static void tcp_chr_free_connection(Chardev *chr) =20 tcp_chr_set_msgfds(chr, NULL, 0); remove_fd_in_watch(chr); - if (s->registered_yank && + + if (s->registered_yank && s->sioc && (s->state =3D=3D TCP_CHARDEV_STATE_CONNECTING || s->state =3D=3D TCP_CHARDEV_STATE_CONNECTED)) { yank_unregister_function(CHARDEV_YANK_INSTANCE(chr->label), --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809478; cv=none; d=zohomail.com; s=zohoarc; b=MC99e5Ur0NChmVeuQu7QIFH0EUN2fYqTv+zkJaCMg5d5u8lobPJUFQbyua40bVbsCcBBDJ6nHIq3iEWTAdIa+G4Mt+zG4Jd2WsLEPCNJQcBoHAXn8pHhOk5riFZof53MlaqtWlNJY6zW8qOBkRSBCPCbxVILl3ivntQRCoiKsUc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809478; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=KTmpT5vuJNgghnJL1HOs4npdoQcEgc1RFWY9F7V6Wog=; b=mZZFVKSsRaXbCyuu2SSG4lJCKRRy5B3pdS02eG81uQLervR2nYnX0l2NZOCQWuTsQKDff7v5nQfBhlU6hPXyoOBE/5hQ9tKyySJGXeNVx9MVhvGehM7l2ZmzbC+LwSoYWzZiXa5bky1zdGD1hDHwlCaHn9KONErnSTWEC0B+6XU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177280947878997.21388029703473; Fri, 6 Mar 2026 07:04:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWf0-0004Nz-70; Fri, 06 Mar 2026 10:00:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWex-0004H5-Kf for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:11 -0500 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWev-0002iv-SP for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:11 -0500 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-4836e3288cdso63302955e9.0 for ; Fri, 06 Mar 2026 07:00:09 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809208; x=1773414008; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=KTmpT5vuJNgghnJL1HOs4npdoQcEgc1RFWY9F7V6Wog=; b=GrYQATRsr1+d7+Zh4qvHkAEMkT/e6ZYovqI8efbmllP0lWVDgUA22HxYDC70+nL9yy DHkywgFljevc3pJrvIcKUFAhpvWRwASdol1lTWNZgtJR/bTpljDfmaNSoFxItuR0sp9m RS6EFoItjPuVQCQlF4uIeyjMwnsn2zVtAbVcSRlVNsKOGnPMyRYJupKHON5qI5uhVs/g VcZWynbLidFYhBKw9T6UQurot9D+2M85DJ9GLPt0jmF9/Ykos9HpZFdZb0XrBRrIqdjT kKGJdJxDv9/xfD5AMzyDOhGmVwwf/aFbhexTEF/7174kajELkyDeY+czYP2I2RUPzJjl k7zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809208; x=1773414008; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=KTmpT5vuJNgghnJL1HOs4npdoQcEgc1RFWY9F7V6Wog=; b=STzBs+qcmIUARoilMQOY5g9bNthdbPgogcE7UMvboD+bdK/t9bfrBMbjvBqj57+70h l9as915nKvhs9mvpZuGEwN4PCjae/BuOCD13uxwdWTSfLE4GsEf/CvRHj75DTBPEorye gGQItog9S1T0RaN3ihKlW1wsO6o3K+guTDkEoM6qfFbCNr6WwOkUOnUKIAp0Di+iSK3e qFss3Q7Om5lGCgGYiuKYis9SqSt90N6HjKWZWJKvB9+DhCfxmo8mhxdSJAhInQu2ht29 lj2PKRqIUCsnV1ZmsYrOxQg4tyhkWQS7svigaLYph6qG816zeqI+nTps/DKY7clMUYkt aPJw== X-Gm-Message-State: AOJu0Yw1yHOtDZkL7A6phrhVI7BxrBpzGWs7iFAxujK42PHovMjPJkUI A1PGZF1jOPhzl8FQNO5rLXnNx461XQ6xv/DMsWsge+X5DXkTbz75ZVCeGcMInE13kBahJzj7YkE PcWKR X-Gm-Gg: ATEYQzxRyYW8JaC6rwpdW3PJ/v/Uqwhh4tB1nLnH6h/e1drX/Ju4pyhBCqCtF1xv24T wvYMr3v6muE9efLrxZM9EHwxrI5+HMAVQ2QrrdkEkHAdzE2h6lRkZzfnQxPIQschvROuuxbWoVK A5CqvvCY5cijAO+Gkq6lhShAHl0qEOTYImhYwwD4wVIHCcNCv6jWXxe/fWZ0sOMG5COkHeZwjge 4b3zxfQWkHE/pu67BVTq53xJ8WoLfD8t9EE66dakxVvOnsZwFvCJwkTzoMEsANEJA1Wt0tngp5z hQaXqzbtc2/EdQgUcIYMEWG5z95Pk/O1MWp/7/b2FYZkEWePKW+hdhB3MGTlxWMUJCbLsY9x5wS DdO9irzdeDbipHnzIYjvTZyl5pPm2mk4EJtZji8pzlKvsbaX5jwKWm28/2VfMpNWsrz531xs2+2 F25dp95njVMyer2b03mOiiGorloPh9eIHSiI5OShTwDMzwFT/wX5LWK8sFhgez4UAu19OLFmQNT Myw6+E14DpRVgyPY2SJV8swRkw00AY= X-Received: by 2002:a05:600c:4686:b0:47d:403a:277 with SMTP id 5b1f17b1804b1-48526715257mr36935345e9.4.1772809208146; Fri, 06 Mar 2026 07:00:08 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 27/49] chardev: Consolidate yank registration Date: Fri, 6 Mar 2026 14:59:17 +0000 Message-ID: <20260306145939.2162189-28-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809481625154100 From: Fabiano Rosas There's currently five places where the yank function is being registered and they all come right before tcp_chr_new_client(). Fold them into it. Signed-off-by: Fabiano Rosas Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Peter Maydell Message-id: 20260302092225.4088227-8-peter.maydell@linaro.org [PMM: rebased] Signed-off-by: Peter Maydell --- chardev/char-socket.c | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 4e82915cf1..e064b105c5 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -905,6 +905,12 @@ static int tcp_chr_new_client(Chardev *chr, QIOChannel= Socket *sioc) s->sioc =3D sioc; object_ref(OBJECT(sioc)); =20 + if (s->registered_yank) { + yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), + char_socket_yank_iochannel, + QIO_CHANNEL(sioc)); + } + if (s->do_nodelay) { qio_channel_set_delay(s->ioc, false); } @@ -943,11 +949,6 @@ static int tcp_chr_add_client(Chardev *chr, int fd) } tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING); tcp_chr_set_client_ioc_name(chr, sioc); - if (s->registered_yank) { - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - char_socket_yank_iochannel, - QIO_CHANNEL(sioc)); - } ret =3D tcp_chr_new_client(chr, sioc); object_unref(OBJECT(sioc)); return ret; @@ -962,11 +963,6 @@ static void tcp_chr_accept(QIONetListener *listener, =20 tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING); tcp_chr_set_client_ioc_name(chr, cioc); - if (s->registered_yank) { - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - char_socket_yank_iochannel, - QIO_CHANNEL(cioc)); - } tcp_chr_new_client(chr, cioc); } =20 @@ -982,11 +978,6 @@ static int tcp_chr_connect_client_sync(Chardev *chr, E= rror **errp) object_unref(OBJECT(sioc)); return -1; } - if (s->registered_yank) { - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - char_socket_yank_iochannel, - QIO_CHANNEL(sioc)); - } tcp_chr_new_client(chr, sioc); object_unref(OBJECT(sioc)); return 0; @@ -1002,11 +993,6 @@ static void tcp_chr_accept_server_sync(Chardev *chr) tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING); sioc =3D qio_net_listener_wait_client(s->listener); tcp_chr_set_client_ioc_name(chr, sioc); - if (s->registered_yank) { - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - char_socket_yank_iochannel, - QIO_CHANNEL(sioc)); - } tcp_chr_new_client(chr, sioc); object_unref(OBJECT(sioc)); } @@ -1180,11 +1166,6 @@ static void tcp_chr_connect_client_async(Chardev *ch= r) tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING); sioc =3D qio_channel_socket_new(); tcp_chr_set_client_ioc_name(chr, sioc); - if (s->registered_yank) { - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - char_socket_yank_iochannel, - QIO_CHANNEL(sioc)); - } /* * Normally code would use the qio_channel_socket_connect_async * method which uses a QIOTask + qio_task_set_error internally --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809608; cv=none; d=zohomail.com; s=zohoarc; b=Jem5sdSJebxn/gaF9gLs3s4fuyYBPrxqQokVtK+Y1H4xVeiIX/HvMAtrmSDKUcqc+91q5FkZ1eQ+uooHjI3Uu0kSRS0VaaUtL9smO242Vex7B1kj7jC2ZTSV1/8yOTIBlTHTe+U60S+S1/YZ/jdBoKhPlGLH2WZucrJeQgbomo4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809608; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=g66N5rRkLXpQRozpgeaSX2aSBSYfnGWNWHDlSt3lUl0=; b=XKzGGcCgzY92GYqeAab8WsJAFDh/iuu34paDxUoSvRfc2I19WSPfkSuhbj9SB+QlLi8pF6oyPvumrDtYe396W6HK8ugSsK967aSqRUAohR2UvH6o5o735HFONad4L469f79zvU41ZoW9B9UfzUswdEIjejIm9qNa5CHn2RNWVyw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177280960879278.68385947958598; Fri, 6 Mar 2026 07:06:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWf0-0004R9-SS; Fri, 06 Mar 2026 10:00:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWey-0004Kh-BX for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:12 -0500 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWew-0002j1-LZ for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:11 -0500 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-439c5b40f60so2779163f8f.0 for ; Fri, 06 Mar 2026 07:00:10 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809209; x=1773414009; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=g66N5rRkLXpQRozpgeaSX2aSBSYfnGWNWHDlSt3lUl0=; b=bIZvt+IiyAbVjACWV3MimKfd5UhFGfvmTq7FS1EvPUy6FpLADqcL4fq8oabM6xHoqO 0bqyfcqSHrs+yL+aDq2elXj4jgtl5XFCCt17+pRjZKX0vxW86RQL/1hKfrAzmUlcqhYa O6cNuk46PoXzv+H1gNg2XdHzq7pmepLShzRuQtX2nbZnDiy/d+R6J8CyEWhsCAllumL6 GkDyjkc5UsxJair6U7WZ9EloAAtjudpZOuZsjpjkSYbbtOmXxZFvel6Ph8lV42W45BCi AoRGYiYWYpBQSrleR7ylSehrZlS5UV5biYTTU1VphmIxf7Ko8ErAIaFXSUdNMYeofYFs vnqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809209; x=1773414009; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=g66N5rRkLXpQRozpgeaSX2aSBSYfnGWNWHDlSt3lUl0=; b=B4EU0/8ZWqlYY4vTBtnqt1huup2TuHVbkx0qa4nEv76zGgmFVx6h6d7W/15/gLusk2 w+11ZwGA22DYkiVMaK1WQdHj+ESzZh85AiKOCCeH/6apehfqhfG9PT14I/Wor9Bm1Z+V vz8rpTTViRn9irBBrlQB8OprLaNE4UJ9WudKLG3fNz33IK8iyal4JEfbehBv/Fc7SAAj Z6lKae+63jRdDxu+kjx+8qK/Akf1XL+3ywVo2go7iF68JlpLI6twWWfvzNqTFEJ1QEU/ wF14NX0IM+S0tyg/Qpj0eTlJxPkyqtSZQv87EgJGWi2mNpBepwBZ3JMXHzwCHLciRl9/ tgTg== X-Gm-Message-State: AOJu0YyX48bMXLa40XW7UDvK8NCi4dPOS26wwkRBZFlcdN6k3cqURr4j 3vpzBU4xDOQr+eQhp0tLtiskF/i3WZ1jk/t8iriT8zgqPmM3RUSBe2yDI39WHMDKvyQ6vaQfwJN F3dDs X-Gm-Gg: ATEYQzxd/BLy6vthyrvVNwreRW7q/QtnhcdpmrfPiYtrToF1ysuALPFtZORTmKNvu2t Le4DdFeg17m+GdFEUb7r0IFKg/6s98BR/hwPa3YZ9QyPCrT7frL8+uMNmXCa0yjzfK3E6cMoKsX qStfxd8kORuRzLsDqWsklef4EsOPam+9m0zpbLkPWfclPUhuYmotLt+szCccJV7m4+HX+8p/HBd U9NGE8R/uOnhdKQBk9CtkO5XfsznoCVpgS5bCLFmP4lZc4NQzR4yymIq7oVtL7NxmQ50SR7EZBN FhFPSPMN0IZkqiBES61AU6565VabnKdRrplL9tTxqvAC/Uam/+MkpRGyZ7sXzNGlM6IrirqvZNK KSpuJ1xnzuedvUr3V0gr/Bt11CTgrU2b40lVxhSFfBacIWPx3my1sxvaMbTfr7Uzj5547d8C702 G8bHBcb3CAlaDhJWjV2H6gejlb3SJo8JXLJV91JdZPqshgB2tnuWPksoQKdp7t1vujK8tpPUfYi HoRdBsVrn0amiOo2dbwE8+1WUhi+O8= X-Received: by 2002:a05:600c:a12:b0:483:badb:618f with SMTP id 5b1f17b1804b1-48526966b07mr37639405e9.25.1772809208984; Fri, 06 Mar 2026 07:00:08 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 28/49] tests/qtest/test-x86-cpuid-compat: Free allocated memory Date: Fri, 6 Mar 2026 14:59:18 +0000 Message-ID: <20260306145939.2162189-29-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42f; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809609808154100 Content-Type: text/plain; charset="utf-8" From: Fabiano Rosas Free the test arguments after test execution. Signed-off-by: Fabiano Rosas Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell Message-id: 20260302092225.4088227-9-peter.maydell@linaro.org --- tests/qtest/test-x86-cpuid-compat.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/qtest/test-x86-cpuid-compat.c b/tests/qtest/test-x86-cpu= id-compat.c index c534e764f8..be67631a85 100644 --- a/tests/qtest/test-x86-cpuid-compat.c +++ b/tests/qtest/test-x86-cpuid-compat.c @@ -65,6 +65,8 @@ static void test_cpuid_prop(const void *data) =20 qobject_unref(value); g_free(path); + g_free((void *)args->cmdline); + g_free((void *)data); } =20 static void add_cpuid_test(const char *name, const char *cpu, @@ -161,6 +163,8 @@ static void test_feature_flag(const void *data) qobject_unref(present); qobject_unref(filtered); g_free(path); + g_free((void *)args->cmdline); + g_free((void *)data); } =20 /* --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809231; cv=none; d=zohomail.com; s=zohoarc; b=VHHYzfRAMk+GeTc17nMOTj05XER1cvZuXd8hKih+6d4QSDc6F/hu1bWv8R+AhGcvMnI0uDKn8M9L4fqfqB9V/uFnjudccTIoIid7GuAUxCafmIX2VGSH+CBfDbQQKkkPKvYu+UPUEodvjxxqkRThadWTsGGylFnM/K1vWoDw+w8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809231; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=KRbmW3kwir/mYPk9Kn+TgZcLL+Di3FtHW7Nn58l1/to=; b=nMUNzPYhMkXTJqBVaGnrVuekHVPZxHLL4uYOXLnh1yeMlm0yCXCDUzUMuVaPVx1Adiz4u0qhRz7jA9egtQjSN6fngUGSs+lgKAmqk1Yj+g9sl9UaMyHp9xDnXfA/bpdJun0C+EaSKv0j6SkUF0DxzCmWVKaov2PbWChtYiM2mkM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809231935249.63507552548447; Fri, 6 Mar 2026 07:00:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWf2-0004Sg-9O; Fri, 06 Mar 2026 10:00:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWez-0004O6-Lq for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:14 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWex-0002jI-Of for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:13 -0500 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-480706554beso101649905e9.1 for ; Fri, 06 Mar 2026 07:00:11 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809210; x=1773414010; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=KRbmW3kwir/mYPk9Kn+TgZcLL+Di3FtHW7Nn58l1/to=; b=M0/dD7PhDu5j4AmIxXhyHeEOvkvNpFo5jIIjG9UYRin27lDIcb8xwzIQnU1gkRLLql ccORRxoCFISKshjHrEopSv++62b6r+marp8AhuT1iaoaZKd0Pk3NhZ0oBs/wVh0lbOj/ NWU3gBPUj/dVZIUnGsbVZACbUTDTHwIVspC/7Kws3c5cCeFUjP4/upeoH4y8UBiePHcY I33UMS5ULTrFGFRzChm3l53qtDlS1LdCVU5JmiorUn8nxMM1DYoF3NUlmhw8b99pt5Zw p9FnBa42JsOl01Xs3Otb4plNCPth/71CHz2C5uyvENMXJtfIa8pUybl9Z4TjQ0b/2URF ZKlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809210; x=1773414010; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=KRbmW3kwir/mYPk9Kn+TgZcLL+Di3FtHW7Nn58l1/to=; b=IFCBeu8vPTP9x3umCqO8C90UtgbvhTShs+up/xhgIKFJZ8GTN4AL97g2e5a8extTmq CJFJr8b1Lt3pWJkKAn5fP6GhTtlaPCPSscaurmP3SjyMMa7mmF+uplrboRRHKstM8+wz 158Frp6xPD54OKmEpRFKGewx3rr3Naui6ZzbtwV9WiJcUcO0imomdKpxiHOBKIIrYlzc wKy1o7+mR0qNatq+qHVVfWUDJ7iXaONroa1mUmONPphAVxpDyll9/DZR7AaBGLEDcrur A1Lwl8+nHfP96rHzVNFfB6DLMQ8x4PD3l6evDf8WebEbTQJZrR4aNHGgBCAVlP9aKpVz BBXw== X-Gm-Message-State: AOJu0Yzt5MX5gNUjps6N8yQG8GFc4eY7vZCeBW32wGmanYpnhtMW6UKd s/3wOjfRtI6U8FelxAzaGaraqLYnX9My3o/cd/AFhk/WeV+ZNi22f4ngFQFuyq1CjM8Rj11JkMO 4f5bk X-Gm-Gg: ATEYQzw/qpQRSOwIf5D85dZUa4yV8DbXqYXRXv7PT4+cIsIA1fhutzhzbeGBCznEK/Q 6AHOnfOIlU/cusZ/HL/txD7QELVKQE6kQg4bd0Rsnsd08HeZxZlAOPZcEwoXPPeJditwgslFY+K a85Bt0Fr6dOTifZSeeyx6t0nTpZos4rSag9CUqg0x3NhtPRk7ovSecplX7GDQ71nudYz0t2+ovb 4dOAU8lM3FIJVyKH/nMvZZ3SI4sYlMXdRMixkGL4GwikLB190qy5BgssBY+TaYptbKaHZiYTZSi UVUuHxilOxMoPOt1uVgW+O1Zup/+4EcLXfKnCWk78nIkhUxivDu+S2V7G0oFY53y8zjv6nAYmgC aNE4UoDWCAmPTlOKiY39B5Nh888tMx0yo+LlF1SJ8PKmSwhHfdNe/TnvxP8y8g+GManH2T2DdaN HIWQ7u+gnnRxrMPfNwk9ymsA8B/G06LWitIkYxGXz3QCnD4l398wu2mHKABpNIe+vO+oZ4H8GSW DU/o1pDYw6c70KPcCzFUoHdOBSXIfWmeR1LBaB5+g== X-Received: by 2002:a05:600c:4fc2:b0:477:b734:8c53 with SMTP id 5b1f17b1804b1-4852692b621mr41004335e9.12.1772809210007; Fri, 06 Mar 2026 07:00:10 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 29/49] tests/qtest/qos-test: Plug a couple of leaks Date: Fri, 6 Mar 2026 14:59:19 +0000 Message-ID: <20260306145939.2162189-30-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809233581154100 Content-Type: text/plain; charset="utf-8" From: Fabiano Rosas The walk_path() function of qos-test.c, which walks the graph and adds tests to the test suite uses GLib's g_test_add_data_func_full() function: g_test_add_data_func_full (const char *testpath, gpointer test_data, GTestDataFunc test_func, GDestroyNotify data_free_func) Despite GLib's documentation stating that @data_free_func is a destructor for @test_data, this is not the case. The destructor is supposed to be paired with a constructor, which GLib only accepts via g_test_create_case(). Providing externally allocated data plus a destructor function only works if the test is guaranteed to execute, otherwise the test_data is never deallocated. Due to how subprocessess are implemented in qos-test, each test gets added twice and an extra test gets added per subprocess. In a regular run, the extra subprocess will not be executed and in a single test run (-p), none of the other tests will be executed (+1 per subprocess), leaking 'path_vec' and 'subprocess_path'. Fix this by storing all the path vectors in a list and freeing them all at the end of the program (including subprocess invocations) and moving the allocation of 'subprocess_path' into run_one_subprocess(). While here add some documentation explaining why the graph needs to be walked twice and tests re-added. Signed-off-by: Fabiano Rosas Signed-off-by: Peter Maydell Reviewed-by: Peter Maydell Message-id: 20260302092225.4088227-10-peter.maydell@linaro.org [PMM: rebased; rewrote the comment in main() a bit to account for the if (g_test_subprocess()) block it was previously inside no longer being present. ] Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- tests/qtest/qos-test.c | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/tests/qtest/qos-test.c b/tests/qtest/qos-test.c index 00f39f33f6..50fa0ceef3 100644 --- a/tests/qtest/qos-test.c +++ b/tests/qtest/qos-test.c @@ -31,6 +31,7 @@ #include "libqos/qos_external.h" =20 static char *old_path; +static GSList *path_vecs; =20 =20 /** @@ -182,11 +183,16 @@ static void run_one_test(const void *arg) =20 static void subprocess_run_one_test(const void *arg) { - const gchar *path =3D arg; - g_test_trap_subprocess(path, 180 * G_USEC_PER_SEC, + char **path_vec =3D (char **) arg; + gchar *path =3D g_strjoinv("/", path_vec + 1); + gchar *subprocess_path =3D g_strdup_printf("/%s/subprocess", path); + + g_test_trap_subprocess(subprocess_path, 180 * G_USEC_PER_SEC, G_TEST_SUBPROCESS_INHERIT_STDOUT | G_TEST_SUBPROCESS_INHERIT_STDERR); g_test_trap_assert_passed(); + g_free(path); + g_free(subprocess_path); } =20 static void destroy_pathv(void *arg) @@ -238,6 +244,7 @@ static void walk_path(QOSGraphNode *orig_path, int len) GString *cmd_line =3D g_string_new(""); GString *cmd_line2 =3D g_string_new(""); =20 + path_vecs =3D g_slist_append(path_vecs, path_vec); path =3D qos_graph_get_node(node_name); /* root */ node_name =3D qos_graph_edge_get_dest(path->path_edge); /* machine nam= e */ =20 @@ -297,15 +304,15 @@ static void walk_path(QOSGraphNode *orig_path, int le= n) path_vec[0] =3D g_string_free(cmd_line, false); =20 if (path->u.test.subprocess) { - gchar *subprocess_path =3D g_strdup_printf("/%s/%s/subprocess", - qtest_get_arch(), path_st= r); - qtest_add_data_func_full(path_str, subprocess_path, - subprocess_run_one_test, g_free); - g_test_add_data_func_full(subprocess_path, path_vec, - run_one_test, destroy_pathv); + gchar *subprocess_path =3D g_strdup_printf("%s/%s", path_str, + "subprocess"); + + qtest_add_data_func(path_str, path_vec, subprocess_run_one_test); + qtest_add_data_func(subprocess_path, path_vec, run_one_test); + + g_free(subprocess_path); } else { - qtest_add_data_func_full(path_str, path_vec, - run_one_test, destroy_pathv); + qtest_add_data_func(path_str, path_vec, run_one_test); } =20 g_free(path_str); @@ -340,6 +347,14 @@ int main(int argc, char **argv, char** envp) module_call_init(MODULE_INIT_LIBQOS); qos_set_machines_devices_available(); =20 + /* + * Even if this invocation was done to run a single test in a + * subprocess (i.e. g_test_subprocess() is true), gtester doesn't + * expose the test name, so w still need to execute the whole + * thing as normal, including walking the QOS graph to add all + * the tests, in order for g_test_run() to find the one /subprocess + * test that it is going to execute. + */ qos_graph_foreach_test_path(walk_path); if (g_test_verbose()) { qos_dump_graph(); @@ -348,5 +363,6 @@ int main(int argc, char **argv, char** envp) qtest_end(); qos_graph_destroy(); g_free(old_path); + g_slist_free_full(path_vecs, (GDestroyNotify)destroy_pathv); return 0; } --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809628; cv=none; d=zohomail.com; s=zohoarc; b=WlM1kktKIR7Ib399x52bAdts/F4gzbUpH0/c+MgJaJemZ0rWj/5FLgjQPFvnLhTxYvS+0rEWIcBQdoNFvsg+FDfs4XFjp6EijwjDOvetXPbHQaCFH9IaOGTrbPXNfpnBCYN3bfLflvPQomAw/ZUB1lMsyKUPF3nhff0qvN7IsUw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809628; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=neIVOnBr0Aa66xW+JsZOMzMUdIBz29j3DIzODXV+V+8=; b=PrZrtJ3l/0O9zRWhJoBENwaOr6l6is7LEu+T9AWUWYDqfrr+IBn3cs0aEC4qMtPEAhOqk6QarhOROsf1bPBOyhByjK/8eLXEaloa2lCroVCHYeVLhxqZwdXrhrIaw1QOuNguq1b0q1U/jZwdwdht7JiPmcnBIu8/pzrFza2W4Io= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809628373405.76862609260354; Fri, 6 Mar 2026 07:07:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWf7-0004Y5-0a; Fri, 06 Mar 2026 10:00:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWf2-0004T5-6X for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:16 -0500 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWf0-0002jc-AW for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:15 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-480706554beso101650885e9.1 for ; Fri, 06 Mar 2026 07:00:13 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809213; x=1773414013; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=neIVOnBr0Aa66xW+JsZOMzMUdIBz29j3DIzODXV+V+8=; b=CTAXksa+wJ4fSup/y2X0P2g+bk+bNSVmhgruSSOnP6w7yquILTZx8dvKRg89//smcJ AKuZroUj79t8opPAtNCeuPafBpprm8GJSTDsRcPH8YOL+TkafcsRFjyXZbcdNRusuNCC x1wZgslcfbvL2/5zjQA8LmDvWl+ue1gHARRNeg8/54eXMdth2npzX1GXvZKz774i02dS 1Q7Of4ZGG22c30SdiLrKxT5OxZZn7R/YouWWFJyFjSY+Gr2rR2g8+efaYlhsaQgF7MKU 1zsyfnIz8IdZsFQswPJEdyauNcqW34a0gQPEzzSdN58eBXZAcrrCfQw4fYZ3Zy8GMSIs CtxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809213; x=1773414013; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=neIVOnBr0Aa66xW+JsZOMzMUdIBz29j3DIzODXV+V+8=; b=LMNLwlC3YEYtVbiKcEeILYfnBLfVFo1Admw2lgHoaec105ioMiVZfMovwxPodoBFLV gbkqKjZaglNdbP5/nz/EO3a0fqRtAyUypHjYWadoxknc82O4HcaeORoEpw9ZbMgSm0Zx 5vzNWNnE406bIBhpOq/IgX9ByIu7hkCvMiHpJ0saCmmgLFBTF4YdBN5DnxUCtN2BB7gJ g6gEBalbKTrOAjY+kkWXKEKmY3vUg6KdkO6I3KMCzrPw13g1EkV68N5w4QMcSMgMAyNs kHnbBu1LyD4HdbqofnmcwD2vcPMWRBcIY/i01F3TiNJ3ncxbIOFjtxx3/r1K/s6O53Lm lS9Q== X-Gm-Message-State: AOJu0YwYjPqiAar2Qw751K47dwf+42JulGnLXrWLY1Uk4g9zIa8Q2BoL TKx6y/cwQ/R91Jn3b2scjpFSHmvMDm0LEE61BCMP3Q3cffmdcHIk+uKj3VB2AOAJ7rAXDK0vbvq 5fu2b X-Gm-Gg: ATEYQzxUhe52nIwwdx5Oegd3yhI0FR5DIaVjfqLZbiWaDgJNDDIUlrN2/vC2VWgH7o0 XssspvOFyaYVgmTl+uTsAHxLDHaP8uXQFEDeLG2qQrst1jcagUkpAY3NF/4kPJ4a8pp9MwNyk+u gfLgVxt9SQJsugwnIcoDDRfygW/jru5LopboEQL4eZ90PrUw7MyIcVo18YzjxJJTn/cp2jMA2uA pyp/E6bgy5OnvUaY2nsWqlEo1/R8pweuy8Cw9U6LlfzMcelUuTlgUo/Hl50e+kbGSZRjAjElva+ fehDjAx6vKN7rVGnIfLwCGLBzA/kEknJ9Irw10IsR+hSERWYZTU1MF6EivY9EUaU94dTayW8HpI j4MwbyfWnrpTM6jiJTD+ukcyoQYAYC3JVp98D4T5po1Jr9EUCdQYAsgrYEFosJCW85lXPY4fhn3 Cj+nVzfGOHfaaXw5/jDyCf5mLM8PoWLc9wuRhQPwiVhFIhIgyOuJqboc89fY/7Inhpw48nDNGpJ JgVloZYQQzO0Wvi9UdgBzP47q8Li38= X-Received: by 2002:a05:600c:a12:b0:483:6d42:25c6 with SMTP id 5b1f17b1804b1-48526967fd5mr37674005e9.23.1772809211134; Fri, 06 Mar 2026 07:00:11 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 30/49] hw/arm/smmuv3-common: Fix incorrect reserved mask for SMMU CR0 register Date: Fri, 6 Mar 2026 14:59:20 +0000 Message-ID: <20260306145939.2162189-31-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809630005154100 Content-Type: text/plain; charset="utf-8" From: Tao Tang The current definition of the SMMU_CR0_RESERVED mask is incorrect. It mistakenly treats bit 10 (DPT_WALK_EN) as a reserved bit while treating bit 9 (RES0) as an implemented bit. According to the SMMU architecture specification, the layout for CR0 is: | 31:11| RES0 | | 10 | DPT_WALK_EN | | 9 | RES0 | | 8:6 | VMW | | 5 | RES0 | | 4 | ATSCHK | | 3 | CMDQEN | | 2 | EVENTQEN | | 1 | PRIQEN | | 0 | SMMUEN | Signed-off-by: Tao Tang Reviewed-by: Eric Auger Reviewed-by: Pierrick Bouvier Reviewed-by: Mostafa Saleh Message-id: 20260304142344.3341444-2-tangtao1634@phytium.com.cn Fixes: fae4be38b35 ("hw/arm/smmuv3: Implement MMIO write operations") Link: https://lists.gnu.org/archive/html/qemu-arm/2025-06/msg00088.html Signed-off-by: Peter Maydell --- include/hw/arm/smmuv3-common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/hw/arm/smmuv3-common.h b/include/hw/arm/smmuv3-common.h index 67a23fbeaa..2df54ba60f 100644 --- a/include/hw/arm/smmuv3-common.h +++ b/include/hw/arm/smmuv3-common.h @@ -355,7 +355,7 @@ REG32(CR0, 0x20) FIELD(CR0, EVENTQEN, 2, 1) FIELD(CR0, CMDQEN, 3, 1) =20 -#define SMMU_CR0_RESERVED 0xFFFFFC20 +#define SMMU_CR0_RESERVED 0xFFFFFA20 =20 REG32(CR0ACK, 0x24) REG32(CR1, 0x28) --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809261; cv=none; d=zohomail.com; s=zohoarc; b=XqcFD2lP/1udMlPhG4To7HUt8H1ksu2EUiVyM/1H36XoeGAINKZCit7Qpm0HuJR0u2kc66JVUUoqcsDjvcH0Lp78u6GVz9guz+PSdALI6zeVGP3fMydUAmmAF9UH2o9mYmMBxLYrRUnt1GUgFs+yVYwUD/EFQl8k7YocQKnc8wI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809261; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=SEBQ3zr5qos7anNs6cmfSusx7r3fjVf7mNrIRdPgNsI=; b=ckmGWB7zUcbEkyI7cCAmghJGU/uta074g8hlmhhOYTtnjLScuK56p/8Irg5lRu48iGA13wpOi2Z20arlivnhfNsb7NcvSKtx5SrKUI0bcQyNMWLFPVbvFjG77+qobdHPfYI3ytRnbLbyW3U9FUXC8VzLG4hakq5UEr/MiUfUX1o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809261895967.1443624269729; Fri, 6 Mar 2026 07:01:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfA-0004bQ-Qu; Fri, 06 Mar 2026 10:00:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWf2-0004To-Jo for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:16 -0500 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWf0-0002jj-SV for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:16 -0500 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-480706554beso101650975e9.1 for ; Fri, 06 Mar 2026 07:00:14 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809213; x=1773414013; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=SEBQ3zr5qos7anNs6cmfSusx7r3fjVf7mNrIRdPgNsI=; b=gvu3L9PnXV7Mx8LxXcFJvxCbAo7zZCdUX26Xk3MrRhueYO6kSrT9mcTAlnSmMAobKM 53jWeMn4m96Zs3/0qkscUUG39ILBmbJtZgLcXsGCkscGAWvozMzjQsp1FpvO00JElcmG FCrnMJo9x5zPz/PynLKsOVX4y0F5mEOBZkWRijET3g4efZv5D/lY5TIbyqnRIYvFiCmP NR+404Ap24PFFvd4Q7OdRURqppJXzJNBMn8XQ51a9bCNTL1tMW7f+N2Uhr2bW4440k4g DfpqTmPOim+XhNn+Z73Hf7nE+8ADzNEJ7A6lY4pOJYt8I2FEncM7DArMPqNzsqeeWViU BQgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809213; x=1773414013; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=SEBQ3zr5qos7anNs6cmfSusx7r3fjVf7mNrIRdPgNsI=; b=EQSYQP82UaUV86mhPEp6RJCPVcvvCfthv3PFHqcQw8IU4Uk4ZUR/6WeH7lC442kaE7 8uYE+E0tQ0tqncDqKvmJ9J3vzW+RvezuL3fgLmzAzQOz+W6b6/BDvN53igZQI8gSXUVZ sOE8ocWz8iNhaEZZw7lboPkDGAndBgbZDWiFgA1yli2hmEAlE+5obOEVEPbRv3CXWKOJ 16g9ZOJQ5cSVMGZWWFQ9AQMKtymCKaxHzpuTvyv/zCPFuEYBvpdF5zASYG3/JTvmlvcu VUV4q8QmR8KsE6ZzG57S1hHInsD+qbx0hIAN+ScdQKsb8fL2lDochy9teYq4iuhBfsrW Y1lg== X-Gm-Message-State: AOJu0YwP6/ZXcyUGrMh/mZHws+3c3QBP5PACAkThJKE/6+fYoPaExIyi e6JvHzqVqGjtYG3ihHIkwSf0CJhl2J/hfXwhcfJ9vot6DVHkA62QRB6Tkqw9F24D0+vtX049gc1 gIvsZ X-Gm-Gg: ATEYQzzvMEwzWUNtQMkga7o8UsmRephPlrr2sbF7tkLsn0aWgPqkSZEuYfwVKWPoG9q MER+gO1vNy3Tp/hDDh03FNT9cU7+PQmOAtFOnW5WTefk8Otoy273IeU3jYm5lZyKdQBHtItJUoh 9uVNwXpHS4HvPDye2mFtpbMCtjp+iQClgOS2gaTh+TGz6hWoKfNnnOpVlLfVOTp92lC7E+A2R4U SXJqnsLH5bWRD5pFYufVr2Z4oRMpmIqMI0EPUobLTJHtxv2spwj64Q5MeUk7UzP0GM6qEqs6LqB 4WlYoGyNBbluUEpr8jYhjRtzESG/Ql0BQcRBO7kb8YrR+oCApeyBTS7c3cbr/SbGZlGsLzUG3IA 2HDDH0AzxSWsuVS6DS14XcX7ePaDiyAlkUC7f1OsCGPLQ2qT8IHadCo3Jfgd8rfPkrzZzfm+cDH QHtGhpIiBaa0xAPJGxXdkugax/cxgNHFRAIU7Lpjdfeo4Qi8H2VlwKugs3C4A4VM7bScue5pIJy gpkX6O2GW2Y2CRluDdipm8UNzC/tH4= X-Received: by 2002:a05:600c:8115:b0:477:a219:cdb7 with SMTP id 5b1f17b1804b1-485268bd69fmr43876055e9.0.1772809212630; Fri, 06 Mar 2026 07:00:12 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 31/49] hw/arm/smmuv3: Correct SMMUEN field name in CR0 Date: Fri, 6 Mar 2026 14:59:21 +0000 Message-ID: <20260306145939.2162189-32-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809264028154101 Content-Type: text/plain; charset="utf-8" From: Tao Tang The FIELD macro for the SMMU enable bit in the CR0 register was incorrectly named SMMU_ENABLE. The ARM SMMUv3 Architecture Specification (both older IHI 0070.E.a and newer IHI 0070.G.b) consistently refers to the SMMU enable bit as SMMUEN. This change makes our implementation consistent with the manual. Signed-off-by: Tao Tang Reviewed-by: Eric Auger Reviewed-by: Pierrick Bouvier Reviewed-by: Mostafa Saleh Message-id: 20260304142344.3341444-3-tangtao1634@phytium.com.cn Fixes: 10a83cb9887 ("hw/arm/smmuv3: Skeleton") Link: https://lists.nongnu.org/archive/html/qemu-arm/2025-09/msg01270.html Signed-off-by: Peter Maydell --- hw/arm/smmuv3-internal.h | 2 +- include/hw/arm/smmuv3-common.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index b666109ad9..eb482c7000 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -41,7 +41,7 @@ typedef enum SMMUTranslationClass { =20 static inline int smmu_enabled(SMMUv3State *s) { - return FIELD_EX32(s->cr[0], CR0, SMMU_ENABLE); + return FIELD_EX32(s->cr[0], CR0, SMMUEN); } =20 /* Command Queue Entry */ diff --git a/include/hw/arm/smmuv3-common.h b/include/hw/arm/smmuv3-common.h index 2df54ba60f..9f78bbe89e 100644 --- a/include/hw/arm/smmuv3-common.h +++ b/include/hw/arm/smmuv3-common.h @@ -351,7 +351,7 @@ REG32(IDR5, 0x14) REG32(IIDR, 0x18) REG32(AIDR, 0x1c) REG32(CR0, 0x20) - FIELD(CR0, SMMU_ENABLE, 0, 1) + FIELD(CR0, SMMUEN, 0, 1) FIELD(CR0, EVENTQEN, 2, 1) FIELD(CR0, CMDQEN, 3, 1) =20 --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809351; cv=none; d=zohomail.com; s=zohoarc; b=BmjGICMtutRFP/jd7UWLrVFsh0Y42blUpfZueoi6ifYdFE8rbzPzKnf2hqQca3bXsVVVo326U4lQUMSgtQqvfeOKHGwEaRtNGLalpCTx33ervMq/mER4yJp7c+NZKziHJA6GoqCsW9BGLgtU/R3IdBb+qY9tDl1BOl/Bd/wqOE4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809351; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=rU++RBZU+fmL8WD1pH8gqsuKdHir+HDXpF1JUF63s+w=; b=KH72CC9F0r3Uqu5rtagxwr7fjS6v82PeBkBPMsT0qbbqEBYT5PtmDabjJHapsEeHhWfrXX3TxwL+rOMzMpi+jsh0W1ieWe2in3rEiM/fMxtdy4LWTv3lD0ESQk20yzHlZumIpzqxDpMnavOib75Ciy76LUB451AxC+48Z/z7mwY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809351882585.2283702712662; Fri, 6 Mar 2026 07:02:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWff-0004rS-MN; Fri, 06 Mar 2026 10:00:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWf4-0004WE-2b for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:18 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWf2-0002js-Bu for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:17 -0500 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-483703e4b08so91114665e9.1 for ; Fri, 06 Mar 2026 07:00:15 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809215; x=1773414015; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=rU++RBZU+fmL8WD1pH8gqsuKdHir+HDXpF1JUF63s+w=; b=qdDBpKTv97HnDoUEAdUUMasIFCFJaN9Y/lTbgcTrqIIkoOVmfjiZINwGbmz1p//8/S hvTTR4+6ddTUmV2etTvwf/SnY/TY6fvxns/fEHo3s1yuItOipi56WFwwtcgaNydg9UrD qlI0wXrziEiBi7QOeb1fLAj6uv+v1V3piMH88zaOD51U8iuX9riBowr0Q6lcJWNxtpgJ o/o0bWrYgc7EJiSCeiGy8JMKKhftxJt6T4NkWdea3MzCBR8pfTl/rNhnIZ0nNO7V3CUB 94MIiYPKSY05WGtU7RVhjMvaxgIc3p5dBrynTebLCCMOVSl11W+pBpObf+vznZ9W2Q7s 8xmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809215; x=1773414015; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rU++RBZU+fmL8WD1pH8gqsuKdHir+HDXpF1JUF63s+w=; b=YY1cVY4/38YxW5b5bbJciZE1HxJSL/bdFx7rHLBbA+kGAtLqUP15ztj66Ce914W0qq hxsGKxTFG/RXGvmxcAjCNj3fJq6iZO4McHOI8YP11pkBFurl4ROyEURCqEujwKbDjfQv R3AeFH3TQi3X6b6dx58qNAYU3RI2YHKFV0lBGrvHjwKiF+p8qpxWvHZK1XvafOLO80fi AxHDtcRoOicc/PYNcPn+j6qfTViyf3PePghEYXrItEABH3anxr4KmmXunHsg5iQr08gb beDcYVPzHLEyzK9WQta5kTwNiB8PWX09mkGXSzAC4uYbmmWLEsuBzDfbl5k7XRVBvew3 o04g== X-Gm-Message-State: AOJu0YxtSfoXEMozDvQmOy/5PL9cwq0H55LDl+o2mm/pX+IcrPa3xn1d 2B7IwP1jIq3i/AZqvgi0zJFEBE1EPxTLC2yH/74IKdrreHxfAuOdbaL0Mn6FOfp4m8Fx7wjfCnX eZ/AE X-Gm-Gg: ATEYQzwd4xkU+qN/2qSxnEFnzUPWsrpWUzCMIRl/jFCXhU4M9DNX/4wFpy5sQB9iD2H RHDDrcZRdqZ7FkFaLEfHOjvrQ/D380vdZwPJJgObsU3qQjWMsL38s6RH7LgNYC8F4k0DXMqfmOh tQQ/5eENiHS7fQfX9LV8WRFQCkFUOoTi9yWwPqTD7pMXqCwsNSaWGAkFhip57yF6R9/joyKqmtf 3iY8L+bDqHRgl1DVl/kA9+FU4PBkilLWpgL2osQZTraZJ4uv+58EyM7W4O5qAmsAaSQVOajq3IZ us2OJ0WbeTzHWpqTLA8Cf09YPpJpy+kwKATmct9HyzBFQWvTly9AoTeVfeoHlQKweeHR2cVxSIa 4Hr2e8TBIaGtlvpx4Aru95tGCMfrxjiIEn/7HPqqNzh7LJbVYsUEyuN804pbQ3iks6ir7UpOwUG eKVrZfY9esshcs8js++DnAYL1pzbazYkUGLRRpClZqgdWkIz114MYhC7JIRDVlckeIbJ1O7VCgc qrt35Rr2UwQyAzYBXAGau+751y+myU1cDhc1dW17Q== X-Received: by 2002:a05:600c:8b2b:b0:477:9890:9ab8 with SMTP id 5b1f17b1804b1-48526715213mr35369995e9.3.1772809214787; Fri, 06 Mar 2026 07:00:14 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 32/49] hw/arm/smmuv3: Fix CFGI_CD handling when stage-1 is unsupported Date: Fri, 6 Mar 2026 14:59:22 +0000 Message-ID: <20260306145939.2162189-33-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809353340154100 Content-Type: text/plain; charset="utf-8" From: Tao Tang Add a STAGE1_SUPPORTED check in the CMD_CFGI_CD and CMD_CFGI_CD_ALL path and return CERROR_ILL when stage-1 translation is not implemented, matching the architecture requirement (IHI 0070G.b, page 176). Fixes: 32cfd7f39e08 ("hw/arm/smmuv3: Cache/invalidate config data") Signed-off-by: Tao Tang Reviewed-by: Pierrick Bouvier Reviewed-by: Mostafa Saleh Reviewed-by: Eric Auger Message-id: 20260304142344.3341444-4-tangtao1634@phytium.com.cn Links: https://lore.kernel.org/qemu-devel/20260221101733.2995020-1-tangtao1= 634@phytium.com.cn/ Signed-off-by: Peter Maydell --- hw/arm/smmuv3.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index af7a54143f..068108e49b 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1407,6 +1407,15 @@ static int smmuv3_cmdq_consume(SMMUv3State *s, Error= **errp) break; } =20 + /* + * This command raises CERROR_ILL when stage 1 is not implemen= ted + * according to (IHI 0070G.b) Page 176. + */ + if (!STAGE1_SUPPORTED(s)) { + cmd_error =3D SMMU_CERROR_ILL; + break; + } + trace_smmuv3_cmdq_cfgi_cd(sid); smmuv3_flush_config(sdev); if (!smmuv3_accel_issue_inv_cmd(s, &cmd, sdev, errp)) { --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809598; cv=none; d=zohomail.com; s=zohoarc; b=bRUPbbYSNtY1ADF3S8noR2/U7BHQkvc0nwDEemoBRtyk/X3vHVyXjHq97qMA2pUuGINYtnwXe30pnyaQ7b4w19o39/K1bogizTUUvwsPGCMY4/7Jyyq/b/ZuJli/g5dM1nEqPFXRJP2G+kfAJB3+6ESXAeimf1D4C0lSIXgntc0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809598; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=NDmG16SpxlzGJDIuG5wqUT4YeN0YeyL3vLlInrT6+YE=; b=lcGQsAjJUvXlhQ0UlwuyH2PqTAI3Vcr33MyXH4Sxsk6carl/8/9IbuQ6tF1r7m3v3OT2vtbhJ9Nuid+OO4FRr5DiYKGpWt7uOCbhizDWmFZPyPOj+ww3oxGi6liMdlbdqy9iqaZGdPGBZfwZG74ZnYoZPRevgzaTLzQmuYbJZcE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809598037891.3380146538842; Fri, 6 Mar 2026 07:06:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfp-0005uE-PP; Fri, 06 Mar 2026 10:01:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWf9-0004bl-8y for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:24 -0500 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWf4-0002k9-Pc for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:22 -0500 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-48371119eacso110781385e9.2 for ; Fri, 06 Mar 2026 07:00:17 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809217; x=1773414017; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=NDmG16SpxlzGJDIuG5wqUT4YeN0YeyL3vLlInrT6+YE=; b=wn0LJx1x3qnklB1HMONSUNv8dBGaoB0VQGLzAHmz56Z86///cMv7rSEXegwB/pvhAG QUCnh13sznIuUCIdJkZ/4jJnxo7qXdkZnfCrplbOKtcUm1kT1Jx8G+Y/kaLmkLjXCW0q MWFQmBwcNiK4mEEKyQ5N+pEYb6yBu12zAiNh1yvCqm5tiYzzeONhikyBLPSqvkJi927l fEfeOqNgO+yZVL6BWdokFbXNHCXsdw3Hy1/viIcWs39I8Hq4yCkIorgtz+GzX2o/BjPS 9DvUgqycS/Gd+tjIJxY0bhnuNp2tOju7gexo2dgWUR5Cc84DCUGkA/F6ummvLtUYjtSf 5AFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809217; x=1773414017; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=NDmG16SpxlzGJDIuG5wqUT4YeN0YeyL3vLlInrT6+YE=; b=gO5HIBj5k/CR7PNVNG8/C1GvJCgIJu2dx1tDSlmZaiehNwdaLrFIqd0gS3mdGN1VEg 6RsJB+prOyQUXegzcInvLWyU2lyG9PfXdKzM15WmPszQAGHNO1kYTiEc4humpkI0KGfB 58Yk6fHeVNBDmEwep+xKsZ9MvWySbFykWd1Ga1aPVu8TV+8C9x0jl6XDIFK67xVLKfw8 NVN6acH0FyXkQeEmKC+QNaIC49XnX8Viq/FrVtgQBAEwm+6uhtvxam2/9qZxByDwM54m 1guAIcagCX4UkYGMXlgPcpfvFb8PLVRfvQ5XOCZPzc/9SPEgY3E3I6YSWtNt51teUji2 gcCw== X-Gm-Message-State: AOJu0Yx1iiLbu/pcluSHa/HxsAXTUgZ8qtACd2luZJasR8E+BNG4cqSF jXefRdVB3msER4CJdxyMtyir0DE5+4Ia7UKriNFrlncogI+q/2VRgwZBOFKJdLjzvFyKqWCtrQQ NyHF1 X-Gm-Gg: ATEYQzxiLOBQEtEp4mdksCwiE8ptT5C9mZZ8uvhb6DvS7WVBO/SuJ58kYStUPleH0zx wHgik8y4w7rxSjxrk2nRgVEYgD+U5Q54DKixXg6A0f3fEZ8PKuBt0qszK4IvsqJdlmHYaSFZj7y qhZOo7nePdFmAuK5P+PgwyoIYoDHRkwquuniruAOtTU9sNznz2B6zxuVTBhHTL75zoUTEXHi0zY T9u+eafu10XEkG9JudWryKAQTc80Ex0/KnCey4pObI4+NUej59XjXNxCBwLEb6ju7nWcBgr9VHk KzihB5PKaZIyF4oexf8iwwwQJ5L4+te3psLcWnUT9BlKzEgjPw150bhSKZ0963h9K7HitxGRSk+ b62LvrYal87lf1IO2VMErocFESLTbNQYvZ2WO+1xp3eLBjdNJXLMplBB/+7rKXzR2GxFdF1n+rO r6zOvvFIdNlxJ08RHgnDvJks2lzpPkhlcq18CAafj3Zgl0sLwu6bu4JOie0s4kH4im736Xr7b+u TDVh7mbyTALwXRo7ZxFPzPeDOdaAfQ= X-Received: by 2002:a05:600c:1e88:b0:477:6d96:b3e5 with SMTP id 5b1f17b1804b1-48526916beamr45773195e9.7.1772809216516; Fri, 06 Mar 2026 07:00:16 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 33/49] hvf/arm: handle FEAT_SME2 migration Date: Fri, 6 Mar 2026 14:59:23 +0000 Message-ID: <20260306145939.2162189-34-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809599146158500 Content-Type: text/plain; charset="utf-8" From: Manos Pitsidianakis SME2 support adds the following state for HVF guests: - Vector registers Z0, ... , Z31 (introduced by FEAT_SVE but HVF does not support it) - Predicate registers P0, .., P15 (also FEAT_SVE) - ZA register - ZT0 register - PSTATE.{SM,ZA} bits (SVCR pseudo-register) - SMPRI_EL1 which handles the PE's priority in the SMCU - TPIDR2_EL0 the thread local ID register for SME Signed-off-by: Manos Pitsidianakis Reviewed-by: Mohamed Mediouni Message-id: 20260306-sme2-hvf-v7-1-e72eeda41ed3@linaro.org Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 298 ++++++++++++++++++++++++++++++++- target/arm/hvf/hvf_sme_stubs.h | 172 +++++++++++++++++++ target/arm/hvf/sysreg.c.inc | 8 + target/arm/hvf_arm.h | 41 +++++ target/arm/machine.c | 2 +- 5 files changed, 518 insertions(+), 3 deletions(-) create mode 100644 target/arm/hvf/hvf_sme_stubs.h diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index d79469ca27..21b16dfe42 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -395,6 +395,60 @@ static const struct hvf_reg_match hvf_fpreg_match[] = =3D { { HV_SIMD_FP_REG_Q31, offsetof(CPUARMState, vfp.zregs[31]) }, }; =20 +static const struct hvf_reg_match hvf_sme2_zreg_match[] =3D { + { HV_SME_Z_REG_0, offsetof(CPUARMState, vfp.zregs[0]) }, + { HV_SME_Z_REG_1, offsetof(CPUARMState, vfp.zregs[1]) }, + { HV_SME_Z_REG_2, offsetof(CPUARMState, vfp.zregs[2]) }, + { HV_SME_Z_REG_3, offsetof(CPUARMState, vfp.zregs[3]) }, + { HV_SME_Z_REG_4, offsetof(CPUARMState, vfp.zregs[4]) }, + { HV_SME_Z_REG_5, offsetof(CPUARMState, vfp.zregs[5]) }, + { HV_SME_Z_REG_6, offsetof(CPUARMState, vfp.zregs[6]) }, + { HV_SME_Z_REG_7, offsetof(CPUARMState, vfp.zregs[7]) }, + { HV_SME_Z_REG_8, offsetof(CPUARMState, vfp.zregs[8]) }, + { HV_SME_Z_REG_9, offsetof(CPUARMState, vfp.zregs[9]) }, + { HV_SME_Z_REG_10, offsetof(CPUARMState, vfp.zregs[10]) }, + { HV_SME_Z_REG_11, offsetof(CPUARMState, vfp.zregs[11]) }, + { HV_SME_Z_REG_12, offsetof(CPUARMState, vfp.zregs[12]) }, + { HV_SME_Z_REG_13, offsetof(CPUARMState, vfp.zregs[13]) }, + { HV_SME_Z_REG_14, offsetof(CPUARMState, vfp.zregs[14]) }, + { HV_SME_Z_REG_15, offsetof(CPUARMState, vfp.zregs[15]) }, + { HV_SME_Z_REG_16, offsetof(CPUARMState, vfp.zregs[16]) }, + { HV_SME_Z_REG_17, offsetof(CPUARMState, vfp.zregs[17]) }, + { HV_SME_Z_REG_18, offsetof(CPUARMState, vfp.zregs[18]) }, + { HV_SME_Z_REG_19, offsetof(CPUARMState, vfp.zregs[19]) }, + { HV_SME_Z_REG_20, offsetof(CPUARMState, vfp.zregs[20]) }, + { HV_SME_Z_REG_21, offsetof(CPUARMState, vfp.zregs[21]) }, + { HV_SME_Z_REG_22, offsetof(CPUARMState, vfp.zregs[22]) }, + { HV_SME_Z_REG_23, offsetof(CPUARMState, vfp.zregs[23]) }, + { HV_SME_Z_REG_24, offsetof(CPUARMState, vfp.zregs[24]) }, + { HV_SME_Z_REG_25, offsetof(CPUARMState, vfp.zregs[25]) }, + { HV_SME_Z_REG_26, offsetof(CPUARMState, vfp.zregs[26]) }, + { HV_SME_Z_REG_27, offsetof(CPUARMState, vfp.zregs[27]) }, + { HV_SME_Z_REG_28, offsetof(CPUARMState, vfp.zregs[28]) }, + { HV_SME_Z_REG_29, offsetof(CPUARMState, vfp.zregs[29]) }, + { HV_SME_Z_REG_30, offsetof(CPUARMState, vfp.zregs[30]) }, + { HV_SME_Z_REG_31, offsetof(CPUARMState, vfp.zregs[31]) }, +}; + +static const struct hvf_reg_match hvf_sme2_preg_match[] =3D { + { HV_SME_P_REG_0, offsetof(CPUARMState, vfp.pregs[0]) }, + { HV_SME_P_REG_1, offsetof(CPUARMState, vfp.pregs[1]) }, + { HV_SME_P_REG_2, offsetof(CPUARMState, vfp.pregs[2]) }, + { HV_SME_P_REG_3, offsetof(CPUARMState, vfp.pregs[3]) }, + { HV_SME_P_REG_4, offsetof(CPUARMState, vfp.pregs[4]) }, + { HV_SME_P_REG_5, offsetof(CPUARMState, vfp.pregs[5]) }, + { HV_SME_P_REG_6, offsetof(CPUARMState, vfp.pregs[6]) }, + { HV_SME_P_REG_7, offsetof(CPUARMState, vfp.pregs[7]) }, + { HV_SME_P_REG_8, offsetof(CPUARMState, vfp.pregs[8]) }, + { HV_SME_P_REG_9, offsetof(CPUARMState, vfp.pregs[9]) }, + { HV_SME_P_REG_10, offsetof(CPUARMState, vfp.pregs[10]) }, + { HV_SME_P_REG_11, offsetof(CPUARMState, vfp.pregs[11]) }, + { HV_SME_P_REG_12, offsetof(CPUARMState, vfp.pregs[12]) }, + { HV_SME_P_REG_13, offsetof(CPUARMState, vfp.pregs[13]) }, + { HV_SME_P_REG_14, offsetof(CPUARMState, vfp.pregs[14]) }, + { HV_SME_P_REG_15, offsetof(CPUARMState, vfp.pregs[15]) }, +}; + /* * QEMU uses KVM system register ids in the migration format. * Conveniently, HVF uses the same encoding of the op* and cr* parameters @@ -406,22 +460,201 @@ static const struct hvf_reg_match hvf_fpreg_match[] = =3D { #define HVF_TO_KVMID(HVF) \ (CP_REG_ARM64 | CP_REG_SIZE_U64 | CP_REG_ARM64_SYSREG | (HVF)) =20 -/* Verify this at compile-time. */ +/* + * Verify this at compile-time. + * + * SME2 registers are guarded by a runtime availability attribute instead = of a + * compile-time def, so verify those at runtime in hvf_arch_init_vcpu() be= low. + */ =20 #define DEF_SYSREG(HVF_ID, ...) \ QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); +#define DEF_SYSREG_15_02(...) =20 #include "sysreg.c.inc" =20 #undef DEF_SYSREG +#undef DEF_SYSREG_15_02 =20 #define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, +#define DEF_SYSREG_15_02(...) =20 static const hv_sys_reg_t hvf_sreg_list[] =3D { #include "sysreg.c.inc" }; =20 #undef DEF_SYSREG +#undef DEF_SYSREG_15_02 + +#define DEF_SYSREG(...) +#define DEF_SYSREG_15_02(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, + +API_AVAILABLE(macos(15.2)) +static const hv_sys_reg_t hvf_sreg_list_sme2[] =3D { +#include "sysreg.c.inc" +}; + +#undef DEF_SYSREG +#undef DEF_SYSREG_15_02 + +/* + * For FEAT_SME2 migration, we need to store PSTATE.{SM,ZA} bits which are + * accessible with the SVCR pseudo-register. However, in the HVF API this = is + * not exposed as a system-register (i.e. HVF_SYS_REG_SVCR) but a custom + * struct, hv_vcpu_sme_state_t. So we need to define our own KVMID in orde= r to + * store it in cpreg_values and make it migrateable. + */ +#define SVCR KVMID_AA64_SYS_REG64(3, 3, 4, 2, 2) + +API_AVAILABLE(macos(15.2)) +static void hvf_arch_put_sme(CPUState *cpu) +{ + ARMCPU *arm_cpu =3D ARM_CPU(cpu); + CPUARMState *env =3D &arm_cpu->env; + const size_t svl_bytes =3D hvf_arm_sme2_get_svl(); + const size_t z_size =3D svl_bytes; + const size_t preg_size =3D DIV_ROUND_UP(z_size, 8); + const size_t za_size =3D svl_bytes * svl_bytes; + hv_vcpu_sme_state_t sme_state =3D { 0 }; + hv_return_t ret; + uint64_t svcr; + int n; + + /* + * Set PSTATE.{SM,ZA} bits + */ + svcr =3D arm_cpu->cpreg_values[arm_cpu->cpreg_array_len - 1]; + env->svcr =3D svcr; + + /* + * Construct SVCR (PSTATE.{SM,ZA}) state to pass to HVF: + */ + sme_state.streaming_sve_mode_enabled =3D FIELD_EX64(env->svcr, SVCR, S= M) > 0; + sme_state.za_storage_enabled =3D FIELD_EX64(env->svcr, SVCR, ZA) > 0; + ret =3D hv_vcpu_set_sme_state(cpu->accel->fd, &sme_state); + assert_hvf_ok(ret); + + /* + * We only care about Z/P registers if we're in streaming SVE mode, i.= e. + * PSTATE.SM is set, because only then can instructions that access th= em be + * used. We don't care about the register values otherwise. This is be= cause + * when the processing unit exits/enters this mode, it zeroes out those + * registers. + */ + if (sme_state.streaming_sve_mode_enabled) { + for (n =3D 0; n < ARRAY_SIZE(hvf_sme2_zreg_match); ++n) { + ret =3D hv_vcpu_set_sme_z_reg(cpu->accel->fd, + hvf_sme2_zreg_match[n].reg, + (uint8_t *)&env->vfp.zregs[n].d[0], + z_size); + assert_hvf_ok(ret); + } + + for (n =3D 0; n < ARRAY_SIZE(hvf_sme2_preg_match); ++n) { + ret =3D hv_vcpu_set_sme_p_reg(cpu->accel->fd, + hvf_sme2_preg_match[n].reg, + (uint8_t *)&env->vfp.pregs[n].p[0], + preg_size); + assert_hvf_ok(ret); + } + } + + /* + * If PSTATE.ZA bit is set then ZA and ZT0 are valid, otherwise they a= re + * zeroed out. + */ + if (sme_state.za_storage_enabled) { + hv_sme_zt0_uchar64_t tmp =3D { 0 }; + + memcpy(&tmp, &env->za_state.zt0, 64); + ret =3D hv_vcpu_set_sme_zt0_reg(cpu->accel->fd, &tmp); + assert_hvf_ok(ret); + + ret =3D hv_vcpu_set_sme_za_reg(cpu->accel->fd, + (uint8_t *)&env->za_state.za, + za_size); + assert_hvf_ok(ret); + } + + return; +} + +API_AVAILABLE(macos(15.2)) +static void hvf_arch_get_sme(CPUState *cpu) +{ + ARMCPU *arm_cpu =3D ARM_CPU(cpu); + CPUARMState *env =3D &arm_cpu->env; + const size_t svl_bytes =3D hvf_arm_sme2_get_svl(); + const size_t z_size =3D svl_bytes; + const size_t preg_size =3D DIV_ROUND_UP(z_size, 8); + const size_t za_size =3D svl_bytes * svl_bytes; + hv_vcpu_sme_state_t sme_state =3D { 0 }; + hv_return_t ret; + uint64_t svcr; + int n; + + /* + * Get SVCR (PSTATE.{SM,ZA}) state from HVF: + */ + ret =3D hv_vcpu_get_sme_state(cpu->accel->fd, &sme_state); + assert_hvf_ok(ret); + + /* + * Set SVCR first because changing it will zero out Z/P regs + */ + svcr =3D + (sme_state.za_storage_enabled ? R_SVCR_ZA_MASK : 0) + | (sme_state.streaming_sve_mode_enabled ? R_SVCR_SM_MASK : 0); + + aarch64_set_svcr(env, svcr, R_SVCR_ZA_MASK | R_SVCR_SM_MASK); + arm_cpu->cpreg_values[arm_cpu->cpreg_array_len - 1] =3D svcr; + + /* + * We only care about Z/P registers if we're in streaming SVE mode, i.= e. + * PSTATE.SM is set, because only then can instructions that access th= em be + * used. We don't care about the register values otherwise. This is be= cause + * when the processing unit exits/enters this mode, it zeroes out those + * registers. + */ + if (sme_state.streaming_sve_mode_enabled) { + for (n =3D 0; n < ARRAY_SIZE(hvf_sme2_zreg_match); ++n) { + ret =3D hv_vcpu_get_sme_z_reg(cpu->accel->fd, + hvf_sme2_zreg_match[n].reg, + (uint8_t *)&env->vfp.zregs[n].d[0], + z_size); + assert_hvf_ok(ret); + } + + for (n =3D 0; n < ARRAY_SIZE(hvf_sme2_preg_match); ++n) { + ret =3D hv_vcpu_get_sme_p_reg(cpu->accel->fd, + hvf_sme2_preg_match[n].reg, + (uint8_t *)&env->vfp.pregs[n].p[0], + preg_size); + assert_hvf_ok(ret); + } + } + + /* + * If PSTATE.ZA bit is set then ZA and ZT0 are valid, otherwise they a= re + * zeroed out. + */ + if (sme_state.za_storage_enabled) { + hv_sme_zt0_uchar64_t tmp =3D { 0 }; + + /* Get ZT0 in a tmp vector, and then copy it to env.za_state.zt0 */ + ret =3D hv_vcpu_get_sme_zt0_reg(cpu->accel->fd, &tmp); + assert_hvf_ok(ret); + + memcpy(&env->za_state.zt0, &tmp, 64); + ret =3D hv_vcpu_get_sme_za_reg(cpu->accel->fd, + (uint8_t *)&env->za_state.za, + za_size); + assert_hvf_ok(ret); + + } + + return; +} =20 static uint32_t hvf_reg2cp_reg(uint32_t reg) { @@ -534,6 +767,10 @@ int hvf_arch_get_registers(CPUState *cpu) uint64_t kvm_id =3D arm_cpu->cpreg_indexes[i]; int hvf_id =3D KVMID_TO_HVF(kvm_id); =20 + if (kvm_id =3D=3D HVF_TO_KVMID(SVCR)) { + continue; + } + if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ switch (hvf_id) { @@ -627,6 +864,13 @@ int hvf_arch_get_registers(CPUState *cpu) =20 arm_cpu->cpreg_values[i] =3D val; } + if (cpu_isar_feature(aa64_sme, arm_cpu)) { + if (__builtin_available(macOS 15.2, *)) { + hvf_arch_get_sme(cpu); + } else { + g_assert_not_reached(); + } + } assert(write_list_to_cpustate(arm_cpu)); =20 aarch64_restore_sp(env, arm_current_el(env)); @@ -643,6 +887,18 @@ int hvf_arch_put_registers(CPUState *cpu) hv_simd_fp_uchar16_t fpval; int i, n; =20 + /* + * Set SVCR first because changing it will zero out Z/P (including NEO= N) + * regs + */ + if (cpu_isar_feature(aa64_sme, arm_cpu)) { + if (__builtin_available(macOS 15.2, *)) { + hvf_arch_put_sme(cpu); + } else { + g_assert_not_reached(); + } + } + for (i =3D 0; i < ARRAY_SIZE(hvf_reg_match); i++) { val =3D *(uint64_t *)((void *)env + hvf_reg_match[i].offset); ret =3D hv_vcpu_set_reg(cpu->accel->fd, hvf_reg_match[i].reg, val); @@ -672,6 +928,10 @@ int hvf_arch_put_registers(CPUState *cpu) uint64_t kvm_id =3D arm_cpu->cpreg_indexes[i]; int hvf_id =3D KVMID_TO_HVF(kvm_id); =20 + if (kvm_id =3D=3D HVF_TO_KVMID(SVCR)) { + continue; + } + if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ switch (hvf_id) { @@ -985,6 +1245,20 @@ int hvf_arch_init_vcpu(CPUState *cpu) hv_return_t ret; int i; =20 + if (__builtin_available(macOS 15.2, *)) { + if (hvf_arm_sme2_supported()) { + sregs_match_len +=3D ARRAY_SIZE(hvf_sreg_list_sme2) + 1; + } + +#define DEF_SYSREG_15_02(HVF_ID, ...) \ + g_assert(HVF_ID =3D=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARGS= __))); +#define DEF_SYSREG(...) + +#include "sysreg.c.inc" + +#undef DEF_SYSREG +#undef DEF_SYSREG_15_02 + } env->aarch64 =3D true; =20 /* system count frequency sanity check */ @@ -1005,7 +1279,7 @@ int hvf_arch_init_vcpu(CPUState *cpu) memset(arm_cpu->cpreg_values, 0, sregs_match_len * sizeof(uint64_t)); =20 /* Populate cp list for all known sysregs */ - for (i =3D 0; i < sregs_match_len; i++) { + for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list); i++) { hv_sys_reg_t hvf_id =3D hvf_sreg_list[i]; uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); uint32_t key =3D kvm_to_cpreg_id(kvm_id); @@ -1016,6 +1290,26 @@ int hvf_arch_init_vcpu(CPUState *cpu) arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; } } + if (__builtin_available(macOS 15.2, *)) { + if (hvf_arm_sme2_supported()) { + for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list_sme2); i++) { + hv_sys_reg_t hvf_id =3D hvf_sreg_list_sme2[i]; + uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); + uint32_t key =3D kvm_to_cpreg_id(kvm_id); + const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(arm_cpu->cp_= regs, key); + + if (ri) { + assert(!(ri->type & ARM_CP_NO_RAW)); + arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; + } + } + /* + * Add SVCR last. It is elsewhere assumed its index is after + * hvf_sreg_list and hvf_sreg_list_sme2. + */ + arm_cpu->cpreg_indexes[sregs_cnt++] =3D HVF_TO_KVMID(SVCR); + } + } arm_cpu->cpreg_array_len =3D sregs_cnt; arm_cpu->cpreg_vmstate_array_len =3D sregs_cnt; =20 diff --git a/target/arm/hvf/hvf_sme_stubs.h b/target/arm/hvf/hvf_sme_stubs.h new file mode 100644 index 0000000000..43686f7824 --- /dev/null +++ b/target/arm/hvf/hvf_sme_stubs.h @@ -0,0 +1,172 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +typedef int32_t hv_return_t; +typedef uint64_t hv_vcpu_t; + +static inline bool hvf_arm_sme2_supported(void) +{ + return false; +} + +static inline uint32_t hvf_arm_sme2_get_svl(void) +{ + g_assert_not_reached(); +} + +typedef enum hv_sme_p_reg_t { + HV_SME_P_REG_0, + HV_SME_P_REG_1, + HV_SME_P_REG_2, + HV_SME_P_REG_3, + HV_SME_P_REG_4, + HV_SME_P_REG_5, + HV_SME_P_REG_6, + HV_SME_P_REG_7, + HV_SME_P_REG_8, + HV_SME_P_REG_9, + HV_SME_P_REG_10, + HV_SME_P_REG_11, + HV_SME_P_REG_12, + HV_SME_P_REG_13, + HV_SME_P_REG_14, + HV_SME_P_REG_15, +} hv_sme_p_reg_t; + +/* + * The system version of this type declares it with + * __attribute__((ext_vector_type(64))) + * However, that is clang specific and not supported by GCC. + * Since these headers are only here for the case where the system + * headers do not provide these types (including both older macos + * and non-macos hosts), we don't need to make the type match + * exactly, so we declare it as a uint8_t array. + */ +typedef uint8_t hv_sme_zt0_uchar64_t[64]; + +typedef enum hv_sme_z_reg_t { + HV_SME_Z_REG_0, + HV_SME_Z_REG_1, + HV_SME_Z_REG_2, + HV_SME_Z_REG_3, + HV_SME_Z_REG_4, + HV_SME_Z_REG_5, + HV_SME_Z_REG_6, + HV_SME_Z_REG_7, + HV_SME_Z_REG_8, + HV_SME_Z_REG_9, + HV_SME_Z_REG_10, + HV_SME_Z_REG_11, + HV_SME_Z_REG_12, + HV_SME_Z_REG_13, + HV_SME_Z_REG_14, + HV_SME_Z_REG_15, + HV_SME_Z_REG_16, + HV_SME_Z_REG_17, + HV_SME_Z_REG_18, + HV_SME_Z_REG_19, + HV_SME_Z_REG_20, + HV_SME_Z_REG_21, + HV_SME_Z_REG_22, + HV_SME_Z_REG_23, + HV_SME_Z_REG_24, + HV_SME_Z_REG_25, + HV_SME_Z_REG_26, + HV_SME_Z_REG_27, + HV_SME_Z_REG_28, + HV_SME_Z_REG_29, + HV_SME_Z_REG_30, + HV_SME_Z_REG_31, +} hv_sme_z_reg_t; + +enum { + HV_SYS_REG_SMCR_EL1, + HV_SYS_REG_SMPRI_EL1, + HV_SYS_REG_TPIDR2_EL0, + HV_SYS_REG_ID_AA64ZFR0_EL1, + HV_SYS_REG_ID_AA64SMFR0_EL1, +}; + +enum { + HV_FEATURE_REG_ID_AA64SMFR0_EL1, + HV_FEATURE_REG_ID_AA64ZFR0_EL1, +}; + +typedef struct { + bool streaming_sve_mode_enabled; + bool za_storage_enabled; +} hv_vcpu_sme_state_t; + +static inline hv_return_t hv_sme_config_get_max_svl_bytes(size_t *value) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_state(hv_vcpu_t vcpu, + hv_vcpu_sme_state_t *sme_s= tate) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_state(hv_vcpu_t vcpu, + const hv_vcpu_sme_state_t = *sme_state) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_z_reg(hv_vcpu_t vcpu, + hv_sme_z_reg_t reg, + uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_z_reg(hv_vcpu_t vcpu, + hv_sme_z_reg_t reg, + const uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_p_reg(hv_vcpu_t vcpu, + hv_sme_p_reg_t reg, + uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_p_reg(hv_vcpu_t vcpu, + hv_sme_p_reg_t reg, + const uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_za_reg(hv_vcpu_t vcpu, + uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_za_reg(hv_vcpu_t vcpu, + const uint8_t *value, + size_t length) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_get_sme_zt0_reg(hv_vcpu_t vcpu, + hv_sme_zt0_uchar64_t *va= lue) +{ + g_assert_not_reached(); +} + +static inline hv_return_t hv_vcpu_set_sme_zt0_reg(hv_vcpu_t vcpu, + const hv_sme_zt0_uchar64= _t *value) +{ + g_assert_not_reached(); +} diff --git a/target/arm/hvf/sysreg.c.inc b/target/arm/hvf/sysreg.c.inc index 067a8603fa..7a2f880f78 100644 --- a/target/arm/hvf/sysreg.c.inc +++ b/target/arm/hvf/sysreg.c.inc @@ -145,3 +145,11 @@ DEF_SYSREG(HV_SYS_REG_TPIDRRO_EL0, 3, 3, 13, 0, 3) DEF_SYSREG(HV_SYS_REG_CNTV_CTL_EL0, 3, 3, 14, 3, 1) DEF_SYSREG(HV_SYS_REG_CNTV_CVAL_EL0, 3, 3, 14, 3, 2) DEF_SYSREG(HV_SYS_REG_SP_EL1, 3, 4, 4, 1, 0) + +DEF_SYSREG_15_02(HV_SYS_REG_SMCR_EL1, 3, 0, 1, 2, 6) +DEF_SYSREG_15_02(HV_SYS_REG_SMPRI_EL1, 3, 0, 1, 2, 4) +DEF_SYSREG_15_02(HV_SYS_REG_TPIDR2_EL0, 3, 3, 13, 0, 5) +DEF_SYSREG_15_02(HV_SYS_REG_ID_AA64ZFR0_EL1, 3, 0, 0, 4, 4) +DEF_SYSREG_15_02(HV_SYS_REG_ID_AA64SMFR0_EL1, 3, 0, 0, 4, 5) +DEF_SYSREG_15_02(HV_SYS_REG_SMPRI_EL1, 3, 0, 1, 2, 4) +DEF_SYSREG_15_02(HV_SYS_REG_SMCR_EL1, 3, 0, 1, 2, 6) diff --git a/target/arm/hvf_arm.h b/target/arm/hvf_arm.h index 5d19d82e5d..6b1c3b9792 100644 --- a/target/arm/hvf_arm.h +++ b/target/arm/hvf_arm.h @@ -22,4 +22,45 @@ void hvf_arm_init_debug(void); =20 void hvf_arm_set_cpu_features_from_host(ARMCPU *cpu); =20 +/* + * We need access to types from macOS SDK >=3D15.2, so expose stubs if the + * headers are not available until we raise our minimum macOS version. + */ +#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED + #if (__MAC_OS_X_VERSION_MAX_ALLOWED >=3D 150200) + #include "system/hvf_int.h" + + static inline bool hvf_arm_sme2_supported(void) + { + if (__builtin_available(macOS 15.2, *)) { + size_t svl_bytes; + hv_return_t result =3D hv_sme_config_get_max_svl_bytes(&svl_by= tes); + if (result =3D=3D HV_UNSUPPORTED) { + return false; + } + assert_hvf_ok(result); + return svl_bytes > 0; + } else { + return false; + } + } + + static inline uint32_t hvf_arm_sme2_get_svl(void) + { + if (__builtin_available(macOS 15.2, *)) { + size_t svl_bytes; + hv_return_t result =3D hv_sme_config_get_max_svl_bytes(&svl_by= tes); + assert_hvf_ok(result); + return svl_bytes; + } else { + abort(); + } + } + #else /* (__MAC_OS_X_VERSION_MAX_ALLOWED >=3D 150200) */ + #include "hvf/hvf_sme_stubs.h" + #endif /* (__MAC_OS_X_VERSION_MAX_ALLOWED >=3D 150200) */ +#else /* ifdef __MAC_OS_X_VERSION_MAX_ALLOWED */ + #include "hvf/hvf_sme_stubs.h" +#endif /* ifdef __MAC_OS_X_VERSION_MAX_ALLOWED */ + #endif diff --git a/target/arm/machine.c b/target/arm/machine.c index 476dad00ee..b0e499515c 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -233,7 +233,7 @@ static bool sve_needed(void *opaque) { ARMCPU *cpu =3D opaque; =20 - return cpu_isar_feature(aa64_sve, cpu); + return cpu_isar_feature(aa64_sve, cpu) || cpu_isar_feature(aa64_sme, c= pu); } =20 /* The first two words of each Zreg is stored in VFP state. */ --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809380; cv=none; d=zohomail.com; s=zohoarc; b=k+5JjF3TlHySsuSd7LVY5lvCDkAsdPVhwKcz11JhUXNqn3OR+WsdUTPOyOorKG8jhQpZUCZuj+RId+7OsVYtHW7hqrP7ucXGDBQ9CAh1/SIC0ZgZQ72DLtjIbGcFNZ2zrSNKImeHm0g0gFdzBYa/LL0rSiyHwiNrtLSZwRspjug= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809380; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=TJieb313+a3lfTsCm/cKrK1VqqA8uHhdobgQKwhazhM=; b=IIBSa65BoJgmtZtKwH2E1bY/yrVFOySYG8xMgwlL4buVY3nvvO7K5L3AelLRli+F6dbFgh8x2LVW1nmD0gA3iWYdcGmoYOnVPmPsSPjRvZbeVr27vyfOnh1aiVsOwdYImf9S/dcdwHOVQ573YqkjAmHI52zBiHBWNGW7tcQSACM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809380297609.2955228002355; Fri, 6 Mar 2026 07:03:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfk-0005B3-50; Fri, 06 Mar 2026 10:01:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWf8-0004bZ-FH for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:23 -0500 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWf6-0002kW-Lr for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:22 -0500 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-4837584120eso71823035e9.1 for ; Fri, 06 Mar 2026 07:00:20 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809219; x=1773414019; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TJieb313+a3lfTsCm/cKrK1VqqA8uHhdobgQKwhazhM=; b=YQ4aM1k9GRfgnvKZEl6ZLSn1iXudbOYy1Nz1/mjyzXM8ShYVlBvz62p/I7uVIBVs6j iXVi1KHcDOBrecuBCC0FvGORDj3dTC1vvrmo09aP6JSJ9elCIYl415rtOFsZ5fhbwdoz vJgyBrxskucsRRGFRL4tWLYbK36xcJpzeNW/H0yQuxo509S4YgsWZnqWejzMZMFmVFy1 MZETDBkdise4N5UP+R6LQrmQGS+9CK1EFqKsUFEPJgasYoc30ND0AmIwQ/tQLYQJpCGb 2SitE6zoqqIOajNiNhyDHezhgLqBLShUV3Zn34lHAPH1REqUG3aAlFSSjvP/V3pkNPFC 7Law== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809219; x=1773414019; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TJieb313+a3lfTsCm/cKrK1VqqA8uHhdobgQKwhazhM=; b=bgZ1iDqrYvXG2ZS+SvsgVwlxrf+1L+IWTmQKCeiH4xvKiMkI/F0bXTUcm2g6ga9q8v eL1TUDnFES5gm3KEGCE6ucCvbJIAHPkKu9Qd7IBVgXHBCJeXvKMHsj+KNLnH35QmCbvi NTh+4kFQYiIoHPZG/I9R6yvznpM/0bhgj/IBJ4Xy7ZeTH7pY5Zx4kagwFQWS8PRo1/Tf lyCt5kokYKw2vO057jmfJOx93mygUNhodmv4qH1w2J/WpcKGhxB6RGU2hp42wK6s3S63 6svY0Qwq0ZwPJgu6323I93meX9JcQRnZ4Id4jHjs0K/RskTFsnfnTE51BHlTCsOt+yAO UdCQ== X-Gm-Message-State: AOJu0Yxr+1rUt/uJN7F+Nf6dR2fliBccjirtV3ltG8FAzZILuqF5/iuU cDiUfGC1Igm4xRmME+DV3sdSNmfqRKegTAh1iOVhTlpQUwrNyygwGvKkxS0CpZu2SeLDJLeYbXO H+Bjw X-Gm-Gg: ATEYQzzdl70Y5ZC+9lieVHITA/AZXLiDlAQLkkf1mK0OqzK2R8OgOTMyLrn5Z0l5GxD Sp5haKVGbMUfTZfZ9bR52E0xYBxKFTMXVEy/rYUEAxNv2Q/TsWKDzCAzQGbgqBT4GQFU239Wl6H 8r2NcFtJM7V1870XU4tp+jzUdfazpe7TQTFWevXfeRP2HFuq1RucAa6G0X2wPqjO2JKW78vfDFK leGRucdxHkZ5crjHbT6zWtpUJ02T9Zlq3+IbAYWaNs+MCGYEBQua6Mv+fTUspO7pOGqiAPEVrdl Mc3JuR9uzCMkbCXJDknOQbloVcGOuE/ctgWjmRvAtuV9UVW2IXKo7B+XHjw8Hc2my0n8CBE09IB OQAczLC1f0vGfO9YhFAhtw3R33GX/Yr47kz5p8CNiDcA5qwQqlejK1j2J6Ldx8kojIh6pf5WxmV Bgo9nNUAgQDljOn0CE1WaVG6//FhW2tVBAGs30uh1y1EddbFlsVGX4FK6Ks5KQWc0BxAjEEtlhe JcO90aPkJeB1dfpBId9rG7oJlXkGXo= X-Received: by 2002:a05:600c:1e88:b0:483:1403:c47f with SMTP id 5b1f17b1804b1-485269182b5mr45637345e9.6.1772809218549; Fri, 06 Mar 2026 07:00:18 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 34/49] hvf/arm: expose FEAT_SME2 to guest if available Date: Fri, 6 Mar 2026 14:59:24 +0000 Message-ID: <20260306145939.2162189-35-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x329.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809381664158500 Content-Type: text/plain; charset="utf-8" From: Manos Pitsidianakis Starting from M4 cores and MacOS 15.2 SDK, HVF can virtualise FEAT_SME2. Signed-off-by: Manos Pitsidianakis Reviewed-by: Mohamed Mediouni Message-id: 20260306-sme2-hvf-v7-2-e72eeda41ed3@linaro.org Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 21b16dfe42..5fc8f6bbbd 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -315,6 +315,7 @@ typedef struct ARMHostCPUFeatures { uint64_t features; uint64_t midr; uint32_t reset_sctlr; + uint32_t sme_vq_supported; const char *dtb_compatible; } ARMHostCPUFeatures; =20 @@ -1106,6 +1107,24 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPU= Features *ahcf) r |=3D hv_vcpu_config_get_feature_reg(config, regs[i].reg, &host_isar.idregs[regs[i].inde= x]); } + + if (__builtin_available(macOS 15.2, *)) { + static const struct sme_isar_regs { + hv_feature_reg_t reg; + ARMIDRegisterIdx index; + } sme_regs[] =3D { + { HV_FEATURE_REG_ID_AA64SMFR0_EL1, ID_AA64SMFR0_EL1_IDX }, + { HV_FEATURE_REG_ID_AA64ZFR0_EL1, ID_AA64ZFR0_EL1_IDX }, + }; + + if (hvf_arm_sme2_supported()) { + for (i =3D 0; i < ARRAY_SIZE(sme_regs); i++) { + r |=3D hv_vcpu_config_get_feature_reg(config, sme_regs[i].= reg, + &host_isar.idregs[sme_= regs[i].index]); + } + } + } + os_release(config); =20 /* @@ -1121,19 +1140,6 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPU= Features *ahcf) =20 clamp_id_aa64mmfr0_parange_to_ipa_size(&host_isar); =20 - /* - * Disable SME, which is not properly handled by QEMU hvf yet. - * To allow this through we would need to: - * - make sure that the SME state is correctly handled in the - * get_registers/put_registers functions - * - get the SME-specific CPU properties to work with accelerators - * other than TCG - * - fix any assumptions we made that SME implies SVE (since - * on the M4 there is SME but not SVE) - */ - SET_IDREG(&host_isar, ID_AA64PFR1, - GET_IDREG(&host_isar, ID_AA64PFR1) & ~R_ID_AA64PFR1_SME_MASK= ); - ahcf->isar =3D host_isar; =20 /* @@ -1148,6 +1154,8 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPUF= eatures *ahcf) */ ahcf->reset_sctlr |=3D 0x00800000; =20 + ahcf->sme_vq_supported =3D hvf_arm_sme2_supported() ? hvf_arm_sme2_get= _svl() : 0; + /* Make sure we don't advertise AArch32 support for EL0/EL1 */ if ((GET_IDREG(&host_isar, ID_AA64PFR0) & 0xff) !=3D 0x11) { return false; @@ -1199,6 +1207,7 @@ void hvf_arm_set_cpu_features_from_host(ARMCPU *cpu) cpu->env.features =3D arm_host_cpu_features.features; cpu->midr =3D arm_host_cpu_features.midr; cpu->reset_sctlr =3D arm_host_cpu_features.reset_sctlr; + cpu->sme_vq.supported =3D arm_host_cpu_features.sme_vq_supported; } =20 void hvf_arch_vcpu_destroy(CPUState *cpu) @@ -1343,6 +1352,7 @@ int hvf_arch_init_vcpu(CPUState *cpu) arm_cpu->isar.idregs[ID_AA64MMFR0_EL1_IDX]); assert_hvf_ok(ret); =20 + aarch64_add_sme_properties(OBJECT(cpu)); return 0; } =20 --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809463; cv=none; d=zohomail.com; s=zohoarc; b=cVYXONx0EFUz1p67eVqlFi+ArZacOV3OqMsK5uahPLzuN/SaEFn47tEnLQF/w/fkXmXU3ySzbEA37C4u0VXRvooD+lDhFIcUqRSKG2Xcf6ZJp/KdrQbHtkpBlfRS4gsGNv862HctBu2Qw0xBEeP4UQ+DwJ/2oCmsn4bHgDAhr0o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809463; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=7jDxYep7GJJUj8CcED/omiAOWuvK6uqil+IxrW6kQJI=; b=Gk7NBKYQDXuOsABOd7E/nqcXGt1mFGdFBnm83v1IFiuszc0qxCV8HBuGm56ltbctvV0ylAoX3ZcRP0HhUgmbh7K0RRKYcpwtkASaM/sBk9mUWHJr2PyTmB/Z5liBZ/ctuWrnmVsB5bzliZwIgTAVp3BLDMtvx4YfU/wSqyClsD0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809463532352.7317728702184; Fri, 6 Mar 2026 07:04:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfo-0005nj-Nn; Fri, 06 Mar 2026 10:01:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfA-0004bt-7j for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:24 -0500 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWf8-0002ku-Bv for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:23 -0500 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-48370174e18so56790315e9.2 for ; Fri, 06 Mar 2026 07:00:21 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809221; x=1773414021; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=7jDxYep7GJJUj8CcED/omiAOWuvK6uqil+IxrW6kQJI=; b=ZD8Eryam3nojrtIa5KoB9wscHdWOo4Xwj5lgMyoUYSNgPx5vlttFvzKeoJIF6xwhEU cSp1O7l68ogZIppWbAsia2jsnZ2R4dfxJoh1sQbWIGWhmba7ZtH7Lm7s6/TsTp6WZ0To +hlmnk8Mldvp8XhDzrPa6Khdz/yQiNX4ZYrHCbAwVsVUTIw3YhIun/6vGvcWe5MU23HJ nrtAp0Ilm1tGt1OTkvMqVbCRQgygzDxxhLYSnVScJn+VR21rzY5oX/vffr9+10GTsnmU k4oWjwqmcmxjCtjVyZXykTT3GYNJe4fRLszYdp5CdtytwZk5XnCBwnp9aikMeeackQ7Z HZYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809221; x=1773414021; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=7jDxYep7GJJUj8CcED/omiAOWuvK6uqil+IxrW6kQJI=; b=BGmn8jqeRPnP+4+jiD0lMgT1k4MoLBJbuKe9ose9ucT0sJr4HaQFonWEH6BdYaUW5v Ni9ooxQzP0QBwy30qkqSDWQ7wfndb50kRDNjCnRF4UtU0uEMcRd+mu9VOfdjrYt8YRc1 FVAbHqNQo0dslDLJQwfsKHuaEOys6d64ZItvtPK/i8uxs4OpilbgXtwiWStGtdEyhaUB VARb+X3tEbAfk5GKFFxXzn+ivNWvdOhuxdH1z2wSuVdC7e/r94aR0BqlZWV+rY3npGEs Em8+UwnMUW5wJj9K0R+OWU8t9rQF+ARJJgNmcrP8Pe/hSnNeHo0OYN1CNj20P9T5P29T sYUA== X-Gm-Message-State: AOJu0YxV8Ei+y5ch4rdFRBOvca5tB/Fyfz1pYV2/LBPuDBpgHgxfppif rfqIiTAi9buTF3lqSbUmXKBmQbDxbbAkp0+dDiCtB7+7rpcpDvkw6A1Nc5SCWOaPGnhTomZuHlH J+QgH X-Gm-Gg: ATEYQzyEBhcYIUTuh9IJNOf76oTvC0F9vX7uBDK6SgOggE5JBeGTlnWm1kdOsEXij28 WbZuPlP1EW5HLgqGpvwAqb/HAOddBaAijUXAiKubUrnbIBYGNBGXiqnWabe54y54M2BR+3KBGEb rj/wKQbWAyhXsLoQqEoz/Nnsc5JEShEVOhiA3mmyiGG7Y77UpVLInEeJLl8OuMlL4bSTQMqivfw 6ccHrQxB6YtZsL8at4rH7dR2weKAL8nxBlRfxec9QfX4bolotC1QdEbuMlCZl8YgaDloblS0yF8 05YZ+YZGJQhjkxZKBcJhIYvYPljrrV+8I5uH1Eces116XyAWVTa3lkehkiQJaASv5JJp4vnxBlr Xp/FzumhGH+raT91jk3ApwxT8KSfJjdCNTz9sCwZ2P5K1/GX0rbC+TpY/zKEo9zfJuWZxSKD+15 js5r0F4bRBLYcPIt/9LX03CYtUF/ZLiqCaXtsPYUuvFZySv7tAabJ0s9Q42br20EbpnthQgmxEJ iy6ZVh1/3BsJF3cRAV53NJJPwZ6Azk= X-Received: by 2002:a05:600c:8218:b0:480:69ae:f0e9 with SMTP id 5b1f17b1804b1-48526958b30mr46771045e9.16.1772809220873; Fri, 06 Mar 2026 07:00:20 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 35/49] hw/arm: virt: remove hvf_arm.h include Date: Fri, 6 Mar 2026 14:59:25 +0000 Message-ID: <20260306145939.2162189-36-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809464251158500 Content-Type: text/plain; charset="utf-8" From: Mohamed Mediouni We don't need anything in this header, so drop the include. Signed-off-by: Mohamed Mediouni [PMM: updated commit message] Reviewed-by: Peter Maydell Message-id: 20260306130107.35359-4-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- hw/arm/virt.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index cab2e21e8a..7456614d05 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -71,7 +71,6 @@ #include "hw/intc/arm_gicv3_its_common.h" #include "hw/core/irq.h" #include "kvm_arm.h" -#include "hvf_arm.h" #include "whpx_arm.h" #include "hw/firmware/smbios.h" #include "qapi/visitor.h" --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809685; cv=none; d=zohomail.com; s=zohoarc; b=NVoKK6LzSfraNiRlU2DaDm/0RumF/GqsJRskxEHJxWrv8X5eo6NL9lw3f5YHN12a8U7oMZGZkxC++XMhw32o0kzgOttd46TIdoxoEQPKiO2tz40WdYEZq2B01Sau+prH4D4BL1oNFVNhLcpO5XeHa4R5F4FQXifCUszCNOKH46w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809685; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=SGKjJIVnX4L6WV2EWibcclqBxhacVob9Ke4Fe6IFANA=; b=M4xMGicn9CObcNb61UmAo9kHrwFEpjyZB+VYgqVfpz7Fri1Dm46BxyXWl8XAOIpDTgd37b2vrmyhtt2QyByKNNkd8W6Ee+2xDdTyjuoealnL/HusmelC9UfKqsjI3+ceCjMhWDB13LeFynR43pW6EQEbn+eJzJMndj38jSZtkuk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809685632440.8385678790586; Fri, 6 Mar 2026 07:08:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfr-00064c-2K; Fri, 06 Mar 2026 10:01:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfB-0004dk-Fk for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:28 -0500 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWf9-0002lG-QN for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:25 -0500 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-439af00d33cso6153521f8f.1 for ; Fri, 06 Mar 2026 07:00:23 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809222; x=1773414022; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=SGKjJIVnX4L6WV2EWibcclqBxhacVob9Ke4Fe6IFANA=; b=fx0Kg1v8hQ00QpvNMwatcJ4qNJfCIStSmjAA69WPt/Mfad5e8NmCIKfb9NDKObHzYl yMFpaTyG9cn/XGD7g2O9870yJghRCl2PMbFa/qh1H+52/YLvsuyvtMqExqMlwwrHQc8N NNYvq81l82r1b3xrfggcI8tgiaNL+j8VsMEth6r3gJp63LXLMH1vMicV156RWnUFK48b krgcUICbXHcnUc7T+9kcNeQmXAVFFvUph76IZU8esawhWrClF3yboHV1GjglO4aVIKKr zeyGrwGHGDtkDIdWLN2TGsv7xQXcpfKowrB45mAXP1Hx0GCOV37vp30HQE35W/cbrEcb Do/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809222; x=1773414022; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=SGKjJIVnX4L6WV2EWibcclqBxhacVob9Ke4Fe6IFANA=; b=IEC1hgPe6H+8Qca5ZQxc0n02NIf+AOhb0HIgj1g52ImhLDRpb3NXzCPUckQ76MyNNq LAtZkJexPYPTGbW4S4Exr9/EM7NPBqp9vLxyjAtn9azjxTKTf1X/mx4TFohcrCdtfcds dq80ZXkCyO6guweM1gkLobfkd+F3YOljQyWvbPG5a4NH0cgFcfvowkKUhQX/pokijXNO /d2l7s8kYXeMHv4nzVINc18FYDxMI4J06YTd7s+ZZVJUU/4+eotLwHwgPVtLL35HBKL3 O0SxTL3eT2oQQQwoksd6R+wFOPqsAVe6c5aQYARjEkS0I1/hfgPXwfWkQvqYwM/ZUvGY CX1g== X-Gm-Message-State: AOJu0Yy+AOR3wYfEVkeXZabag4UO6hruajXipTrVAMBRsR+8JS8sw7e/ MvqlwwayVbnAqRAjjZyfHd5IKYX2wTSj79BAzmmMGDNq1xiYQJkfIcumj4ngEIfjrBEomX6d7vo ab18z X-Gm-Gg: ATEYQzzzagnE1ac/1Vpwg0mxppa+13+jNhXrrZheTIMfwi2qQAB/Ym2h4MAW1AQ+y7+ kxeDyRH3k+pCQlPX1CZxPKK1mRg8FUDFRoPnIScrRlhZklUBfIrfilKQtowmKERWQtUSNEhh1SW 38F8WH1jF2/009QKC0rJ3JVN8QHTQlGfqhsYZB81kuxHnP4nl+pgybkDQNKcc8Fha/i7elOsWTG Igq6rkYAB4ZUDiKdGfxLuBdbo4tvwoAdo+yChp90xI9mv4SEBx+xQdzcPEqGpW+8Ilh8ZfRCKcz 3bQ/a42P2TY4j4mZVft4bw1eI6AYP1HgOEQgUxEun6rQK09QhjWu/vnHRUgJx2iiBeHBJqHKVGU eYURc4O2pagsMUL1votduEO8hjXstmWbw6lLlzxgXqVd2cMxWLJn8coCunweg3BkY75Wq8PcOyy F3xF7Q6234lJYC8Y0lyFbcJlV6DZtaH6LjAaWSkraGs6Y/sJR534N2Ul2mcC3s8z4vd9qBI5LUD T0hcCoxgLCF0oOt+7s3eiEko7FAPG1Swx78MT6eVQ== X-Received: by 2002:a05:600c:a47:b0:483:71f7:2782 with SMTP id 5b1f17b1804b1-48526922c02mr39062575e9.12.1772809221937; Fri, 06 Mar 2026 07:00:21 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 36/49] hvf: hvf-all: stop including hvf_arm.h Date: Fri, 6 Mar 2026 14:59:26 +0000 Message-ID: <20260306145939.2162189-37-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809686901154101 Content-Type: text/plain; charset="utf-8" From: Mohamed Mediouni We don't need this target-specific header in this target-agnostic source file. Signed-off-by: Mohamed Mediouni Reviewed-by: Peter Maydell Message-id: 20260306130107.35359-5-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- accel/hvf/hvf-all.c | 1 - 1 file changed, 1 deletion(-) diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c index 033c677b6f..5f357c6d19 100644 --- a/accel/hvf/hvf-all.c +++ b/accel/hvf/hvf-all.c @@ -18,7 +18,6 @@ #include "system/hvf_int.h" #include "hw/core/cpu.h" #include "hw/core/boards.h" -#include "target/arm/hvf_arm.h" #include "trace.h" =20 bool hvf_allowed; --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809521; cv=none; d=zohomail.com; s=zohoarc; b=OZUWJfNqOrIdWRL+qZw3+sKU7KVAVxWwnuQekM+huJEBz5rW3qAsvASxgFBdixLiDl1L2cVC+bTodsVlZilBiW0pN38Bh2G+qav0d21fwpTjG9N7BF+IlpM/4QT+PFwsa5N6XZb6w2bC9NAoTk6K1HKhn0ZhR3FuUucxkVupUN8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809521; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=r+7ngQZFv5HNzx2NlfRcqRUSp2DtgbPtXdO1FTdxTKc=; b=oIB92InpWzFvHn77yy4M+f2LwqTAu6YGsBJdvwMMIEQR3FkIEomhB3PXPnJklGOGVu3twi1WUBMUMQCb3BeFS+0dfddx/oSpxwDhA7rp1FXOvfstfl9SoKGPsrWGnxo+oTvpcgxEF8lRZoA0Z4IxKlbmGyR//0SMdhvck8E35wM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809521879858.6384900626523; Fri, 6 Mar 2026 07:05:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfo-0005jo-6f; Fri, 06 Mar 2026 10:01:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfE-0004hO-Pq for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:35 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfB-0002lc-Gt for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:28 -0500 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-4836d4c26d3so73895185e9.2 for ; Fri, 06 Mar 2026 07:00:25 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809224; x=1773414024; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=r+7ngQZFv5HNzx2NlfRcqRUSp2DtgbPtXdO1FTdxTKc=; b=ml0doPN4w9Dx5u/90IaFH5UOYcZkLdHVtIsq0YKdmkF85Nsd1sgtsOPmrIsXLLHqYt M/6OUgIR/2qb+ktQzjqc8o904pU/9oKdRIKWKPzF8Q1Qs/S/Mdwgu79w98nNb4eXkekE EbeSrB+aShpt9XmM4aMDMtmwQQ/m5uN5VEAIuyZadw/eUDgJbWE5v7qcj00w9x99UdDL jZnnG0xP9dFSIzFSu7SPvZtpTa1t9Q2lMwQE6y9Ot6MZUa5DeurSRW5lChtEUhFLL0H3 0uBeEBVcmBb6pXbUsLbP++HVn/vlt+zPUvpN+sNLE9xPbwC9tCquPY/4+9kzvQkkVagl Hyrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809224; x=1773414024; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=r+7ngQZFv5HNzx2NlfRcqRUSp2DtgbPtXdO1FTdxTKc=; b=Hp/kN/f0T1u5pI4+qh1psVrLAc84KrH9y0/nJugllnCdvdkw9d1bFOYTo+bFCrRWhn Qt+Mui2XhaYFFxsb61wkHVcsXkstXyTiwuyuhoq5AOA25hPB98diAg1cCb51Ji4ukqwm J4v41RbGflgzjbaIvAWqn+Y8y720qax8aEtqnZJGYdpych3XB15RJuaa89lNlM0VHeM6 UEDX9cKYI0sa0pTyrMbDVSpp9goF9O1ydGp7upv2CV76pHRsu7YVv8t+xmIwarOyWfp5 nFtQHsglDo4c8PNT6gpdqDPnGYgmTWbXGwb3lpbTV+A4LOvLXkUddTTeB8obPOohhLen 4lKg== X-Gm-Message-State: AOJu0Yw+LUDUdKIInJ+F6TNW5cqsPde3E20lMMlk+BJdj70wbCyZUenY 2zCStBzNk8oiwmUtWhLvwd0nopGoMRUsGdLDQ8UYej/PLKc3AEscemViVSI0BkyPkYL4D5UrCJW AXMgU X-Gm-Gg: ATEYQzxvrLOEfD1jB0jSuXu1TNaxtfCHZ8oQfNQTmpxNBdXhwpfY3YsAlusubTyA/7o JNQFlPjk/ecLtl72fZWL1gLFwhou3b5ERVXKJdDLN3KgGjljb/iN+JHsauqXVb5PHVCrK2e/+x8 286/XMqckf+iB1enz8WaXrXk0DBIFhV02ykQ7LWQqEcFi7xDs/6/A4GI0FaXKmIkJKUfS4IkmuG 2ayFTYRT0mRoRDgoyccJzSZXJEFW9MXpez/A6OZ+qkm5+IRfFJeZuScYgT2EFlLbxGR4uBswamv BysezMukIf/xUPFhLfA674Pzr/aaE5hUuO24B9e0toOntRyDPYF3vF2+Do8LYz+q15PG9C/eJ7Z jf4k8KPRa3tceuxyNUiT+F91ju8OcdcZdPPba91HPJGzAZY/xauQz40E3BITNCk4nQ8K0uOUA39 Zt6vq901evRNCee2h96q8zwZR2uxfOS4uxc8er4j7TU2aSx4xwRu9jxLG9bXg1ku++8fQLPODrC oqEzzwgjmZFtJFSFwqXCQaW8F5blWw= X-Received: by 2002:a05:600c:3acf:b0:483:6f37:1b33 with SMTP id 5b1f17b1804b1-48526978d48mr41184025e9.30.1772809223736; Fri, 06 Mar 2026 07:00:23 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 37/49] hw/intc: Add hvf vGIC interrupt controller support Date: Fri, 6 Mar 2026 14:59:27 +0000 Message-ID: <20260306145939.2162189-38-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809524359154101 From: Mohamed Mediouni This opens up the door to nested virtualisation support. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-6-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- hw/intc/arm_gicv3_hvf.c | 735 +++++++++++++++++++++++++++++ hw/intc/meson.build | 1 + include/hw/intc/arm_gicv3_common.h | 1 + 3 files changed, 737 insertions(+) create mode 100644 hw/intc/arm_gicv3_hvf.c diff --git a/hw/intc/arm_gicv3_hvf.c b/hw/intc/arm_gicv3_hvf.c new file mode 100644 index 0000000000..d6a46b7d53 --- /dev/null +++ b/hw/intc/arm_gicv3_hvf.c @@ -0,0 +1,735 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * ARM Generic Interrupt Controller using HVF platform support + * + * Copyright (c) 2025 Mohamed Mediouni + * Based on vGICv3 KVM code by Pavel Fedin + * + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "hw/intc/arm_gicv3_common.h" +#include "qemu/error-report.h" +#include "qemu/module.h" +#include "system/runstate.h" +#include "system/hvf.h" +#include "system/hvf_int.h" +#include "hvf_arm.h" +#include "gicv3_internal.h" +#include "vgic_common.h" +#include "qom/object.h" +#include "target/arm/cpregs.h" +#include + +struct HVFARMGICv3Class { + ARMGICv3CommonClass parent_class; + DeviceRealize parent_realize; + ResettablePhases parent_phases; +}; + +typedef struct HVFARMGICv3Class HVFARMGICv3Class; + +/* This is reusing the GICv3State typedef from ARM_GICV3_ITS_COMMON */ +DECLARE_OBJ_CHECKERS(GICv3State, HVFARMGICv3Class, + HVF_GICV3, TYPE_HVF_GICV3); + +/* + * Loop through each distributor IRQ related register; since bits + * corresponding to SPIs and PPIs are RAZ/WI when affinity routing + * is enabled, we skip those. + */ +#define for_each_dist_irq_reg(_irq, _max, _field_width) \ + for (_irq =3D GIC_INTERNAL; _irq < _max; _irq +=3D (32 / _field_width)) + +/* + * Wrap calls to the vGIC APIs to assert_hvf_ok() + * as a macro to keep the code clean. + */ +#define hv_gic_get_distributor_reg(offset, reg) \ + assert_hvf_ok(hv_gic_get_distributor_reg(offset, reg)) + +#define hv_gic_set_distributor_reg(offset, reg) \ + assert_hvf_ok(hv_gic_set_distributor_reg(offset, reg)) + +#define hv_gic_get_redistributor_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_get_redistributor_reg(vcpu, reg, value)) + +#define hv_gic_set_redistributor_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_set_redistributor_reg(vcpu, reg, value)) + +#define hv_gic_get_icc_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_get_icc_reg(vcpu, reg, value)) + +#define hv_gic_set_icc_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_set_icc_reg(vcpu, reg, value)) + +#define hv_gic_get_ich_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_get_ich_reg(vcpu, reg, value)) + +#define hv_gic_set_ich_reg(vcpu, reg, value) \ + assert_hvf_ok(hv_gic_set_ich_reg(vcpu, reg, value)) + +static void hvf_dist_get_priority(GICv3State *s, hv_gic_distributor_reg_t = offset + , uint8_t *bmp) +{ + uint64_t reg; + uint32_t *field; + int irq; + field =3D (uint32_t *)(bmp); + + for_each_dist_irq_reg(irq, s->num_irq, 8) { + hv_gic_get_distributor_reg(offset, ®); + *field =3D reg; + offset +=3D 4; + field++; + } +} + +static void hvf_dist_put_priority(GICv3State *s, hv_gic_distributor_reg_t = offset + , uint8_t *bmp) +{ + uint32_t reg, *field; + int irq; + field =3D (uint32_t *)(bmp); + + for_each_dist_irq_reg(irq, s->num_irq, 8) { + reg =3D *field; + hv_gic_set_distributor_reg(offset, reg); + offset +=3D 4; + field++; + } +} + +static void hvf_dist_get_edge_trigger(GICv3State *s, hv_gic_distributor_re= g_t offset, + uint32_t *bmp) +{ + uint64_t reg; + int irq; + + for_each_dist_irq_reg(irq, s->num_irq, 2) { + hv_gic_get_distributor_reg(offset, ®); + reg =3D half_unshuffle32(reg >> 1); + if (irq % 32 !=3D 0) { + reg =3D (reg << 16); + } + *gic_bmp_ptr32(bmp, irq) |=3D reg; + offset +=3D 4; + } +} + +static void hvf_dist_put_edge_trigger(GICv3State *s, hv_gic_distributor_re= g_t offset, + uint32_t *bmp) +{ + uint32_t reg; + int irq; + + for_each_dist_irq_reg(irq, s->num_irq, 2) { + reg =3D *gic_bmp_ptr32(bmp, irq); + if (irq % 32 !=3D 0) { + reg =3D (reg & 0xffff0000) >> 16; + } else { + reg =3D reg & 0xffff; + } + reg =3D half_shuffle32(reg) << 1; + hv_gic_set_distributor_reg(offset, reg); + offset +=3D 4; + } +} + +/* Read a bitmap register group from the kernel VGIC. */ +static void hvf_dist_getbmp(GICv3State *s, hv_gic_distributor_reg_t offset= , uint32_t *bmp) +{ + uint64_t reg; + int irq; + + for_each_dist_irq_reg(irq, s->num_irq, 1) { + + hv_gic_get_distributor_reg(offset, ®); + *gic_bmp_ptr32(bmp, irq) =3D reg; + offset +=3D 4; + } +} + +static void hvf_dist_putbmp(GICv3State *s, hv_gic_distributor_reg_t offset, + hv_gic_distributor_reg_t clroffset, uint32_t *= bmp) +{ + uint32_t reg; + int irq; + + for_each_dist_irq_reg(irq, s->num_irq, 1) { + /* + * If this bitmap is a set/clear register pair, first write to the + * clear-reg to clear all bits before using the set-reg to write + * the 1 bits. + */ + if (clroffset !=3D 0) { + reg =3D 0; + hv_gic_set_distributor_reg(clroffset, reg); + clroffset +=3D 4; + } + reg =3D *gic_bmp_ptr32(bmp, irq); + hv_gic_set_distributor_reg(offset, reg); + offset +=3D 4; + } +} + +static void hvf_gicv3_check(GICv3State *s) +{ + uint64_t reg; + uint32_t num_irq; + + /* Sanity checking s->num_irq */ + hv_gic_get_distributor_reg(HV_GIC_DISTRIBUTOR_REG_GICD_TYPER, ®); + num_irq =3D ((reg & 0x1f) + 1) * 32; + + if (num_irq < s->num_irq) { + error_report("Model requests %u IRQs, but HVF supports max %u", + s->num_irq, num_irq); + abort(); + } +} + +static void hvf_gicv3_put_cpu_el2(CPUState *cpu_state, run_on_cpu_data arg) +{ + int num_pri_bits; + + /* Redistributor state */ + GICv3CPUState *c =3D arg.host_ptr; + hv_vcpu_t vcpu =3D c->cpu->accel->fd; + + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_VMCR_EL2, c->ich_vmcr_el2); + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_HCR_EL2, c->ich_hcr_el2); + + for (int i =3D 0; i < GICV3_LR_MAX; i++) { + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_LR0_EL2, c->ich_lr_el2[i]); + } + + num_pri_bits =3D c->vpribits; + + switch (num_pri_bits) { + case 7: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 3, + c->ich_apr[GICV3_G0][3]); + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 2, + c->ich_apr[GICV3_G0][2]); + /* fall through */ + case 6: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 1, + c->ich_apr[GICV3_G0][1]); + /* fall through */ + default: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2, + c->ich_apr[GICV3_G0][0]); + } + + switch (num_pri_bits) { + case 7: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 3, + c->ich_apr[GICV3_G1NS][3]); + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 2, + c->ich_apr[GICV3_G1NS][2]); + /* fall through */ + case 6: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 1, + c->ich_apr[GICV3_G1NS][1]); + /* fall through */ + default: + hv_gic_set_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2, + c->ich_apr[GICV3_G1NS][0]); + } +} + +static void hvf_gicv3_put_cpu(CPUState *cpu_state, run_on_cpu_data arg) +{ + uint32_t reg; + uint64_t reg64; + int i, num_pri_bits; + + /* Redistributor state */ + GICv3CPUState *c =3D arg.host_ptr; + hv_vcpu_t vcpu =3D c->cpu->accel->fd; + + reg =3D c->gicr_waker; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_IGROU= PR0, reg); + + reg =3D c->gicr_igroupr0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_IGROU= PR0, reg); + + reg =3D ~0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICENA= BLER0, reg); + reg =3D c->gicr_ienabler0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISENA= BLER0, reg); + + /* Restore config before pending so we treat level/edge correctly */ + reg =3D half_shuffle32(c->edge_trigger >> 16) << 1; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICFGR= 1, reg); + + reg =3D ~0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICPEN= DR0, reg); + reg =3D c->gicr_ipendr0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISPEN= DR0, reg); + + reg =3D ~0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICACT= IVER0, reg); + reg =3D c->gicr_iactiver0; + hv_gic_set_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISACT= IVER0, reg); + + for (i =3D 0; i < GIC_INTERNAL; i +=3D 4) { + reg =3D c->gicr_ipriorityr[i] | + (c->gicr_ipriorityr[i + 1] << 8) | + (c->gicr_ipriorityr[i + 2] << 16) | + (c->gicr_ipriorityr[i + 3] << 24); + hv_gic_set_redistributor_reg(vcpu, + HV_GIC_REDISTRIBUTOR_REG_GICR_IPRIORITYR0 + i, reg); + } + + /* CPU interface state */ + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_SRE_EL1, c->icc_sre_el1); + + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_CTLR_EL1, + c->icc_ctlr_el1[GICV3_NS]); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_IGRPEN0_EL1, + c->icc_igrpen[GICV3_G0]); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_IGRPEN1_EL1, + c->icc_igrpen[GICV3_G1NS]); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_PMR_EL1, c->icc_pmr_el1); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_BPR0_EL1, c->icc_bpr[GICV3_G0]= ); + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_BPR1_EL1, c->icc_bpr[GICV3_G1N= S]); + + num_pri_bits =3D ((c->icc_ctlr_el1[GICV3_NS] & + ICC_CTLR_EL1_PRIBITS_MASK) >> + ICC_CTLR_EL1_PRIBITS_SHIFT) + 1; + + switch (num_pri_bits) { + case 7: + reg64 =3D c->icc_apr[GICV3_G0][3]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 3, reg64); + reg64 =3D c->icc_apr[GICV3_G0][2]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 2, reg64); + /* fall through */ + case 6: + reg64 =3D c->icc_apr[GICV3_G0][1]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 1, reg64); + /* fall through */ + default: + reg64 =3D c->icc_apr[GICV3_G0][0]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1, reg64); + } + + switch (num_pri_bits) { + case 7: + reg64 =3D c->icc_apr[GICV3_G1NS][3]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 3, reg64); + reg64 =3D c->icc_apr[GICV3_G1NS][2]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 2, reg64); + /* fall through */ + case 6: + reg64 =3D c->icc_apr[GICV3_G1NS][1]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 1, reg64); + /* fall through */ + default: + reg64 =3D c->icc_apr[GICV3_G1NS][0]; + hv_gic_set_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1, reg64); + } + + /* Registers beyond this point are with nested virt only */ + if (c->gic->maint_irq) { + hvf_gicv3_put_cpu_el2(cpu_state, arg); + } +} + +static void hvf_gicv3_put(GICv3State *s) +{ + uint32_t reg; + int ncpu, i; + + hvf_gicv3_check(s); + + reg =3D s->gicd_ctlr; + hv_gic_set_distributor_reg(HV_GIC_DISTRIBUTOR_REG_GICD_CTLR, reg); + + /* per-CPU state */ + + for (ncpu =3D 0; ncpu < s->num_cpu; ncpu++) { + run_on_cpu_data data; + data.host_ptr =3D &s->cpu[ncpu]; + run_on_cpu(s->cpu[ncpu].cpu, hvf_gicv3_put_cpu, data); + } + + /* s->enable bitmap -> GICD_ISENABLERn */ + hvf_dist_putbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISENABLER0 + , HV_GIC_DISTRIBUTOR_REG_GICD_ICENABLER0, s->enabled); + + /* s->group bitmap -> GICD_IGROUPRn */ + hvf_dist_putbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_IGROUPR0 + , 0, s->group); + + /* Restore targets before pending to ensure the pending state is set on + * the appropriate CPU interfaces in the kernel + */ + + /* s->gicd_irouter[irq] -> GICD_IROUTERn */ + for (i =3D GIC_INTERNAL; i < s->num_irq; i++) { + uint32_t offset =3D HV_GIC_DISTRIBUTOR_REG_GICD_IROUTER32 + (8 * i) + - (8 * GIC_INTERNAL); + hv_gic_set_distributor_reg(offset, s->gicd_irouter[i]); + } + + /* + * s->trigger bitmap -> GICD_ICFGRn + * (restore configuration registers before pending IRQs so we treat + * level/edge correctly) + */ + hvf_dist_put_edge_trigger(s, HV_GIC_DISTRIBUTOR_REG_GICD_ICFGR0, s->ed= ge_trigger); + + /* s->pending bitmap -> GICD_ISPENDRn */ + hvf_dist_putbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISPENDR0, + HV_GIC_DISTRIBUTOR_REG_GICD_ICPENDR0, s->pending); + + /* s->active bitmap -> GICD_ISACTIVERn */ + hvf_dist_putbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISACTIVER0, + HV_GIC_DISTRIBUTOR_REG_GICD_ICACTIVER0, s->active); + + /* s->gicd_ipriority[] -> GICD_IPRIORITYRn */ + hvf_dist_put_priority(s, HV_GIC_DISTRIBUTOR_REG_GICD_IPRIORITYR0, s->g= icd_ipriority); +} + +static void hvf_gicv3_get_cpu_el2(CPUState *cpu_state, run_on_cpu_data arg) +{ + int num_pri_bits; + + /* Redistributor state */ + GICv3CPUState *c =3D arg.host_ptr; + hv_vcpu_t vcpu =3D c->cpu->accel->fd; + + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_VMCR_EL2, &c->ich_vmcr_el2); + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_HCR_EL2, &c->ich_hcr_el2); + + for (int i =3D 0; i < GICV3_LR_MAX; i++) { + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_LR0_EL2, &c->ich_lr_el2[i]= ); + } + + num_pri_bits =3D c->vpribits; + + switch (num_pri_bits) { + case 7: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 3, + &c->ich_apr[GICV3_G0][3]); + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 2, + &c->ich_apr[GICV3_G0][2]); + /* fall through */ + case 6: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2 + 1, + &c->ich_apr[GICV3_G0][1]); + /* fall through */ + default: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP0R0_EL2, + &c->ich_apr[GICV3_G0][0]); + } + + switch (num_pri_bits) { + case 7: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 3, + &c->ich_apr[GICV3_G1NS][3]); + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 2, + &c->ich_apr[GICV3_G1NS][2]); + /* fall through */ + case 6: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2 + 1, + &c->ich_apr[GICV3_G1NS][1]); + /* fall through */ + default: + hv_gic_get_ich_reg(vcpu, HV_GIC_ICH_REG_AP1R0_EL2, + &c->ich_apr[GICV3_G1NS][0]); + } +} + +static void hvf_gicv3_get_cpu(CPUState *cpu_state, run_on_cpu_data arg) +{ + uint64_t reg; + int i, num_pri_bits; + + /* Redistributor state */ + GICv3CPUState *c =3D arg.host_ptr; + hv_vcpu_t vcpu =3D c->cpu->accel->fd; + + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_IGROU= PR0, + ®); + c->gicr_igroupr0 =3D reg; + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISENA= BLER0, + ®); + c->gicr_ienabler0 =3D reg; + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ICFGR= 1, + ®); + c->edge_trigger =3D half_unshuffle32(reg >> 1) << 16; + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISPEN= DR0, + ®); + c->gicr_ipendr0 =3D reg; + hv_gic_get_redistributor_reg(vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_ISACT= IVER0, + ®); + c->gicr_iactiver0 =3D reg; + + for (i =3D 0; i < GIC_INTERNAL; i +=3D 4) { + hv_gic_get_redistributor_reg( + vcpu, HV_GIC_REDISTRIBUTOR_REG_GICR_IPRIORITYR0 + i, ®); + c->gicr_ipriorityr[i] =3D extract32(reg, 0, 8); + c->gicr_ipriorityr[i + 1] =3D extract32(reg, 8, 8); + c->gicr_ipriorityr[i + 2] =3D extract32(reg, 16, 8); + c->gicr_ipriorityr[i + 3] =3D extract32(reg, 24, 8); + } + + /* CPU interface */ + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_SRE_EL1, &c->icc_sre_el1); + + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_CTLR_EL1, + &c->icc_ctlr_el1[GICV3_NS]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_IGRPEN0_EL1, + &c->icc_igrpen[GICV3_G0]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_IGRPEN1_EL1, + &c->icc_igrpen[GICV3_G1NS]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_PMR_EL1, &c->icc_pmr_el1); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_BPR0_EL1, &c->icc_bpr[GICV3_G0= ]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_BPR1_EL1, &c->icc_bpr[GICV3_G1= NS]); + num_pri_bits =3D ((c->icc_ctlr_el1[GICV3_NS] & ICC_CTLR_EL1_PRIBITS_MA= SK) >> + ICC_CTLR_EL1_PRIBITS_SHIFT) + + 1; + + switch (num_pri_bits) { + case 7: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 3, + &c->icc_apr[GICV3_G0][3]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 2, + &c->icc_apr[GICV3_G0][2]); + /* fall through */ + case 6: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1 + 1, + &c->icc_apr[GICV3_G0][1]); + /* fall through */ + default: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP0R0_EL1, + &c->icc_apr[GICV3_G0][0]); + } + + switch (num_pri_bits) { + case 7: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 3, + &c->icc_apr[GICV3_G1NS][3]); + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 2, + &c->icc_apr[GICV3_G1NS][2]); + /* fall through */ + case 6: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1 + 1, + &c->icc_apr[GICV3_G1NS][1]); + /* fall through */ + default: + hv_gic_get_icc_reg(vcpu, HV_GIC_ICC_REG_AP1R0_EL1, + &c->icc_apr[GICV3_G1NS][0]); + } + + /* Registers beyond this point are with nested virt only */ + if (c->gic->maint_irq) { + hvf_gicv3_get_cpu_el2(cpu_state, arg); + } +} + +static void hvf_gicv3_get(GICv3State *s) +{ + uint64_t reg; + int ncpu, i; + + hvf_gicv3_check(s); + + hv_gic_get_distributor_reg(HV_GIC_DISTRIBUTOR_REG_GICD_CTLR, ®); + s->gicd_ctlr =3D reg; + + /* Redistributor state (one per CPU) */ + + for (ncpu =3D 0; ncpu < s->num_cpu; ncpu++) { + run_on_cpu_data data; + data.host_ptr =3D &s->cpu[ncpu]; + run_on_cpu(s->cpu[ncpu].cpu, hvf_gicv3_get_cpu, data); + } + + /* GICD_IGROUPRn -> s->group bitmap */ + hvf_dist_getbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_IGROUPR0, s->group); + + /* GICD_ISENABLERn -> s->enabled bitmap */ + hvf_dist_getbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISENABLER0, s->enabled); + + /* GICD_ISPENDRn -> s->pending bitmap */ + hvf_dist_getbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISPENDR0, s->pending); + + /* GICD_ISACTIVERn -> s->active bitmap */ + hvf_dist_getbmp(s, HV_GIC_DISTRIBUTOR_REG_GICD_ISACTIVER0, s->active); + + /* GICD_ICFGRn -> s->trigger bitmap */ + hvf_dist_get_edge_trigger(s, HV_GIC_DISTRIBUTOR_REG_GICD_ICFGR0 + , s->edge_trigger); + + /* GICD_IPRIORITYRn -> s->gicd_ipriority[] */ + hvf_dist_get_priority(s, HV_GIC_DISTRIBUTOR_REG_GICD_IPRIORITYR0 + , s->gicd_ipriority); + + /* GICD_IROUTERn -> s->gicd_irouter[irq] */ + for (i =3D GIC_INTERNAL; i < s->num_irq; i++) { + uint32_t offset =3D HV_GIC_DISTRIBUTOR_REG_GICD_IROUTER32 + + (8 * i) - (8 * GIC_INTERNAL); + hv_gic_get_distributor_reg(offset, &s->gicd_irouter[i]); + } +} + +static void hvf_gicv3_set_irq(void *opaque, int irq, int level) +{ + GICv3State *s =3D opaque; + if (irq > s->num_irq) { + return; + } + hv_gic_set_spi(GIC_INTERNAL + irq, !!level); +} + +static void hvf_gicv3_icc_reset(CPUARMState *env, const ARMCPRegInfo *ri) +{ + GICv3CPUState *c; + + c =3D env->gicv3state; + c->icc_pmr_el1 =3D 0; + /* + * Architecturally the reset value of the ICC_BPR registers + * is UNKNOWN. We set them all to 0 here; when the kernel + * uses these values to program the ICH_VMCR_EL2 fields that + * determine the guest-visible ICC_BPR register values, the + * hardware's "writing a value less than the minimum sets + * the field to the minimum value" behaviour will result in + * them effectively resetting to the correct minimum value + * for the host GIC. + */ + c->icc_bpr[GICV3_G0] =3D 0; + c->icc_bpr[GICV3_G1] =3D 0; + c->icc_bpr[GICV3_G1NS] =3D 0; + + c->icc_sre_el1 =3D 0x7; + memset(c->icc_apr, 0, sizeof(c->icc_apr)); + memset(c->icc_igrpen, 0, sizeof(c->icc_igrpen)); +} + +static void hvf_gicv3_reset_hold(Object *obj, ResetType type) +{ + GICv3State *s =3D ARM_GICV3_COMMON(obj); + HVFARMGICv3Class *kgc =3D HVF_GICV3_GET_CLASS(s); + + if (kgc->parent_phases.hold) { + kgc->parent_phases.hold(obj, type); + } + + hvf_gicv3_put(s); +} + + +/* + * CPU interface registers of GIC needs to be reset on CPU reset. + * For the calling arm_gicv3_icc_reset() on CPU reset, we register + * below ARMCPRegInfo. As we reset the whole cpu interface under single + * register reset, we define only one register of CPU interface instead + * of defining all the registers. + */ +static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { + { .name =3D "ICC_CTLR_EL1", .state =3D ARM_CP_STATE_BOTH, + .opc0 =3D 3, .opc1 =3D 0, .crn =3D 12, .crm =3D 12, .opc2 =3D 4, + /* + * If ARM_CP_NOP is used, resetfn is not called, + * So ARM_CP_NO_RAW is appropriate type. + */ + .type =3D ARM_CP_NO_RAW, + .access =3D PL1_RW, + .readfn =3D arm_cp_read_zero, + .writefn =3D arm_cp_write_ignore, + /* + * We hang the whole cpu interface reset routine off here + * rather than parcelling it out into one little function + * per register + */ + .resetfn =3D hvf_gicv3_icc_reset, + }, +}; + +static void hvf_gicv3_realize(DeviceState *dev, Error **errp) +{ + ERRP_GUARD(); + GICv3State *s =3D HVF_GICV3(dev); + HVFARMGICv3Class *kgc =3D HVF_GICV3_GET_CLASS(s); + int i; + + kgc->parent_realize(dev, errp); + if (*errp) { + return; + } + + if (s->revision !=3D 3) { + error_setg(errp, "unsupported GIC revision %d for platform GIC", + s->revision); + } + + if (s->security_extn) { + error_setg(errp, "the platform vGICv3 does not implement the " + "security extensions"); + return; + } + + if (s->nmi_support) { + error_setg(errp, "NMI is not supported with the platform GIC"); + return; + } + + if (s->nb_redist_regions > 1) { + error_setg(errp, "Multiple VGICv3 redistributor regions are not " + "supported by HVF"); + error_append_hint(errp, "A maximum of %d VCPUs can be used", + s->redist_region_count[0]); + return; + } + + gicv3_init_irqs_and_mmio(s, hvf_gicv3_set_irq, NULL); + + for (i =3D 0; i < s->num_cpu; i++) { + ARMCPU *cpu =3D ARM_CPU(qemu_get_cpu(i)); + + define_arm_cp_regs(cpu, gicv3_cpuif_reginfo); + } + + if (s->maint_irq && s->maint_irq !=3D HV_GIC_INT_MAINTENANCE) { + error_setg(errp, "vGIC maintenance IRQ mismatch with the hardcoded= one in HVF."); + return; + } +} + +static void hvf_gicv3_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); + ARMGICv3CommonClass *agcc =3D ARM_GICV3_COMMON_CLASS(klass); + HVFARMGICv3Class *kgc =3D HVF_GICV3_CLASS(klass); + + agcc->pre_save =3D hvf_gicv3_get; + agcc->post_load =3D hvf_gicv3_put; + + device_class_set_parent_realize(dc, hvf_gicv3_realize, + &kgc->parent_realize); + resettable_class_set_parent_phases(rc, NULL, hvf_gicv3_reset_hold, NUL= L, + &kgc->parent_phases); +} + +static const TypeInfo hvf_arm_gicv3_info =3D { + .name =3D TYPE_HVF_GICV3, + .parent =3D TYPE_ARM_GICV3_COMMON, + .instance_size =3D sizeof(GICv3State), + .class_init =3D hvf_gicv3_class_init, + .class_size =3D sizeof(HVFARMGICv3Class), +}; + +static void hvf_gicv3_register_types(void) +{ + type_register_static(&hvf_arm_gicv3_info); +} + +type_init(hvf_gicv3_register_types) diff --git a/hw/intc/meson.build b/hw/intc/meson.build index 96742df090..b7baf8a0f6 100644 --- a/hw/intc/meson.build +++ b/hw/intc/meson.build @@ -42,6 +42,7 @@ arm_common_ss.add(when: 'CONFIG_ARM_GIC', if_true: files(= 'arm_gicv3_cpuif_common arm_common_ss.add(when: 'CONFIG_ARM_GICV3', if_true: files('arm_gicv3_cpui= f.c')) specific_ss.add(when: 'CONFIG_ARM_GIC_KVM', if_true: files('arm_gic_kvm.c'= )) specific_ss.add(when: ['CONFIG_WHPX', 'TARGET_AARCH64'], if_true: files('a= rm_gicv3_whpx.c')) +specific_ss.add(when: ['CONFIG_HVF', 'CONFIG_ARM_GICV3'], if_true: files('= arm_gicv3_hvf.c')) specific_ss.add(when: ['CONFIG_ARM_GIC_KVM', 'TARGET_AARCH64'], if_true: f= iles('arm_gicv3_kvm.c', 'arm_gicv3_its_kvm.c')) arm_common_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('armv7m_nvic.c')) specific_ss.add(when: 'CONFIG_GRLIB', if_true: files('grlib_irqmp.c')) diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3= _common.h index c55cf18120..9adcab0a0c 100644 --- a/include/hw/intc/arm_gicv3_common.h +++ b/include/hw/intc/arm_gicv3_common.h @@ -315,6 +315,7 @@ DECLARE_OBJ_CHECKERS(GICv3State, ARMGICv3CommonClass, =20 /* Types for GICv3 kernel-irqchip */ #define TYPE_WHPX_GICV3 "whpx-arm-gicv3" +#define TYPE_HVF_GICV3 "hvf-arm-gicv3" =20 struct ARMGICv3CommonClass { /*< private >*/ --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809326; cv=none; d=zohomail.com; s=zohoarc; b=nQ2cMUvWSGAZnOObe/5x5w2UzPRGrwZ9gqCMrA5Jj9rR57VOikKefaP576K5YQW2eaDFLIQ+n0sOl3rUd+Jlb1iSnUNL8bprYleX1Q02mItcUnpNT5UdtFifEfMKp0Dqt+i63uT1J2/Yepoh7LVbP2nKJVYPoR/rCHDNBfOH9z8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809326; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=RPP4V/JmTsM4L16hJUy4E3X3fAuItCvxsKH4d6JLhsA=; b=EVeD6zdxHruYnBM0CJ0t5LdENTxjGOjbTtOxtpvAUcuGCid42CeQCk3iKJ2K48AB9MoUuVt8jQHUHuN7YUJaQWf3EivsBKwekA4CaRANnT5LoGF5ZNRPCS1tYT2doZkYxgtw9NlROpxGBZoEVcDyq50+0fo3TK2CJhR81saGRl0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809326337771.371000810068; Fri, 6 Mar 2026 07:02:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfn-0005Zd-5t; Fri, 06 Mar 2026 10:01:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfG-0004hY-Gv for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:35 -0500 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfC-0002m9-R7 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:29 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-4852b81c73aso680475e9.3 for ; Fri, 06 Mar 2026 07:00:25 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809225; x=1773414025; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=RPP4V/JmTsM4L16hJUy4E3X3fAuItCvxsKH4d6JLhsA=; b=C5z5SeeHRfIeBt+GSMyLI3qtKkOwufX26vzgq6V/meNCUwU3ymY5l5vwMKJICQRt0Q jm2Hmkax8zFBqo6EAFPA5GoZWf15OFapnYVEccEl1cz4qL4abp50jtt4ZSelgxC9bzWM h5Q74X57DdUtRVMP22nYkTDOO5e2jcL3fsrWNSAQauRFx7+VROpfnw7MOgw4CtS6iBfD oXpZXnEVC5/mpHANWppcuDDybt740GSS1LCNlufW+yKfxRt5/kqkolKNjgy+59E9LHoN YnpJNdAPva79XnITnRQxlw3GgOL3JYXKRBWCoh+8RhVgGSEFCPxS1DTCBnxqVxvJrm1T raIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809225; x=1773414025; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RPP4V/JmTsM4L16hJUy4E3X3fAuItCvxsKH4d6JLhsA=; b=jjw4JuVwtRSjT8dSod/VZ8SA0/Pg51ITAPCbBZUCtjM7sP2JpK1TLrDHUo38xk+0EI 7rRTh+Zk2mpJ2mh+Yz5TPKKb/K6gJ8pkJGgNEaHeoQHMPBB7YYdLqxHJKNjaCXWNiy9e ALnUN6p1e+sYagd5l71GBkBidPz94uuQiML4vk4Y99zrhv9EbGXlzzCOGtQ2InixxA/C fBcexRCab2kZtlzgPuolqHEul5JjrWWVe3Z31zmEYkGcEnlGvNep0J2QbOJOF4Oxxmxp YKHHegkZPSJMbqiFmo/F0JiQnDKhsEWuTCrkg40Nd2bgBI3GvH3LiadEkpxa0sQ+Oqkp T2Hg== X-Gm-Message-State: AOJu0Yy1fCJm9FzuPa0XkJWC9GOn9tO/Uwt7FJ2T1RUQDtRGal2qU1D4 mzn9bMZRMFUBl3wDPjWgoDZuNantsIikYJBYU2nO8KD09e6VMxN33zpxLIx7xpLeHZqmNYd11fR yJNj9 X-Gm-Gg: ATEYQzzWcBnShA6bHtSqh/ANP7LAr3Tq6UD9+G8HAux88Pce3eptDNChtw8WQq+Gn8g 3ttd1i1SuF5OsglUi6Rze/p1wCwBcC0CMsiVhgOQKAmVCxygUL4OD2wu6qwXKTscDSpIOBneVrm 2RbByQVmLSZNaV664HiwotjOJmqEnSDPqdLUJUwHAKzoWYqK2pbd1rM/ZgQaVAD7pcESJNiAPBy IV2Wq+LRXD9vN3cp3ApSxwW6pxvOozylGqBP1FuMnXVFC+vEgJ5qBeYD1QXV2B+f0yBa2TTpsuH 3VSGziyTO9bla/kBK+ebIwP0ff/ycULHt68GA5cUVJml8MlLEt5dmY0tkxwOs4qPEK34Z7msbfa AC+DtUQ1BjEmnNaZXZ0S/UYbz3YxBxax8Jt+fN3dKK4DExsBg/jx4Rv6iiUXnJ2yoi8yg9KSBLX davwaAuw3p5FLxz0c/B3OciiVTNrVH6PCNHBvzjzvlQxJHWf2dC+ia+tjXN3rlgpKbidLNs1hXA qc3RqZjzufDPeOK4M3QOYgYvTKVelQ= X-Received: by 2002:a05:600c:1381:b0:483:7020:864 with SMTP id 5b1f17b1804b1-4852697a1d3mr40193865e9.25.1772809224660; Fri, 06 Mar 2026 07:00:24 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 38/49] hw/intc: arm_gicv3_hvf: save/restore Apple GIC state Date: Fri, 6 Mar 2026 14:59:28 +0000 Message-ID: <20260306145939.2162189-39-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809329021154100 From: Mohamed Mediouni On HVF, some of the GIC state is in an opaque Apple-provided structure. Save/restore that state to be able to save/restore VMs that use the hardwar= e GIC. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-7-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- hw/intc/arm_gicv3_common.c | 1 + hw/intc/arm_gicv3_hvf.c | 95 ++++++++++++++++++++++++++++-- hw/intc/arm_gicv3_hvf_stub.c | 25 ++++++++ hw/intc/meson.build | 1 + include/hw/intc/arm_gicv3_common.h | 3 + 5 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 hw/intc/arm_gicv3_hvf_stub.c diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c index 9200671c7a..9c3fb2f4bf 100644 --- a/hw/intc/arm_gicv3_common.c +++ b/hw/intc/arm_gicv3_common.c @@ -305,6 +305,7 @@ static const VMStateDescription vmstate_gicv3 =3D { .subsections =3D (const VMStateDescription * const []) { &vmstate_gicv3_gicd_no_migration_shift_bug, &vmstate_gicv3_gicd_nmi, + &vmstate_gicv3_hvf, NULL } }; diff --git a/hw/intc/arm_gicv3_hvf.c b/hw/intc/arm_gicv3_hvf.c index d6a46b7d53..e299084d7c 100644 --- a/hw/intc/arm_gicv3_hvf.c +++ b/hw/intc/arm_gicv3_hvf.c @@ -13,6 +13,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "system/runstate.h" +#include "migration/vmstate.h" #include "system/hvf.h" #include "system/hvf_int.h" #include "hvf_arm.h" @@ -30,8 +31,13 @@ struct HVFARMGICv3Class { =20 typedef struct HVFARMGICv3Class HVFARMGICv3Class; =20 -/* This is reusing the GICv3State typedef from ARM_GICV3_ITS_COMMON */ -DECLARE_OBJ_CHECKERS(GICv3State, HVFARMGICv3Class, +typedef struct HVFGICv3State { + GICv3State gicv3_state; + uint32_t size; + void *state; +} HVFGICv3State; + +DECLARE_OBJ_CHECKERS(HVFGICv3State, HVFARMGICv3Class, HVF_GICV3, TYPE_HVF_GICV3); =20 /* @@ -656,7 +662,7 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] =3D { static void hvf_gicv3_realize(DeviceState *dev, Error **errp) { ERRP_GUARD(); - GICv3State *s =3D HVF_GICV3(dev); + GICv3State *s =3D (GICv3State *)HVF_GICV3(dev); HVFARMGICv3Class *kgc =3D HVF_GICV3_GET_CLASS(s); int i; =20 @@ -703,6 +709,87 @@ static void hvf_gicv3_realize(DeviceState *dev, Error = **errp) } } =20 +/* + * HVF doesn't have a way to save the RDIST pending tables + * to guest memory, only to an opaque data structure. + */ +static bool gicv3_is_hvf(void *opaque) +{ + return hvf_enabled() && hvf_irqchip_in_kernel(); +} + +static int hvf_gic_opaque_state_save(void *opaque) +{ + HVFGICv3State *gic =3D opaque; + hv_gic_state_t gic_state; + hv_return_t err; + size_t size; + + gic_state =3D hv_gic_state_create(); + if (gic_state =3D=3D NULL) { + error_report("hvf: vgic: failed to create hv_gic_state_create."); + return 1; + } + err =3D hv_gic_state_get_size(gic_state, &size); + gic->size =3D size; + if (err !=3D HV_SUCCESS) { + error_report("hvf: vgic: failed to get GIC state size."); + os_release(gic_state); + return 1; + } + gic->state =3D g_malloc(gic->size); + err =3D hv_gic_state_get_data(gic_state, gic->state); + if (err !=3D HV_SUCCESS) { + error_report("hvf: vgic: failed to get GIC state."); + os_release(gic_state); + return 1; + } + + os_release(gic_state); + return 0; +} + +static int hvf_gic_opaque_state_free(void *opaque) +{ + HVFGICv3State *gic =3D opaque; + free(gic->state); + return 0; +} + +static int hvf_gic_opaque_state_restore(void *opaque, int version_id) +{ + HVFGICv3State *gic =3D opaque; + hv_return_t err; + if (!gic->size) { + return 0; + } + err =3D hv_gic_set_state(gic->state, gic->size); + if (err !=3D HV_SUCCESS) { + error_report("hvf: vgic: failed to restore GIC state."); + return 1; + } + return 0; +} + +const VMStateDescription vmstate_gicv3_hvf =3D { + .name =3D "arm_gicv3/hvf_gic_state", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D gicv3_is_hvf, + .pre_save =3D hvf_gic_opaque_state_save, + .post_save =3D hvf_gic_opaque_state_free, + .post_load =3D hvf_gic_opaque_state_restore, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32(size, HVFGICv3State), + VMSTATE_VBUFFER_ALLOC_UINT32(state, + HVFGICv3State, 0, 0, + size), + VMSTATE_END_OF_LIST() + }, +}; + static void hvf_gicv3_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -722,7 +809,7 @@ static void hvf_gicv3_class_init(ObjectClass *klass, co= nst void *data) static const TypeInfo hvf_arm_gicv3_info =3D { .name =3D TYPE_HVF_GICV3, .parent =3D TYPE_ARM_GICV3_COMMON, - .instance_size =3D sizeof(GICv3State), + .instance_size =3D sizeof(HVFGICv3State), .class_init =3D hvf_gicv3_class_init, .class_size =3D sizeof(HVFARMGICv3Class), }; diff --git a/hw/intc/arm_gicv3_hvf_stub.c b/hw/intc/arm_gicv3_hvf_stub.c new file mode 100644 index 0000000000..a587332c7c --- /dev/null +++ b/hw/intc/arm_gicv3_hvf_stub.c @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * ARM Generic Interrupt Controller using HVF platform support stub + * + * Copyright (c) 2026 Mohamed Mediouni + * + */ +#include "qemu/osdep.h" +#include "hw/intc/arm_gicv3_common.h" +#include "migration/vmstate.h" +#include "qemu/typedefs.h" + +static bool needed_never(void *opaque) +{ + return false; +} + +const VMStateDescription vmstate_gicv3_hvf =3D { + .name =3D "arm_gicv3/hvf_gic_state", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D needed_never, + .version_id =3D 1, + .minimum_version_id =3D 1, +}; diff --git a/hw/intc/meson.build b/hw/intc/meson.build index b7baf8a0f6..c6de2d9d00 100644 --- a/hw/intc/meson.build +++ b/hw/intc/meson.build @@ -43,6 +43,7 @@ arm_common_ss.add(when: 'CONFIG_ARM_GICV3', if_true: file= s('arm_gicv3_cpuif.c')) specific_ss.add(when: 'CONFIG_ARM_GIC_KVM', if_true: files('arm_gic_kvm.c'= )) specific_ss.add(when: ['CONFIG_WHPX', 'TARGET_AARCH64'], if_true: files('a= rm_gicv3_whpx.c')) specific_ss.add(when: ['CONFIG_HVF', 'CONFIG_ARM_GICV3'], if_true: files('= arm_gicv3_hvf.c')) +specific_ss.add(when: ['CONFIG_HVF', 'CONFIG_ARM_GICV3'], if_false: files(= 'arm_gicv3_hvf_stub.c')) specific_ss.add(when: ['CONFIG_ARM_GIC_KVM', 'TARGET_AARCH64'], if_true: f= iles('arm_gicv3_kvm.c', 'arm_gicv3_its_kvm.c')) arm_common_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('armv7m_nvic.c')) specific_ss.add(when: 'CONFIG_GRLIB', if_true: files('grlib_irqmp.c')) diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3= _common.h index 9adcab0a0c..03ab3e8f2f 100644 --- a/include/hw/intc/arm_gicv3_common.h +++ b/include/hw/intc/arm_gicv3_common.h @@ -339,4 +339,7 @@ void gicv3_init_irqs_and_mmio(GICv3State *s, qemu_irq_h= andler handler, */ const char *gicv3_class_name(void); =20 +/* HVF vGIC-specific state: stubbed out on a build with HVF disabled */ +extern const VMStateDescription vmstate_gicv3_hvf; + #endif --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809314; cv=none; d=zohomail.com; s=zohoarc; b=baH6E1ftp9o98OQoiTFRqjd5dZijkRMhcwINwXPdGZuQ56BlghfF+E2kbT8QHSZSILHXXV9v1yFedwPrbLPVivn0P+EliyyOyRBR1uY3fHCfikoHywOF+A2iUFzLieanGe8ykp6PtiS6lChlcEA66fuw16+aeZ3raMj33ypOrKE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809314; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=I1bZ8nhuwxwX9BX57Sucbp1Bxm79tBvkjf4sRE4Bo1s=; b=R4ZOAC0s66kKx0z78fRTfjpElAAzIxvD4D4TgSnyM9rjEMclqI38cHOZmIC2VkCreb3AkjC2mwEih9qTieQPEC438hFHTa71OnSM9CFyWX7tLgROPzMGpmOMei3xVoRg7NQ/bN+Q1UGX7G8SdCH4clWAfyXsj/gh8Xvj4NAM+ww= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809314598990.0274999014197; Fri, 6 Mar 2026 07:01:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfq-0005zX-Ie; Fri, 06 Mar 2026 10:01:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfG-0004ha-IP for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:35 -0500 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfD-0002mP-UA for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:30 -0500 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-4852afd42ceso1372115e9.2 for ; Fri, 06 Mar 2026 07:00:26 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809226; x=1773414026; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=I1bZ8nhuwxwX9BX57Sucbp1Bxm79tBvkjf4sRE4Bo1s=; b=wfsnsvpFCweBCWFWawukWVRtxcSRfCbAaLxBKptghkyyyDUfOvnikUUYoYEtCRMZmA aHU51u7L0qqsGWZbR6AiOaKVUI1oqBArQ0hyEmaKRXgG1uUTwbg0yiDeiFJe+uVMMiMf 1h3K7JzbOu2DgWZKISD3qj8RLvDL70PVRs9iK139MRcG+9T9vi3F5bC+bvYrKlVe+IgR hGB0NTcH+1iejT9IQk0Git+TROvmqKmkXANqdwVQTnYLVPqqPs6DS8qjyi5FKIm954je wCq7q2qX5oRhO+aYIIGyzH6YHjJddxGT9pQ2cQQkCwRE/c9ujIUj7kXyBBaznBBaHlBM FRPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809226; x=1773414026; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=I1bZ8nhuwxwX9BX57Sucbp1Bxm79tBvkjf4sRE4Bo1s=; b=cXT9EPW9z8quU260DXhlXpdtEirTqHcX983AymMqyMRyZ/FuZo5H3Q8O9exYddWVQi Ou9jis3jHdgNULowwI2avipxAO1d0U8pfbn1eVNnmWZka9mqWO+5HOW87vlfg5ea641a BC85PPmhH1iLgZY52UngoC/KtjUKN6aV64uHD+bv+Phori8GHJPLkwNGO0rkqG2j6sYH DTLXqSirLsIBqZRxtDs4r0lRpUffem/Gp5fNYFgO5ZywdD+OrHHEveC6MXme59WjqxWA yC9aVwFyFmfyUKCUwhY/IZ1iUKeFo0aUFAjyO8kqZMV02EpmeIg0UI3H2/7nP8kjLiRo A8nA== X-Gm-Message-State: AOJu0YxKTYblV4NY4QGtd4FoOb1kwO/jB1/DCsW6HQlP1QuhaJLW1tDK ed0FcIKFoUAV82Bgckosewr8oTTDo+k/Cza4AN9X+KaLuIVGOgoYtC9aiv8WrwpIkDIILdjunJe rw2ek X-Gm-Gg: ATEYQzx0+942CkUVHDrdLzqgZ7EZl/OLd/OfTdRtkASemLNcyFsBg6UxDF+vSTtkjXM geeVk1fU9YAnQvfI45a/nLd3qcvWH1FaZC1wX8NGnZewCRyoSsrolcoQuj8qbo8OWRBsrgsUTdg 3Se40/dlcpvatgV0CSzuRqDtK/rAYaMDJSrNKbMrwpmJTVuvPdbmC/YBT8ZbawE6GUbVOPikufH LfkdJ8X4y7U4U4LL4MhsMBA2uDs6XfBnEVSgKvkOFGZL2b/S/Vmg9pUqDX7CE2qfCz6pw0KKI5i aWjzL6x+WKjVh+s487htPeIU+EJjxPcxGo73pwbZvtzoGDWuue7qj7ebrpXMYFEYumpahkGX6xS u6JRVBFvb6pwIW8rbkpGd+0JsWFT/AXGOUPWORmmAex6ADi7pB5PGfkptnnis8rC1lUjmkCEBSG /tZfDF4+tA4rWgxHhHv8JJ08E1q6RVWoHKvqnezKMYhgb4fE6Gw8s7RwA3mZrkGVzUdBqX0kJdy pyqkgHl0cz7ZMay2LVhwpNN3E5Sa9o= X-Received: by 2002:a05:600c:c088:b0:483:79a6:e7e1 with SMTP id 5b1f17b1804b1-48526919935mr35859445e9.7.1772809225589; Fri, 06 Mar 2026 07:00:25 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 39/49] accel, hw/arm, include/system/hvf: infrastructure changes for HVF vGIC Date: Fri, 6 Mar 2026 14:59:29 +0000 Message-ID: <20260306145939.2162189-40-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809316940154100 From: Mohamed Mediouni Misc changes needed for HVF vGIC enablement. Note: x86_64 macOS exposes interrupt controller virtualisation since macOS = 12. Keeping an #ifdef here in case we end up supporting that... However, given that x86_64 macOS is on its way out, it'll probably (?) not = be supported in Qemu. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-8-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- accel/hvf/hvf-all.c | 50 ++++++++++++++++++++++++++++++++++++++ accel/stubs/hvf-stub.c | 1 + hw/arm/virt.c | 23 +++++++++++++++--- hw/intc/arm_gicv3_common.c | 3 +++ include/system/hvf.h | 3 +++ system/vl.c | 2 ++ 6 files changed, 78 insertions(+), 4 deletions(-) diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c index 5f357c6d19..a296b108bc 100644 --- a/accel/hvf/hvf-all.c +++ b/accel/hvf/hvf-all.c @@ -10,6 +10,8 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" +#include "qapi/error.h" +#include "qapi/qapi-visit-common.h" #include "accel/accel-ops.h" #include "exec/cpu-common.h" #include "system/address-spaces.h" @@ -21,6 +23,7 @@ #include "trace.h" =20 bool hvf_allowed; +bool hvf_kernel_irqchip; =20 const char *hvf_return_string(hv_return_t ret) { @@ -216,6 +219,43 @@ static int hvf_gdbstub_sstep_flags(AccelState *as) return SSTEP_ENABLE | SSTEP_NOIRQ; } =20 +static void hvf_set_kernel_irqchip(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + OnOffSplit mode; + if (!visit_type_OnOffSplit(v, name, &mode, errp)) { + return; + } + + switch (mode) { + case ON_OFF_SPLIT_ON: +#ifdef HOST_X86_64 + /* macOS 12 onwards exposes an HVF virtual APIC. */ + error_setg(errp, "HVF: kernel irqchip is not currently implemented= for x86."); + break; +#else + hvf_kernel_irqchip =3D true; + break; +#endif + + case ON_OFF_SPLIT_OFF: + hvf_kernel_irqchip =3D false; + break; + + case ON_OFF_SPLIT_SPLIT: + error_setg(errp, "HVF: split irqchip is not supported on HVF."); + break; + + default: + /* + * The value was checked in visit_type_OnOffSplit() above. If + * we get here, then something is wrong in QEMU. + */ + abort(); + } +} + static void hvf_accel_class_init(ObjectClass *oc, const void *data) { AccelClass *ac =3D ACCEL_CLASS(oc); @@ -223,6 +263,16 @@ static void hvf_accel_class_init(ObjectClass *oc, cons= t void *data) ac->init_machine =3D hvf_accel_init; ac->allowed =3D &hvf_allowed; ac->gdbstub_supported_sstep_flags =3D hvf_gdbstub_sstep_flags; +#ifdef HOST_X86_64 + hvf_kernel_irqchip =3D false; +#else + hvf_kernel_irqchip =3D true; +#endif + object_class_property_add(oc, "kernel-irqchip", "on|off|split", + NULL, hvf_set_kernel_irqchip, + NULL, NULL); + object_class_property_set_description(oc, "kernel-irqchip", + "Configure HVF irqchip"); } =20 static const TypeInfo hvf_accel_type =3D { diff --git a/accel/stubs/hvf-stub.c b/accel/stubs/hvf-stub.c index 42eadc5ca9..6bd08759ba 100644 --- a/accel/stubs/hvf-stub.c +++ b/accel/stubs/hvf-stub.c @@ -10,3 +10,4 @@ #include "system/hvf.h" =20 bool hvf_allowed; +bool hvf_kernel_irqchip; diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 7456614d05..7a6fad1094 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -837,7 +837,7 @@ static void create_gic(VirtMachineState *vms, MemoryReg= ion *mem) * interrupts; there are always 32 of the former (mandated by GIC spec= ). */ qdev_prop_set_uint32(vms->gic, "num-irq", NUM_IRQS + 32); - if (!kvm_irqchip_in_kernel()) { + if (!kvm_irqchip_in_kernel() && !hvf_irqchip_in_kernel()) { qdev_prop_set_bit(vms->gic, "has-security-extensions", vms->secure= ); } =20 @@ -860,7 +860,8 @@ static void create_gic(VirtMachineState *vms, MemoryReg= ion *mem) qdev_prop_set_array(vms->gic, "redist-region-count", redist_region_count); =20 - if (!kvm_irqchip_in_kernel()) { + if (!kvm_irqchip_in_kernel() && + !(hvf_enabled() && hvf_irqchip_in_kernel())) { if (vms->tcg_its) { object_property_set_link(OBJECT(vms->gic), "sysmem", OBJECT(mem), &error_fatal); @@ -871,7 +872,7 @@ static void create_gic(VirtMachineState *vms, MemoryReg= ion *mem) ARCH_GIC_MAINT_IRQ); } } else { - if (!kvm_irqchip_in_kernel()) { + if (!kvm_irqchip_in_kernel() && !hvf_irqchip_in_kernel()) { qdev_prop_set_bit(vms->gic, "has-virtualization-extensions", vms->virt); } @@ -2118,7 +2119,15 @@ static void finalize_gic_version(VirtMachineState *v= ms) accel_name =3D "KVM with kernel-irqchip=3Doff"; } else if (whpx_enabled()) { gics_supported |=3D VIRT_GIC_VERSION_3_MASK; - } else if (tcg_enabled() || hvf_enabled() || qtest_enabled()) { + } else if (hvf_enabled()) { + if (!hvf_irqchip_in_kernel()) { + gics_supported |=3D VIRT_GIC_VERSION_2_MASK; + } + /* Hypervisor.framework doesn't expose EL2<->1 transition notifier= s */ + if (!(!hvf_irqchip_in_kernel() && vms->virt)) { + gics_supported |=3D VIRT_GIC_VERSION_3_MASK; + } + } else if (tcg_enabled() || qtest_enabled()) { gics_supported |=3D VIRT_GIC_VERSION_2_MASK; if (module_object_class_by_name("arm-gicv3")) { gics_supported |=3D VIRT_GIC_VERSION_3_MASK; @@ -2160,6 +2169,8 @@ static void finalize_msi_controller(VirtMachineState = *vms) vms->msi_controller =3D VIRT_MSI_CTRL_GICV2M; } else if (whpx_enabled()) { vms->msi_controller =3D VIRT_MSI_CTRL_GICV2M; + } else if (hvf_enabled() && hvf_irqchip_in_kernel()) { + vms->msi_controller =3D VIRT_MSI_CTRL_GICV2M; } else { vms->msi_controller =3D VIRT_MSI_CTRL_ITS; } @@ -2179,6 +2190,10 @@ static void finalize_msi_controller(VirtMachineState= *vms) error_report("ITS not supported on WHPX."); exit(1); } + if (hvf_enabled() && hvf_irqchip_in_kernel()) { + error_report("ITS not supported on HVF when using the hardware= vGIC."); + exit(1); + } } =20 assert(vms->msi_controller !=3D VIRT_MSI_CTRL_AUTO); diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c index 9c3fb2f4bf..f7ba74e6d5 100644 --- a/hw/intc/arm_gicv3_common.c +++ b/hw/intc/arm_gicv3_common.c @@ -33,6 +33,7 @@ #include "hw/arm/linux-boot-if.h" #include "system/kvm.h" #include "system/whpx.h" +#include "system/hvf.h" =20 =20 static void gicv3_gicd_no_migration_shift_bug_post_load(GICv3State *cs) @@ -659,6 +660,8 @@ const char *gicv3_class_name(void) return "kvm-arm-gicv3"; } else if (whpx_enabled()) { return TYPE_WHPX_GICV3; + } else if (hvf_enabled() && hvf_irqchip_in_kernel()) { + return TYPE_HVF_GICV3; } else { if (kvm_enabled()) { error_report("Userspace GICv3 is not supported with KVM"); diff --git a/include/system/hvf.h b/include/system/hvf.h index d3dcf088b3..dc8da85979 100644 --- a/include/system/hvf.h +++ b/include/system/hvf.h @@ -26,8 +26,11 @@ #ifdef CONFIG_HVF_IS_POSSIBLE extern bool hvf_allowed; #define hvf_enabled() (hvf_allowed) +extern bool hvf_kernel_irqchip; +#define hvf_irqchip_in_kernel() (hvf_kernel_irqchip) #else /* !CONFIG_HVF_IS_POSSIBLE */ #define hvf_enabled() 0 +#define hvf_irqchip_in_kernel() 0 #endif /* !CONFIG_HVF_IS_POSSIBLE */ =20 #define TYPE_HVF_ACCEL ACCEL_CLASS_NAME("hvf") diff --git a/system/vl.c b/system/vl.c index 3e341142a0..7a3db97ee6 100644 --- a/system/vl.c +++ b/system/vl.c @@ -1778,6 +1778,8 @@ static void qemu_apply_legacy_machine_options(QDict *= qdict) false); object_register_sugar_prop(ACCEL_CLASS_NAME("whpx"), "kernel-irqch= ip", value, false); + object_register_sugar_prop(ACCEL_CLASS_NAME("hvf"), "kernel-irqchi= p", value, + false); qdict_del(qdict, "kernel-irqchip"); } =20 --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809721; cv=none; d=zohomail.com; s=zohoarc; b=ITyr/A5WPajfrLZVXb4Bt5PH2fwYUQhvtWtoT6W++cehL04emvZoluJ8+nyToNHuWAsaN6qBN0rawuMHzWZesNcjL7cRkUThGpNhABdpDIcz/urN3GQjMBFDw93fIDV5VuVMmFj3ztJbfXEtZL9ZwpW9Ev9A3ArndLyDBHGUzbg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809721; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=656Y4fgWZBIz7MCPHMdodfP7tX0ZKv/MbjEqiaHF7H4=; b=EYJ2EsavpNexTRZA6eZYkFjyExHhVjk48a6mBXyeQ/rTdETncuZzTQ2TOgs9F/99SmxSIqy9ya9YUulr7HeymQq4eCDsrMoVw0nOw11Kq/oQpLk/MEbMomT6WQO0ljLuPDgMlS9B8osXAQ2n6sEw38k/9syNhySCxEpDacym64Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809721127657.5512861132257; Fri, 6 Mar 2026 07:08:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfs-0006GC-Tj; Fri, 06 Mar 2026 10:01:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfG-0004hZ-Hp for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:35 -0500 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfE-0002mZ-AH for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:29 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-48370174e18so56791345e9.2 for ; Fri, 06 Mar 2026 07:00:27 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809227; x=1773414027; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=656Y4fgWZBIz7MCPHMdodfP7tX0ZKv/MbjEqiaHF7H4=; b=trdr8B5UgOQc7TIdFTwAq0x9E2ORY4b3O1eqQQtzko4Pg4O06f6MTQXhBLzQP99PgX MrF5gOghiRdRrVjV2O+9oMvnJReiXJJesGvxPmSAHm2NBgnqjD8r3Opm4+VZjiCmh7Cj oLdVHe4qDktWv8H/rEwBbiUaycihjDl3qK5k/nVYDUd49IkQSEbNjY/BVzRUooqlbmHS MpRUgg5l/jPqgc/FXLiAb4kfIA3737M6K9P8xduu0T+fNXnAvlHH06hVpWpB/9bQHPfy jiYTWw0GLgj3NdmhP2GLrnd+BUTqKkzj6pCIhgVGXXNf+J1fofx4BVkLHunvnCdrh8Jb 68OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809227; x=1773414027; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=656Y4fgWZBIz7MCPHMdodfP7tX0ZKv/MbjEqiaHF7H4=; b=lWRWtDOiYK+G8ZPSuBzcoJepEn+pRgFCt60kjjCPdBTOxXUOmAfBaAnRep/G2vbQ9v 65AdXediMQiwAlo1IKjgvL6APpeZhS3qw8d3aZ+Xwyy1Vk4/R8faeKFuqhxkEvkrK5Pc tVgWKDGikoeh0qLK386BvZM+WOVhHqRfLyc3YUILhKOjQDsiWN+jK7yluMeeNtpHsSkv /qMQBLsemNlRoEPIXFXiSVUkERWGrNPjuIapck8VwtGGgr8KnPOU2bFKlmmOEUZGXZy7 S5/9u1lEogJlnV/Z48TJrgl5zglpPMFA5JPIGCH521Avgq6a1/7xXquTkAQ6S+YI6Dzt GoMw== X-Gm-Message-State: AOJu0Yyd6uDUgm1W018BAZ9P+wCQQ+hmES3cvBhGVkipoO2qp6+h3Yrm 2qSxWyfA0HMCBrnt9kdXQs9e9UUGuBz0Y8V2dsNdBFm34an5WrXLVQJC/mTltTaZgdh+FMMr5Xn dcZU6 X-Gm-Gg: ATEYQzwyl14nqrgpckcNFqt/USEpnhCISdEaiieujJaqL6libdaIjKB/bra/of5Lmh9 c5LKbFpShzmyfNdCuNt+iRs4Ude04K3MKl8d14zBOh4kYDMK2HYsaRtazzj1laIQ8FpvgLxAV02 yzigfwJ0p5pkcjIUHtDgpR1QpkcYLcSRPGBalmClautJX/Qrcjf3D1gMZ8n96hNF/qoPpViBPJh r3NIGe1FlOTZt5srlmMNeF21BuJJwy6jnt/KphjqtbrZca8vlrMga1Ah3uyW5sw3vk2rpJDCAHW w3e5Ae6Lbeyw4oUGLq9HSZrvfWYkkQDfS4ygU4ekmLCZWYQSIIjpXu/UhtPez9sfp9V/PWAj57i Cjw+9kubNMc66S5aytDvKLlUebBGmzSNob+K11IwGvmz/cOUu76BhiTJwCzwZjUOphu3+1xggUJ iLQYJByA6xo8S/tvIAkz1H59VZN/LdIgggMN/O7OlUmjS2s8ZOL633B2gLzxbyjSeCfSDXqPQHU 9dTORMECwg0pjOaVBjEIPF6YhcOh5U= X-Received: by 2002:a05:600c:a12:b0:483:badb:618f with SMTP id 5b1f17b1804b1-48526966b07mr37665545e9.25.1772809226623; Fri, 06 Mar 2026 07:00:26 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 40/49] target/arm: hvf: instantiate GIC early Date: Fri, 6 Mar 2026 14:59:30 +0000 Message-ID: <20260306145939.2162189-41-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809721971158500 From: Mohamed Mediouni While figuring out a better spot for it, put it in hv_arch_vm_create(). After hv_vcpu_create is documented as too late, and deferring vCPU initialization isn't enough either. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-9-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 5fc8f6bbbd..1c45125036 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1230,6 +1230,22 @@ hv_return_t hvf_arch_vm_create(MachineState *ms, uin= t32_t pa_range) chosen_ipa_bit_size =3D pa_range; =20 ret =3D hv_vm_create(config); + if (hvf_irqchip_in_kernel()) { + /* + * Instantiate GIC. + * This must be done prior to the creation of any vCPU + * but past hv_vm_create() + */ + hv_gic_config_t cfg =3D hv_gic_config_create(); + hv_gic_config_set_distributor_base(cfg, 0x08000000); + hv_gic_config_set_redistributor_base(cfg, 0x080A0000); + hv_return_t err =3D hv_gic_create(cfg); + if (err !=3D HV_SUCCESS) { + error_report("error creating platform VGIC"); + goto cleanup; + } + os_release(cfg); + } =20 cleanup: os_release(config); --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809349; cv=none; d=zohomail.com; s=zohoarc; b=XLOUALWwzQyzzaTPL4dbFmbVSBSLEgAWrQwX+TmZLtMAGmQ+te8VyYcxVl+aiT02foYGJ/D5trt+4M6nzk96VWqCyCJ6aQRZfDjE5k7geEIdOFuAvOTq9cUHXnFn9jHdUlNda50Sd3+zp/fIXstvZZYG2Rmsd2YUtcqwgICBEd4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809349; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=NYfcTASzTUjQga6ta8+6fIUOjAslm4LSCPa4gm5Bf28=; b=TUp85b1qP4Ozl3X715g2KcfDV7oc5yfog3vAfWpbJxbxgOJ+mapj+YjaKOFfjNX3LL95J2t8ovuffhoe56vi/m4HjekIOMFkdXALA2CLVE1XkcEUZExj2Zk+CaBJ3kwQdS5f5nf796uA6AM0Vldl4e0Jctv63XEnLfNLIMCjUdQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809349022927.9327125417419; Fri, 6 Mar 2026 07:02:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfk-0005Dm-IB; Fri, 06 Mar 2026 10:01:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfN-0004nc-G9 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:45 -0500 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfG-0002n2-OB for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:33 -0500 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-48371bb515eso138535205e9.1 for ; Fri, 06 Mar 2026 07:00:30 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809229; x=1773414029; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=NYfcTASzTUjQga6ta8+6fIUOjAslm4LSCPa4gm5Bf28=; b=vb5AYnB3Ibnpr8amQjhpPX02+DP7+lF+Nh4nqRjuulZFZksY/7gDLeJRAIUs9U0JkM hVca/WeY+r6yhocznDav/1kksDcGIhzpQAaQQ/lDt1Wy1iqvftX3Jj2JGrVQeA9VFMz7 8JX4ecBSgshHR3tRNYBUdZg3JhUGZm0ix3v4LsTE0zx8r4iFhmxfqI1WZMVLPIqCEOLF uBHeYRV++kAdsS+Ft0UhtMJiX2XNH24ZO4auC8asmJqFzjw4UPLNiu4bL46cUfVOz9g7 WKLdRTp1gnGHwyiXqO9pHY1NWJ4xmyeiw9DTJfEXoqoN7sUm3TlwgkWhdguXUAvz4hjT uzmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809229; x=1773414029; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=NYfcTASzTUjQga6ta8+6fIUOjAslm4LSCPa4gm5Bf28=; b=LvqoQBDhatqbRIBm9GghYxh8HuPnAxneE4uSA3KK2opkgMUABDNa8dxe3YIJThsOf7 2QklvJDj4/F+oQqS/MDVQ9K5znh4PGIWE3DfHg0Ba3v3IUl64dW8+fhLA1snACklHfIL p2P4uhNJnQYXqgyylWc68NdPbEIfmSMkgK8lVGyfLzIEUaOLDOIOUCJH2NSO36BkkC6u QhQiQR5GLdRciLI6TDyfMURhn/rAeJQMs+U9a03tR2OVCkwG7Zn/VOkL4VurXbDx31tk aOklmon2rjfrZFypKJnSqrYjxPErBUWbohRsSowhLHZ+fypCwwpLT4UI71MrzLfRve2z uhGA== X-Gm-Message-State: AOJu0YwOKDa4WMuVv8drW5dZE0szBcljpvifvnW4mLyyAhEUObVOAeOd xWrbjSmxmh3Mqtegs5fvwCmomGGJxQfsY1fMsu7OvydguJB41+Z3RppdmkgnncHO8KQDJ3Ud/x2 u0oES X-Gm-Gg: ATEYQzxgoiJTnUt3k2ooSnYuF85VPCEQ6ESfBTy2x0UN6EtYLGytQFNvpaoSEwUhjeY NGt5pmIagB81eR3sxYc4C+4CsL3rRnsgDd71vwDAMQH/ZMe9Wav5YkFoNxOx+UY53UkLlssq3wu ivnM3Tls2a2ahh1Hn9qT7/SZ4TtEh35EcDkyE+V4wmkfS7mJRN4n2NGwFGJe1X2Z5R3pXw/GF6n xR/BUmmya4zMuvdMRopZWIEcjC9R2cvWv+KBOmskCEII6nDB9uAj4yIgKkSveV01VbOTU4XvAFo 2gEo2jyXFCd4WHdm2HL5/kxyVxelKoJNjhoCumFF7tp1cHedBUG6Nav7HOVbipm3Yv7Uvx0Mt0H 60C0GuborDhw3XKCMb2NKfLMVPudTInrFLH0RQwvTdhpu84ofz5d3YCNETJZd6vbpu/7mXW7Qu5 SWDNex3GqLVbZR4zlJZNwd8eXaPKYMY+xJCZqYJM0kQOpx8T3rrGdbcDWgDEx922j8fz02mKQQM pTZcud3AEvFx67oDuZ6JFoaKwy7Ryk= X-Received: by 2002:a05:600c:468c:b0:483:4a95:66da with SMTP id 5b1f17b1804b1-4852692438emr41404825e9.13.1772809228833; Fri, 06 Mar 2026 07:00:28 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 41/49] hw/arm, target/arm: nested virtualisation on HVF Date: Fri, 6 Mar 2026 14:59:31 +0000 Message-ID: <20260306145939.2162189-42-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809351338154100 From: Mohamed Mediouni Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-10-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- accel/hvf/hvf-all.c | 1 + accel/stubs/hvf-stub.c | 1 + hw/arm/virt.c | 5 +++++ include/system/hvf.h | 5 +++++ target/arm/hvf/hvf.c | 36 ++++++++++++++++++++++++++++++++++-- 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c index a296b108bc..1c1437b467 100644 --- a/accel/hvf/hvf-all.c +++ b/accel/hvf/hvf-all.c @@ -24,6 +24,7 @@ =20 bool hvf_allowed; bool hvf_kernel_irqchip; +bool hvf_nested_virt; =20 const char *hvf_return_string(hv_return_t ret) { diff --git a/accel/stubs/hvf-stub.c b/accel/stubs/hvf-stub.c index 6bd08759ba..cec1cbb056 100644 --- a/accel/stubs/hvf-stub.c +++ b/accel/stubs/hvf-stub.c @@ -11,3 +11,4 @@ =20 bool hvf_allowed; bool hvf_kernel_irqchip; +bool hvf_nested_virt; diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 7a6fad1094..90769936d0 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2661,6 +2661,11 @@ static void virt_set_virt(Object *obj, bool value, E= rror **errp) VirtMachineState *vms =3D VIRT_MACHINE(obj); =20 vms->virt =3D value; + /* + * At this point, HVF is not initialised yet. + * However, it needs to know if nested virt is enabled at init time. + */ + hvf_nested_virt_enable(value); } =20 static bool virt_get_highmem(Object *obj, Error **errp) diff --git a/include/system/hvf.h b/include/system/hvf.h index dc8da85979..0f0632f7ae 100644 --- a/include/system/hvf.h +++ b/include/system/hvf.h @@ -28,9 +28,14 @@ extern bool hvf_allowed; #define hvf_enabled() (hvf_allowed) extern bool hvf_kernel_irqchip; #define hvf_irqchip_in_kernel() (hvf_kernel_irqchip) +extern bool hvf_nested_virt; +#define hvf_nested_virt_enabled() (hvf_nested_virt) +#define hvf_nested_virt_enable(enable) hvf_nested_virt =3D enable #else /* !CONFIG_HVF_IS_POSSIBLE */ #define hvf_enabled() 0 #define hvf_irqchip_in_kernel() 0 +#define hvf_nested_virt_enabled() 0 +#define hvf_nested_virt_enable(enable) 0 #endif /* !CONFIG_HVF_IS_POSSIBLE */ =20 #define TYPE_HVF_ACCEL ACCEL_CLASS_NAME("hvf") diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 1c45125036..35b2de7b7a 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -27,6 +27,7 @@ #include "system/memory.h" #include "hw/core/boards.h" #include "hw/core/irq.h" +#include "hw/arm/virt.h" #include "qemu/main-loop.h" #include "system/cpus.h" #include "arm-powerctl.h" @@ -1103,6 +1104,10 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPU= Features *ahcf) (1ULL << ARM_FEATURE_PMU) | (1ULL << ARM_FEATURE_GENERIC_TIMER); =20 + if (hvf_nested_virt_enabled()) { + ahcf->features |=3D 1ULL << ARM_FEATURE_EL2; + } + for (i =3D 0; i < ARRAY_SIZE(regs); i++) { r |=3D hv_vcpu_config_get_feature_reg(config, regs[i].reg, &host_isar.idregs[regs[i].inde= x]); @@ -1218,6 +1223,15 @@ void hvf_arch_vcpu_destroy(CPUState *cpu) assert_hvf_ok(ret); } =20 +static bool hvf_arm_el2_supported(void) +{ + bool is_nested_virt_supported; + hv_return_t ret =3D hv_vm_config_get_el2_supported(&is_nested_virt_sup= ported); + assert_hvf_ok(ret); + return is_nested_virt_supported; +} + + hv_return_t hvf_arch_vm_create(MachineState *ms, uint32_t pa_range) { hv_return_t ret; @@ -1229,6 +1243,18 @@ hv_return_t hvf_arch_vm_create(MachineState *ms, uin= t32_t pa_range) } chosen_ipa_bit_size =3D pa_range; =20 + if (hvf_nested_virt_enabled()) { + if (!hvf_arm_el2_supported()) { + error_report("Nested virtualization not supported on this syst= em."); + goto cleanup; + } + ret =3D hv_vm_config_set_el2_enabled(config, true); + if (ret !=3D HV_SUCCESS) { + error_report("Failed to enable nested virtualization."); + goto cleanup; + } + } + ret =3D hv_vm_create(config); if (hvf_irqchip_in_kernel()) { /* @@ -1414,6 +1440,13 @@ static void hvf_psci_cpu_off(ARMCPU *arm_cpu) assert(ret =3D=3D QEMU_ARM_POWERCTL_RET_SUCCESS); } =20 +static int hvf_psci_get_target_el(void) +{ + if (hvf_nested_virt_enabled()) { + return 2; + } + return 1; +} /* * Handle a PSCI call. * @@ -1435,7 +1468,6 @@ static bool hvf_handle_psci_call(CPUState *cpu, int *= excp_ret) CPUState *target_cpu_state; ARMCPU *target_cpu; target_ulong entry; - int target_el =3D 1; int32_t ret =3D 0; =20 trace_arm_psci_call(param[0], param[1], param[2], param[3], @@ -1489,7 +1521,7 @@ static bool hvf_handle_psci_call(CPUState *cpu, int *= excp_ret) entry =3D param[2]; context_id =3D param[3]; ret =3D arm_set_cpu_on(mpidr, entry, context_id, - target_el, target_aarch64); + hvf_psci_get_target_el(), target_aarch64); break; case QEMU_PSCI_0_1_FN_CPU_OFF: case QEMU_PSCI_0_2_FN_CPU_OFF: --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809661; cv=none; d=zohomail.com; s=zohoarc; b=HzA2A7Ei7UKJceVMxND4yivNeT7xDRIE30x83QFUJzKfOR+3Cm5oniwtiuetem/3pX/kJ66KU1+x+GOHGCt/8GuiCJHCHE/TvpLA0h/POrl/4lraLBWQxMQC+ZYJr6YC4GVykAzMlTk+E2y6+yc/bnj3i8HvGF6oESCejg+Z6Ug= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809661; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=VshKwVWpfXbn67UBtFqN1jPj4A57V6s0t05IuGZWGMw=; b=XcBVvd5M8HD7cphqP2/C0GvtHJJhbJYZPja0FZpRFj63/OLcalVv1HZAIsXvqdoS07GJ08/fMNyLoU6eyH/wggjuoVA0Cvo0to6IGXxiLhdrbbe6p00pXPybDlth5EJRUU/iAZsMoOch5QsOs/BGY7Ck+IYY+pzVt4oS868E7Vk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809661338717.1656936909328; Fri, 6 Mar 2026 07:07:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfv-0006Y0-8E; Fri, 06 Mar 2026 10:01:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfP-0004o0-8B for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:45 -0500 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfH-0002nY-QW for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:34 -0500 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-482f454be5bso95658775e9.0 for ; Fri, 06 Mar 2026 07:00:31 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809230; x=1773414030; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=VshKwVWpfXbn67UBtFqN1jPj4A57V6s0t05IuGZWGMw=; b=DlheQRZ3anWUQuqikx85Ok1wKr58wP6zZ1AHSe6H0bShVuupybCZ6RDqVquxDOItL/ g9AdPGIqB0F6NlY8UrZBhJEZG/009nAGJtRTdIGGEFCGhTiM3JgtnqpbfPaRFkh/rujA sb9P+cBo7kcxeeYmSv+v3qysEIfA/zLZaCPSaDICNF6SiwuaxAEL3MDEXa9pGxBYL2oj DWRt6XhBY2uNrxVK8obIcf5Pl4UuciKd2CHDe+BsoZ3CZu4I/Jdq+BdnrMiTc9/I/lA1 g8QjpYBDfkceq6b0x+lWFUIpwbvoVODlyMOI/Hxux1aKfYD5r7+RhoItCQTELdav1dXd KG7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809230; x=1773414030; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=VshKwVWpfXbn67UBtFqN1jPj4A57V6s0t05IuGZWGMw=; b=xU5vKEVa8oACYNLBsSGS4j6b5UrWbbuamBJLXWZETx7i1zM5/ExPcxf4+MX9ODyvnp BYHtjOlbBB7PjTKeXwZ1zS+aPRDyECl3cmwRXOWKMDO60ZIaTWZmKe01fhfkeyv4WrTH Lo95ZFRRrIgyv8L7XXRUrk2Do/kk+PnYcoHP1nsoKaPb5klZ3Te5BWnNeGQzYtTKuBfO RZ8BoYHV2pRygsRuNhIbo7Imlwz531ga6MgV8IUSqc/5dTgnwmRaJWxWzFZG9Wc6v903 Kv67qivzeZWJ2yKnr4rE39Obnl6gVqVPJsKsywxoy6Ec2xwWUSNoewGxZ8Bk5dE6mnRH vB1g== X-Gm-Message-State: AOJu0Yxgd5spd3MYFdmRhXYWNwhkL3T2TVFktS4A2HXDwEuo12uuuPYc h1Yuqq9mPTPFPw6wWwHLZ9eRkTFSdNCMNERvfG87ooJl7iKQ/IbyWPxb560b2jrjU9fhmUz/Qzp ZwR73 X-Gm-Gg: ATEYQzyxxoybBwqaaigaKonsekDgRj9cC9dhWnwQlS6czE11mm4NlyIGwNwCoLdy9WR htAWhb2UME2OHOW0ZvFbIpsDIL5l3YBh2p8n7sQbiPDNo1h3PjM8tn9bWTWdA+dkDIIIhAaw2NO RXWZM2H5puzCUYN24GhOjk/pcR/spu9dBgxtA4hox8xy53iHGiYEJPPads/BupVsQdwJbvFQkqZ rYWeoJEqQVQdpdaEqSJU2CuEsOeWKWHNuuCoK2cG6gAxKo9pHA8FZ2LXFvPE1L6wMBXRRldwuny 2mYTNep5sfmleCogjL646qsnsjskC3GT1a31XFdve0b+f+vdMqFbuVViBnMNg7kqZr4fYGL97g6 5j/ryzetZg5b3IGmelv7XzUa4BE7KIyGGQdR8ZqQcr+y19o0xNYHZL5jdQjF9wpxfBaAHTQbNZp RfWYrS1xa4cUFSeyCWk5RG21vdOTZR1wbqrKc2N82DKSdTLeYes456WobotQMwThw/WU6d9WMLT INhVUSwqGVUYRBWhuNSHBJJTp3VNwY= X-Received: by 2002:a05:600c:a4f:b0:47e:e981:78b4 with SMTP id 5b1f17b1804b1-4852674e8damr40388355e9.12.1772809230004; Fri, 06 Mar 2026 07:00:30 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 42/49] hvf: only call hvf_sync_vtimer() when running without the platform vGIC Date: Fri, 6 Mar 2026 14:59:32 +0000 Message-ID: <20260306145939.2162189-43-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809662602154100 From: Mohamed Mediouni When running with the Apple vGIC, the EL1 vtimer is handled by the platform. Signed-off-by: Mohamed Mediouni Reviewed-by: Mads Ynddal Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-11-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 35b2de7b7a..8363e10eff 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -2356,7 +2356,9 @@ static int hvf_handle_vmexit(CPUState *cpu, hv_vcpu_e= xit_t *exit) =20 switch (exit->reason) { case HV_EXIT_REASON_EXCEPTION: - hvf_sync_vtimer(cpu); + if (!hvf_irqchip_in_kernel()) { + hvf_sync_vtimer(cpu); + } ret =3D hvf_handle_exception(cpu, &exit->exception); break; case HV_EXIT_REASON_VTIMER_ACTIVATED: --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809406; cv=none; d=zohomail.com; s=zohoarc; b=GJVVnRSxaUUT/l80bwKrKo5zJ2gNFKnGurjoFzlwhN3fH8HaMXiU8RGeiOEkSc0r+m/012anEPI8WNp9zdkpF7uSY15EUseKn8iAkx3Nqdsz+90Zs97QEygCZ1njmqQLbscb+6jjMOkENPdXTr6b8e2AeEKydR/vUx5yO2DKCvg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809406; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=lPAVCki5fzTClwwWXBog13/g0q9UBCatamyseofWAHE=; b=g8y8yUddMnJp8Jff+cJGxXLVDgzxYTjzZOfSjrc5CHQMSYFn55Ox/DHjYncECsoKz2fxi1w0lApRWK3CuMhd6U4Y0cJDw3c7W0iX6wISLiyKx48UOw76XvAIcWpVKL7s2HubqBPU6lk/FjAgI/5+xQ39uVGCQIfzaOoYQHGr4QA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809406657865.2756975618137; Fri, 6 Mar 2026 07:03:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfo-0005mw-Il; Fri, 06 Mar 2026 10:01:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfP-0004oK-92 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:45 -0500 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfL-0002nz-EE for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:38 -0500 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-4852a8482fcso2561275e9.3 for ; Fri, 06 Mar 2026 07:00:33 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809232; x=1773414032; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=lPAVCki5fzTClwwWXBog13/g0q9UBCatamyseofWAHE=; b=AEW5ouEKgIrAHpMMIM7pVNQiunVxo/tBxpseeNkkZihXmvcOnhQ3rVPUHmAgGD/p/2 QMGcyUHc2EFh6H2FRiIYgHnrbzDz974U1mDu7nHCUJvQut6RdfTmrw036xtsWEkoheb2 elt00DPaP8YNSjwZo54dzJi0XSzeq7C2MAZDUb8mxkBxamAVJU1yuWLED6QdcjUsvPHd Y7Rkf9PUq4MUL46453zg2RZJJ1AzIz1geh3P4wT4SpXBOzxRe9xPr3hy0Qz1lQDStcu4 B/D+A7S9zWUijGmkPI8BwII9ms/l/92t23oItBIP2C/FGWEU0QHUdHDxfTAwEOn/tyWs Tsew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809232; x=1773414032; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=lPAVCki5fzTClwwWXBog13/g0q9UBCatamyseofWAHE=; b=dw5DFyQS92YA/77tfn0FNagTlX9rls+Cgqk5BEUcPAFkPP4iZYGGNqDl09KmUzeyQF VE/hNAChwWRzh3ITlgQF9vm36PpaSmFCuxtSinfZ6F4le0c4Mo89miqXGQBKd7VvBDEP 6ZXpH6KN7FBgVboxJ/D3YStzlAwij1o8eI+f75Iee2AESD2Kea5UwzFkJ1kfFI0ouOIL 9DbkcCjIw0AKmWRQg/cM0FdFCvYDTiRBaWlgI73IMMKpoajh2aABOOFhRwI2HooxdGtC BbfZtcV8jAU8reBBKYGRZINLuT+p2q7OraaZwe3gvJjXp8kW5Ywlg/tuylGQKNuixi71 ZNpQ== X-Gm-Message-State: AOJu0Yz/R6RgJnf+jKiwjtpE0wy0yQnAHcMnIccE7wqp7gqL991g1Pb9 eS45TxfpiPGph4KVIBlbgekTtwrCGY3+O6y+t89No3lOs7iieRQQfg1d3dLFE2idlJxBhKpY4Pz Z/E2m X-Gm-Gg: ATEYQzzBp3R3/1n8Q5md0daZJVe1qVX/uTFQaCj/AfVjtIXvHUZyE1rmlzuYRoaIT4D IR8Kc8lfk7zRNMDLHGgH4i3mh97VNZeGD5egCOnwiqrPDpyFAeAA84rvh0d1p3h6IvkY/THA+ah Jm2GVSd6YSJxv5+O1R+d2HEFtJS9PwSnCuDZ/UEiq5Qvvkp+EJpa8UIE3r2m70nbHQDKW/5Gyog SyY/ag7P8o3oWFlfog90XnboT702uKr3SLITFwrBKt94yHodYEJjEQjTWVR4GJZwbFik5y9ybSu I73fvof8BEx4Jjg2y8bkOjDGTUqLsGJMBQ1Dt94bDzDuwU9FsrMFBsKFASrev8E20h0U5Bh2G9/ +yji+EvrgVdJn/JiGnrDBrAqxVRF2nP6nXUUdPhzSs/uWzZxt5imfmsH9DCyAeavtRc8E6NH6Kn AyHCfMmIEpaqMaffIWg0tgA7MdXVtofo4JNiTKh4kPPZ3Ax+b8W3sTC5i7Rx2Zm4pNceXUUYrGt xEhOxgVBcu19ryxBVX80GEdHNgauq4= X-Received: by 2002:a05:600c:4591:b0:483:6d4a:7e6d with SMTP id 5b1f17b1804b1-48526978644mr35776515e9.30.1772809231415; Fri, 06 Mar 2026 07:00:31 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 43/49] hvf: gate ARM_FEATURE_PMU register emulation behind not being at EL2 Date: Fri, 6 Mar 2026 14:59:33 +0000 Message-ID: <20260306145939.2162189-44-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809407919158500 From: Mohamed Mediouni From Apple documentation: > When EL2 is disabled, PMU register accesses trigger "Trapped MSR, MRS, or > System Instruction" exceptions. When this happens, hv_vcpu_run()=E2=80=AF= returns, and the > =E2=80=AFhv_vcpu_exit_t=E2=80=AFobject contains the information about thi= s exception. > When EL2 is enabled, the handling of PMU register accesses is determined = by the PMUVer > field of ID_AA64DFR0_EL1=E2=80=AFregister. > If the PMUVer=E2=80=AFfield value is zero or is invalid, PMU register acc= esses generate "Undefined" > exceptions, which are sent to the guest. > If the PMUVer=E2=80=AFfield value is non-zero and valid, PMU register acc= esses are emulated by the framework. > The ID_AA64DFR0_EL1=E2=80=AFregister can be modified via hv_vcpu_set_sys_= reg=E2=80=AFAPI. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-12-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 8363e10eff..91bbb2013b 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1589,7 +1589,7 @@ static int hvf_sysreg_read(CPUState *cpu, uint32_t re= g, uint64_t *val) ARMCPU *arm_cpu =3D ARM_CPU(cpu); CPUARMState *env =3D &arm_cpu->env; =20 - if (arm_feature(env, ARM_FEATURE_PMU)) { + if (!hvf_nested_virt_enabled() && arm_feature(env, ARM_FEATURE_PMU)) { switch (reg) { case SYSREG_PMCR_EL0: *val =3D env->cp15.c9_pmcr; @@ -1850,7 +1850,7 @@ static int hvf_sysreg_write(CPUState *cpu, uint32_t r= eg, uint64_t val) SYSREG_OP2(reg), val); =20 - if (arm_feature(env, ARM_FEATURE_PMU)) { + if (!hvf_nested_virt_enabled() && arm_feature(env, ARM_FEATURE_PMU)) { switch (reg) { case SYSREG_PMCCNTR_EL0: pmu_op_start(env); --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809305; cv=none; d=zohomail.com; s=zohoarc; b=TaOh21LN5Zkg923zupQ9OeMdI4zCv6f+jcHFxfcIoBIJ+tqocNswwO8I2j3637+rjMbxi/d8D7/ngzwfMnFR3Ux6jn+XAdOX+CuJYdQXdFy7CRtsUMoBVHbc2YFhKgEcyzmYBGfBkxC0Ye1AfsB9zy3VhUgMhFWHicfPOiIa2xk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809305; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=FBrDFEUptpl9cHiWMl6sDAnkc9qy5JYX5xLKqU0fAtY=; b=cEnhTrObBRoRrHrna1Sxe1038J2tXyZntvH758K76oC2vGpY3qavnqF/sVmTN8apuYmGE6K4Ks0fkkGIdZ04lfYx+odWOV3zYi5hllPNXyTrxzGbYQPyN0CH0w3nvZk5TCuKJ1xWTy3Q7h219urMzFLbSe3wkhKQ5DfRSICA27w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177280930508929.24271064395964; Fri, 6 Mar 2026 07:01:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfw-0006hZ-Fy; Fri, 06 Mar 2026 10:01:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfR-0004qc-B8 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:53 -0500 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfN-0002oH-88 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:40 -0500 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-48329eb96a7so61723355e9.3 for ; Fri, 06 Mar 2026 07:00:35 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809235; x=1773414035; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=FBrDFEUptpl9cHiWMl6sDAnkc9qy5JYX5xLKqU0fAtY=; b=sGDuEvCZZRaxUgasgJGvsFQGV9+/HuZ1aqSgskMeSt6wbwYcWGV1Hcmzvzg8kwdast 67HRoZDi4F0EZqiYdQBUYbcLTfrh5ZXrW+jgra1fsJdcTLMSINE3CD75UgK9W7HIHyTX Ef39DLOHA7gEswIw/sa+C+0LiyGQj0eYICOEGCQLW+kf0JF3gKiw86Skfzt/dUUwQ+P+ WQ/BgOcULyLpUcu719Ni5tJz0Kbq2Z/mrfHodtJ8tUgRL4p8L4J4uy0oN5LsQNbcf+px Hkfj1XY80OmEQwToWOWCga+yN9gIen63HpciqGs6d2CkCIJxWKF9uGKM4Msz2x4D8GH6 dXPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809235; x=1773414035; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=FBrDFEUptpl9cHiWMl6sDAnkc9qy5JYX5xLKqU0fAtY=; b=mbtpscBpQx2t11nEpoW7w5pKUoCsZhloGee26gdogh11ORcvgzv6YpnSc1wvJlg0w0 UxrMxOHPtuuU4jQbgEoZurvonRImq3SZq7gNkGGsyvoozz9Ek0kA0ib1PIDdgULbsLPs 1j5pQc0OlX4W24pYgWkko3VgTCclESKiwFj43ZLtlxg9vbYRVVKPZbE8CnzcJIjXwuRO fiDWoeFs+SybPvWtkvuTOxCSrdH9PsFqy6jQEXLVA5pxP3moUH8T9f+ZUhv73+y5d2O9 itFvsLJrU33N9UmSvw+Mq5m6KHqKCeYOHL5poXqMUJSI3BE67WrImTiRjnMkFQJEDNny nkOQ== X-Gm-Message-State: AOJu0YzhPXBHYfHIT4my9e5yXtqetae5PbJEl/9NH60nKYvZbzxacca/ 0k6qVkACkeMmhVTkOfeOaVyOZWiCDCQsL0prf4237C5X9G3CCIik4ftFvqKZSFJK2P4hIT2tBj2 y1WiS X-Gm-Gg: ATEYQzzvR3m+f3U9r+gCciuK1EQBSHOnPf4k7Sxe8JLQ6KgiCOMjdjitccIw1j7HEam d/nS4eAm4IXRj21W996E339r5xQCDGExx7344OnLVB/eSBU3fLxrpQvVMe0QOUGO1KS1TAZhCal HUXtX8XwHP37JNCL8VlLrn8we9uKbnhx7yoLgroZjbyavikaVMNMde/PAF3Zh9dPedX6yttqrso GzR1YH5V8C7atgjERjJB6jIep8TtIxoT3ihLuDcf1R3a3C4iTEMG3nXcSCUR2Aeev5MdL3zPqiG rTvuWe7sgIT6m/sRWeETUkbX7lSK6Ld04OgOnUPtSr6c1jAPAocYDwMoTApsDLT4134bmm7/Z0e IIsAQAR3tA3GzW0aA6zDq088ffyq0vb5THLDYRnbDmsUTDf2aLoiw1DUqMVNMHPQ+hD6JwR2kqk 6s4vm2h3fGnIQPN+/mWWqbDdNIyoqKFra9UHgFXx2+rZifkOLhIPn8Tw+seGf12CN07rcwjeAOs /oSFRqHqJzfdnqCy2kYSeh/EmwsowEzps8zdeCmag== X-Received: by 2002:a05:600c:4710:b0:483:a21:774c with SMTP id 5b1f17b1804b1-4852697987bmr35696625e9.25.1772809234352; Fri, 06 Mar 2026 07:00:34 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 44/49] hvf: arm: allow exposing minimal PMU when running with nested virt on Date: Fri, 6 Mar 2026 14:59:34 +0000 Message-ID: <20260306145939.2162189-45-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809306652154100 From: Mohamed Mediouni When running with nested virt on, a minimum PMU is exposed by Hypervisor.fr= amework if a valid PMUVer register value is set. That PMU isn't exposed otherwise. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-13-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 91bbb2013b..b50400d295 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1145,6 +1145,10 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPU= Features *ahcf) =20 clamp_id_aa64mmfr0_parange_to_ipa_size(&host_isar); =20 + if (hvf_nested_virt_enabled()) { + FIELD_DP64_IDREG(&host_isar, ID_AA64DFR0, PMUVER, 0x1); + } + ahcf->isar =3D host_isar; =20 /* --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809604; cv=none; d=zohomail.com; s=zohoarc; b=My67AwAC5uxGLuroYFTn3Ou0Tq++lsS2UC6ML2NBu9xGWoeb6cVSc0j/DlZEHfd7j1SiYJtk9/92wPyMNhgNtrM5TK/IjQ0bwmMHj7IyAbx0K/KL7BSxifDzpfoBIp3MEbY7Lxys9/3DWjq6OIr0Llm/hAxYxVB3WImtHUfUlwE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809604; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=b8W8+eBw/lWn8DHu/Zy0SVCpq9P1i68RJXoL2hbLTTM=; b=LU8nc4hBuucGyF5LhdAuB4TDyWUWk8doIR7e18H55Wi+bdhoPeaMYpkRDg+0CCdixiWSoDqYMR0KIDrl6rJoJp8JwVZ8zRjTiY0jiLtgsy7rQWcxLU8DXoIg4j+V9mcl5tg1SxGQgv/COQN1W8chGt5UlDcI6L83pLnMg//RoYU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809604765604.2636740674611; Fri, 6 Mar 2026 07:06:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfx-0006tR-Ow; Fri, 06 Mar 2026 10:01:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfR-0004qb-AI for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:53 -0500 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfO-0002oZ-Vd for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:40 -0500 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4836f4cbe0bso81294755e9.3 for ; Fri, 06 Mar 2026 07:00:38 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809237; x=1773414037; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=b8W8+eBw/lWn8DHu/Zy0SVCpq9P1i68RJXoL2hbLTTM=; b=UKQwNkkE8FSnTummu8EezL1wb95xKKnKyLjSi3U+gLSHmfGw4ltxr5yIKfeJ+TrzO+ /TOEZ4Pghy3oHA8SpxsUJTUQXCZ81nBA5Y0N0n15lfO8xRhzLgRR+hiKElzq4krlXNwq TADybDr3ol/slyibmk3k+sh6+4f6r6GsORZJyd1mo4XerjfH5wObxgvEpq1BQZvL2ntX 9xXQbS7efBfmRCYVJ2LtQjtfCSnZjlfF9pt1UQBYPln8iVxr7yAfKUMWSqnUjZSQgoIp weu+NBkwdIV02vY6F6qmk9VbVvCkF5n1o8mcMnrkTwrDEM1M/mhkPJpVdkLVr3WlkM5d WAYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809237; x=1773414037; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=b8W8+eBw/lWn8DHu/Zy0SVCpq9P1i68RJXoL2hbLTTM=; b=HhLUOAwOOMlGySRfmJfax9MHsaurtWCBpOzD4FAotzj6FBPNxsvJTBHYQbLYYmoFqz z8fuiDl4KSzlP82Fswheo5Nj7FPPzIFxM7IpBy4lOlqlvlPpbES8ZAOoQ3hva5oXiv9D FdtNtF+27Vhxo2TWrfGJgFcwmvl7qAJD9LlGPnG5Mncekd+cJUwVp98bCGCjF5nJ1oLX xvr68fKoGFRsuUjsSWrF9mUBvEGKN0QFy68eZmBh3bYxa/oNd/J2fgSdAXmaFMAVtkaH 8TTW3YnrSKpo6rGKivCe/S3Lv9gAf6vITxyLC2Qz6jmRJJx8ikS3sC+K/dwp9AoxrSkT PLPw== X-Gm-Message-State: AOJu0YzB/PZnMxwk5jymogGxOHzmveiXrLsFDeMxPKDEJsRP0IPc8+Fe ARYdkggkTR6/AEsELP7aGl56w38+pUj9jicBglaXAGm2gwPuzjRD7/420qTbcHnf8/h/rZOkgxV AoYFZ X-Gm-Gg: ATEYQzynNR0QY5sCeg+R68C+P+TxS8GMgUe4Hhx7Fk32d91ASq1jBwp7WC8xRnt+Ni2 l3r6IkjCaDuQqF94xoC25CNXiWZ7Nc2F+PfJ7CAZ/HuaGeYG3BVXaUBG5PUc+IL6IvycyrFhez7 SP37TvuXWkmBsj6HHvdviIM6OLUcp7tVJYyg3VDxDtt8g1MxFOtQ1R9ojuNQuegnQuKTdqnfyOh Yr4bWmId/rR0DxTxXVTo3LPN/Jh0LFTMKTE2X+3tUeJXKia92OkBZ1PQt1AxOi/Rgp3m/h0thQW zaqQJ8CYLfT7/lXvGtAx8sfgWoP2vx3DkYTAElJr2sZEV1Cgi1Y4Q7wX0VDVB856OKKDjauLi+P y36t7N15QFXnmHKbnMTQw2UjcLFYsULgukvvqrsnTRPtIM6Ma+U30F/3Ijr+gnLZfdUv7M9RB+X 92zMWvQgeuCIKzdYiANQuSPocOnAf/JlWTlSPDKhpAvztppKkRVeNpnaHnnzolX0ZqZSm2IReAM aZtFv1zJghptJvIUzdxevgOhte2PM0= X-Received: by 2002:a05:600c:1d1e:b0:483:709e:f239 with SMTP id 5b1f17b1804b1-48526951ca9mr40185925e9.22.1772809236667; Fri, 06 Mar 2026 07:00:36 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 45/49] target/arm: hvf: add asserts for code paths not leveraged when using the vGIC Date: Fri, 6 Mar 2026 14:59:35 +0000 Message-ID: <20260306145939.2162189-46-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809605261158500 From: Mohamed Mediouni When using the vGIC, timers are directly handled by the platform. No vmexits ought to happen in that case. Abort if reaching those code paths. Signed-off-by: Mohamed Mediouni Reviewed-by: Mads Ynddal Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-14-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index b50400d295..f8d5a4f596 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1669,6 +1669,7 @@ static int hvf_sysreg_read(CPUState *cpu, uint32_t re= g, uint64_t *val) case SYSREG_ICC_SGI1R_EL1: case SYSREG_ICC_SRE_EL1: case SYSREG_ICC_CTLR_EL1: + assert(!hvf_irqchip_in_kernel()); /* Call the TCG sysreg handler. This is only safe for GICv3 regs. = */ if (hvf_sysreg_read_cp(cpu, "GICv3", reg, val)) { return 0; @@ -1959,6 +1960,7 @@ static int hvf_sysreg_write(CPUState *cpu, uint32_t r= eg, uint64_t val) case SYSREG_ICC_SGI0R_EL1: case SYSREG_ICC_SGI1R_EL1: case SYSREG_ICC_SRE_EL1: + assert(!hvf_irqchip_in_kernel()); /* Call the TCG sysreg handler. This is only safe for GICv3 regs. = */ if (hvf_sysreg_write_cp(cpu, "GICv3", reg, val)) { return 0; @@ -2366,6 +2368,7 @@ static int hvf_handle_vmexit(CPUState *cpu, hv_vcpu_e= xit_t *exit) ret =3D hvf_handle_exception(cpu, &exit->exception); break; case HV_EXIT_REASON_VTIMER_ACTIVATED: + assert(!hvf_irqchip_in_kernel()); qemu_set_irq(arm_cpu->gt_timer_outputs[GTIMER_VIRT], 1); cpu->accel->vtimer_masked =3D true; break; --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809274; cv=none; d=zohomail.com; s=zohoarc; b=BrWRLcmLsYM2CzITfH9pgCnou/T5XAEpzhswSWAUFAPB8OuK74ruATnVSjaYX/tz4sLZohK5ajVHcJzYrlgFyAsBXiaN+0ykiMXAVJHKv7AGqGGMQgqZ+cEk5p1NoJNIohaWFb3ZH0zrGMc1mYDcSOE9fiJzgOXMw3DDaWKHklk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809274; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=k5ddPJjM0MxsfGESCFhraxMnQbyEw+ntSKrCf/tpMXM=; b=aws+ggnYuXbwQ/Sl1gFY2KZQBfAErem+UCuHtQ82dqnKNXFBlWRIA5yZegVY5A/SAC0J7hlMWnQFTEZoDp6eQXYHgxF+2Fm9w9MPU60wEXiKeWFW75LSTdjjhgXUkqP3Ga+LMc4vUqxp46nh/1Nd9QmPTo1wpTwtOoEAngT+WzE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809274701818.7888968535746; Fri, 6 Mar 2026 07:01:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfn-0005Yi-61; Fri, 06 Mar 2026 10:01:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfT-0004qf-0h for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:53 -0500 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfQ-0002ol-VV for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:42 -0500 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-4838c15e3cbso85647325e9.3 for ; Fri, 06 Mar 2026 07:00:38 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809238; x=1773414038; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=k5ddPJjM0MxsfGESCFhraxMnQbyEw+ntSKrCf/tpMXM=; b=iX2DMGlhfzPXFxt+6AylaGj0jhZj3l0SbVCz/ApvQT0qTtKQV8xiwcS6e/we5ccnOv CcFJmUYi+q5ESSxuZV00qN6t391c7X8tw4Xke4nD6TkUiqnUmtSK6kFR+F9OhzUe4gpG Lq0oNzFb2jZiB1wlsg+ujTWelFafMI5eLUOnONODeNvWHV72x1Oz+gbwOI8yl38xnP+y OwBBjT5waHCq9YWBLLBopmXXCl2Al42M4CkT4kuCKkbxqaRi0A71r2swmDZPK1upq2jH I+C4LKR41wJtO2B9yy7Pqe+SFIRHkDO9A4eim/tbZ3cocOP8yBglFC57wMk+M6JxIbsr BoOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809238; x=1773414038; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=k5ddPJjM0MxsfGESCFhraxMnQbyEw+ntSKrCf/tpMXM=; b=C4tMYXidTKQKgcogWjR2n292rgWcpUYV4L6SvZbhbCfg5JoHlsJri1VIoVUCtHp94e dQNOYNNt8rTgEDrrBp5Sos1Rl8l5w7r5aqijtpbqoFYuWqfrl5OLonj0o70woRUubtKx BJPA0i/SjA0UnchzFcjs0yYrisfHIbDiT+ZT4NSEhFvFyoX/Um4ke9kaCtAw0ZmUvkVi UlGdjdsRVWzDaFs8W2POShAwrcgcjFbGXU67DvS1wd2HuYb4ZXMlUHA1EhbxNkz9sMMq wsjKwX8M9ILuVb+zatTXH/biLDzakaSF8u49tAnFzf7bEri8jKh8OvQsPn8hmOcWx1FB 9riQ== X-Gm-Message-State: AOJu0YyP6DVcN/BtlU2wj82skMwmikIEXu6Yfv1MLhPZDQd596uuwoZY 9n7TO4ocpgGi8PNiXS8twi7xanRZ9jWPVVpqGAuGtAhKdbzpTKewz5oExrwduxiB5cAmpgSP05C zPhv6 X-Gm-Gg: ATEYQzwT+XC2Df5A194Dz1EuqiGz2kUYNrRRop7qUBdeechiqSZO7dm6VvEy2MM9pAO 5im0GGOwCG6saJiQhN2XIXIoGIdebvTX+v2uGp3/+icX5g9VO5smDvliKLo4O9+SzItRDnbvbBu wVH89tfIh7yp7QW7qgHOC7zQfcfjSWMFvUs5S+NPFkO+LxdhZ/5cCQpTImb7Zk8zCh/HVMlGu59 +lQLEZ1Q28x+q+k28KGBPy0GUi/V82hFn/mH4APkOCmhtNStexIL/oUxOulpj4bCbRqsPwfr9zs PyROdgYezkxvQBiBNo2TmKSF4fsbr5sMTPwqXaaMzZlEvPN+zF7iM+Lpx0MTvDGLz/xQiY9IRs9 QlmqvzA/0+RBrfbWIe/874/X0M0+BkFM+UQfKK71gDh0jEz45Mji7nij9vhanXVohyRWK8YGa9h 6ykXyE+0y+LtoCtgrXIOEzOAzPEsI107fzOtrZEFih3C6Bf1B5mPpg9LwFVpJv/17dvj9EQbHir 33lZQc4DL65IejYcQ7PyjMpcgliC78= X-Received: by 2002:a05:600c:a12:b0:477:6d96:b3c8 with SMTP id 5b1f17b1804b1-485269648fcmr35579955e9.23.1772809237765; Fri, 06 Mar 2026 07:00:37 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 46/49] hvf: sync registers used at EL2 Date: Fri, 6 Mar 2026 14:59:36 +0000 Message-ID: <20260306145939.2162189-47-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809276608158500 Content-Type: text/plain; charset="utf-8" From: Mohamed Mediouni When starting up the VM at EL2, more sysregs are available. Sync the state = of those. In addition, sync the state of the EL1 physical timer when the vGIC is used= , even if running at EL1. However, no OS running at EL1 is expected to use those r= egisters. Signed-off-by: Mohamed Mediouni Message-id: 20260306130107.35359-15-mohamed@unpredictable.fr Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 55 ++++++++++++++++++++++++++++++++----- target/arm/hvf/sysreg.c.inc | 44 +++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 7 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index f8d5a4f596..6e41789ba8 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -473,31 +473,61 @@ static const struct hvf_reg_match hvf_sme2_preg_match= [] =3D { QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); #define DEF_SYSREG_15_02(...) =20 +#define DEF_SYSREG_EL2(HVF_ID, ...) \ + QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); + +#define DEF_SYSREG_VGIC(HVF_ID, ...) \ + QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); + +#define DEF_SYSREG_VGIC_EL2(HVF_ID, ...) \ + QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); + #include "sysreg.c.inc" =20 #undef DEF_SYSREG #undef DEF_SYSREG_15_02 +#undef DEF_SYSREG_EL2 +#undef DEF_SYSREG_VGIC +#undef DEF_SYSREG_VGIC_EL2 =20 -#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, +#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID}, #define DEF_SYSREG_15_02(...) +#define DEF_SYSREG_EL2(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID, .el2 =3D= true}, +#define DEF_SYSREG_VGIC(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID, .vgic = =3D true}, +#define DEF_SYSREG_VGIC_EL2(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID, tru= e, true}, =20 -static const hv_sys_reg_t hvf_sreg_list[] =3D { +struct hvf_sreg { + hv_sys_reg_t sreg; + bool vgic; + bool el2; +}; + +static struct hvf_sreg hvf_sreg_list[] =3D { #include "sysreg.c.inc" }; =20 #undef DEF_SYSREG #undef DEF_SYSREG_15_02 +#undef DEF_SYSREG_EL2 +#undef DEF_SYSREG_VGIC +#undef DEF_SYSREG_VGIC_EL2 =20 #define DEF_SYSREG(...) -#define DEF_SYSREG_15_02(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, +#define DEF_SYSREG_15_02(HVF_ID, op0, op1, crn, crm, op2) {HVF_ID}, +#define DEF_SYSREG_EL2(...) +#define DEF_SYSREG_VGIC(...) +#define DEF_SYSREG_VGIC_EL2(...) =20 API_AVAILABLE(macos(15.2)) -static const hv_sys_reg_t hvf_sreg_list_sme2[] =3D { +static struct hvf_sreg hvf_sreg_list_sme2[] =3D { #include "sysreg.c.inc" }; =20 #undef DEF_SYSREG #undef DEF_SYSREG_15_02 +#undef DEF_SYSREG_EL2 +#undef DEF_SYSREG_VGIC +#undef DEF_SYSREG_VGIC_EL2 =20 /* * For FEAT_SME2 migration, we need to store PSTATE.{SM,ZA} bits which are @@ -1308,6 +1338,9 @@ int hvf_arch_init_vcpu(CPUState *cpu) #define DEF_SYSREG_15_02(HVF_ID, ...) \ g_assert(HVF_ID =3D=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARGS= __))); #define DEF_SYSREG(...) +#define DEF_SYSREG_EL2(...) +#define DEF_SYSREG_VGIC(...) +#define DEF_SYSREG_VGIC_EL2(...) =20 #include "sysreg.c.inc" =20 @@ -1334,12 +1367,20 @@ int hvf_arch_init_vcpu(CPUState *cpu) memset(arm_cpu->cpreg_values, 0, sregs_match_len * sizeof(uint64_t)); =20 /* Populate cp list for all known sysregs */ - for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list); i++) { - hv_sys_reg_t hvf_id =3D hvf_sreg_list[i]; + for (i =3D 0; i < sregs_match_len; i++) { + hv_sys_reg_t hvf_id =3D hvf_sreg_list[i].sreg; uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); uint32_t key =3D kvm_to_cpreg_id(kvm_id); const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, ke= y); =20 + if (hvf_sreg_list[i].vgic && !hvf_irqchip_in_kernel()) { + continue; + } + + if (hvf_sreg_list[i].el2 && !hvf_nested_virt_enabled()) { + continue; + } + if (ri) { assert(!(ri->type & ARM_CP_NO_RAW)); arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; @@ -1348,7 +1389,7 @@ int hvf_arch_init_vcpu(CPUState *cpu) if (__builtin_available(macOS 15.2, *)) { if (hvf_arm_sme2_supported()) { for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_list_sme2); i++) { - hv_sys_reg_t hvf_id =3D hvf_sreg_list_sme2[i]; + hv_sys_reg_t hvf_id =3D hvf_sreg_list_sme2[i].sreg; uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); uint32_t key =3D kvm_to_cpreg_id(kvm_id); const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(arm_cpu->cp_= regs, key); diff --git a/target/arm/hvf/sysreg.c.inc b/target/arm/hvf/sysreg.c.inc index 7a2f880f78..c11dbf274e 100644 --- a/target/arm/hvf/sysreg.c.inc +++ b/target/arm/hvf/sysreg.c.inc @@ -153,3 +153,47 @@ DEF_SYSREG_15_02(HV_SYS_REG_ID_AA64ZFR0_EL1, 3, 0, 0, = 4, 4) DEF_SYSREG_15_02(HV_SYS_REG_ID_AA64SMFR0_EL1, 3, 0, 0, 4, 5) DEF_SYSREG_15_02(HV_SYS_REG_SMPRI_EL1, 3, 0, 1, 2, 4) DEF_SYSREG_15_02(HV_SYS_REG_SMCR_EL1, 3, 0, 1, 2, 6) +/* + * Block these because of the same issue as virtual counters in + * that caused the revert in 28b0ed32b32c7e5094cf2f1ec9c0645c65fad2aa + * + * DEF_SYSREG_VGIC(HV_SYS_REG_CNTP_CTL_EL0, 3, 3, 14, 2, 1) + * DEF_SYSREG_VGIC(HV_SYS_REG_CNTP_CVAL_EL0, 3, 3, 14, 2, 2) + */ +#ifdef SYNC_NO_RAW_REGS +DEF_SYSREG_VGIC(HV_SYS_REG_CNTP_TVAL_EL0, 3, 3, 14, 2, 0) +#endif + +/* + * Also block these because of the same issue as virtual counters in + * that caused the revert in 28b0ed32b32c7e5094cf2f1ec9c0645c65fad2aa + * + * DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTHP_CVAL_EL2, 3, 4, 14, 2, 2) + * DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTHP_CTL_EL2, 3, 4, 14, 2, 1) + */ +DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTHCTL_EL2, 3, 4, 14, 1, 0) +#ifdef SYNC_NO_RAW_REGS +DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTHP_TVAL_EL2, 3, 4, 14, 2, 0) +#endif +DEF_SYSREG_VGIC_EL2(HV_SYS_REG_CNTVOFF_EL2, 3, 4, 14, 0, 3) + +DEF_SYSREG_EL2(HV_SYS_REG_CPTR_EL2, 3, 4, 1, 1, 2) +DEF_SYSREG_EL2(HV_SYS_REG_ELR_EL2, 3, 4, 4, 0, 1) +DEF_SYSREG_EL2(HV_SYS_REG_ESR_EL2, 3, 4, 5, 2, 0) +DEF_SYSREG_EL2(HV_SYS_REG_FAR_EL2, 3, 4, 6, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_HCR_EL2, 3, 4, 1, 1, 0) +DEF_SYSREG_EL2(HV_SYS_REG_HPFAR_EL2, 3, 4, 6, 0, 4) +DEF_SYSREG_EL2(HV_SYS_REG_MAIR_EL2, 3, 4, 10, 2, 0) +DEF_SYSREG_EL2(HV_SYS_REG_MDCR_EL2, 3, 4, 1, 1, 1) +DEF_SYSREG_EL2(HV_SYS_REG_SCTLR_EL2, 3, 4, 1, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_SPSR_EL2, 3, 4, 4, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_SP_EL2, 3, 6, 4, 1, 0) +DEF_SYSREG_EL2(HV_SYS_REG_TCR_EL2, 3, 4, 2, 0, 2) +DEF_SYSREG_EL2(HV_SYS_REG_TPIDR_EL2, 3, 4, 13, 0, 2) +DEF_SYSREG_EL2(HV_SYS_REG_TTBR0_EL2, 3, 4, 2, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_TTBR1_EL2, 3, 4, 2, 0, 1) +DEF_SYSREG_EL2(HV_SYS_REG_VBAR_EL2, 3, 4, 12, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_VMPIDR_EL2, 3, 4, 0, 0, 5) +DEF_SYSREG_EL2(HV_SYS_REG_VPIDR_EL2, 3, 4, 0, 0, 0) +DEF_SYSREG_EL2(HV_SYS_REG_VTCR_EL2, 3, 4, 2, 1, 2) +DEF_SYSREG_EL2(HV_SYS_REG_VTTBR_EL2, 3, 4, 2, 1, 0) --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809659; cv=none; d=zohomail.com; s=zohoarc; b=HLIWpq7/OhEECkXv4/hOHwS9e1J/TWF/50gq55eTF12jp1mlJ9RztiThDv5hc0CsK8i8qdx8xRlzIlZ3Gw4HydpWTd3cxYvzzJB1KjcIM2seBgfZYlZvPgu9WPE4Pun9RT04CI+nH3hwAuMdt3nygZaaUx3amEbx3cD/h+ctkxw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809659; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=vI3tRfXieJ6LwXxwODwDB21++TaLOLVhoaShPSqksNE=; b=QvlMrHJhndfUgLDnb/r/9M1wuaegEXfib43KcrDbTLJr2bhe4mxAI1WGNNxDq8xE0VeM0MKoNnGtQ/pALLgJ8RoIWBdQq2VdwIYv7yKBi8in3IEJUJeqJBWD9XO5Dnn0+K18wavWyoFE2ZAkdywnqHMLXKQYZw7bZ/XHJ/9J/tU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809659592117.33140091383234; Fri, 6 Mar 2026 07:07:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfv-0006XE-4w; Fri, 06 Mar 2026 10:01:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfS-0004qd-JR for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:53 -0500 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfQ-0002p3-Vo for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:42 -0500 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-483abed83b6so78506655e9.0 for ; Fri, 06 Mar 2026 07:00:39 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809239; x=1773414039; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=vI3tRfXieJ6LwXxwODwDB21++TaLOLVhoaShPSqksNE=; b=fm2RfRF1KP8YBxphLPQUGEPjKPLuZloLA8dhibyCYsy7OGezRhBMMvxKKf965UXYTJ QW6A5kXkNx2r5RX0TzMf6UNf4eu7zTGVTzQQxSEa8SBtXRdmM1aSKgArHsx/JYCvB+HX 6g9mAtRxmQCW8kTebVlELH/QLlBv0CwdC7dhxkUfSVa3/FGSLMpvy7W/noEjDaQ6plXp crCA3hwrSCn7CyBob2z3tldmY8DtzJ1yTJfAnw5nYcZ8ucQN5d5m/AQzr2v+QG53AKXQ Fs6i2/E5q3kHksMIt2tWTfd5bfk5BZ/Ib2kA3yVDRR8OI8o4ghRo3Qtdcu8Mgh26ad1f RfGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809239; x=1773414039; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=vI3tRfXieJ6LwXxwODwDB21++TaLOLVhoaShPSqksNE=; b=ssRVRfJiis6pSnVCq5ByP27ehIH9a7Za23sqOLPhXGfB+6efshdniLcrgic1KDgAn8 lgT67SjruvKUchfo+oK0cU+PagZPeHImHiaWARCuZxpi1MChNYF5kW9JhOoherhzGDPA gQVW17nwwNFNiZmVghBDPxQZFJsmNVRSox+g8fH4vi5lz3Vq7LamYlvIvgQw2vE5L83n AqEZwMfbzKcibtrly1V5OFv1hYaxNEdV7usnALO90ZmKGXQErl4j9oTtQQ3IxoI4u0mp EGz+iBb17DrNcpkSa4UpYn7vWFjtAwkViaAo6jRPEPBuoB6RsX4oLJRnhOvjNzS75Egr q46w== X-Gm-Message-State: AOJu0YyqD0GC2l7bELyvi7KW/TqXsfX2Aab0pgvmvfnBUCurKppG9ACp cJxrMuJgX96ve+waT0f9FsguC96weI0aqcpdJKqmhp0ljgv1HUpBoNtJHgU1ZBfFtcXjCTquyCm Can4J X-Gm-Gg: ATEYQzyfEUJsaXK2cJcGFYP8BGc5fEnPccINVbiIpZmUxe27oyrxfknYLj8bqkuRKTs nRu2hHrfNmFj18CRkikZJ9deg97pMG3UmdlQi+Bz/2uLe9Cgp2fg1uZrkHrxVK7+8h29VuH7hNj Ep9KVLDJ5ynW4rCefUtkuCchffm82myTfgJp9gTtWcei1zew6tuExVnpmBbYAWVsvZ1y6t5EvIx tc8J2crCx2ffw7Gf2zhVQ4xVNkr/XF+vecb/oKeUuOJWQjjIuvuCSOmH/wr0GU18pXIpBiMcts3 yHejHeyZaDyWa6Qci0Nxm2/APdAYLQU1KdQftFDEA/KHQRXoRxZ2Dj969eFc22hrhkDZ7UV7tPJ wDBz5tkK22mXUwKNPrbc2Wu8mYf0NlfOWAfyxVZaG43zFEOAXxPX9qYOSCt5BvtnmV36sNCJ1X7 wR9Mb8PcN7sxWtNOH8cgb7KUEreoJwxbo29sENXaT/YuGzjys0S0W/4ZAmkeig8Zgcss7JSgZ8F UUUy0aLQrR6PFcVMFWcF5dAAhLip1c= X-Received: by 2002:a05:600c:8b68:b0:477:df7:b020 with SMTP id 5b1f17b1804b1-48526969730mr43771035e9.18.1772809238787; Fri, 06 Mar 2026 07:00:38 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 47/49] target/arm: hvf: pass through CNTHCTL_EL2 and MDCCINT_EL1 Date: Fri, 6 Mar 2026 14:59:37 +0000 Message-ID: <20260306145939.2162189-48-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809661536158500 From: Mohamed Mediouni HVF traps accesses to CNTHCTL_EL2. For nested guests, HVF traps accesses to= MDCCINT_EL1. Pass through those accesses to the Hypervisor.framework library. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-16-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 6e41789ba8..0183dd8a60 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -296,6 +296,10 @@ void hvf_arm_init_debug(void) #define SYSREG_DBGWVR15_EL1 SYSREG(2, 0, 0, 15, 6) #define SYSREG_DBGWCR15_EL1 SYSREG(2, 0, 0, 15, 7) =20 +/* EL2 registers */ +#define SYSREG_CNTHCTL_EL2 SYSREG(3, 4, 14, 1, 0) +#define SYSREG_MDCCINT_EL1 SYSREG(2, 0, 0, 2, 0) + #define WFX_IS_WFE (1 << 0) =20 #define TMR_CTL_ENABLE (1 << 0) @@ -1684,6 +1688,14 @@ static int hvf_sysreg_read(CPUState *cpu, uint32_t r= eg, uint64_t *val) case SYSREG_OSDLR_EL1: /* Dummy register */ return 0; + case SYSREG_CNTHCTL_EL2: + if (__builtin_available(macOS 15.0, *)) { + assert_hvf_ok(hv_vcpu_get_sys_reg(cpu->accel->fd, HV_SYS_REG_C= NTHCTL_EL2, val)); + } + return 0; + case SYSREG_MDCCINT_EL1: + assert_hvf_ok(hv_vcpu_get_sys_reg(cpu->accel->fd, HV_SYS_REG_MDCCI= NT_EL1, val)); + return 0; case SYSREG_ICC_AP0R0_EL1: case SYSREG_ICC_AP0R1_EL1: case SYSREG_ICC_AP0R2_EL1: @@ -1972,6 +1984,14 @@ static int hvf_sysreg_write(CPUState *cpu, uint32_t = reg, uint64_t val) case SYSREG_OSDLR_EL1: /* Dummy register */ return 0; + case SYSREG_CNTHCTL_EL2: + if (__builtin_available(macOS 15.0, *)) { + assert_hvf_ok(hv_vcpu_set_sys_reg(cpu->accel->fd, HV_SYS_REG_C= NTHCTL_EL2, val)); + } + return 0; + case SYSREG_MDCCINT_EL1: + assert_hvf_ok(hv_vcpu_set_sys_reg(cpu->accel->fd, HV_SYS_REG_MDCCI= NT_EL1, val)); + return 0; case SYSREG_LORC_EL1: /* Dummy register */ return 0; --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809483; cv=none; d=zohomail.com; s=zohoarc; b=SiOeHJqJWlgBdPwd6XQzMfZRFmiaOJpxwSOjpjv30LYtjhmYJvjtRtinbU/TRUMQQxlpomOfSWKZnJL1lyd/TLz5jNjNA+IFFO+khb6u68ldJDP/5O2lOS9DUJtNdgA+LHSUJ2kTrHD/UpUwBWcs3LJihVNaov82iWsl+j/4X5k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809483; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=3L9keBAgygnmQFdbbQgwX9U1zoCpckZ2GX7ejdHIGUs=; b=ZTyeX4Cu/sihIvlkcxgXBjKshVGikZybOMqoamJO7QsF2UeX1XOhwMvFAieo/nbZrGoXCKXyIonPnwksnv7w1ZcIaP+eqbk+6+VOfsdz82bRcazXh9emgZ6i8Psn1xd8icSfsoSzDGY2I/rXlemKIMFJeJvdQoyWx6bjilG8ItE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809483679687.5463631013313; Fri, 6 Mar 2026 07:04:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfp-0005tJ-GA; Fri, 06 Mar 2026 10:01:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfT-0004ql-Ro for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:53 -0500 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfR-0002pB-I7 for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:43 -0500 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-4833115090dso96362195e9.3 for ; Fri, 06 Mar 2026 07:00:41 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809240; x=1773414040; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=3L9keBAgygnmQFdbbQgwX9U1zoCpckZ2GX7ejdHIGUs=; b=Kue5OOMzq9SB6dgU3lJNMiS7lfmGJiBA/FQCfwnDgwWgPEJ0j6qmCwwDWQLAAJelcs toDeur1gsoTjQmbcg9EKGM90+SgjSVgNVPYyJXO+yU5l4lB3z0WrRoYAOeV+nwBFMSzs L1DO7aCSLpmjD5QnQ51H94D7FXj8bGgh/RnR6reaY8SAniY8xsngbWIs+5nn2Hi5UZ+5 OHAvNt+jQ/XCAPviiifHidtj9fvAj41tFm0qzXFjbSXqbsnMWwcH87LhvpMQElBnGsmq XR/IQdeGxIyPSngRWa2kVofrzsFiGERLJfif2j/VpY7gD0GTQpjpUgihYLazzs5wmgqC FBzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809240; x=1773414040; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=3L9keBAgygnmQFdbbQgwX9U1zoCpckZ2GX7ejdHIGUs=; b=AGY38NHWyWJadxN3oBEJrr96nrqSydV6ZTG22mM47LFoWMduLsxWouJjJaNwPFwHlP hjimsIOyqmvGfTcD4naxBQT3lZnY0VYMbvve0XMHvASeKgJ60V4kmqMTwVahlBNnIcwy 3E1mRmvYAgsvIyHvnxTDZ5coiLQAEMgBtCy4vRoW3wzwMvrgz9suWN6nQAQTAVOR3U6H ot0JhJU23GIwcdTDbQ1Wglu18iqws/g2TcTJtgsM8XCZB8wiTj3Txt+q9yQ4Odmz7+2F Dn5R46kVLOZMSld+G+ozwquzN8qVF9pH6K8LNzMVuT4Y7+mNsFd5DbFlWz3U250PQ/Ed gsOg== X-Gm-Message-State: AOJu0Yzt6T4LlSGU7wpfF426CkzEJxSxS7/wOJmVJKbt+MNuymDXYJLB 69ztZGm+dhXrvKQLAIDmS7ZabwON+KYsArUTvvxcPpwMYHai5lDTTXotuCXxIfYIeV+94frZvRP SO2mA X-Gm-Gg: ATEYQzytX36qJ6hwCqeRyzq3kSQr83/KTCpTr7fzK050lUY9vHjU96BTrSk/VGbOcK8 wtCgSsuaqmq6WfHAGH+R1sAMvwKfIxJWCF1f5ljBbQkMMTMWCH9Rif//mIg9HzYYSmkteCoMfwV 9VpidQyjEm5jKxeLDInJ+UiZdyDqHFkGGBSOJ5FLCAhPrU9oyBqvmdo5s1anTnUq6Qbn1n2qSia dMGQaqfNe288Hp8n+tpN3emJEfSb7jHUdeu04GCffkAqHODtiQs1kpguMaFc+Uu98Wu5S+ui+tR uNq/EPcW6abBXUfbDsZhHcPD9UaC9HAMj0XFUy+pso8US0ULSbunc/WFwMv9D8n7PcbnL7KiFvm wEeBLJ0MTywOzudpTG0JASfTzSIqQmtxMPly2bvXD1E+ltXSRM981jRTi9VTY52NHbRQFKAt8bx Plg5MaiPUaLfSli0yK274XlpeXI1aRwHDQTuOPs8ptAs6lD34IuJgv0bY/OWvIvObSpI0eR9K1i SVLqtZF1YpfLskQexmzRDz+ZlwVq1g= X-Received: by 2002:a05:600c:3acf:b0:483:b505:9db4 with SMTP id 5b1f17b1804b1-48526978d8fmr38235955e9.31.1772809239758; Fri, 06 Mar 2026 07:00:39 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 48/49] hvf: arm: disable SME when nested virt is active Date: Fri, 6 Mar 2026 14:59:38 +0000 Message-ID: <20260306145939.2162189-49-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809485627154100 Content-Type: text/plain; charset="utf-8" From: Mohamed Mediouni Currently, Apple doesn't support the nested virtualisation + SME combinatio= n. Signed-off-by: Mohamed Mediouni Message-id: 20260306130107.35359-17-mohamed@unpredictable.fr [PMM: use FIELD_DP64_IDREG()] Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/hvf/hvf.c | 2 ++ target/arm/hvf_arm.h | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 0183dd8a60..e22a4d16f8 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1181,6 +1181,8 @@ static bool hvf_arm_get_host_cpu_features(ARMHostCPUF= eatures *ahcf) =20 if (hvf_nested_virt_enabled()) { FIELD_DP64_IDREG(&host_isar, ID_AA64DFR0, PMUVER, 0x1); + /* SME is not implemented with nested virt on the Apple side */ + FIELD_DP64_IDREG(&host_isar, ID_AA64PFR1, SME, 0); } =20 ahcf->isar =3D host_isar; diff --git a/target/arm/hvf_arm.h b/target/arm/hvf_arm.h index 6b1c3b9792..9cb58ad9ab 100644 --- a/target/arm/hvf_arm.h +++ b/target/arm/hvf_arm.h @@ -11,6 +11,7 @@ #ifndef QEMU_HVF_ARM_H #define QEMU_HVF_ARM_H =20 +#include "system/hvf.h" #include "target/arm/cpu-qom.h" =20 /** @@ -35,6 +36,10 @@ void hvf_arm_set_cpu_features_from_host(ARMCPU *cpu); if (__builtin_available(macOS 15.2, *)) { size_t svl_bytes; hv_return_t result =3D hv_sme_config_get_max_svl_bytes(&svl_by= tes); + /* Nested virt not supported together with SME right now. */ + if (hvf_nested_virt_enabled()) { + return false; + } if (result =3D=3D HV_UNSUPPORTED) { return false; } --=20 2.43.0 From nobody Mon Apr 13 12:19:07 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1772809350; cv=none; d=zohomail.com; s=zohoarc; b=Z9ouWRM0ROT4Dh6B92DIr4EqkR5CzA78bYT8k/O7hWPI0myQmqG3KCYsyKTMWOva0uy8q+IJsgn60GQ0EsbT6+aFW4tJ+MY11xY1mp5bLTOj5qdxsg8mjIEeYUM7dIXi82wp0mUMKmE8KzYWUeakUx3lS74MPBpEZr2480o6Fq8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772809350; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=TUbzVPCJHafQ9ANhUjINzIDMnhhGghwfl2F9rNmrhP0=; b=V2i/yQ8kU7C5oDDMvfNiWRCCSBisGg9HGBdKfidh6ADVaN7les+2iZUrHM7jNsXN3hZZ4f+39kT2fKO12g6RigSxVcj7At2bm6fBZVT+qmCyzqsxHNy6COZ9+/Ac7A3Dmj64AVuh95h3WvoeShjfk2zyIZYVmhPxzv+h2xlfeOQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772809350761954.3230428173144; Fri, 6 Mar 2026 07:02:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vyWfw-0006kP-MG; Fri, 06 Mar 2026 10:01:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vyWfT-0004qm-UW for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:53 -0500 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vyWfS-0002pQ-Ac for qemu-devel@nongnu.org; Fri, 06 Mar 2026 10:00:43 -0500 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-439c6fc2910so2301590f8f.0 for ; Fri, 06 Mar 2026 07:00:41 -0800 (PST) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485246ece8bsm28681845e9.4.2026.03.06.07.00.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 07:00:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772809241; x=1773414041; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TUbzVPCJHafQ9ANhUjINzIDMnhhGghwfl2F9rNmrhP0=; b=sN0ZykfN0RCA9mjuWxSwU9KtVWIDWGwH4ywm2rCbB+tv9WiYTqgrB6lo9MQ5IdeJh4 RRSGpLNzdRJkLTK36Hf4ii7pH8zkAVBQbvSVdKK9kUH3tdWy+Mf10Pr+CtAhqgclkjQt RA2e2UpA0um3cw/SfPmwB1Ur6Qv73unhIU4zTUOK807IJwWL6gMQos1DuaeqJbVirFsS xdRVx8vdkc/JuzHZKF/9g3mfwRDdhwYYAk76iFzfDfUu12Zz/EEdEihstlhQqDdJXZVi Jx/Z/OLwtwa6O1XPihkom0zZkami2po5TKetHUKeH6MrhLCVzLqpGEdFmBhk/4wCW1hM 8mww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772809241; x=1773414041; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TUbzVPCJHafQ9ANhUjINzIDMnhhGghwfl2F9rNmrhP0=; b=SzmbGMXEkPC606Vf5TGCzAarN65tmBSfq98EVHV3FDKBAMy2ULemLEvf0Z6zTsOZwc yD9RQw1KpucABtfE03Ve1b5dgb4E398N3D0ya/OmkgB1rGizbNx2uO0xiP6L4B+TSmWp is+4HtUdK/MA1a/gMr0+rbcaWqgj2Zjg93UFeCVyI4fO3MT3RNWj18ZS4GVzLKPm8Fgv jtqHX16YfQXDPGMPL/3NChVNyOxMs6D9vRP95pNSdURO30ngI3uLjerLyVc3LNzkwBUU eQ2yRyEy1b1Lua7GI4aPhG6fLrCHNLsqu3OSbXfgJioEeSvXhcso07C8BhFJTsp94rvh sv/w== X-Gm-Message-State: AOJu0Yy/HJpbxhWWkZIFay6djveF85S2aWEQkPEF8DZXAObLEs0q+K4q syjy2SL04l8bhfXYrONW1qpP6yWYF4KLuNp6j0NfjJLc004gjRaM0kH74zmQaEB9H5Sf/B08Nho udUvb X-Gm-Gg: ATEYQzzG7c/i+V/wnOxVHU3Fpl02/9PRDpJibeXjlaKMycCqgXZ5yPOJtYY+YALmsyf YgEqYOCOaYdP+Sx7iPLn6Cer9ShiHkexcfI/KQmVxwaB9WoGWJQXorOCRnFwHT5LU+UyUizvFEL ZyE0OSY4DRj2Q5BHgbMD2lUZ+63NRl6ayXG6N0uwWIZDsL837xdcTojaULzi4NgeftwjUkkMA8Q JddESc9vYZxYkK/MbO+00DA+B9HZ0Wan+Zbf5NcLmPviP90KAPc2dh7juQV+UzXOowsdfDTtbWV nUQnhtH9lhfgePFQzgfOT2p7VcHWOHGcb3g3zOtUV9H5VnatvVY4Lupw0WTsSj1FwHOytn3ripO HPqbESevntMkrPl7gp+HOiVZI1a0QMZ4mw2wJ8vZBYqGlrBeI/2wl29Vxzsg3/WKiDRFBa3irAg up0guBTwO7PfFTblGzs3EXlfb52fK0BKQfQfMoNsif5nHr6QjHFMOXDOjGhH98QaIH2bo4LqbRA DaW81l9yNbnngaVGhHDM1XRSWIUGok= X-Received: by 2002:a05:600c:4710:b0:483:2c98:435e with SMTP id 5b1f17b1804b1-485269792ddmr35632595e9.34.1772809240632; Fri, 06 Mar 2026 07:00:40 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 49/49] hvf: enable nested virtualisation support Date: Fri, 6 Mar 2026 14:59:39 +0000 Message-ID: <20260306145939.2162189-50-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260306145939.2162189-1-peter.maydell@linaro.org> References: <20260306145939.2162189-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1772809351499158500 From: Mohamed Mediouni Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260306130107.35359-18-mohamed@unpredictable.fr Signed-off-by: Peter Maydell --- hw/arm/virt.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 90769936d0..bced9f67f4 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2393,13 +2393,20 @@ static void machvirt_init(MachineState *machine) exit(1); } =20 - if (vms->virt && !kvm_enabled() && !tcg_enabled() && !qtest_enabled())= { + if (vms->virt && !kvm_enabled() && !tcg_enabled() + && !hvf_enabled() && !qtest_enabled()) { error_report("mach-virt: %s does not support providing " "Virtualization extensions to the guest CPU", current_accel_name()); exit(1); } =20 + if (vms->virt && hvf_enabled() && !hvf_irqchip_in_kernel()) { + error_report("mach-virt: For HVF and Virtualization extensions " + "only kernel-irqchip=3Don is currently supported"); + exit(1); + } + if (vms->mte && hvf_enabled()) { error_report("mach-virt: %s does not support providing " "MTE to the guest CPU", --=20 2.43.0