History log of /openbmc/qemu/hw/intc/ (Results 601 – 625 of 1839)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
961b491222-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Implement MOVI

Implement the ITS MOVI command. This command specifies a (physical) LPI
by DeviceID and EventID and provides a new ICID for it. The ITS must
find the interrupt

hw/intc/arm_gicv3_its: Implement MOVI

Implement the ITS MOVI command. This command specifies a (physical) LPI
by DeviceID and EventID and provides a new ICID for it. The ITS must
find the interrupt translation table entry for the LPI, which will
tell it the old ICID. It then moves the pending state of the LPI from
the old redistributor to the new one and updates the ICID field in
the translation table entry.

This is another GICv3 ITS command that we forgot to implement. Linux
does use this one, but only if the guest powers off one of its CPUs.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-15-peter.maydell@linaro.org

show more ...

f6d1d9b422-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Implement MOVALL

Implement the ITS MOVALL command, which takes all the pending
interrupts on a source redistributor and makes the not-pending on
that source redistributor and

hw/intc/arm_gicv3_its: Implement MOVALL

Implement the ITS MOVALL command, which takes all the pending
interrupts on a source redistributor and makes the not-pending on
that source redistributor and pending on a destination redistributor.

This is a GICv3 ITS command which we forgot to implement. (It is
not used by Linux guests.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-14-peter.maydell@linaro.org

show more ...

8b8bb01422-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Check table bounds against correct limit

Currently when we fill in a TableDesc based on the value the guest
has written to the GITS_BASER<n> register, we calculate both:
* nu

hw/intc/arm_gicv3_its: Check table bounds against correct limit

Currently when we fill in a TableDesc based on the value the guest
has written to the GITS_BASER<n> register, we calculate both:
* num_entries : the number of entries in the table, constrained
by the amount of memory the guest has given it
* num_ids : the number of IDs we support for this table,
constrained by the implementation choices and the architecture
(eg DeviceIDs are 16 bits, so num_ids is 1 << 16)

When validating ITS commands, however, we check only num_ids,
thus allowing a broken guest to specify table entries that
index off the end of it. This will only corrupt guest memory,
but the ITS is supposed to reject such commands as invalid.

Instead of calculating both num_entries and num_ids, set
num_entries to the minimum of the two limits, and check that.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-13-peter.maydell@linaro.org

show more ...

0ffe88e622-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Make GITS_BASER<n> RAZ/WI for unimplemented registers

The ITS has a bank of 8 GITS_BASER<n> registers, which allow the
guest to specify the base address of various data tables

hw/intc/arm_gicv3_its: Make GITS_BASER<n> RAZ/WI for unimplemented registers

The ITS has a bank of 8 GITS_BASER<n> registers, which allow the
guest to specify the base address of various data tables. Each
register has a read-only type field indicating which table it is for
and a read-write field where the guest can write in the base address
(among other things). We currently allow the guest to write the
writeable fields for all eight registers, even if the type field is 0
indicating "Unimplemented". This means the guest can provoke QEMU
into asserting by writing an address into one of these unimplemented
base registers, which bypasses the "if (!value) continue" check in
extract_table_params() and lets us hit the assertion that the type
field is one of the permitted table types.

Prevent the assertion by not allowing the guest to write to the
unimplemented base registers. This means their value will remain 0
and extract_table_params() will ignore them.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-12-peter.maydell@linaro.org

show more ...

7e062b9822-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Provide read accessor for translation_ops

The MemoryRegionOps gicv3_its_translation_ops currently provides only
a .write_with_attrs function, because the only register in this

hw/intc/arm_gicv3_its: Provide read accessor for translation_ops

The MemoryRegionOps gicv3_its_translation_ops currently provides only
a .write_with_attrs function, because the only register in this
region is the write-only GITS_TRANSLATER. However, if you don't
provide a read function and the guest tries reading from this memory
region, QEMU will crash because
memory_region_read_with_attrs_accessor() calls a NULL pointer.

Add a read function which always returns 0, to cover both bogus
attempts to read GITS_TRANSLATER and also reads from the rest of the
region, which is documented to be reserved, RES0.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-11-peter.maydell@linaro.org

show more ...

1611956b22-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3: Set GICR_CTLR.CES if LPIs are supported

The GICR_CTLR.CES bit is a read-only bit which is set to 1 to indicate
that the GICR_CTLR.EnableLPIs bit can be written to 0 to disable
LPI

hw/intc/arm_gicv3: Set GICR_CTLR.CES if LPIs are supported

The GICR_CTLR.CES bit is a read-only bit which is set to 1 to indicate
that the GICR_CTLR.EnableLPIs bit can be written to 0 to disable
LPIs (as opposed to allowing LPIs to be enabled but not subsequently
disabled). Our implementation permits this, so advertise it
by setting CES to 1.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-10-peter.maydell@linaro.org

show more ...

d7d19c0a22-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_redist: Remove unnecessary zero checks

The ITS-related parts of the redistributor code make some checks for
whether registers like GICR_PROPBASER and GICR_PENDBASER are zero.
There

hw/intc/arm_gicv3_redist: Remove unnecessary zero checks

The ITS-related parts of the redistributor code make some checks for
whether registers like GICR_PROPBASER and GICR_PENDBASER are zero.
There is no requirement in the specification for treating zeroes in
these address registers specially -- they contain guest physical
addresses and it is entirely valid (if unusual) for the guest to
choose to put the tables they address at guest physical address zero.
We use these values only to calculate guest addresses, and attempts
by the guest to use a bad address will be handled by the
address_space_* functions which we use to do the loads and stores.

Remove the unnecessary checks.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-9-peter.maydell@linaro.org

show more ...

714d8bde22-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Sort ITS command list into numeric order

The list of #defines for the ITS command packet numbers is neither
in alphabetical nor numeric order. Sort it into numeric order.

Sig

hw/intc/arm_gicv3_its: Sort ITS command list into numeric order

The list of #defines for the ITS command packet numbers is neither
in alphabetical nor numeric order. Sort it into numeric order.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-8-peter.maydell@linaro.org

show more ...

7030907722-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3: Honour GICD_CTLR.EnableGrp1NS for LPIs

The GICD_CTLR distributor register has enable bits which control
whether the different interrupt groups (Group 0, Non-secure Group 1
and Sec

hw/intc/arm_gicv3: Honour GICD_CTLR.EnableGrp1NS for LPIs

The GICD_CTLR distributor register has enable bits which control
whether the different interrupt groups (Group 0, Non-secure Group 1
and Secure Group 1) are forwarded to the CPU. We get this right for
traditional interrupts, but forgot to account for it when adding
LPIs. LPIs are always Group 1 NS and if the EnableGrp1NS bit is not
set we must not forward them to the CPU.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-7-peter.maydell@linaro.org

show more ...

0cc38f3522-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Don't clear GITS_CWRITER on writes to GITS_CBASER

The ITS specification says that when the guest writes to GITS_CBASER
this causes GITS_CREADR to be cleared. However it does

hw/intc/arm_gicv3_its: Don't clear GITS_CWRITER on writes to GITS_CBASER

The ITS specification says that when the guest writes to GITS_CBASER
this causes GITS_CREADR to be cleared. However it does not have an
equivalent clause for GITS_CWRITER. (This is because GITS_CREADR is
read-only, but GITS_CWRITER is writable and the guest can initialize
it.) Remove the code that clears GITS_CWRITER on GITS_CBASER writes.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-6-peter.maydell@linaro.org

show more ...

1e794a3b22-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Don't clear GITS_CREADR when GITS_CTLR.ENABLED is set

The current ITS code clears GITS_CREADR when GITS_CTLR.ENABLED is set.
This is not correct -- guest code can validly clea

hw/intc/arm_gicv3_its: Don't clear GITS_CREADR when GITS_CTLR.ENABLED is set

The current ITS code clears GITS_CREADR when GITS_CTLR.ENABLED is set.
This is not correct -- guest code can validly clear ENABLED and then
set it again and expect the ITS to continue processing where it left
off. Remove the erroneous assignment.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-5-peter.maydell@linaro.org

show more ...

e5ff041f22-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3: Initialise dma_as in GIC, not ITS

In our implementation, all ITSes connected to a GIC share a single
AddressSpace, which we keep in the GICv3State::dma_as field and
initialized ba

hw/intc/arm_gicv3: Initialise dma_as in GIC, not ITS

In our implementation, all ITSes connected to a GIC share a single
AddressSpace, which we keep in the GICv3State::dma_as field and
initialized based on the GIC's 'sysmem' property. The right place
to set it up by calling address_space_init() is therefore in the
GIC's realize method, not the ITS's realize.

This fixes a theoretical bug where QEMU hangs on startup if the board
model creates two ITSes connected to the same GIC -- we would call
address_space_init() twice on the same AddressSpace*, which creates
an infinite loop in the QTAILQ that softmmu/memory.c uses to store
its list of AddressSpaces and causes any subsequent attempt to
iterate through that list to loop forever. There aren't any board
models like that in the tree at the moment, though.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-4-peter.maydell@linaro.org

show more ...

195209d322-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Add tracepoints

The ITS currently has no tracepoints; add a minimal set
that allows basic monitoring of guest register accesses and
reading of commands from the command queue.

hw/intc/arm_gicv3_its: Add tracepoints

The ITS currently has no tracepoints; add a minimal set
that allows basic monitoring of guest register accesses and
reading of commands from the command queue.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-3-peter.maydell@linaro.org

show more ...


/openbmc/qemu/.gitlab-ci.d/opensbi.yml
/openbmc/qemu/MAINTAINERS
/openbmc/qemu/docs/conf.py
/openbmc/qemu/docs/devel/qapi-code-gen.rst
/openbmc/qemu/docs/devel/tracing.rst
/openbmc/qemu/hw/arm/armv7m.c
/openbmc/qemu/hw/arm/omap1.c
/openbmc/qemu/hw/arm/pxa2xx.c
/openbmc/qemu/hw/arm/strongarm.c
/openbmc/qemu/hw/arm/xlnx-versal-virt.c
/openbmc/qemu/hw/arm/xlnx-versal.c
/openbmc/qemu/hw/block/m25p80.c
/openbmc/qemu/hw/char/exynos4210_uart.c
/openbmc/qemu/hw/char/riscv_htif.c
/openbmc/qemu/hw/dma/xlnx_csu_dma.c
/openbmc/qemu/hw/i386/xen/xen-hvm.c
/openbmc/qemu/hw/i386/xen/xen-mapcache.c
arm_gicv3_its.c
trace-events
/openbmc/qemu/hw/misc/mac_via.c
/openbmc/qemu/hw/misc/macio/cuda.c
/openbmc/qemu/hw/misc/macio/pmu.c
/openbmc/qemu/hw/misc/meson.build
/openbmc/qemu/hw/misc/xlnx-versal-pmc-iou-slcr.c
/openbmc/qemu/hw/ppc/spapr_rtc.c
/openbmc/qemu/hw/riscv/spike.c
/openbmc/qemu/hw/rtc/allwinner-rtc.c
/openbmc/qemu/hw/rtc/aspeed_rtc.c
/openbmc/qemu/hw/rtc/ds1338.c
/openbmc/qemu/hw/rtc/exynos4210_rtc.c
/openbmc/qemu/hw/rtc/goldfish_rtc.c
/openbmc/qemu/hw/rtc/m41t80.c
/openbmc/qemu/hw/rtc/m48t59.c
/openbmc/qemu/hw/rtc/mc146818rtc.c
/openbmc/qemu/hw/rtc/pl031.c
/openbmc/qemu/hw/rtc/twl92230.c
/openbmc/qemu/hw/rtc/xlnx-zynqmp-rtc.c
/openbmc/qemu/hw/s390x/tod-tcg.c
/openbmc/qemu/hw/scsi/megasas.c
/openbmc/qemu/hw/ssi/meson.build
/openbmc/qemu/hw/ssi/xlnx-versal-ospi.c
/openbmc/qemu/include/hw/arm/xlnx-versal.h
/openbmc/qemu/include/hw/char/riscv_htif.h
/openbmc/qemu/include/hw/dma/xlnx_csu_dma.h
/openbmc/qemu/include/hw/misc/xlnx-versal-pmc-iou-slcr.h
/openbmc/qemu/include/hw/riscv/boot.h
/openbmc/qemu/include/hw/riscv/spike.h
/openbmc/qemu/include/hw/ssi/xlnx-versal-ospi.h
/openbmc/qemu/include/qemu-common.h
/openbmc/qemu/include/sysemu/rtc.h
/openbmc/qemu/meson.build
/openbmc/qemu/net/dump.c
/openbmc/qemu/pc-bios/meson.build
/openbmc/qemu/python/Makefile
/openbmc/qemu/python/README.rst
/openbmc/qemu/python/avocado.cfg
/openbmc/qemu/python/qemu/aqmp/__init__.py
/openbmc/qemu/python/qemu/aqmp/error.py
/openbmc/qemu/python/qemu/aqmp/events.py
/openbmc/qemu/python/qemu/aqmp/legacy.py
/openbmc/qemu/python/qemu/aqmp/protocol.py
/openbmc/qemu/python/qemu/aqmp/qmp_client.py
/openbmc/qemu/python/qemu/aqmp/qmp_shell.py
/openbmc/qemu/python/qemu/utils/qemu_ga_client.py
/openbmc/qemu/python/qemu/utils/qom.py
/openbmc/qemu/python/qemu/utils/qom_common.py
/openbmc/qemu/python/qemu/utils/qom_fuse.py
/openbmc/qemu/python/setup.cfg
/openbmc/qemu/qapi/audio.json
/openbmc/qemu/qapi/compat.json
/openbmc/qemu/qapi/meson.build
/openbmc/qemu/qapi/replay.json
/openbmc/qemu/qapi/trace.json
/openbmc/qemu/qga/meson.build
/openbmc/qemu/roms/Makefile
/openbmc/qemu/scripts/cpu-x86-uarch-abi.py
/openbmc/qemu/scripts/qapi/commands.py
/openbmc/qemu/scripts/qapi/gen.py
/openbmc/qemu/scripts/qapi/main.py
/openbmc/qemu/scripts/qmp/qemu-ga-client
/openbmc/qemu/scripts/qmp/qmp-shell
/openbmc/qemu/scripts/qmp/qom-fuse
/openbmc/qemu/scripts/qmp/qom-get
/openbmc/qemu/scripts/qmp/qom-list
/openbmc/qemu/scripts/qmp/qom-set
/openbmc/qemu/scripts/qmp/qom-tree
/openbmc/qemu/scripts/render_block_graph.py
/openbmc/qemu/scripts/update-linux-headers.sh
/openbmc/qemu/softmmu/device_tree.c
/openbmc/qemu/softmmu/rtc.c
/openbmc/qemu/target/arm/helper.c
/openbmc/qemu/target/arm/internals.h
/openbmc/qemu/target/arm/m_helper.c
/openbmc/qemu/target/riscv/cpu.c
/openbmc/qemu/target/riscv/cpu.h
/openbmc/qemu/target/riscv/cpu_bits.h
/openbmc/qemu/target/riscv/cpu_helper.c
/openbmc/qemu/target/riscv/csr.c
/openbmc/qemu/target/riscv/gdbstub.c
/openbmc/qemu/target/riscv/helper.h
/openbmc/qemu/target/riscv/insn_trans/trans_privileged.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rva.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvd.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvf.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvi.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvv.c.inc
/openbmc/qemu/target/riscv/kvm-stub.c
/openbmc/qemu/target/riscv/kvm.c
/openbmc/qemu/target/riscv/kvm_riscv.h
/openbmc/qemu/target/riscv/machine.c
/openbmc/qemu/target/riscv/op_helper.c
/openbmc/qemu/target/riscv/pmp.c
/openbmc/qemu/target/riscv/sbi_ecall_interface.h
/openbmc/qemu/target/riscv/translate.c
/openbmc/qemu/target/riscv/vector_helper.c
/openbmc/qemu/tests/meson.build
/openbmc/qemu/tools/virtiofsd/passthrough_ll.c
/openbmc/qemu/trace/meson.build
e9711c6128-Jan-2022 Cédric Le Goater <clg@kaod.org>

ppc/xive: check return value of ldq_be_dma()

The ldq_be_dma() routine was recently changed to return a result of
the transaction. Use it when loading the virtual structure descriptors
in the XIVE Po

ppc/xive: check return value of ldq_be_dma()

The ldq_be_dma() routine was recently changed to return a result of
the transaction. Use it when loading the virtual structure descriptors
in the XIVE PowerNV model.

Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20220124081635.3672439-1-clg@kaod.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>

show more ...


/openbmc/qemu/.gitlab-ci.d/opensbi.yml
/openbmc/qemu/docs/devel/qapi-code-gen.rst
/openbmc/qemu/docs/devel/tracing.rst
/openbmc/qemu/hw/char/riscv_htif.c
pnv_xive.c
/openbmc/qemu/hw/pci-host/pnv_phb3.c
/openbmc/qemu/hw/pci-host/pnv_phb4.c
/openbmc/qemu/hw/ppc/spapr_cpu_core.c
/openbmc/qemu/hw/ppc/spapr_vof.c
/openbmc/qemu/hw/riscv/spike.c
/openbmc/qemu/include/hw/char/riscv_htif.h
/openbmc/qemu/include/hw/riscv/boot.h
/openbmc/qemu/include/hw/riscv/spike.h
/openbmc/qemu/meson.build
/openbmc/qemu/pc-bios/meson.build
/openbmc/qemu/python/Makefile
/openbmc/qemu/python/README.rst
/openbmc/qemu/python/avocado.cfg
/openbmc/qemu/python/qemu/aqmp/__init__.py
/openbmc/qemu/python/qemu/aqmp/error.py
/openbmc/qemu/python/qemu/aqmp/events.py
/openbmc/qemu/python/qemu/aqmp/legacy.py
/openbmc/qemu/python/qemu/aqmp/protocol.py
/openbmc/qemu/python/qemu/aqmp/qmp_client.py
/openbmc/qemu/python/qemu/aqmp/qmp_shell.py
/openbmc/qemu/python/qemu/utils/qemu_ga_client.py
/openbmc/qemu/python/qemu/utils/qom.py
/openbmc/qemu/python/qemu/utils/qom_common.py
/openbmc/qemu/python/qemu/utils/qom_fuse.py
/openbmc/qemu/python/setup.cfg
/openbmc/qemu/qapi/audio.json
/openbmc/qemu/qapi/compat.json
/openbmc/qemu/qapi/meson.build
/openbmc/qemu/qapi/replay.json
/openbmc/qemu/qapi/trace.json
/openbmc/qemu/qga/meson.build
/openbmc/qemu/roms/Makefile
/openbmc/qemu/scripts/cpu-x86-uarch-abi.py
/openbmc/qemu/scripts/qapi/commands.py
/openbmc/qemu/scripts/qapi/gen.py
/openbmc/qemu/scripts/qapi/main.py
/openbmc/qemu/scripts/qmp/qemu-ga-client
/openbmc/qemu/scripts/qmp/qmp-shell
/openbmc/qemu/scripts/qmp/qom-fuse
/openbmc/qemu/scripts/qmp/qom-get
/openbmc/qemu/scripts/qmp/qom-list
/openbmc/qemu/scripts/qmp/qom-set
/openbmc/qemu/scripts/qmp/qom-tree
/openbmc/qemu/scripts/render_block_graph.py
/openbmc/qemu/softmmu/device_tree.c
/openbmc/qemu/target/ppc/excp_helper.c
/openbmc/qemu/target/ppc/mmu_common.c
/openbmc/qemu/target/riscv/cpu.c
/openbmc/qemu/target/riscv/cpu.h
/openbmc/qemu/target/riscv/cpu_bits.h
/openbmc/qemu/target/riscv/cpu_helper.c
/openbmc/qemu/target/riscv/csr.c
/openbmc/qemu/target/riscv/gdbstub.c
/openbmc/qemu/target/riscv/helper.h
/openbmc/qemu/target/riscv/insn_trans/trans_privileged.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rva.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvd.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvf.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvi.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvv.c.inc
/openbmc/qemu/target/riscv/kvm-stub.c
/openbmc/qemu/target/riscv/kvm.c
/openbmc/qemu/target/riscv/kvm_riscv.h
/openbmc/qemu/target/riscv/machine.c
/openbmc/qemu/target/riscv/op_helper.c
/openbmc/qemu/target/riscv/pmp.c
/openbmc/qemu/target/riscv/sbi_ecall_interface.h
/openbmc/qemu/target/riscv/translate.c
/openbmc/qemu/target/riscv/vector_helper.c
/openbmc/qemu/tests/meson.build
/openbmc/qemu/tools/virtiofsd/passthrough_ll.c
/openbmc/qemu/trace/meson.build
1206a1ec16-Jan-2022 Bernhard Beschow <shentey@gmail.com>

intc: Unexport InterruptStatsProviderClass-related functions

The functions are only used within their respective source files, so no
need for exporting.

Signed-off-by: Bernhard Beschow <shentey@gma

intc: Unexport InterruptStatsProviderClass-related functions

The functions are only used within their respective source files, so no
need for exporting.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Message-Id: <20220116122327.73048-1-shentey@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

show more ...


/openbmc/qemu/.gitlab-ci.d/opensbi.yml
/openbmc/qemu/hw/char/riscv_htif.c
i8259_common.c
ioapic_common.c
/openbmc/qemu/hw/riscv/spike.c
/openbmc/qemu/include/hw/char/riscv_htif.h
/openbmc/qemu/include/hw/i386/ioapic_internal.h
/openbmc/qemu/include/hw/isa/i8259_internal.h
/openbmc/qemu/include/hw/riscv/boot.h
/openbmc/qemu/include/hw/riscv/spike.h
/openbmc/qemu/meson.build
/openbmc/qemu/pc-bios/meson.build
/openbmc/qemu/python/Makefile
/openbmc/qemu/python/README.rst
/openbmc/qemu/python/avocado.cfg
/openbmc/qemu/python/qemu/aqmp/__init__.py
/openbmc/qemu/python/qemu/aqmp/error.py
/openbmc/qemu/python/qemu/aqmp/events.py
/openbmc/qemu/python/qemu/aqmp/legacy.py
/openbmc/qemu/python/qemu/aqmp/protocol.py
/openbmc/qemu/python/qemu/aqmp/qmp_client.py
/openbmc/qemu/python/qemu/aqmp/qmp_shell.py
/openbmc/qemu/python/qemu/utils/qemu_ga_client.py
/openbmc/qemu/python/qemu/utils/qom.py
/openbmc/qemu/python/qemu/utils/qom_common.py
/openbmc/qemu/python/qemu/utils/qom_fuse.py
/openbmc/qemu/python/setup.cfg
/openbmc/qemu/qga/meson.build
/openbmc/qemu/roms/Makefile
/openbmc/qemu/scripts/cpu-x86-uarch-abi.py
/openbmc/qemu/scripts/qmp/qemu-ga-client
/openbmc/qemu/scripts/qmp/qmp-shell
/openbmc/qemu/scripts/qmp/qom-fuse
/openbmc/qemu/scripts/qmp/qom-get
/openbmc/qemu/scripts/qmp/qom-list
/openbmc/qemu/scripts/qmp/qom-set
/openbmc/qemu/scripts/qmp/qom-tree
/openbmc/qemu/scripts/render_block_graph.py
/openbmc/qemu/softmmu/device_tree.c
/openbmc/qemu/target/riscv/cpu.c
/openbmc/qemu/target/riscv/cpu.h
/openbmc/qemu/target/riscv/cpu_bits.h
/openbmc/qemu/target/riscv/cpu_helper.c
/openbmc/qemu/target/riscv/csr.c
/openbmc/qemu/target/riscv/gdbstub.c
/openbmc/qemu/target/riscv/helper.h
/openbmc/qemu/target/riscv/insn_trans/trans_privileged.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rva.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvd.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvf.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvi.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvv.c.inc
/openbmc/qemu/target/riscv/kvm-stub.c
/openbmc/qemu/target/riscv/kvm.c
/openbmc/qemu/target/riscv/kvm_riscv.h
/openbmc/qemu/target/riscv/machine.c
/openbmc/qemu/target/riscv/op_helper.c
/openbmc/qemu/target/riscv/pmp.c
/openbmc/qemu/target/riscv/sbi_ecall_interface.h
/openbmc/qemu/target/riscv/translate.c
/openbmc/qemu/target/riscv/vector_helper.c
/openbmc/qemu/tests/docker/dockerfiles/fedora-win32-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/fedora-win64-cross.docker
/openbmc/qemu/tests/qtest/meson.build
ad40be2712-Jan-2022 Yifei Jiang <jiangyifei@huawei.com>

target/riscv: Support start kernel directly by KVM

Get kernel and fdt start address in virt.c, and pass them to KVM
when cpu reset. Add kvm_riscv.h to place riscv specific interface.

In addition, P

target/riscv: Support start kernel directly by KVM

Get kernel and fdt start address in virt.c, and pass them to KVM
when cpu reset. Add kvm_riscv.h to place riscv specific interface.

In addition, PLIC is created without M-mode PLIC contexts when KVM
is enabled.

Signed-off-by: Yifei Jiang <jiangyifei@huawei.com>
Signed-off-by: Mingwang Li <limingwang@huawei.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Message-id: 20220112081329.1835-7-jiangyifei@huawei.com
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>

show more ...

b9d383ab15-Dec-2021 Philippe Mathieu-Daudé <philmd@redhat.com>

hw/intc/arm_gicv3: Check for !MEMTX_OK instead of MEMTX_ERROR

Quoting Peter Maydell:

"These MEMTX_* aren't from the memory transaction
API functions; they're just being used by gicd_readl() and

hw/intc/arm_gicv3: Check for !MEMTX_OK instead of MEMTX_ERROR

Quoting Peter Maydell:

"These MEMTX_* aren't from the memory transaction
API functions; they're just being used by gicd_readl() and
friends as a way to indicate a success/failure so that the
actual MemoryRegionOps read/write fns like gicv3_dist_read()
can log a guest error."

We are going to introduce more MemTxResult bits, so it is
safer to check for !MEMTX_OK rather than MEMTX_ERROR.

Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

58b8877911-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Range-check ICID before indexing into collection table

In process_its_cmd(), we read an ICID out of the interrupt table
entry, and then use it as an index into the collection

hw/intc/arm_gicv3_its: Range-check ICID before indexing into collection table

In process_its_cmd(), we read an ICID out of the interrupt table
entry, and then use it as an index into the collection table. Add a
check that it is within range for the collection table first.

This check is not strictly necessary, because:
* we range check the ICID from the guest before writing it into
the interrupt table entry, so the the only way to get an
out of range ICID in process_its_cmd() is if a badly-behaved
guest is writing directly to the interrupt table memory
* the collection table is in guest memory, so QEMU won't fall
over if we read off the end of it

However, it seems clearer to include the check.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20220111171048.3545974-14-peter.maydell@linaro.org

show more ...

b13148d911-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Check indexes before use, not after

In a few places in the ITS command handling functions, we were
doing the range-check of an event ID or device ID only after using
it as a t

hw/intc/arm_gicv3_its: Check indexes before use, not after

In a few places in the ITS command handling functions, we were
doing the range-check of an event ID or device ID only after using
it as a table index; move the checks to before the uses.

This misordering wouldn't have very bad effects because the
tables are in guest memory anyway.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20220111171048.3545974-13-peter.maydell@linaro.org

show more ...

d050f80f11-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Factor out "find address of table entry" code

The ITS has several tables which all share a similar format,
described by the TableDesc struct: the guest may configure them
to b

hw/intc/arm_gicv3_its: Factor out "find address of table entry" code

The ITS has several tables which all share a similar format,
described by the TableDesc struct: the guest may configure them
to be a single-level table or a two-level table. Currently we
open-code the process of finding the table entry in all the
functions which read or write the device table or the collection
table. Factor out the "get the address of the table entry"
logic into a new function, so that the code which needs to
read or write a table entry only needs to call table_entry_addr()
and then perform a suitable load or store to that address.

Note that the error handling is slightly complicated because
we want to handle two cases differently:
* failure to read the L1 table entry should end up causing
a command stall, like other kinds of DMA error
* an L1 table entry that says there is no L2 table for this
index (ie whose valid bit is 0) must result in us treating
the table entry as not-valid on read, and discarding
writes (this is mandated by the spec)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20220111171048.3545974-12-peter.maydell@linaro.org

show more ...

00d46e7211-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Fix return codes in process_mapd()

Fix process_mapd() to consistently return CMD_STALL for memory
errors and CMD_CONTINUE for parameter errors, as we claim in the
comments tha

hw/intc/arm_gicv3_its: Fix return codes in process_mapd()

Fix process_mapd() to consistently return CMD_STALL for memory
errors and CMD_CONTINUE for parameter errors, as we claim in the
comments that we do.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220111171048.3545974-11-peter.maydell@linaro.org

show more ...

f667519611-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Fix return codes in process_mapc()

Fix process_mapc() to consistently return CMD_STALL for memory
errors and CMD_CONTINUE for parameter errors, as we claim in the
comments tha

hw/intc/arm_gicv3_its: Fix return codes in process_mapc()

Fix process_mapc() to consistently return CMD_STALL for memory
errors and CMD_CONTINUE for parameter errors, as we claim in the
comments that we do.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220111171048.3545974-10-peter.maydell@linaro.org

show more ...

0241f73111-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Fix return codes in process_mapti()

Fix process_mapti() to consistently return CMD_STALL for memory
errors and CMD_CONTINUE for parameter errors, as we claim in the
comments t

hw/intc/arm_gicv3_its: Fix return codes in process_mapti()

Fix process_mapti() to consistently return CMD_STALL for memory
errors and CMD_CONTINUE for parameter errors, as we claim in the
comments that we do.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220111171048.3545974-9-peter.maydell@linaro.org

show more ...

be0ed8fb11-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Refactor process_its_cmd() to reduce nesting

Refactor process_its_cmd() so that it consistently uses
the structure
do thing;
if (error condition) {
return early;
}

hw/intc/arm_gicv3_its: Refactor process_its_cmd() to reduce nesting

Refactor process_its_cmd() so that it consistently uses
the structure
do thing;
if (error condition) {
return early;
}
do next thing;

rather than doing some of the work nested inside if (not error)
code blocks.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220111171048.3545974-8-peter.maydell@linaro.org

show more ...

593a7cc211-Jan-2022 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_its: Fix return codes in process_its_cmd()

Fix process_its_cmd() to consistently return CMD_STALL for
memory errors and CMD_CONTINUE for parameter errors, as
we claim in the commen

hw/intc/arm_gicv3_its: Fix return codes in process_its_cmd()

Fix process_its_cmd() to consistently return CMD_STALL for
memory errors and CMD_CONTINUE for parameter errors, as
we claim in the comments that we do.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220111171048.3545974-7-peter.maydell@linaro.org

show more ...

1...<<21222324252627282930>>...74