qemu-cr16/include/hw
Peter Maydell 1ec896fe7c hw/arm/virt: Wire up non-secure EL2 virtual timer IRQ
Armv8.1+ CPUs have the Virtual Host Extension (VHE) which adds a
non-secure EL2 virtual timer.  We implemented the timer itself in the
CPU model, but never wired up its IRQ line to the GIC.

Wire up the IRQ line (this is always safe whether the CPU has the
interrupt or not, since it always creates the outbound IRQ line).
Report it to the guest via dtb and ACPI if the CPU has the feature.

The DTB binding is documented in the kernel's
Documentation/devicetree/bindings/timer/arm\,arch_timer.yaml
and the ACPI table entries are documented in the ACPI specification
version 6.3 or later.

Because the IRQ line ACPI binding is new in 6.3, we need to bump the
FADT table rev to show that we might be using 6.3 features.

Note that exposing this IRQ in the DTB will trigger a bug in EDK2
versions prior to edk2-stable202311, for users who use the virt board
with 'virtualization=on' to enable EL2 emulation and are booting an
EDK2 guest BIOS, if that EDK2 has assertions enabled.  The effect is
that EDK2 will assert on bootup:

 ASSERT [ArmTimerDxe] /home/kraxel/projects/qemu/roms/edk2/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c(72): PropSize == 36 || PropSize == 48

If you see that assertion you should do one of:
 * update your EDK2 binaries to edk2-stable202311 or newer
 * use the 'virt-8.2' versioned machine type
 * not use 'virtualization=on'

(The versions shipped with QEMU itself have the fix.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Message-id: 20240122143537.233498-3-peter.maydell@linaro.org
2024-02-15 11:31:52 +00:00
..
acpi virtio,pc,pci: features, cleanups 2023-10-23 14:45:29 -07:00
adc
arm hw/arm/virt: Wire up non-secure EL2 virtual timer IRQ 2024-02-15 11:31:52 +00:00
audio m68k: Clean up includes 2024-01-30 21:20:20 +03:00
block hw/block/fdc-isa: Implement relocation and enabling/disabling for TYPE_ISA_FDC 2024-02-14 06:09:32 -05:00
char hw/char/parallel-isa: Implement relocation and enabling/disabling for TYPE_ISA_PARALLEL 2024-02-14 06:09:32 -05:00
core include/hw/core: Add mmu_index to CPUClass 2024-02-03 08:52:25 +10:00
cpu
cris hw/net/etraxfs-eth: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
cxl hw/cxl: Standardize all references on CXL r3.1 and minor updates 2024-02-14 06:09:33 -05:00
display ramfb: add migration support 2023-10-18 10:10:49 +02:00
dma
firmware smbios: function to set default processor family 2024-02-09 20:43:14 +10:00
fsi hw/fsi: Aspeed APB2OPB & On-chip peripheral bus 2024-02-01 08:33:18 +01:00
gpio hw/gpio/nrf51: implement DETECT signal 2023-08-22 17:30:59 +01:00
hyperv include/hw/hyperv/dynmem-proto.h: spelling fix: nunber, atleast 2023-11-15 12:06:05 +03:00
i2c hw/i2c: pmbus: add VCAP register 2023-11-07 13:08:49 +01:00
i386 hw/i386/x86: Fix PIC interrupt handling if APIC is globally disabled 2024-02-14 06:09:32 -05:00
ide ide/pci: introduce pci_ide_update_mode() function 2023-11-21 12:45:21 +01:00
input hw/input/stellaris_gamepad: Convert to qemu_input_handler_register() 2023-11-02 12:52:06 +00:00
intc hw/arm/armv7m: Make 'hw/intc/armv7m_nvic.h' a target agnostic header 2024-01-26 11:30:49 +00:00
ipack
ipmi
isa hw/isa/vt82c686: Bring back via_isa_set_irq() 2023-11-28 14:26:37 +01:00
loongarch hw/loongarch/virt: Set iocsr address space per-board rather than percpu 2024-01-11 19:22:47 +08:00
m68k m68k: Clean up includes 2024-01-30 21:20:20 +03:00
mem include: Clean up includes 2024-01-30 21:20:20 +03:00
mips hw/mips: Inline 'bios.h' definitions 2024-01-05 16:20:15 +01:00
misc lasi: Add reset I/O ports for LASI audio and FDC 2024-02-11 13:20:23 +01:00
net target/arm: fix exception syndrome for AArch32 bkpt insn 2024-02-02 18:56:32 +00:00
nubus
nvram acpi: Clean up includes 2024-01-30 21:20:20 +03:00
openrisc
pci hw/pci: remove pci_nic_init_nofail() 2024-02-02 16:23:48 +00:00
pci-bridge hw/cxl: Add a switch mailbox CCI function 2023-11-07 03:39:11 -05:00
pci-host hw/pci-host/astro: Implement Hard Fail and Soft Fail mode 2024-02-11 13:20:23 +01:00
ppc include: Clean up includes 2024-01-30 21:20:20 +03:00
rdma
remote
riscv hw/riscv/virt: Update GPEX MMIO related properties 2024-01-10 18:47:47 +10:00
rtc hw/rtc/aspeed_rtc: Use 64-bit offset for holding time_t difference 2023-08-31 09:45:18 +01:00
rx
s390x s390x/pci: drive ISM reset from subsystem reset 2024-01-19 11:38:32 +01:00
scsi esp.c: keep track of the DRQ state during DMA 2024-02-13 19:37:28 +00:00
sd hw/sd: Introduce a "sd-card" SPI variant model 2023-09-01 11:40:04 +02:00
sensor
sh4
southbridge hw/isa/piix: Allow for optional PIT creation in PIIX3 2023-10-22 05:18:17 -04:00
sparc
ssi hw/ssi: Implement BCM2835 SPI Controller 2024-02-02 13:51:59 +00:00
timer
tricore
usb
vfio vfio/iommufd: Introduce a VFIOIOMMU iommufd QOM interface 2024-01-05 21:25:20 +01:00
virtio virtio,pc,pci: features, cleanups, fixes 2024-02-14 15:45:52 +00:00
watchdog hw/watchdog: Allwinner WDT emulation for system reset 2023-04-20 10:21:13 +01:00
xen hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs 2024-02-02 16:23:47 +00:00
xtensa
boards.h hw/core: Add machine_class_default_cpu_type() 2024-01-05 16:20:14 +01:00
clock.h include/: spelling fixes 2023-09-08 13:08:52 +03:00
elf_ops.h Revert "hw/elf_ops: Ignore loadable segments with zero size" 2024-02-09 17:52:20 +00:00
fw-path-provider.h
hotplug.h pci: fix 'hotplugglable' property behavior 2023-03-07 12:38:59 -05:00
hw.h
ide.h
irq.h
loader-fit.h
loader.h hw/loader: Clean up global variable shadowing in rom_add_file() 2023-11-07 13:08:48 +01:00
nmi.h
or-irq.h
pcmcia.h replace TABs with spaces 2023-03-20 12:43:50 +01:00
platform-bus.h
ptimer.h
qdev-clock.h
qdev-core.h oslib-posix: initialize backend memory objects in parallel 2024-02-06 08:15:22 +01:00
qdev-dma.h
qdev-properties-system.h qdev: add IOThreadVirtQueueMappingList property type 2023-12-21 22:49:28 +01:00
qdev-properties.h qdev-properties: alias all object class properties 2023-12-21 22:49:28 +01:00
register.h
registerfields.h
resettable.h
stream.h
sysbus.h
usb.h
vmstate-if.h