History log of /openbmc/qemu/hw/intc/ (Results 1 – 25 of 1836)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
0eacf8b017-Nov-2024 Joel Stanley <joel@jms.id.au>

hw/aspeed: Correct minimum access size for all models

Guest code was performing a byte load to the SCU MMIO region, leading to
the guest code crashing (it should be using proper accessors, but
that

hw/aspeed: Correct minimum access size for all models

Guest code was performing a byte load to the SCU MMIO region, leading to
the guest code crashing (it should be using proper accessors, but
that is not Qemu's bug). Hardware and the documentation[1] both agree that
byte loads are okay, so change all of the aspeed devices to accept a
minimum access size of 1.

[1] See the 'ARM Address Space Mapping' table in the ASPEED docs. This
is section 6.1 in the ast2400 and ast2700, and 7.1 in the ast2500 and
ast2600 datasheets.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2636
Signed-off-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Troy Lee <leetroy@gmail.com>
[ clg: SCU part already merged :
https://lore.kernel.org/qemu-devel/20250331230444.88295-3-philmd@linaro.org/ ]
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...


/openbmc/qemu/.readthedocs.yml
/openbmc/qemu/MAINTAINERS
/openbmc/qemu/VERSION
/openbmc/qemu/block/rbd.c
/openbmc/qemu/configure
/openbmc/qemu/docs/devel/qapi-code-gen.rst
/openbmc/qemu/docs/devel/qapi-domain.rst
/openbmc/qemu/docs/devel/submitting-a-patch.rst
/openbmc/qemu/docs/system/arm/aspeed.rst
/openbmc/qemu/hw/Kconfig
/openbmc/qemu/hw/arm/Kconfig
/openbmc/qemu/hw/arm/aspeed_ast10x0.c
/openbmc/qemu/hw/arm/aspeed_ast2600.c
/openbmc/qemu/hw/arm/aspeed_ast27x0-fc.c
/openbmc/qemu/hw/arm/aspeed_ast27x0-ssp.c
/openbmc/qemu/hw/arm/aspeed_ast27x0-tsp.c
/openbmc/qemu/hw/arm/aspeed_ast27x0.c
/openbmc/qemu/hw/fsi/aspeed_apb2opb.c
/openbmc/qemu/hw/gpio/aspeed_gpio.c
/openbmc/qemu/hw/i386/Kconfig
/openbmc/qemu/hw/i3c/Kconfig
/openbmc/qemu/hw/i3c/aspeed_i3c.c
/openbmc/qemu/hw/i3c/core.c
/openbmc/qemu/hw/i3c/dw-i3c.c
/openbmc/qemu/hw/i3c/meson.build
/openbmc/qemu/hw/i3c/mock-i3c-target.c
/openbmc/qemu/hw/i3c/trace-events
/openbmc/qemu/hw/i3c/trace.h
aspeed_vic.c
/openbmc/qemu/hw/meson.build
/openbmc/qemu/hw/misc/aspeed_sbc.c
/openbmc/qemu/hw/misc/aspeed_scu.c
/openbmc/qemu/hw/misc/aspeed_sdmc.c
/openbmc/qemu/hw/misc/aspeed_xdma.c
/openbmc/qemu/hw/misc/meson.build
/openbmc/qemu/hw/misc/trace-events
/openbmc/qemu/hw/net/ftgmac100.c
/openbmc/qemu/hw/nvme/ctrl.c
/openbmc/qemu/hw/nvram/aspeed_otp.c
/openbmc/qemu/hw/nvram/meson.build
/openbmc/qemu/hw/nvram/trace-events
/openbmc/qemu/hw/pci-host/Kconfig
/openbmc/qemu/hw/pci-host/aspeed_pcie.c
/openbmc/qemu/hw/pci-host/meson.build
/openbmc/qemu/hw/pci-host/trace-events
/openbmc/qemu/hw/sd/allwinner-sdhost.c
/openbmc/qemu/hw/sd/aspeed_sdhci.c
/openbmc/qemu/hw/sd/bcm2835_sdhost.c
/openbmc/qemu/hw/sd/core.c
/openbmc/qemu/hw/sd/omap_mmc.c
/openbmc/qemu/hw/sd/pl181.c
/openbmc/qemu/hw/sd/sd.c
/openbmc/qemu/hw/sd/sdhci.c
/openbmc/qemu/hw/sd/ssi-sd.c
/openbmc/qemu/hw/sd/trace-events
/openbmc/qemu/hw/ssi/aspeed_smc.c
/openbmc/qemu/hw/timer/aspeed_timer.c
/openbmc/qemu/hw/uefi/var-service-core.c
/openbmc/qemu/hw/uefi/var-service-json.c
/openbmc/qemu/hw/uefi/var-service-vars.c
/openbmc/qemu/hw/vfio/cpr.c
/openbmc/qemu/hw/vfio/pci.c
/openbmc/qemu/hw/vfio/pci.h
/openbmc/qemu/hw/watchdog/wdt_aspeed.c
/openbmc/qemu/include/hw/arm/aspeed_soc.h
/openbmc/qemu/include/hw/i3c/aspeed_i3c.h
/openbmc/qemu/include/hw/i3c/dw-i3c.h
/openbmc/qemu/include/hw/i3c/i3c.h
/openbmc/qemu/include/hw/i3c/mock-i3c-target.h
/openbmc/qemu/include/hw/misc/aspeed_sbc.h
/openbmc/qemu/include/hw/misc/aspeed_scu.h
/openbmc/qemu/include/hw/nvram/aspeed_otp.h
/openbmc/qemu/include/hw/pci-host/aspeed_pcie.h
/openbmc/qemu/include/hw/pci/pci_ids.h
/openbmc/qemu/include/hw/sd/sd.h
/openbmc/qemu/include/hw/vfio/vfio-cpr.h
/openbmc/qemu/meson.build
/openbmc/qemu/meson_options.txt
/openbmc/qemu/pc-bios/ast27x0_bootrom.bin
/openbmc/qemu/pc-bios/npcm7xx_bootrom.bin
/openbmc/qemu/pc-bios/npcm8xx_bootrom.bin
/openbmc/qemu/python/scripts/mkvenv.py
/openbmc/qemu/pythondeps.toml
/openbmc/qemu/qapi/block-core.json
/openbmc/qemu/qga/commands-linux.c
/openbmc/qemu/roms/Makefile
/openbmc/qemu/roms/vbootrom
/openbmc/qemu/scripts/make-release
/openbmc/qemu/scripts/meson-buildoptions.sh
/openbmc/qemu/target/i386/cpu.c
/openbmc/qemu/target/loongarch/tcg/insn_trans/trans_vec.c.inc
/openbmc/qemu/tests/docker/dockerfiles/debian-all-test-cross.docker
/openbmc/qemu/tests/functional/meson.build
/openbmc/qemu/tests/functional/test_aarch64_aspeed_ast2700.py
/openbmc/qemu/tests/functional/test_aarch64_aspeed_ast2700fc.py
/openbmc/qemu/tests/functional/test_aarch64_hotplug_pci.py
/openbmc/qemu/tests/functional/test_arm_aspeed_ast2500.py
/openbmc/qemu/tests/functional/test_arm_aspeed_ast2600.py
/openbmc/qemu/tests/functional/test_arm_aspeed_otp.py
/openbmc/qemu/tests/functional/test_riscv64_sifive_u.py
/openbmc/qemu/tests/qemu-iotests/039.out
/openbmc/qemu/tests/qemu-iotests/061.out
/openbmc/qemu/tests/qemu-iotests/137.out
/openbmc/qemu/tests/qemu-iotests/common.filter
/openbmc/qemu/tests/qemu-iotests/tests/mirror-sparse
/openbmc/qemu/ui/curses.c
/openbmc/qemu/ui/spice-display.c
a666a84b04-Aug-2025 Stefan Hajnoczi <stefanha@redhat.com>

Merge tag 'pull-target-arm-20250801' of https://gitlab.com/pm215/qemu into staging

target-arm queue:
* Add missing 64-bit PMCCNTR in AArch32 mode
* Reinstate bogus AArch32 DBGDTRTX register for mi

Merge tag 'pull-target-arm-20250801' of https://gitlab.com/pm215/qemu into staging

target-arm queue:
* Add missing 64-bit PMCCNTR in AArch32 mode
* Reinstate bogus AArch32 DBGDTRTX register for migration compat
* fix big-endian handling of AArch64 FPU registers in gdbstub
* fix handling of setting SVE registers from gdbstub
* hw/intc/arm_gicv3_kvm: fix writing of enable/active/pending state to KVM
* hw/display/framebuffer: Add cast to force 64x64 multiply
* tests/tcg: Fix run for tests with specific plugin

# -----BEGIN PGP SIGNATURE-----
#
# iQJMBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmiM4mgZHHBldGVyLm1h
# eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3lH/D/iniJpHRVDVAvHcYe7vSgLl
# HHfdEro/lOJJbaktQwOwkSuyl5HFy3YoIg3/5K2kX40DRkeA/M1HWkaWpwpCUReV
# 6XS8fCDmxw5M0oncJsTD1cYxCAAHm/CSt2uvdwgHo6nU+vnEa85ml3Q57phLEkvl
# 2R6xjXDD2FY3Xi6l2Jvqhnx/y60D5YnZVo/G9jcwRI2kIvpwTxukge5rGRTeagzL
# fKwsgr8jThvWyzTJtd88n36uD8xiH8/IfHh+e0kGYfzPRjEGfN3rKh4OlyfRyv7D
# AVI8qgVz0ex7DEjJTCS2nNYmNhO8hTE+cybcsH6AU2e3V7/vqg3Lh0/1cWlmvGnR
# 8L0/RBy0exPI1kRABfjXPV4VtNSuByxp+F+s4LvUrxgnnbv29ldOnQNHn3BZJtZn
# OuuixZNa3/tJFa+2U20fPW+q2H9uhPhvLn5fhtCx1ucYONLMrWl3Z8Q3/qwbW+5e
# FR459UaVHUvqKDGL6cjnaQ3VclrsXngCbeBmLm7fDfniRf/4uIc3q6RzdwY3waj3
# t7D/+GmLwZzajEaCU1NcI+Uz+yO/wJhEXUtWAzm6xeowYfOEeZc1pRgGWSqy4qvi
# L9vKmZtRW5LvwLwpMLdcoB3BOIszSDy7AylX4onSWl3Vp3GYiOhYqv9OKlQoUGtu
# xjFCVDCB/0FPl9b+xoYK
# =lN06
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 01 Aug 2025 11:51:04 EDT
# gpg: using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
# gpg: issuer "peter.maydell@linaro.org"
# gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [full]
# gpg: aka "Peter Maydell <pmaydell@gmail.com>" [full]
# gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [full]
# gpg: aka "Peter Maydell <peter@archaic.org.uk>" [unknown]
# Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE

* tag 'pull-target-arm-20250801' of https://gitlab.com/pm215/qemu:
tests/tcg: Fix run for tests with specific plugin
target/arm: Fix handling of setting SVE registers from gdb
target/arm: Fix big-endian handling of NEON gdb remote debugging
target/arm: Reinstate bogus AArch32 DBGDTRTX register for migration compat
hw/display/framebuffer: Add cast to force 64x64 multiply
hw/intc/arm_gicv3_kvm: Write all 1's to clear enable/active
hw/intc/arm_gicv3_kvm: Remove writes to ICPENDR registers
target/arm: add support for 64-bit PMCCNTR in AArch32 mode

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>

show more ...

b10bd4bd29-Jul-2025 Zenghui Yu <zenghui.yu@linux.dev>

hw/intc/arm_gicv3_kvm: Write all 1's to clear enable/active

KVM's userspace access interface to the GICD enable and active bits
is via set/clear register pairs which implement the hardware's "write

hw/intc/arm_gicv3_kvm: Write all 1's to clear enable/active

KVM's userspace access interface to the GICD enable and active bits
is via set/clear register pairs which implement the hardware's "write
1s to the clear register to clear the 0 bits, and write 1s to the set
register to set the 1 bits" semantics. We didn't get this right,
because we were writing 0 to the clear register.

Writing 0 to GICD_IC{ENABLE,ACTIVE}R architecturally has no effect on
interrupt status (all writes are simply ignored by KVM) and doesn't
comply with the intention of "first write to the clear-reg to clear
all bits".

Write all 1's to actually clear the enable/active status.

This didn't have any adverse effects on migration because there
we start with a clean VM state; it would be guest-visible when
doing a system reset, but since Linux always cleans up the
register state of the GIC during bootup before it enables it
most users won't have run into a problem here.

Cc: qemu-stable@nongnu.org
Fixes: 367b9f527bec ("hw/intc/arm_gicv3_kvm: Implement get/put functions")
Signed-off-by: Zenghui Yu <zenghui.yu@linux.dev>
Message-id: 20250729161650.43758-3-zenghui.yu@linux.dev
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

a0555e3629-Jul-2025 Zenghui Yu <zenghui.yu@linux.dev>

hw/intc/arm_gicv3_kvm: Remove writes to ICPENDR registers

As per the arm-vgic-v3 kernel doc [1]:

Accesses to GICD_ICPENDR register region and GICR_ICPENDR0 registers
have RAZ/WI semantics,

hw/intc/arm_gicv3_kvm: Remove writes to ICPENDR registers

As per the arm-vgic-v3 kernel doc [1]:

Accesses to GICD_ICPENDR register region and GICR_ICPENDR0 registers
have RAZ/WI semantics, meaning that reads always return 0 and writes
are always ignored.

The state behind these registers (both 0 and 1 bits) is written by
writing to the GICD_ISPENDR and GICR_ISPENDR0 registers, unlike
some of the other set/clear register pairs.

Remove the useless writes to ICPENDR registers in kvm_arm_gicv3_put().

[1] https://docs.kernel.org/virt/kvm/devices/arm-vgic-v3.html

Signed-off-by: Zenghui Yu <zenghui.yu@linux.dev>
Message-id: 20250729161650.43758-2-zenghui.yu@linux.dev
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

31995cc425-Jul-2025 Song Gao <gaosong@loongson.cn>

hw/intc/loongarch_ipi: Fix start fail with smp cpu < smp maxcpus on KVM

QEMU start failed when smp cpu < smp maxcpus , because qemu send a NULL
cpu to KVM, this patch adds a check for kvm_ipi_access

hw/intc/loongarch_ipi: Fix start fail with smp cpu < smp maxcpus on KVM

QEMU start failed when smp cpu < smp maxcpus , because qemu send a NULL
cpu to KVM, this patch adds a check for kvm_ipi_access_regs() to fix it.

run with '-smp 1,maxcpus=4,sockets=4,cores=1,threads=1'

we got:
Unexpected error in kvm_device_access() at ../accel/kvm/kvm-all.c:3477:
qemu-system-loongarch64: KVM_SET_DEVICE_ATTR failed: Group 1073741825 attr 0x0000000000010000: Invalid argument

Signed-off-by: Song Gao <gaosong@loongson.cn>
Reviewed-by: Bibo Mao <maobibo@loongson.cn>
Message-ID: <20250725081213.3867592-1-gaosong@loongson.cn>

show more ...

b6f1244628-Jul-2025 Yang Jialong <z_bajeer@yeah.net>

intc/riscv_aplic: Fix target register read when source is inactive

The RISC-V Advanced interrupt Architecture:
4.5.16. Interrupt targets:
If interrupt source i is inactive in this domain, register t

intc/riscv_aplic: Fix target register read when source is inactive

The RISC-V Advanced interrupt Architecture:
4.5.16. Interrupt targets:
If interrupt source i is inactive in this domain, register target[i] is
read-only zero.

Signed-off-by: Yang Jialong <z_bajeer@yeah.net>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Message-ID: <20250728055114.252024-1-z_bajeer@yeah.net>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>

show more ...


/openbmc/qemu/MAINTAINERS
/openbmc/qemu/VERSION
/openbmc/qemu/accel/hvf/hvf-all.c
/openbmc/qemu/configure
/openbmc/qemu/crypto/tlscredsx509.c
/openbmc/qemu/crypto/tlssession.c
/openbmc/qemu/crypto/trace-events
/openbmc/qemu/crypto/x509-utils.c
/openbmc/qemu/docs/about/build-platforms.rst
/openbmc/qemu/docs/devel/qapi-domain.rst
/openbmc/qemu/docs/devel/testing/functional.rst
/openbmc/qemu/docs/igd-assign.txt
/openbmc/qemu/docs/system/arm/aspeed.rst
/openbmc/qemu/docs/system/devices/net.rst
/openbmc/qemu/docs/user/index.rst
/openbmc/qemu/docs/user/main.rst
/openbmc/qemu/hw/arm/smmu-common.c
/openbmc/qemu/hw/core/machine.c
/openbmc/qemu/hw/display/qxl-render.c
/openbmc/qemu/hw/display/ramfb-standalone.c
/openbmc/qemu/hw/display/ramfb-stubs.c
/openbmc/qemu/hw/display/ramfb.c
/openbmc/qemu/hw/display/sm501.c
/openbmc/qemu/hw/i386/Kconfig
/openbmc/qemu/hw/i386/microvm.c
/openbmc/qemu/hw/i386/pc_piix.c
/openbmc/qemu/hw/i386/pc_q35.c
riscv_aplic.c
/openbmc/qemu/hw/misc/ivshmem-pci.c
/openbmc/qemu/hw/misc/max78000_aes.c
/openbmc/qemu/hw/net/cadence_gem.c
/openbmc/qemu/hw/net/npcm_gmac.c
/openbmc/qemu/hw/riscv/virt-acpi-build.c
/openbmc/qemu/hw/vfio/cpr.c
/openbmc/qemu/hw/vfio/display.c
/openbmc/qemu/hw/vfio/igd.c
/openbmc/qemu/hw/vfio/pci.c
/openbmc/qemu/hw/vfio/pci.h
/openbmc/qemu/hw/vfio/types.h
/openbmc/qemu/hw/vfio/vfio-migration-internal.h
/openbmc/qemu/hw/xen/xen_pt.c
/openbmc/qemu/include/crypto/tlssession.h
/openbmc/qemu/include/hw/display/ramfb.h
/openbmc/qemu/include/io/channel.h
/openbmc/qemu/include/qemu/compiler.h
/openbmc/qemu/include/qemu/host-utils.h
/openbmc/qemu/io/channel-tls.c
/openbmc/qemu/linux-user/aarch64/signal.c
/openbmc/qemu/meson.build
/openbmc/qemu/meson_options.txt
/openbmc/qemu/migration/meson.build
/openbmc/qemu/migration/migration-hmp-cmds.c
/openbmc/qemu/migration/tls.c
/openbmc/qemu/migration/vfio.c
/openbmc/qemu/net/passt.c
/openbmc/qemu/net/tap.c
/openbmc/qemu/net/vhost-user.c
/openbmc/qemu/qapi/accelerator.json
/openbmc/qemu/qapi/dump.json
/openbmc/qemu/qapi/machine.json
/openbmc/qemu/qapi/migration.json
/openbmc/qemu/qapi/misc-i386.json
/openbmc/qemu/qapi/run-state.json
/openbmc/qemu/qapi/sockets.json
/openbmc/qemu/qga/qapi-schema.json
/openbmc/qemu/roms/Makefile
/openbmc/qemu/rust/hw/char/pl011/Cargo.toml
/openbmc/qemu/rust/hw/char/pl011/src/device.rs
/openbmc/qemu/rust/hw/char/pl011/src/lib.rs
/openbmc/qemu/rust/hw/timer/hpet/Cargo.toml
/openbmc/qemu/scripts/decodetree.py
/openbmc/qemu/scripts/get-wraps-from-cargo-registry.py
/openbmc/qemu/scripts/meson-buildoptions.sh
/openbmc/qemu/scripts/tracetool/__init__.py
/openbmc/qemu/scripts/tracetool/backend/log.py
/openbmc/qemu/scripts/tracetool/backend/simple.py
/openbmc/qemu/scripts/tracetool/backend/syslog.py
/openbmc/qemu/scripts/update-linux-headers.sh
/openbmc/qemu/system/physmem.c
/openbmc/qemu/target/arm/debug_helper.c
/openbmc/qemu/target/arm/hvf/hvf.c
/openbmc/qemu/target/arm/hvf/trace-events
/openbmc/qemu/target/arm/internals.h
/openbmc/qemu/target/arm/kvm_arm.h
/openbmc/qemu/target/arm/tcg/helper-sme.h
/openbmc/qemu/target/arm/tcg/helper-sve.h
/openbmc/qemu/target/arm/tcg/helper.h
/openbmc/qemu/target/arm/tcg/sme_helper.c
/openbmc/qemu/target/arm/tcg/sve.decode
/openbmc/qemu/target/arm/tcg/sve_helper.c
/openbmc/qemu/target/arm/tcg/translate-a64.h
/openbmc/qemu/target/arm/tcg/translate-sme.c
/openbmc/qemu/target/arm/tcg/translate-sve.c
/openbmc/qemu/target/arm/tcg/vec_helper.c
/openbmc/qemu/target/i386/tcg/decode-new.c.inc
/openbmc/qemu/target/mips/tcg/system/cp0_helper.c
/openbmc/qemu/target/riscv/pmp.c
/openbmc/qemu/tcg/optimize.c
/openbmc/qemu/tests/data/acpi/riscv64/virt/APIC
/openbmc/qemu/tests/data/acpi/riscv64/virt/FACP
/openbmc/qemu/tests/decode/meson.build
/openbmc/qemu/tests/decode/succ_infer1.decode
/openbmc/qemu/tests/docker/dockerfiles/debian-all-test-cross.docker
/openbmc/qemu/tests/functional/meson.build
/openbmc/qemu/tests/functional/qemu_test/testcase.py
/openbmc/qemu/tests/functional/test_aarch64_kvm.py
/openbmc/qemu/tests/functional/test_multiprocess.py
/openbmc/qemu/tests/functional/test_virtio_gpu.py
/openbmc/qemu/tests/tcg/Makefile.target
/openbmc/qemu/tests/tcg/multiarch/Makefile.target
/openbmc/qemu/tests/tcg/multiarch/system/Makefile.softmmu-target
/openbmc/qemu/ui/trace-events
/openbmc/qemu/ui/vnc.c
/openbmc/qemu/util/log.c
df3614b711-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: Enable lower level contexts on VP push

When pushing a context, the lower-level context becomes valid if it
had V=1, and so on. Iterate lower level contexts and send them
pending interrupt

ppc/xive2: Enable lower level contexts on VP push

When pushing a context, the lower-level context becomes valid if it
had V=1, and so on. Iterate lower level contexts and send them
pending interrupts if they become enabled.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-51-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

3a50f36411-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive: Split need_resend into restore_nvp

This is needed by the next patch which will re-send on all lower
rings when pushing a context.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Review

ppc/xive: Split need_resend into restore_nvp

This is needed by the next patch which will re-send on all lower
rings when pushing a context.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-50-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

714bae7311-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: Implement PHYS ring VP push TIMA op

Implement the phys (aka hard) VP push. PowerVM uses this operation.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <miles

ppc/xive2: Implement PHYS ring VP push TIMA op

Implement the phys (aka hard) VP push. PowerVM uses this operation.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-49-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

f030f35111-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: Implement POOL LGS push TIMA op

Implement set LGS for the POOL ring.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Micha

ppc/xive2: Implement POOL LGS push TIMA op

Implement set LGS for the POOL ring.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-48-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

6ef7784311-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: Implement set_os_pending TIMA op

xive2 must take into account redistribution of group interrupts if
the VP directed priority exceeds the group interrupt priority after
this operation. The

ppc/xive2: Implement set_os_pending TIMA op

xive2 must take into account redistribution of group interrupts if
the VP directed priority exceeds the group interrupt priority after
this operation. The xive1 code is not group aware so implement this
for xive2.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-47-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

6936d2f511-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: redistribute group interrupts on context push

When pushing a context, any presented group interrupt should be
redistributed before processing pending interrupts to present
highest priorit

ppc/xive2: redistribute group interrupts on context push

When pushing a context, any presented group interrupt should be
redistributed before processing pending interrupts to present
highest priority.

This can occur when pushing the POOL ring when the valid PHYS
ring has a group interrupt presented, because they share signal
registers.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-46-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

ba127a1e11-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: Implement pool context push TIMA op

Implement pool context push TIMA op.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: M

ppc/xive2: Implement pool context push TIMA op

Implement pool context push TIMA op.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-45-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

ca0081ef11-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive: Check TIMA operations validity

Certain TIMA operations should only be performed when a ring is valid,
others when the ring is invalid, and they are considered undefined if
used incorrectly

ppc/xive: Check TIMA operations validity

Certain TIMA operations should only be performed when a ring is valid,
others when the ring is invalid, and they are considered undefined if
used incorrectly. Add checks for this condition.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-44-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

565e6d4d11-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive: Redistribute phys after pulling of pool context

After pulling the pool context, if a pool irq had been presented and
was cleared in the process, there could be a pending irq in phys that
s

ppc/xive: Redistribute phys after pulling of pool context

After pulling the pool context, if a pool irq had been presented and
was cleared in the process, there could be a pending irq in phys that
should be presented. Process the phys irq ring after pulling pool ring
to catch this case and avoid losing irqs.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-43-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

7a40b50711-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: Prevent pulling of pool context losing phys interrupt

When the pool context is pulled, the shared pool/phys signal is
reset, which loses the qemu irq if a phys interrupt was presented.

O

ppc/xive2: Prevent pulling of pool context losing phys interrupt

When the pool context is pulled, the shared pool/phys signal is
reset, which loses the qemu irq if a phys interrupt was presented.

Only reset the signal if a poll irq was presented.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-42-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

365e322c11-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: implement NVP context save restore for POOL ring

In preparation to implement POOL context push, add support for POOL
NVP context save/restore.

The NVP p bit is defined in the spec as fol

ppc/xive2: implement NVP context save restore for POOL ring

In preparation to implement POOL context push, add support for POOL
NVP context save/restore.

The NVP p bit is defined in the spec as follows:

If TRUE, the CPPR of a Pool VP in the NVP is updated during store of
the context with the CPPR of the Hard context it was running under.

It's not clear whether non-pool VPs always or never get CPPR updated.
Before this patch, OS contexts always save CPPR, so we will assume that
is the behaviour.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-41-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

203181ce11-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive: Assert group interrupts were redistributed

Add some assertions to try to ensure presented group interrupts do
not get lost without being redistributed, if they become precluded
by CPPR or

ppc/xive: Assert group interrupts were redistributed

Add some assertions to try to ensure presented group interrupts do
not get lost without being redistributed, if they become precluded
by CPPR or preempted by a higher priority interrupt.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-40-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

370ea4a411-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: Avoid needless interrupt re-check on CPPR set

When CPPR priority is decreased, pending interrupts do not need to be
re-checked if one is already presented because by definition that will

ppc/xive2: Avoid needless interrupt re-check on CPPR set

When CPPR priority is decreased, pending interrupts do not need to be
re-checked if one is already presented because by definition that will
be the highest priority.

This prevents a presented group interrupt from being lost.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-39-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

04627e2211-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: Consolidate presentation processing in context push

OS-push operation must re-present pending interrupts. Use the
newly created xive2_tctx_process_pending() function instead of
duplicatin

ppc/xive2: Consolidate presentation processing in context push

OS-push operation must re-present pending interrupts. Use the
newly created xive2_tctx_process_pending() function instead of
duplicating the logic.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-38-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

384f036511-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive2: split tctx presentation processing from set CPPR

The second part of the set CPPR operation is to process (or re-present)
any pending interrupts after CPPR is adjusted.

Split this present

ppc/xive2: split tctx presentation processing from set CPPR

The second part of the set CPPR operation is to process (or re-present)
any pending interrupts after CPPR is adjusted.

Split this presentation processing out into a standalone function that
can be used in other places.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-37-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

64a18e0c11-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive: Add xive_tctx_pipr_set() helper function

Have xive_tctx_notify() also set the new PIPR value and rename it to
xive_tctx_pipr_set(). This can replace the last xive_tctx_pipr_update()
caller

ppc/xive: Add xive_tctx_pipr_set() helper function

Have xive_tctx_notify() also set the new PIPR value and rename it to
xive_tctx_pipr_set(). This can replace the last xive_tctx_pipr_update()
caller because it does not need to update IPB (it already sets it).

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-36-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

cf454eaa11-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive: tctx_accept only lower irq line if an interrupt was presented

The relationship between an interrupt signaled in the TIMA and the QEMU
irq line to the processor to be 1:1, so they should be

ppc/xive: tctx_accept only lower irq line if an interrupt was presented

The relationship between an interrupt signaled in the TIMA and the QEMU
irq line to the processor to be 1:1, so they should be raised and
lowered together and "just in case" lowering should be avoided (it could
mask

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-35-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

581bec5a11-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive: tctx signaling registers rework

The tctx "signaling" registers (PIPR, CPPR, NSR) raise an interrupt on
the target CPU thread. The POOL and PHYS rings both raise hypervisor
interrupts, so t

ppc/xive: tctx signaling registers rework

The tctx "signaling" registers (PIPR, CPPR, NSR) raise an interrupt on
the target CPU thread. The POOL and PHYS rings both raise hypervisor
interrupts, so they both share one set of signaling registers in the
PHYS ring. The PHYS NSR register contains a field that indicates which
ring has presented the interrupt being signaled to the CPU.

This sharing results in all the "alt_regs" throughout the code. alt_regs
is not very descriptive, and worse is that the name is used for
conversions in both directions, i.e., to find the presenting ring from
the signaling ring, and the signaling ring from the presenting ring.

Instead of alt_regs, use the names sig_regs and sig_ring, and regs and
ring for the presenting ring being worked on. Add a helper function to
get the sign_regs, and add some asserts to ensure the POOL regs are
never used to signal interrupts.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-34-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

3516b9b611-May-2025 Nicholas Piggin <npiggin@gmail.com>

ppc/xive: Split xive recompute from IPB function

Further split xive_tctx_pipr_update() by splitting out a new function
that is used to re-compute the PIPR from IPB. This is generally only
used with

ppc/xive: Split xive recompute from IPB function

Further split xive_tctx_pipr_update() by splitting out a new function
that is used to re-compute the PIPR from IPB. This is generally only
used with XIVE1, because group interrputs require more logic.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-33-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

12345678910>>...74