History log of /openbmc/qemu/hw/intc/ (Results 126 – 150 of 1836)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
7988ac0810-Mar-2025 Glenn Miles <milesg@linux.ibm.com>

pnv/xive2: Rename nvp_ to nvx_ if they can refer to NVP or NVGC

The blk/index in some paths may refer to an NVP or an NVGC. When it
is not known ahead of time, use the nvx_ prefix to prevent confusi

pnv/xive2: Rename nvp_ to nvx_ if they can refer to NVP or NVGC

The blk/index in some paths may refer to an NVP or an NVGC. When it
is not known ahead of time, use the nvx_ prefix to prevent confusion.

[npiggin: split out of larger fix patch and reworded]
Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...

1a3cc12010-Mar-2025 Frederic Barrat <fbarrat@linux.ibm.com>

ppc/xive2: Support crowd-matching when looking for target

XIVE crowd sizes are encoded into a 2-bit field as follows:
0: 0b00
2: 0b01
4: 0b10
16: 0b11

A crowd size of 8 is not supported.

If

ppc/xive2: Support crowd-matching when looking for target

XIVE crowd sizes are encoded into a 2-bit field as follows:
0: 0b00
2: 0b01
4: 0b10
16: 0b11

A crowd size of 8 is not supported.

If an END is defined with the 'crowd' bit set, then a target can be
running on different blocks. It means that some bits from the block
VP are masked when looking for a match. It is similar to groups, but
on the block instead of the VP index.

Most of the changes are due to passing the extra argument 'crowd' all
the way to the function checking for matches.

Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com>
Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...

96a2132c10-Mar-2025 Frederic Barrat <fbarrat@linux.ibm.com>

ppc/xive2: Add support for MMIO operations on the NVPG/NVC BAR

Add support for the NVPG and NVC BARs. Access to the BAR pages will
cause backlog counter operations to either increment or decriment

ppc/xive2: Add support for MMIO operations on the NVPG/NVC BAR

Add support for the NVPG and NVC BARs. Access to the BAR pages will
cause backlog counter operations to either increment or decriment
the counter.

Also added qtests for the same.

Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...

26c55b9910-Mar-2025 Frederic Barrat <fbarrat@linux.ibm.com>

ppc/xive2: Process group backlog when updating the CPPR

When the hypervisor or OS pushes a new value to the CPPR, if the LSMFB
value is lower than the new CPPR value, there could be a pending group

ppc/xive2: Process group backlog when updating the CPPR

When the hypervisor or OS pushes a new value to the CPPR, if the LSMFB
value is lower than the new CPPR value, there could be a pending group
interrupt in the backlog, so it needs to be scanned.

Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...

071456d010-Mar-2025 Frederic Barrat <fbarrat@linux.ibm.com>

ppc/xive2: Process group backlog when pushing an OS context

When pushing an OS context, we were already checking if there was a
pending interrupt in the IPB and sending a notification if needed. We

ppc/xive2: Process group backlog when pushing an OS context

When pushing an OS context, we were already checking if there was a
pending interrupt in the IPB and sending a notification if needed. We
also need to check if there is a pending group interrupt stored in the
NVG table. To avoid useless backlog scans, we only scan if the NVP
belongs to a group.

Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...

58fa443310-Mar-2025 Frederic Barrat <fbarrat@linux.ibm.com>

ppc/xive2: Add undelivered group interrupt to backlog

When a group interrupt cannot be delivered, we need to:
- increment the backlog counter for the group in the NVG table
(if the END is configur

ppc/xive2: Add undelivered group interrupt to backlog

When a group interrupt cannot be delivered, we need to:
- increment the backlog counter for the group in the NVG table
(if the END is configured to keep a backlog).
- start a broadcast operation to set the LSMFB field on matching CPUs
which can't take the interrupt now because they're running at too
high a priority.

[npiggin: squash in fixes from milesg]
[milesg: only load the NVP if the END is !ignore]
[milesg: always broadcast backlog, not only when there are precluded VPs]

Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...

9cb7f6eb10-Mar-2025 Frederic Barrat <fbarrat@linux.ibm.com>

ppc/xive2: Support group-matching when looking for target

If an END has the 'i' bit set (ignore), then it targets a group of
VPs. The size of the group depends on the VP index of the target
(first 0

ppc/xive2: Support group-matching when looking for target

If an END has the 'i' bit set (ignore), then it targets a group of
VPs. The size of the group depends on the VP index of the target
(first 0 found when looking at the least significant bits of the
index) so a mask is applied on the VP index of a running thread to
know if we have a match.

Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...

9d2b605810-Mar-2025 Frederic Barrat <fbarrat@linux.ibm.com>

ppc/xive2: Add grouping level to notification

The NSR has a (so far unused) grouping level field. When a interrupt
is presented, that field tells the hypervisor or OS if the interrupt
is for an indi

ppc/xive2: Add grouping level to notification

The NSR has a (so far unused) grouping level field. When a interrupt
is presented, that field tells the hypervisor or OS if the interrupt
is for an individual VP or for a VP-group/crowd. This patch reworks
the presentation API to allow to set/unset the level when
raising/accepting an interrupt.

It also renames xive_tctx_ipb_update() to xive_tctx_pipr_update() as
the IPB is only used for VP-specific target, whereas the PIPR always
needs to be updated.

Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...

a45580ad10-Mar-2025 Michael Kowal <kowal@linux.ibm.com>

ppc/xive: Rename ipb_to_pipr() to xive_ipb_to_pipr()

Rename to follow the convention of the other function names.

Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <np

ppc/xive: Rename ipb_to_pipr() to xive_ipb_to_pipr()

Rename to follow the convention of the other function names.

Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...

19db3b5a10-Mar-2025 Frederic Barrat <fbarrat@linux.ibm.com>

ppc/xive2: Update NVP save/restore for group attributes

If the 'H' attribute is set on the NVP structure, the hardware
automatically saves and restores some attributes from the TIMA in the
NVP struc

ppc/xive2: Update NVP save/restore for group attributes

If the 'H' attribute is set on the NVP structure, the hardware
automatically saves and restores some attributes from the TIMA in the
NVP structure.

The group-specific attributes LSMFB, LGS and T have an extra flag to
individually control what is saved/restored.

Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Michael Kowal <kowal@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

show more ...


/openbmc/qemu/.gitlab-ci.d/check-units.py
/openbmc/qemu/.gitlab-ci.d/cirrus/freebsd-14.vars
/openbmc/qemu/.gitlab-ci.d/cirrus/macos-14.vars
/openbmc/qemu/.gitlab-ci.d/static_checks.yml
/openbmc/qemu/MAINTAINERS
/openbmc/qemu/accel/accel-target.c
/openbmc/qemu/accel/tcg/tcg-accel-ops.c
/openbmc/qemu/accel/tcg/translate-all.c
/openbmc/qemu/accel/tcg/watchpoint.c
/openbmc/qemu/bsd-user/bsd-mem.h
/openbmc/qemu/bsd-user/meson.build
/openbmc/qemu/bsd-user/mmap.c
/openbmc/qemu/bsd-user/plugin-api.c
/openbmc/qemu/bsd-user/qemu.h
/openbmc/qemu/bsd-user/signal.c
/openbmc/qemu/common-user/plugin-api.c.inc
/openbmc/qemu/contrib/plugins/meson.build
/openbmc/qemu/cpu-common.c
/openbmc/qemu/cpu-target.c
/openbmc/qemu/disas/disas-common.c
/openbmc/qemu/docs/about/deprecated.rst
/openbmc/qemu/docs/about/removed-features.rst
/openbmc/qemu/docs/devel/rust.rst
/openbmc/qemu/docs/specs/aspeed-intc.rst
/openbmc/qemu/docs/specs/index.rst
/openbmc/qemu/docs/system/ppc/embedded.rst
/openbmc/qemu/docs/system/ppc/powernv.rst
/openbmc/qemu/gdbstub/gdbstub.c
/openbmc/qemu/gdbstub/system.c
/openbmc/qemu/gdbstub/user-target.c
/openbmc/qemu/gdbstub/user.c
/openbmc/qemu/hw/acpi/cpu.c
/openbmc/qemu/hw/acpi/cpu_hotplug.c
/openbmc/qemu/hw/arm/aspeed.c
/openbmc/qemu/hw/arm/aspeed_ast27x0.c
/openbmc/qemu/hw/block/xen-block.c
/openbmc/qemu/hw/core/cpu-common.c
/openbmc/qemu/hw/core/cpu-system.c
/openbmc/qemu/hw/core/cpu-user.c
xive2.c
/openbmc/qemu/hw/misc/aspeed_scu.c
/openbmc/qemu/hw/net/net_tx_pkt.c
/openbmc/qemu/hw/pci-host/pnv_phb4_pec.c
/openbmc/qemu/hw/ppc/Kconfig
/openbmc/qemu/hw/ppc/meson.build
/openbmc/qemu/hw/ppc/pnv.c
/openbmc/qemu/hw/ppc/pnv_bmc.c
/openbmc/qemu/hw/ppc/pnv_homer.c
/openbmc/qemu/hw/ppc/pnv_lpc.c
/openbmc/qemu/hw/ppc/pnv_occ.c
/openbmc/qemu/hw/xen/xen-mapcache.c
/openbmc/qemu/hw/xen/xen_pt.c
/openbmc/qemu/include/accel/tcg/cpu-ops.h
/openbmc/qemu/include/exec/memory.h
/openbmc/qemu/include/exec/ramblock.h
/openbmc/qemu/include/hw/arm/aspeed_soc.h
/openbmc/qemu/include/hw/core/cpu.h
/openbmc/qemu/include/hw/core/sysemu-cpu-ops.h
/openbmc/qemu/include/hw/misc/aspeed_scu.h
/openbmc/qemu/include/hw/pci-host/pnv_phb4.h
/openbmc/qemu/include/hw/pci/pci.h
/openbmc/qemu/include/hw/ppc/pnv.h
/openbmc/qemu/include/hw/ppc/pnv_homer.h
/openbmc/qemu/include/hw/ppc/pnv_occ.h
/openbmc/qemu/include/hw/ppc/pnv_pnor.h
/openbmc/qemu/include/hw/ppc/pnv_xscom.h
/openbmc/qemu/include/hw/ppc/xive2_regs.h
/openbmc/qemu/include/qemu/iov.h
/openbmc/qemu/include/qemu/plugin-memory.h
/openbmc/qemu/include/user/mmap.h
/openbmc/qemu/linux-user/alpha/target_proc.h
/openbmc/qemu/linux-user/meson.build
/openbmc/qemu/linux-user/mmap.c
/openbmc/qemu/linux-user/plugin-api.c
/openbmc/qemu/linux-user/signal.c
/openbmc/qemu/linux-user/syscall.c
/openbmc/qemu/linux-user/user-internals.h
/openbmc/qemu/linux-user/user-mmap.h
/openbmc/qemu/meson.build
/openbmc/qemu/meson_options.txt
/openbmc/qemu/migration/migration.c
/openbmc/qemu/migration/ram.c
/openbmc/qemu/migration/savevm.c
/openbmc/qemu/net/net.c
/openbmc/qemu/net/tap-linux.c
/openbmc/qemu/net/vhost-vdpa.c
/openbmc/qemu/pc-bios/README
/openbmc/qemu/pc-bios/meson.build
/openbmc/qemu/pc-bios/pnv-pnor.bin
/openbmc/qemu/pc-bios/skiboot.lid
/openbmc/qemu/pc-bios/slof.bin
/openbmc/qemu/plugins/api-system.c
/openbmc/qemu/plugins/api-user.c
/openbmc/qemu/plugins/api.c
/openbmc/qemu/plugins/core.c
/openbmc/qemu/plugins/loader.c
/openbmc/qemu/plugins/meson.build
/openbmc/qemu/plugins/plugin.h
/openbmc/qemu/plugins/system.c
/openbmc/qemu/plugins/user.c
/openbmc/qemu/roms/skiboot
/openbmc/qemu/rust/Cargo.toml
/openbmc/qemu/rust/hw/char/pl011/src/device.rs
/openbmc/qemu/rust/hw/char/pl011/src/lib.rs
/openbmc/qemu/rust/hw/char/pl011/src/registers.rs
/openbmc/qemu/rust/hw/timer/hpet/src/hpet.rs
/openbmc/qemu/rust/qemu-api-macros/src/lib.rs
/openbmc/qemu/rust/qemu-api/meson.build
/openbmc/qemu/rust/qemu-api/src/bindings.rs
/openbmc/qemu/rust/qemu-api/src/cell.rs
/openbmc/qemu/rust/qemu-api/src/chardev.rs
/openbmc/qemu/rust/qemu-api/src/irq.rs
/openbmc/qemu/rust/qemu-api/src/memory.rs
/openbmc/qemu/rust/qemu-api/src/prelude.rs
/openbmc/qemu/rust/qemu-api/src/qdev.rs
/openbmc/qemu/rust/qemu-api/src/qom.rs
/openbmc/qemu/rust/qemu-api/src/sysbus.rs
/openbmc/qemu/rust/qemu-api/src/timer.rs
/openbmc/qemu/rust/qemu-api/src/vmstate.rs
/openbmc/qemu/rust/qemu-api/src/zeroable.rs
/openbmc/qemu/rust/qemu-api/tests/tests.rs
/openbmc/qemu/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml
/openbmc/qemu/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml
/openbmc/qemu/scripts/meson-buildoptions.py
/openbmc/qemu/scripts/meson-buildoptions.sh
/openbmc/qemu/system/physmem.c
/openbmc/qemu/target/alpha/cpu.c
/openbmc/qemu/target/arm/cpu.c
/openbmc/qemu/target/arm/tcg/cpu-v7m.c
/openbmc/qemu/target/avr/cpu.c
/openbmc/qemu/target/hexagon/cpu.c
/openbmc/qemu/target/hppa/cpu.c
/openbmc/qemu/target/i386/cpu.c
/openbmc/qemu/target/i386/cpu.h
/openbmc/qemu/target/loongarch/cpu.c
/openbmc/qemu/target/m68k/cpu.c
/openbmc/qemu/target/microblaze/cpu.c
/openbmc/qemu/target/mips/cpu.c
/openbmc/qemu/target/mips/internal.h
/openbmc/qemu/target/openrisc/cpu.c
/openbmc/qemu/target/ppc/cpu.h
/openbmc/qemu/target/ppc/cpu_init.c
/openbmc/qemu/target/ppc/helper.h
/openbmc/qemu/target/ppc/misc_helper.c
/openbmc/qemu/target/ppc/spr_common.h
/openbmc/qemu/target/ppc/translate.c
/openbmc/qemu/target/riscv/cpu.c
/openbmc/qemu/target/riscv/internals.h
/openbmc/qemu/target/rx/cpu.c
/openbmc/qemu/target/s390x/cpu-system.c
/openbmc/qemu/target/s390x/cpu.c
/openbmc/qemu/target/s390x/interrupt.c
/openbmc/qemu/target/s390x/s390x-internal.h
/openbmc/qemu/target/sh4/cpu.c
/openbmc/qemu/target/sparc/cpu.c
/openbmc/qemu/target/tricore/cpu.c
/openbmc/qemu/target/xtensa/cpu.c
/openbmc/qemu/tests/docker/dockerfiles/alpine.docker
/openbmc/qemu/tests/docker/dockerfiles/centos9.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-amd64-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-arm64-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-armhf-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-i686-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-mips64el-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-mipsel-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-ppc64el-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-s390x-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian.docker
/openbmc/qemu/tests/docker/dockerfiles/fedora-rust-nightly.docker
/openbmc/qemu/tests/docker/dockerfiles/fedora-win64-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/fedora.docker
/openbmc/qemu/tests/docker/dockerfiles/opensuse-leap.docker
/openbmc/qemu/tests/docker/dockerfiles/ubuntu2204.docker
/openbmc/qemu/tests/functional/meson.build
/openbmc/qemu/tests/functional/qemu_test/__init__.py
/openbmc/qemu/tests/functional/qemu_test/config.py
/openbmc/qemu/tests/functional/qemu_test/testcase.py
/openbmc/qemu/tests/functional/test_aarch64_aspeed.py
/openbmc/qemu/tests/functional/test_aarch64_rme_sbsaref.py
/openbmc/qemu/tests/functional/test_aarch64_rme_virt.py
/openbmc/qemu/tests/functional/test_aarch64_tcg_plugins.py
/openbmc/qemu/tests/functional/test_aarch64_virt.py
/openbmc/qemu/tests/functional/test_aarch64_virt_gpu.py
/openbmc/qemu/tests/lcitool/libvirt-ci
/openbmc/qemu/tests/lcitool/projects/qemu.yml
/openbmc/qemu/tests/lcitool/refresh
/openbmc/qemu/tests/qtest/m48t59-test.c
/openbmc/qemu/tests/qtest/meson.build
/openbmc/qemu/tests/tcg/aarch64/Makefile.target
/openbmc/qemu/tests/tcg/arm/Makefile.target
/openbmc/qemu/tests/tcg/i386/Makefile.target
/openbmc/qemu/tests/tcg/i386/test-avx.c
/openbmc/qemu/tests/tcg/i386/test-i386-adcox.c
/openbmc/qemu/tests/tcg/multiarch/Makefile.target
/openbmc/qemu/tests/tcg/multiarch/linux/test-vma.c
/openbmc/qemu/tests/tcg/plugins/meson.build
/openbmc/qemu/tests/vm/basevm.py
/openbmc/qemu/tests/vm/generated/freebsd.json
/openbmc/qemu/util/iov.c
38ba38d806-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Add Support for AST2700 INTCIO Controller

Introduce a new ast2700 INTCIO class to support AST2700 INTCIO.
Added new register definitions for INTCIO, including enable and status
regis

hw/intc/aspeed: Add Support for AST2700 INTCIO Controller

Introduce a new ast2700 INTCIO class to support AST2700 INTCIO.
Added new register definitions for INTCIO, including enable and status
registers for IRQs GICINT192 through GICINT197.
Created a dedicated IRQ array for INTCIO, supporting six input pins and six
output pins, aligning with the newly defined registers.
Implemented "aspeed_intcio_read" and "aspeed_intcio_write" to handle
INTCIO-specific register access.

To GICINT196 |

ETH1 |-----------| |--------------------------|
-------->|0 | | INTCIO |
ETH2 | 4| orgates[0]------>|inpin[0]-------->outpin[0]|
-------->|1 5| orgates[1]------>|inpin[1]-------->outpin[1]|
ETH3 | 6| orgates[2]------>|inpin[2]-------->outpin[2]|
-------->|2 19| orgates[3]------>|inpin[3]-------->outpin[3]|
UART0 | 20|-->orgates[4]------>|inpin[4]-------->outpin[4]|
-------->|7 21| orgates[5]------>|inpin[5]-------->outpin[5]|
UART1 | 22| |--------------------------|
-------->|8 23|
UART2 | 24|
-------->|9 25|
UART3 | 26|
---------|10 27|
UART5 | 28|
-------->|11 29|
UART6 | |
-------->|12 30|
UART7 | 31|
-------->|13 |
UART8 | OR[0:31] |
-------->|14 |
UART9 | |
-------->|15 |
UART10 | |
-------->|16 |
UART11 | |
-------->|17 |
UART12 | |
-------->|18 |
|-----------|

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-18-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

9178ff9106-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Add Support for Multi-Output IRQ Handling

This update introduces support for handling multi-output IRQs in the AST2700
interrupt controller (INTC), specifically for GICINT192_201. GI

hw/intc/aspeed: Add Support for Multi-Output IRQ Handling

This update introduces support for handling multi-output IRQs in the AST2700
interrupt controller (INTC), specifically for GICINT192_201. GICINT192_201 maps
1:10 to input IRQ 0 and output IRQs 0 to 9. Each status bit corresponds to a
specific IRQ.

Implemented "aspeed_intc_set_irq_handler_multi_outpins" to handle IRQs with
multiple output pins. Introduced "aspeed_intc_status_handler_multi_outpins"
for managing status registers associated with multi-output IRQs.

Added new IRQ definitions for GICINT192_201 in INTC.
Adjusted the IRQ array to accommodate 10 input pins and 19 output pins,
aligning with the new GICINT192_201 mappings.

|------------------------------|
| INTC |
|inpin[0:0]--------->outpin[0] |
|inpin[0:1]--------->outpin[1] |
|inpin[0:2]--------->outpin[2] |
|inpin[0:3]--------->outpin[3] |
orgates[0]-------> |inpin[0:4]--------->outpin[4] |
|inpin[0:5]--------->outpin[5] |
|inpin[0:6]--------->outpin[6] |
|inpin[0:7]--------->outpin[7] |
|inpin[0:8]--------->outpin[8] |
|inpin[0:9]--------->outpin[9] |
| |
orgates[1]------> |inpin[1]----------->outpin[10]|
orgates[2]------> |inpin[2]----------->outpin[11]|
orgates[3]------> |inpin[3]----------->outpin[12]|
orgates[4]------> |inpin[4]----------->outpin[13]|
orgates[5]------> |inpin[5]----------->outpin[14]|
orgates[6]------> |inpin[6]----------->outpin[15]|
orgates[7]------> |inpin[7]----------->outpin[16]|
orgates[8]------> |inpin[8]----------->outpin[17]|
orgates[9]------> |inpin[9]----------->outpin[18]|
|------------------------------|

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-17-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

5824e8bf06-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Introduce IRQ handler function to reduce code duplication

The behavior of the INTC set IRQ is almost identical between INTC and INTCIO.
To reduce duplicated code, introduce the "aspe

hw/intc/aspeed: Introduce IRQ handler function to reduce code duplication

The behavior of the INTC set IRQ is almost identical between INTC and INTCIO.
To reduce duplicated code, introduce the "aspeed_intc_set_irq_handler" function
to handle both INTC and INTCIO IRQ behavior. No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-16-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

ab24c6a206-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Introduce AspeedINTCIRQ structure to save the irq index and register address

The INTC controller supports GICINT128 to GICINT136, mapping 1:1 to input and
output IRQs 0 to 8. Previou

hw/intc/aspeed: Introduce AspeedINTCIRQ structure to save the irq index and register address

The INTC controller supports GICINT128 to GICINT136, mapping 1:1 to input and
output IRQs 0 to 8. Previously, the formula "address & 0x0f00" was used to
derive the IRQ index numbers.

However, the INTC controller also supports GICINT192_201, mapping 1 input IRQ
pin to 10 output IRQ pins. The pin numbers for input and output are different.
It is difficult to use a formula to determine the index number of INTC model
supported input and output IRQs.

To simplify and improve readability, introduces the AspeedINTCIRQ structure to
save the input/output IRQ index and its enable/status register address.

Introduce the "aspeed_2700_intc_irqs" table to store IRQ information for INTC.
Introduce the "aspeed_intc_get_irq" function to retrieve the input/output IRQ
pin index from the provided status/enable register address.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-15-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

c6c5e63d06-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Refactor INTC to support separate input and output pin indices

Refactors the INTC to distinguish between input and output pin indices,
improving interrupt handling clarity and accura

hw/intc/aspeed: Refactor INTC to support separate input and output pin indices

Refactors the INTC to distinguish between input and output pin indices,
improving interrupt handling clarity and accuracy.

Updated the functions to handle both input and output pin indices.
Added detailed logging for input and output pin indices in trace events.

These changes ensure that the INTC controller can handle multiple input and
output pins, improving support for the AST2700 A1.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-14-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

35c909cd06-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Add support for multiple output pins in INTC

Added support for multiple output pins in the INTC controller to
accommodate the AST2700 A1.

Introduced "num_outpins" to represent the n

hw/intc/aspeed: Add support for multiple output pins in INTC

Added support for multiple output pins in the INTC controller to
accommodate the AST2700 A1.

Introduced "num_outpins" to represent the number of output pins. Updated the
IRQ handling logic to initialize and connect output pins separately from input
pins. Modified the "aspeed_soc_ast2700_realize" function to connect source
orgates to INTC and INTC to GIC128 - GIC136. Updated the "aspeed_intc_realize"
function to initialize output pins.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-13-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

63f3618f06-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Rename num_ints to num_inpins for clarity

To support AST2700 A1, some registers of the INTC(CPU Die) support one input
pin to multiple output pins. Renamed "num_ints" to "num_inpins"

hw/intc/aspeed: Rename num_ints to num_inpins for clarity

To support AST2700 A1, some registers of the INTC(CPU Die) support one input
pin to multiple output pins. Renamed "num_ints" to "num_inpins" in the INTC
controller code for better clarity and consistency in naming conventions.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-12-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

28194d5d06-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Support different memory region ops

The previous implementation set the "aspeed_intc_ops" struct, containing read
and write callbacks, to be used when I/O is performed on the INTC re

hw/intc/aspeed: Support different memory region ops

The previous implementation set the "aspeed_intc_ops" struct, containing read
and write callbacks, to be used when I/O is performed on the INTC region.
Both "aspeed_intc_read" and "aspeed_intc_write" callback functions were used
for INTC (CPU Die).

To support the INTCIO (IO Die) model, introduces a new "reg_ops" class
attribute. This allows setting different memory region operations to support
different INTC models.

Will introduce "aspeed_intcio_read" and "aspeed_intcio_write" callback
functions are used for INTCIO.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-11-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

49da40cf06-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Add object type name to trace events for better debugging

Currently, these trace events only refer to INTC. To simplify the INTC model,
both INTC(CPU Die) and INTCIO(IO Die) will sha

hw/intc/aspeed: Add object type name to trace events for better debugging

Currently, these trace events only refer to INTC. To simplify the INTC model,
both INTC(CPU Die) and INTCIO(IO Die) will share the same helper functions.

However, it is difficult to recognize whether these trace events are comes from
INTC or INTCIO. To make these trace events more readable, adds object type name
to the INTC trace events.
Update trace events to include the "name" field for better identification.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-8-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

3d6e15ea06-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Introduce helper functions for enable and status registers

The behavior of the enable and status registers is almost identical between
INTC(CPU Die) and INTCIO(IO Die). To reduce dup

hw/intc/aspeed: Introduce helper functions for enable and status registers

The behavior of the enable and status registers is almost identical between
INTC(CPU Die) and INTCIO(IO Die). To reduce duplicated code, adds
"aspeed_intc_enable_handler" functions to handle enable register write
behavior and "aspeed_intc_status_handler" functions to handle status
register write behavior. No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-7-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

7ffee51106-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Reduce regs array size by adding a register sub-region

Currently, the size of the "regs" array is 0x2000, which is too large. So far,
it only uses "GICINT128 to `GICINT134", and the

hw/intc/aspeed: Reduce regs array size by adding a register sub-region

Currently, the size of the "regs" array is 0x2000, which is too large. So far,
it only uses "GICINT128 to `GICINT134", and the offsets from 0 to 0x1000 are
unused. To save code size and avoid mapping large unused gaps, update to only
map the useful set of registers:

INTC register [0x1000 – 0x1804]

Update "reg_size" to 0x808. Introduce a new class attribute "reg_offset" to set
the start offset of a "INTC" sub-region. Set the "reg_offset" to 0x1000 for INTC
registers.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-6-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

b008465d06-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Support setting different register size

Currently, the size of the regs array is 0x2000, which is too large. So far,
it only use GICINT128 - GICINT134, and the offsets from 0 to 0x10

hw/intc/aspeed: Support setting different register size

Currently, the size of the regs array is 0x2000, which is too large. So far,
it only use GICINT128 - GICINT134, and the offsets from 0 to 0x1000 are unused.
To save code size, introduce a new class attribute "reg_size" to set the
different register sizes for the INTC models in AST2700 and add a regs
sub-region in the memory container.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-5-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

563afea006-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Introduce dynamic allocation for regs array

Currently, the size of the "regs" array is 0x2000, which is too large. To save
code size and avoid mapping large unused gaps, will update

hw/intc/aspeed: Introduce dynamic allocation for regs array

Currently, the size of the "regs" array is 0x2000, which is too large. To save
code size and avoid mapping large unused gaps, will update it to only map the
useful set of registers. This update will support multiple sub-regions with
different sizes.

To address the redundant size issue, replace the static "regs" array with a
dynamically allocated "regs" memory.

Introduce a new "aspeed_intc_unrealize" function to free the allocated "regs"
memory.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-4-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

0cffaace06-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Rename status_addr and addr to status_reg and reg for clarity

Rename the variables "status_addr" to "status_reg" and "addr" to "reg" because
they are used as register index. This cha

hw/intc/aspeed: Rename status_addr and addr to status_reg and reg for clarity

Rename the variables "status_addr" to "status_reg" and "addr" to "reg" because
they are used as register index. This change makes the code more appropriate
and improves readability.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-3-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...

c5728c3406-Mar-2025 Jamin Lin <jamin_lin@aspeedtech.com>

hw/intc/aspeed: Support setting different memory size

According to the AST2700 datasheet, the INTC(CPU DIE) controller has 16KB
(0x4000) of register space, and the INTCIO (I/O DIE) controller has 1K

hw/intc/aspeed: Support setting different memory size

According to the AST2700 datasheet, the INTC(CPU DIE) controller has 16KB
(0x4000) of register space, and the INTCIO (I/O DIE) controller has 1KB (0x400)
of register space.

Introduced a new class attribute "mem_size" to set different memory sizes for
the INTC models in AST2700.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250307035945.3698802-2-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>

show more ...


/openbmc/qemu/MAINTAINERS
/openbmc/qemu/accel/tcg/meson.build
/openbmc/qemu/accel/tcg/tb-internal.h
/openbmc/qemu/accel/tcg/tcg-accel-ops-icount.c
/openbmc/qemu/accel/tcg/tcg-accel-ops-mttcg.c
/openbmc/qemu/accel/tcg/tcg-accel-ops-rr.c
/openbmc/qemu/accel/tcg/tcg-runtime-gvec.c
/openbmc/qemu/accel/tcg/tcg-runtime.c
/openbmc/qemu/docs/devel/testing/functional.rst
/openbmc/qemu/host/include/aarch64/host/atomic128-cas.h
/openbmc/qemu/host/include/aarch64/host/atomic128-ldst.h.inc
/openbmc/qemu/host/include/generic/host/atomic128-cas.h.inc
/openbmc/qemu/host/include/generic/host/atomic128-ldst.h.inc
/openbmc/qemu/host/include/loongarch64/host/atomic128-ldst.h.inc
/openbmc/qemu/host/include/x86_64/host/atomic128-ldst.h.inc
/openbmc/qemu/host/include/x86_64/host/load-extract-al16-al8.h.inc
/openbmc/qemu/hw/arm/aspeed.c
/openbmc/qemu/hw/arm/aspeed_ast10x0.c
/openbmc/qemu/hw/arm/aspeed_ast2400.c
/openbmc/qemu/hw/arm/aspeed_ast2600.c
/openbmc/qemu/hw/arm/aspeed_ast27x0.c
/openbmc/qemu/hw/arm/sbsa-ref.c
/openbmc/qemu/hw/arm/smmu-common.c
/openbmc/qemu/hw/arm/smmu-internal.h
/openbmc/qemu/hw/arm/smmuv3.c
/openbmc/qemu/hw/arm/trace-events
/openbmc/qemu/hw/arm/virt.c
/openbmc/qemu/hw/gpio/npcm7xx_gpio.c
aspeed_intc.c
/openbmc/qemu/hw/misc/aspeed_hace.c
/openbmc/qemu/hw/misc/aspeed_scu.c
/openbmc/qemu/hw/s390x/s390-pci-bus.c
/openbmc/qemu/hw/s390x/s390-pci-inst.c
/openbmc/qemu/hw/s390x/s390-pci-vfio.c
/openbmc/qemu/hw/s390x/s390-virtio-ccw.c
/openbmc/qemu/include/accel/tcg/getpc.h
/openbmc/qemu/include/exec/exec-all.h
/openbmc/qemu/include/exec/memop.h
/openbmc/qemu/include/hw/arm/aspeed_soc.h
/openbmc/qemu/include/hw/arm/bsa.h
/openbmc/qemu/include/hw/arm/smmu-common.h
/openbmc/qemu/include/hw/intc/aspeed_intc.h
/openbmc/qemu/include/hw/misc/aspeed_hace.h
/openbmc/qemu/include/hw/s390x/s390-pci-bus.h
/openbmc/qemu/include/hw/s390x/s390-pci-clp.h
/openbmc/qemu/include/qemu/atomic128.h
/openbmc/qemu/system/meson.build
/openbmc/qemu/target/arm/cpu.c
/openbmc/qemu/target/arm/cpu.h
/openbmc/qemu/target/arm/debug_helper.c
/openbmc/qemu/target/arm/gtimer.h
/openbmc/qemu/target/arm/helper.c
/openbmc/qemu/target/arm/internals.h
/openbmc/qemu/target/arm/tcg/op_helper.c
/openbmc/qemu/target/arm/tcg/translate.c
/openbmc/qemu/target/loongarch/cpu.c
/openbmc/qemu/target/loongarch/helper.h
/openbmc/qemu/target/loongarch/internals.h
/openbmc/qemu/target/loongarch/tcg/csr_helper.c
/openbmc/qemu/target/loongarch/tcg/insn_trans/trans_privileged.c.inc
/openbmc/qemu/target/loongarch/tcg/tlb_helper.c
/openbmc/qemu/target/rx/helper.c
/openbmc/qemu/target/rx/helper.h
/openbmc/qemu/tests/functional/aspeed.py
/openbmc/qemu/tests/functional/meson.build
/openbmc/qemu/tests/functional/qemu_test/linuxkernel.py
/openbmc/qemu/tests/functional/qemu_test/testcase.py
/openbmc/qemu/tests/functional/qemu_test/tuxruntest.py
/openbmc/qemu/tests/functional/qemu_test/uncompress.py
/openbmc/qemu/tests/functional/test_arm_aspeed_bletchley.py
/openbmc/qemu/tests/functional/test_arm_aspeed_palmetto.py
/openbmc/qemu/tests/functional/test_arm_aspeed_romulus.py
/openbmc/qemu/tests/functional/test_arm_aspeed_witherspoon.py
/openbmc/qemu/tests/functional/test_arm_sx1.py
/openbmc/qemu/tests/functional/test_intel_iommu.py
/openbmc/qemu/tests/functional/test_mem_addr_space.py
/openbmc/qemu/tests/functional/test_mips_malta.py
/openbmc/qemu/tests/functional/test_ppc64_tuxrun.py
/openbmc/qemu/tests/functional/test_virtio_balloon.py
/openbmc/qemu/util/qemu-timer.c

12345678910>>...74