History log of /openbmc/qemu/include/hw/ppc/ (Results 401 – 425 of 954)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
5014c60225-Nov-2019 Cédric Le Goater <clg@kaod.org>

ppc/pnv: Introduce a pnv_xive_is_cpu_enabled() helper

and use this helper to exclude CPUs which are not enabled in the XIVE
controller.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <2

ppc/pnv: Introduce a pnv_xive_is_cpu_enabled() helper

and use this helper to exclude CPUs which are not enabled in the XIVE
controller.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191125065820.927-7-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

4a89e20425-Nov-2019 Cédric Le Goater <clg@kaod.org>

ppc: Introduce a ppc_cpu_pir() helper

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191125065820.927-6-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

4fa28f2325-Nov-2019 Greg Kurz <groug@kaod.org>

ppc/pnv: Instantiate cores separately

Allocating a big void * array to store multiple objects isn't a
recommended practice for various reasons:
- no compile time type checking
- potential dangling

ppc/pnv: Instantiate cores separately

Allocating a big void * array to store multiple objects isn't a
recommended practice for various reasons:
- no compile time type checking
- potential dangling pointers if a reference on an individual is
taken and the array is freed later on
- duplicate boiler plate everywhere the array is browsed through

Allocate an array of pointers and populate it instead.

Signed-off-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191125065820.927-4-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

13bee85225-Nov-2019 Cédric Le Goater <clg@kaod.org>

ppc/xive: Introduce a XivePresenter interface

When the XIVE IVRE sub-engine (XiveRouter) looks for a Notification
Virtual Target (NVT) to notify, it broadcasts a message on the
PowerBUS to find an X

ppc/xive: Introduce a XivePresenter interface

When the XIVE IVRE sub-engine (XiveRouter) looks for a Notification
Virtual Target (NVT) to notify, it broadcasts a message on the
PowerBUS to find an XIVE IVPE sub-engine (Presenter) with the NVT
dispatched on one of its HW threads, and then forwards the
notification if any response was received.

The current XIVE presenter model is sufficient for the pseries machine
because it has a single interrupt controller device, but the PowerNV
machine can have multiple chips each having its own interrupt
controller. In this case, the XIVE presenter model is too simple and
the CAM line matching should scan all chips of the system.

To start fixing this issue, we first extend the XIVE Router model with
a new XivePresenter QOM interface representing the XIVE IVPE
sub-engine. This interface exposes a 'match_nvt' handler which the
sPAPR and PowerNV XIVE Router models will need to implement to perform
the CAM line matching.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191125065820.927-2-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

e2392d4321-Nov-2019 Cédric Le Goater <clg@kaod.org>

ppc/pnv: Create BMC devices at machine init

The BMC of the OpenPOWER systems monitors the machine state using
sensors, controls the power and controls the access to the PNOR flash
device containing

ppc/pnv: Create BMC devices at machine init

The BMC of the OpenPOWER systems monitors the machine state using
sensors, controls the power and controls the access to the PNOR flash
device containing the firmware image required to boot the host.

QEMU models the power cycle process, access to the sensors and access
to the PNOR device. But, for these features to be available, the QEMU
PowerNV machine needs two extras devices on the command line, an IPMI
BT device for communication and a BMC backend device:

-device ipmi-bmc-sim,id=bmc0 -device isa-ipmi-bt,bmc=bmc0,irq=10

The BMC properties are then defined accordingly in the device tree and
OPAL self adapts. If a BMC device and an IPMI BT device are not
available, OPAL does not try to communicate with the BMC in any
manner. This is not how real systems behave.

To be closer to the default behavior, create an IPMI BMC simulator
device and an IPMI BT device at machine initialization time. We loose
the ability to define an external BMC device but there are benefits:

- a better match with real systems,
- a better test coverage of the OPAL code,
- system powerdown and reset commands that work,
- a QEMU device tree compliant with the specifications (*).

(*) Still needs a MBOX device.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191121162340.11049-1-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

ca661fae28-Oct-2019 Cédric Le Goater <clg@kaod.org>

ppc/pnv: Add HIOMAP commands

This activates HIOMAP support on the QEMU PowerNV machine. The PnvPnor
model is used to access the flash contents. The model simply maps the
contents at a fix offset and

ppc/pnv: Add HIOMAP commands

This activates HIOMAP support on the QEMU PowerNV machine. The PnvPnor
model is used to access the flash contents. The model simply maps the
contents at a fix offset and enables or disables the mapping.

HIOMAP Protocol description :

https://github.com/openbmc/hiomapd/blob/master/Documentation/protocol.md

Reviewed-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191028070027.22752-3-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

e6488eeb15-Nov-2019 Cédric Le Goater <clg@kaod.org>

ppc/xive: Introduce helpers for the NVT id

Each vCPU in the system is identified with an NVT identifier which is
pushed in the OS CAM line (QW1W2) of the HW thread interrupt context
register when th

ppc/xive: Introduce helpers for the NVT id

Each vCPU in the system is identified with an NVT identifier which is
pushed in the OS CAM line (QW1W2) of the HW thread interrupt context
register when the vCPU is dispatched on a HW thread. This identifier
is used by the presenter subengine to find a matching target to notify
of an event. It is also used to fetch the associate NVT structure
which may contain pending interrupts that need a resend.

Add a couple of helpers for the NVT ids. The NVT space is 19 bits
wide, giving a maximum of 512K per chip.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191115162436.30548-3-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

516883c215-Nov-2019 Cédric Le Goater <clg@kaod.org>

ppc/xive: Record the IPB in the associated NVT

When an interrupt can not be presented to a vCPU, because it is not
running on any of the HW treads, the XIVE presenter updates the
Interrupt Pending B

ppc/xive: Record the IPB in the associated NVT

When an interrupt can not be presented to a vCPU, because it is not
running on any of the HW treads, the XIVE presenter updates the
Interrupt Pending Buffer register of the associated XIVE NVT
structure. This is only done if backlog is activated in the END but
this is generally the case.

The current code assumes that the fields of the NVT structure is
architected with the same layout of the thread interrupt context
registers. Fix this assumption and define an offset for the IPB
register backup value in the NVT.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191115162436.30548-2-clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

35dde57621-Oct-2019 Cédric Le Goater <clg@fr.ibm.com>

ppc/pnv: Add a PNOR model

On a POWERPC PowerNV system, the host firmware is stored in a PNOR
flash chip which contents is mapped on the LPC bus. This model adds a
simple dummy device to map the cont

ppc/pnv: Add a PNOR model

On a POWERPC PowerNV system, the host firmware is stored in a PNOR
flash chip which contents is mapped on the LPC bus. This model adds a
simple dummy device to map the contents of a block device in the host
address space.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191021131215.3693-2-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...


/openbmc/qemu/.gitlab-ci.yml
/openbmc/qemu/.travis.yml
/openbmc/qemu/LICENSE
/openbmc/qemu/MAINTAINERS
/openbmc/qemu/Makefile
/openbmc/qemu/VERSION
/openbmc/qemu/accel/kvm/kvm-all.c
/openbmc/qemu/accel/stubs/kvm-stub.c
/openbmc/qemu/accel/tcg/cputlb.c
/openbmc/qemu/audio/audio.c
/openbmc/qemu/block.c
/openbmc/qemu/block/block-copy.c
/openbmc/qemu/block/dirty-bitmap.c
/openbmc/qemu/block/file-posix.c
/openbmc/qemu/block/io.c
/openbmc/qemu/block/nbd.c
/openbmc/qemu/block/qcow2-bitmap.c
/openbmc/qemu/block/qcow2.h
/openbmc/qemu/blockdev-nbd.c
/openbmc/qemu/configure
/openbmc/qemu/contrib/ivshmem-server/ivshmem-server.c
/openbmc/qemu/contrib/ivshmem-server/main.c
/openbmc/qemu/contrib/libvhost-user/libvhost-user.c
/openbmc/qemu/contrib/vhost-user-input/main.c
/openbmc/qemu/docs/devel/index.rst
/openbmc/qemu/docs/devel/tcg-plugins.rst
/openbmc/qemu/docs/interop/pr-helper.rst
/openbmc/qemu/docs/microvm.rst
/openbmc/qemu/docs/specs/ppc-spapr-hotplug.txt
/openbmc/qemu/docs/specs/ppc-xive.rst
/openbmc/qemu/docs/specs/tpm.txt
/openbmc/qemu/exec.c
/openbmc/qemu/fsdev/virtfs-proxy-helper.c
/openbmc/qemu/hw/9pfs/9p.c
/openbmc/qemu/hw/acpi/pcihp.c
/openbmc/qemu/hw/acpi/piix4.c
/openbmc/qemu/hw/arm/aspeed.c
/openbmc/qemu/hw/arm/aspeed_ast2600.c
/openbmc/qemu/hw/arm/aspeed_soc.c
/openbmc/qemu/hw/arm/boot.c
/openbmc/qemu/hw/arm/sbsa-ref.c
/openbmc/qemu/hw/arm/virt-acpi-build.c
/openbmc/qemu/hw/arm/virt.c
/openbmc/qemu/hw/arm/xlnx-versal.c
/openbmc/qemu/hw/block/pflash_cfi01.c
/openbmc/qemu/hw/block/pflash_cfi02.c
/openbmc/qemu/hw/block/trace-events
/openbmc/qemu/hw/block/virtio-blk.c
/openbmc/qemu/hw/core/irq.c
/openbmc/qemu/hw/core/machine.c
/openbmc/qemu/hw/core/numa.c
/openbmc/qemu/hw/core/ptimer.c
/openbmc/qemu/hw/display/jazz_led.c
/openbmc/qemu/hw/display/xlnx_dp.c
/openbmc/qemu/hw/dma/rc4030.c
/openbmc/qemu/hw/gpio/aspeed_gpio.c
/openbmc/qemu/hw/i2c/aspeed_i2c.c
/openbmc/qemu/hw/i2c/trace-events
/openbmc/qemu/hw/i386/Kconfig
/openbmc/qemu/hw/i386/acpi-build.c
/openbmc/qemu/hw/i386/intel_iommu.c
/openbmc/qemu/hw/i386/intel_iommu_internal.h
/openbmc/qemu/hw/i386/microvm.c
/openbmc/qemu/hw/i386/pc.c
/openbmc/qemu/hw/i386/pc_piix.c
/openbmc/qemu/hw/i386/pc_q35.c
/openbmc/qemu/hw/i386/x86.c
/openbmc/qemu/hw/i386/xen/xen-hvm.c
/openbmc/qemu/hw/input/virtio-input.c
/openbmc/qemu/hw/intc/apic_common.c
/openbmc/qemu/hw/intc/exynos4210_gic.c
/openbmc/qemu/hw/intc/xics.c
/openbmc/qemu/hw/intc/xive.c
/openbmc/qemu/hw/isa/Kconfig
/openbmc/qemu/hw/isa/Makefile.objs
/openbmc/qemu/hw/isa/piix3.c
/openbmc/qemu/hw/isa/piix4.c
/openbmc/qemu/hw/isa/vt82c686.c
/openbmc/qemu/hw/m68k/q800.c
/openbmc/qemu/hw/mips/gt64xxx_pci.c
/openbmc/qemu/hw/mips/mips_jazz.c
/openbmc/qemu/hw/mips/mips_malta.c
/openbmc/qemu/hw/mips/mips_r4k.c
/openbmc/qemu/hw/mips/trace-events
/openbmc/qemu/hw/misc/aspeed_scu.c
/openbmc/qemu/hw/misc/aspeed_sdmc.c
/openbmc/qemu/hw/misc/grlib_ahb_apb_pnp.c
/openbmc/qemu/hw/misc/mos6522.c
/openbmc/qemu/hw/net/cadence_gem.c
/openbmc/qemu/hw/net/dp8393x.c
/openbmc/qemu/hw/net/ftgmac100.c
/openbmc/qemu/hw/net/mipsnet.c
/openbmc/qemu/hw/net/virtio-net.c
/openbmc/qemu/hw/nvram/fw_cfg.c
/openbmc/qemu/hw/pci-host/Kconfig
/openbmc/qemu/hw/pci-host/Makefile.objs
/openbmc/qemu/hw/pci-host/bonito.c
/openbmc/qemu/hw/pci-host/i440fx.c
/openbmc/qemu/hw/pci/pci.c
/openbmc/qemu/hw/ppc/Makefile.objs
/openbmc/qemu/hw/ppc/pnv.c
/openbmc/qemu/hw/ppc/pnv_pnor.c
/openbmc/qemu/hw/ppc/spapr.c
/openbmc/qemu/hw/ppc/spapr_events.c
/openbmc/qemu/hw/ppc/spapr_irq.c
/openbmc/qemu/hw/rdma/rdma_backend.c
/openbmc/qemu/hw/rdma/rdma_backend.h
/openbmc/qemu/hw/rdma/rdma_rm.c
/openbmc/qemu/hw/rdma/vmw/pvrdma_main.c
/openbmc/qemu/hw/riscv/boot.c
/openbmc/qemu/hw/riscv/sifive_e.c
/openbmc/qemu/hw/riscv/sifive_u.c
/openbmc/qemu/hw/riscv/spike.c
/openbmc/qemu/hw/riscv/virt.c
/openbmc/qemu/hw/rtc/mc146818rtc.c
/openbmc/qemu/hw/rtc/pl031.c
/openbmc/qemu/hw/s390x/event-facility.c
/openbmc/qemu/hw/s390x/s390-virtio-ccw.c
/openbmc/qemu/hw/scsi/scsi-bus.c
/openbmc/qemu/hw/scsi/scsi-disk.c
/openbmc/qemu/hw/ssi/aspeed_smc.c
/openbmc/qemu/hw/ssi/xilinx_spips.c
/openbmc/qemu/hw/timer/aspeed_timer.c
/openbmc/qemu/hw/timer/i8254_common.c
/openbmc/qemu/hw/usb/host-libusb.c
/openbmc/qemu/hw/vfio/Kconfig
/openbmc/qemu/hw/vfio/ccw.c
/openbmc/qemu/hw/vfio/pci.c
/openbmc/qemu/hw/vfio/pci.h
/openbmc/qemu/hw/virtio/vhost-user-fs-pci.c
/openbmc/qemu/hw/virtio/vhost-user-fs.c
/openbmc/qemu/hw/virtio/virtio-bus.c
/openbmc/qemu/hw/virtio/virtio.c
/openbmc/qemu/hw/watchdog/wdt_aspeed.c
/openbmc/qemu/include/block/block_int.h
/openbmc/qemu/include/block/dirty-bitmap.h
/openbmc/qemu/include/block/nbd.h
/openbmc/qemu/include/block/nvme.h
/openbmc/qemu/include/exec/exec-all.h
/openbmc/qemu/include/exec/memory.h
/openbmc/qemu/include/exec/ram_addr.h
/openbmc/qemu/include/hw/arm/aspeed.h
/openbmc/qemu/include/hw/arm/aspeed_soc.h
/openbmc/qemu/include/hw/arm/boot.h
/openbmc/qemu/include/hw/arm/virt.h
/openbmc/qemu/include/hw/arm/xlnx-versal.h
/openbmc/qemu/include/hw/boards.h
/openbmc/qemu/include/hw/core/cpu.h
/openbmc/qemu/include/hw/i2c/aspeed_i2c.h
/openbmc/qemu/include/hw/i386/pc.h
/openbmc/qemu/include/hw/i386/x86.h
/openbmc/qemu/include/hw/irq.h
/openbmc/qemu/include/hw/isa/isa.h
/openbmc/qemu/include/hw/pci-host/i440fx.h
pnv.h
pnv_pnor.h
/openbmc/qemu/include/hw/ptimer.h
/openbmc/qemu/include/hw/riscv/boot.h
/openbmc/qemu/include/hw/southbridge/piix.h
/openbmc/qemu/include/hw/ssi/aspeed_smc.h
/openbmc/qemu/include/hw/virtio/vhost-user-fs.h
/openbmc/qemu/include/hw/virtio/virtio-blk.h
/openbmc/qemu/include/hw/virtio/virtio.h
/openbmc/qemu/include/hw/watchdog/wdt_aspeed.h
/openbmc/qemu/include/hw/xen/interface/io/blkif.h
/openbmc/qemu/include/qemu/cutils.h
/openbmc/qemu/include/qemu/qemu-plugin.h
/openbmc/qemu/include/sysemu/kvm.h
/openbmc/qemu/linux-user/aarch64/target_cpu.h
/openbmc/qemu/linux-user/alpha/target_cpu.h
/openbmc/qemu/linux-user/arm/target_cpu.h
/openbmc/qemu/linux-user/cris/target_cpu.h
/openbmc/qemu/linux-user/elfload.c
/openbmc/qemu/linux-user/hppa/target_cpu.h
/openbmc/qemu/linux-user/i386/target_cpu.h
/openbmc/qemu/linux-user/m68k/target_cpu.h
/openbmc/qemu/linux-user/microblaze/target_cpu.h
/openbmc/qemu/linux-user/mips/target_cpu.h
/openbmc/qemu/linux-user/nios2/target_cpu.h
/openbmc/qemu/linux-user/openrisc/target_cpu.h
/openbmc/qemu/linux-user/ppc/target_cpu.h
/openbmc/qemu/linux-user/riscv/target_cpu.h
/openbmc/qemu/linux-user/s390x/target_cpu.h
/openbmc/qemu/linux-user/sh4/target_cpu.h
/openbmc/qemu/linux-user/sparc/signal.c
/openbmc/qemu/linux-user/sparc/target_cpu.h
/openbmc/qemu/linux-user/syscall.c
/openbmc/qemu/linux-user/tilegx/target_cpu.h
/openbmc/qemu/linux-user/xtensa/target_cpu.h
/openbmc/qemu/memory.c
/openbmc/qemu/migration/ram.c
/openbmc/qemu/migration/savevm.c
/openbmc/qemu/monitor/qmp.c
/openbmc/qemu/nbd/client.c
/openbmc/qemu/nbd/server.c
/openbmc/qemu/pc-bios/README
/openbmc/qemu/pc-bios/bios-256k.bin
/openbmc/qemu/pc-bios/bios.bin
/openbmc/qemu/pc-bios/opensbi-riscv32-virt-fw_jump.bin
/openbmc/qemu/pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
/openbmc/qemu/pc-bios/opensbi-riscv64-virt-fw_jump.bin
/openbmc/qemu/pc-bios/s390-ccw.img
/openbmc/qemu/pc-bios/s390-ccw/sclp.c
/openbmc/qemu/pc-bios/s390-netboot.img
/openbmc/qemu/pc-bios/slof.bin
/openbmc/qemu/pc-bios/vgabios-ati.bin
/openbmc/qemu/pc-bios/vgabios-bochs-display.bin
/openbmc/qemu/pc-bios/vgabios-cirrus.bin
/openbmc/qemu/pc-bios/vgabios-qxl.bin
/openbmc/qemu/pc-bios/vgabios-ramfb.bin
/openbmc/qemu/pc-bios/vgabios-stdvga.bin
/openbmc/qemu/pc-bios/vgabios-virtio.bin
/openbmc/qemu/pc-bios/vgabios-vmware.bin
/openbmc/qemu/pc-bios/vgabios.bin
/openbmc/qemu/plugins/loader.c
/openbmc/qemu/plugins/plugin.h
/openbmc/qemu/po/zh_CN.po
/openbmc/qemu/qapi/block-core.json
/openbmc/qemu/qemu-deprecated.texi
/openbmc/qemu/qemu-doc.texi
/openbmc/qemu/qemu-nbd.c
/openbmc/qemu/qemu-options.hx
/openbmc/qemu/qga/commands-posix.c
/openbmc/qemu/qga/commands-win32.c
/openbmc/qemu/qom/object.c
/openbmc/qemu/roms/Makefile
/openbmc/qemu/roms/SLOF
/openbmc/qemu/roms/opensbi
/openbmc/qemu/roms/seabios
/openbmc/qemu/scripts/dump-guest-memory.py
/openbmc/qemu/scripts/get_maintainer.pl
/openbmc/qemu/scripts/qemu-binfmt-conf.sh
/openbmc/qemu/scripts/vmstate-static-checker.py
/openbmc/qemu/stubs/pci-host-piix.c
/openbmc/qemu/target/arm/arm-powerctl.c
/openbmc/qemu/target/arm/cpu.c
/openbmc/qemu/target/arm/cpu.h
/openbmc/qemu/target/arm/cpu64.c
/openbmc/qemu/target/arm/helper.c
/openbmc/qemu/target/arm/helper.h
/openbmc/qemu/target/arm/m_helper.c
/openbmc/qemu/target/arm/op_helper.c
/openbmc/qemu/target/arm/translate-vfp.inc.c
/openbmc/qemu/target/arm/translate.c
/openbmc/qemu/target/arm/translate.h
/openbmc/qemu/target/arm/vfp_helper.c
/openbmc/qemu/target/i386/cpu.c
/openbmc/qemu/target/i386/cpu.h
/openbmc/qemu/target/i386/hvf/hvf.c
/openbmc/qemu/target/i386/hvf/vmx.h
/openbmc/qemu/target/i386/hvf/x86_decode.c
/openbmc/qemu/target/i386/hvf/x86_decode.h
/openbmc/qemu/target/i386/hvf/x86_emu.c
/openbmc/qemu/target/i386/hvf/x86hvf.c
/openbmc/qemu/target/i386/kvm.c
/openbmc/qemu/target/i386/machine.c
/openbmc/qemu/target/microblaze/translate.c
/openbmc/qemu/target/ppc/kvm.c
/openbmc/qemu/target/riscv/cpu.c
/openbmc/qemu/target/riscv/cpu.h
/openbmc/qemu/target/riscv/cpu_helper.c
/openbmc/qemu/target/riscv/csr.c
/openbmc/qemu/target/riscv/translate.c
/openbmc/qemu/target/s390x/cpu-qom.h
/openbmc/qemu/target/s390x/cpu.c
/openbmc/qemu/target/s390x/cpu.h
/openbmc/qemu/target/s390x/cpu_models.c
/openbmc/qemu/target/s390x/diag.c
/openbmc/qemu/target/s390x/kvm.c
/openbmc/qemu/target/s390x/sigp.c
/openbmc/qemu/target/sparc/cpu.h
/openbmc/qemu/tcg/aarch64/tcg-target.opc.h
/openbmc/qemu/tcg/i386/tcg-target.opc.h
/openbmc/qemu/tcg/ppc/tcg-target.opc.h
/openbmc/qemu/tests/Makefile.include
/openbmc/qemu/tests/acceptance/linux_ssh_mips_malta.py
/openbmc/qemu/tests/bios-tables-test.c
/openbmc/qemu/tests/cpu-plug-test.c
/openbmc/qemu/tests/data/acpi/virt/DSDT
/openbmc/qemu/tests/data/acpi/virt/DSDT.memhp
/openbmc/qemu/tests/data/acpi/virt/DSDT.numamem
/openbmc/qemu/tests/docker/dockerfiles/fedora.docker
/openbmc/qemu/tests/docker/dockerfiles/ubuntu.docker
/openbmc/qemu/tests/docker/dockerfiles/ubuntu1804.docker
/openbmc/qemu/tests/fw_cfg-test.c
/openbmc/qemu/tests/image-fuzzer/qcow2/__init__.py
/openbmc/qemu/tests/image-fuzzer/qcow2/fuzz.py
/openbmc/qemu/tests/image-fuzzer/qcow2/layout.py
/openbmc/qemu/tests/image-fuzzer/runner.py
/openbmc/qemu/tests/libqtest.c
/openbmc/qemu/tests/migration-test.c
/openbmc/qemu/tests/plugin/bb.c
/openbmc/qemu/tests/plugin/empty.c
/openbmc/qemu/tests/plugin/hotblocks.c
/openbmc/qemu/tests/plugin/hotpages.c
/openbmc/qemu/tests/plugin/howvec.c
/openbmc/qemu/tests/plugin/insn.c
/openbmc/qemu/tests/plugin/mem.c
/openbmc/qemu/tests/pxe-test.c
/openbmc/qemu/tests/qemu-iotests/051.pc.out
/openbmc/qemu/tests/qemu-iotests/085.out
/openbmc/qemu/tests/qemu-iotests/094.out
/openbmc/qemu/tests/qemu-iotests/095.out
/openbmc/qemu/tests/qemu-iotests/109.out
/openbmc/qemu/tests/qemu-iotests/117.out
/openbmc/qemu/tests/qemu-iotests/127.out
/openbmc/qemu/tests/qemu-iotests/140.out
/openbmc/qemu/tests/qemu-iotests/141.out
/openbmc/qemu/tests/qemu-iotests/143.out
/openbmc/qemu/tests/qemu-iotests/144.out
/openbmc/qemu/tests/qemu-iotests/153.out
/openbmc/qemu/tests/qemu-iotests/156.out
/openbmc/qemu/tests/qemu-iotests/161.out
/openbmc/qemu/tests/qemu-iotests/169
/openbmc/qemu/tests/qemu-iotests/169.out
/openbmc/qemu/tests/qemu-iotests/173
/openbmc/qemu/tests/qemu-iotests/173.out
/openbmc/qemu/tests/qemu-iotests/182.out
/openbmc/qemu/tests/qemu-iotests/183.out
/openbmc/qemu/tests/qemu-iotests/185.out
/openbmc/qemu/tests/qemu-iotests/191.out
/openbmc/qemu/tests/qemu-iotests/200.out
/openbmc/qemu/tests/qemu-iotests/223
/openbmc/qemu/tests/qemu-iotests/223.out
/openbmc/qemu/tests/qemu-iotests/229.out
/openbmc/qemu/tests/qemu-iotests/249.out
/openbmc/qemu/tests/qemu-iotests/272
/openbmc/qemu/tests/qemu-iotests/272.out
/openbmc/qemu/tests/qemu-iotests/273
/openbmc/qemu/tests/qemu-iotests/273.out
/openbmc/qemu/tests/qemu-iotests/277
/openbmc/qemu/tests/qemu-iotests/277.out
/openbmc/qemu/tests/qemu-iotests/check
/openbmc/qemu/tests/qemu-iotests/common.filter
/openbmc/qemu/tests/qemu-iotests/common.qemu
/openbmc/qemu/tests/qemu-iotests/common.rc
/openbmc/qemu/tests/qemu-iotests/group
/openbmc/qemu/tests/qemu-iotests/iotests.py
/openbmc/qemu/tests/qemu-iotests/nbd-fault-injector.py
/openbmc/qemu/tests/tcg/multiarch/float_helpers.c
/openbmc/qemu/tests/tcg/multiarch/linux-test.c
/openbmc/qemu/tests/vm/basevm.py
/openbmc/qemu/tests/vm/centos
/openbmc/qemu/tests/vm/netbsd
/openbmc/qemu/tests/vm/ubuntu.i386
/openbmc/qemu/ui/gtk.c
/openbmc/qemu/util/cutils.c
/openbmc/qemu/util/qemu-coroutine-sleep.c
/openbmc/qemu/vl.c
0990ce6a24-Oct-2019 Greg Kurz <groug@kaod.org>

ppc: Add intc_destroy() handlers to SpaprInterruptController/PnvChip

SpaprInterruptControllerClass and PnvChipClass have an intc_create() method
that calls the appropriate routine, ie. icp_create()

ppc: Add intc_destroy() handlers to SpaprInterruptController/PnvChip

SpaprInterruptControllerClass and PnvChipClass have an intc_create() method
that calls the appropriate routine, ie. icp_create() or xive_tctx_create(),
to establish the link between the VCPU and the presenter component of the
interrupt controller during realize.

There aren't any symmetrical call to be called when the VCPU gets unrealized
though. It is assumed that object_unparent() is the only thing to do.

This is questionable because the parenting logic around the CPU and
presenter objects is really an implementation detail of the interrupt
controller. It shouldn't be open-coded in the machine code.

Fix this by adding an intc_destroy() method that undoes what was done in
intc_create(). Also NULLify the presenter pointers to avoid having
stale pointers around. This will allow to reliably check if a vCPU has
a valid presenter.

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <157192724208.3146912.7254684777515287626.stgit@bahia.lan>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Laurent Vivier <lvivier@redhat.com>

show more ...


/openbmc/qemu/.cirrus.yml
/openbmc/qemu/.gitlab-ci.yml
/openbmc/qemu/.gitmodules
/openbmc/qemu/.mailmap
/openbmc/qemu/.shippable.yml
/openbmc/qemu/.travis.yml
/openbmc/qemu/MAINTAINERS
/openbmc/qemu/Makefile
/openbmc/qemu/Makefile.objs
/openbmc/qemu/Makefile.target
/openbmc/qemu/accel/kvm/kvm-all.c
/openbmc/qemu/accel/stubs/tcg-stub.c
/openbmc/qemu/accel/tcg/Makefile.objs
/openbmc/qemu/accel/tcg/atomic_common.inc.c
/openbmc/qemu/accel/tcg/atomic_template.h
/openbmc/qemu/accel/tcg/cpu-exec.c
/openbmc/qemu/accel/tcg/cputlb.c
/openbmc/qemu/accel/tcg/plugin-gen.c
/openbmc/qemu/accel/tcg/plugin-helpers.h
/openbmc/qemu/accel/tcg/translate-all.c
/openbmc/qemu/accel/tcg/translator.c
/openbmc/qemu/accel/tcg/user-exec.c
/openbmc/qemu/arch_init.c
/openbmc/qemu/audio/paaudio.c
/openbmc/qemu/backends/hostmem.c
/openbmc/qemu/block.c
/openbmc/qemu/block/backup.c
/openbmc/qemu/block/block-backend.c
/openbmc/qemu/block/block-copy.c
/openbmc/qemu/block/commit.c
/openbmc/qemu/block/copy-on-read.c
/openbmc/qemu/block/crypto.c
/openbmc/qemu/block/file-posix.c
/openbmc/qemu/block/file-win32.c
/openbmc/qemu/block/gluster.c
/openbmc/qemu/block/io.c
/openbmc/qemu/block/iscsi.c
/openbmc/qemu/block/mirror.c
/openbmc/qemu/block/nfs.c
/openbmc/qemu/block/nvme.c
/openbmc/qemu/block/parallels.c
/openbmc/qemu/block/qcow.c
/openbmc/qemu/block/qcow2-cache.c
/openbmc/qemu/block/qcow2-refcount.c
/openbmc/qemu/block/qcow2-snapshot.c
/openbmc/qemu/block/qcow2.c
/openbmc/qemu/block/qcow2.h
/openbmc/qemu/block/qed.c
/openbmc/qemu/block/raw-format.c
/openbmc/qemu/block/rbd.c
/openbmc/qemu/block/sheepdog.c
/openbmc/qemu/block/ssh.c
/openbmc/qemu/block/trace-events
/openbmc/qemu/block/vdi.c
/openbmc/qemu/block/vhdx-log.c
/openbmc/qemu/block/vhdx.c
/openbmc/qemu/block/vmdk.c
/openbmc/qemu/block/vpc.c
/openbmc/qemu/blockdev.c
/openbmc/qemu/bootdevice.c
/openbmc/qemu/bsd-user/syscall.c
/openbmc/qemu/configure
/openbmc/qemu/contrib/gitdm/domain-map
/openbmc/qemu/contrib/gitdm/group-map-individuals
/openbmc/qemu/contrib/vhost-user-gpu/vugbm.c
/openbmc/qemu/cpus-common.c
/openbmc/qemu/cpus.c
/openbmc/qemu/crypto/Makefile.objs
/openbmc/qemu/crypto/cipher-gcrypt.c
/openbmc/qemu/crypto/cipher-nettle.c
/openbmc/qemu/default-configs/i386-softmmu.mak
/openbmc/qemu/default-configs/m68k-softmmu.mak
/openbmc/qemu/default-configs/xtensa-softmmu.mak
/openbmc/qemu/disas.c
/openbmc/qemu/docs/arm-cpu-features.rst
/openbmc/qemu/docs/devel/index.rst
/openbmc/qemu/docs/devel/plugins.rst
/openbmc/qemu/docs/hyperv.txt
/openbmc/qemu/docs/microvm.rst
/openbmc/qemu/docs/virtio-net-failover.rst
/openbmc/qemu/exec-vary.c
/openbmc/qemu/exec.c
/openbmc/qemu/fpu/softfloat.c
/openbmc/qemu/gdb-xml/riscv-32bit-virtual.xml
/openbmc/qemu/gdb-xml/riscv-64bit-virtual.xml
/openbmc/qemu/hw/Kconfig
/openbmc/qemu/hw/Makefile.objs
/openbmc/qemu/hw/acpi/cpu_hotplug.c
/openbmc/qemu/hw/alpha/dp264.c
/openbmc/qemu/hw/arm/aspeed.c
/openbmc/qemu/hw/arm/bcm2835_peripherals.c
/openbmc/qemu/hw/arm/bcm2836.c
/openbmc/qemu/hw/arm/boot.c
/openbmc/qemu/hw/arm/highbank.c
/openbmc/qemu/hw/arm/musca.c
/openbmc/qemu/hw/arm/raspi.c
/openbmc/qemu/hw/block/Kconfig
/openbmc/qemu/hw/block/Makefile.objs
/openbmc/qemu/hw/block/swim.c
/openbmc/qemu/hw/block/virtio-blk.c
/openbmc/qemu/hw/char/virtio-serial-bus.c
/openbmc/qemu/hw/core/cpu.c
/openbmc/qemu/hw/core/qdev.c
/openbmc/qemu/hw/display/Kconfig
/openbmc/qemu/hw/display/Makefile.objs
/openbmc/qemu/hw/display/macfb.c
/openbmc/qemu/hw/dma/xilinx_axidma.c
/openbmc/qemu/hw/gpio/aspeed_gpio.c
/openbmc/qemu/hw/hppa/machine.c
/openbmc/qemu/hw/i386/Kconfig
/openbmc/qemu/hw/i386/Makefile.objs
/openbmc/qemu/hw/i386/acpi-build.c
/openbmc/qemu/hw/i386/amd_iommu.c
/openbmc/qemu/hw/i386/intel_iommu.c
/openbmc/qemu/hw/i386/microvm.c
/openbmc/qemu/hw/i386/pc.c
/openbmc/qemu/hw/i386/pc_piix.c
/openbmc/qemu/hw/i386/pc_q35.c
/openbmc/qemu/hw/i386/pc_sysfw.c
/openbmc/qemu/hw/i386/x86.c
/openbmc/qemu/hw/i386/xen/xen-hvm.c
/openbmc/qemu/hw/ide/qdev.c
/openbmc/qemu/hw/intc/apic.c
/openbmc/qemu/hw/intc/armv7m_nvic.c
/openbmc/qemu/hw/intc/ioapic.c
/openbmc/qemu/hw/intc/s390_flic_kvm.c
/openbmc/qemu/hw/intc/spapr_xive.c
/openbmc/qemu/hw/intc/xics.c
/openbmc/qemu/hw/intc/xics_spapr.c
/openbmc/qemu/hw/intc/xive.c
/openbmc/qemu/hw/m68k/Kconfig
/openbmc/qemu/hw/m68k/Makefile.objs
/openbmc/qemu/hw/m68k/bootinfo.h
/openbmc/qemu/hw/m68k/mcf5206.c
/openbmc/qemu/hw/m68k/q800.c
/openbmc/qemu/hw/mem/Makefile.objs
/openbmc/qemu/hw/mips/mips_fulong2e.c
/openbmc/qemu/hw/mips/mips_jazz.c
/openbmc/qemu/hw/mips/mips_malta.c
/openbmc/qemu/hw/mips/mips_r4k.c
/openbmc/qemu/hw/misc/Kconfig
/openbmc/qemu/hw/misc/Makefile.objs
/openbmc/qemu/hw/misc/bcm2835_thermal.c
/openbmc/qemu/hw/misc/mac_via.c
/openbmc/qemu/hw/misc/tmp421.c
/openbmc/qemu/hw/net/Kconfig
/openbmc/qemu/hw/net/Makefile.objs
/openbmc/qemu/hw/net/dp8393x.c
/openbmc/qemu/hw/net/fsl_etsec/etsec.c
/openbmc/qemu/hw/net/fsl_etsec/etsec.h
/openbmc/qemu/hw/net/trace-events
/openbmc/qemu/hw/net/tulip.c
/openbmc/qemu/hw/net/tulip.h
/openbmc/qemu/hw/net/vhost_net.c
/openbmc/qemu/hw/net/virtio-net.c
/openbmc/qemu/hw/nubus/Kconfig
/openbmc/qemu/hw/nubus/Makefile.objs
/openbmc/qemu/hw/nubus/mac-nubus-bridge.c
/openbmc/qemu/hw/nubus/nubus-bridge.c
/openbmc/qemu/hw/nubus/nubus-bus.c
/openbmc/qemu/hw/nubus/nubus-device.c
/openbmc/qemu/hw/nvram/fw_cfg.c
/openbmc/qemu/hw/pci/pci.c
/openbmc/qemu/hw/pci/pci_bridge.c
/openbmc/qemu/hw/pci/pcie.c
/openbmc/qemu/hw/ppc/mac_newworld.c
/openbmc/qemu/hw/ppc/pnv.c
/openbmc/qemu/hw/ppc/pnv_core.c
/openbmc/qemu/hw/ppc/ppc405_boards.c
/openbmc/qemu/hw/ppc/prep.c
/openbmc/qemu/hw/ppc/rs6000_mc.c
/openbmc/qemu/hw/ppc/spapr_cpu_core.c
/openbmc/qemu/hw/ppc/spapr_irq.c
/openbmc/qemu/hw/ppc/spapr_pci.c
/openbmc/qemu/hw/rdma/vmw/pvrdma_main.c
/openbmc/qemu/hw/riscv/Kconfig
/openbmc/qemu/hw/riscv/boot.c
/openbmc/qemu/hw/riscv/sifive_u.c
/openbmc/qemu/hw/riscv/spike.c
/openbmc/qemu/hw/riscv/virt.c
/openbmc/qemu/hw/rtc/Kconfig
/openbmc/qemu/hw/rtc/Makefile.objs
/openbmc/qemu/hw/rtc/aspeed_rtc.c
/openbmc/qemu/hw/rtc/ds1338.c
/openbmc/qemu/hw/rtc/exynos4210_rtc.c
/openbmc/qemu/hw/rtc/m41t80.c
/openbmc/qemu/hw/rtc/m48t59-internal.h
/openbmc/qemu/hw/rtc/m48t59-isa.c
/openbmc/qemu/hw/rtc/m48t59.c
/openbmc/qemu/hw/rtc/mc146818rtc.c
/openbmc/qemu/hw/rtc/pl031.c
/openbmc/qemu/hw/rtc/sun4v-rtc.c
/openbmc/qemu/hw/rtc/trace-events
/openbmc/qemu/hw/rtc/twl92230.c
/openbmc/qemu/hw/rtc/xlnx-zynqmp-rtc.c
/openbmc/qemu/hw/scsi/esp.c
/openbmc/qemu/hw/scsi/scsi-bus.c
/openbmc/qemu/hw/scsi/scsi-disk.c
/openbmc/qemu/hw/scsi/virtio-scsi.c
/openbmc/qemu/hw/sparc/sun4m.c
/openbmc/qemu/hw/sparc64/niagara.c
/openbmc/qemu/hw/sparc64/sun4u.c
/openbmc/qemu/hw/timer/Kconfig
/openbmc/qemu/hw/timer/Makefile.objs
/openbmc/qemu/hw/timer/bcm2835_systmr.c
/openbmc/qemu/hw/timer/grlib_gptimer.c
/openbmc/qemu/hw/timer/hpet.c
/openbmc/qemu/hw/timer/milkymist-sysctl.c
/openbmc/qemu/hw/timer/slavio_timer.c
/openbmc/qemu/hw/timer/trace-events
/openbmc/qemu/hw/timer/xilinx_timer.c
/openbmc/qemu/hw/vfio/pci.c
/openbmc/qemu/hw/vfio/pci.h
/openbmc/qemu/hw/vfio/spapr.c
/openbmc/qemu/hw/virtio/vhost.c
/openbmc/qemu/hw/virtio/virtio-mmio.c
/openbmc/qemu/hw/virtio/virtio-rng.c
/openbmc/qemu/hw/virtio/virtio.c
/openbmc/qemu/hw/xtensa/Kconfig
/openbmc/qemu/hw/xtensa/Makefile.objs
/openbmc/qemu/hw/xtensa/sim.c
/openbmc/qemu/hw/xtensa/virt.c
/openbmc/qemu/hw/xtensa/xtensa_sim.h
/openbmc/qemu/include/block/block-copy.h
/openbmc/qemu/include/block/block.h
/openbmc/qemu/include/block/block_int.h
/openbmc/qemu/include/block/nvme.h
/openbmc/qemu/include/disas/disas.h
/openbmc/qemu/include/exec/cpu-all.h
/openbmc/qemu/include/exec/cpu-defs.h
/openbmc/qemu/include/exec/cpu_ldst.h
/openbmc/qemu/include/exec/cpu_ldst_template.h
/openbmc/qemu/include/exec/cpu_ldst_useronly_template.h
/openbmc/qemu/include/exec/exec-all.h
/openbmc/qemu/include/exec/helper-gen.h
/openbmc/qemu/include/exec/helper-proto.h
/openbmc/qemu/include/exec/helper-tcg.h
/openbmc/qemu/include/exec/plugin-gen.h
/openbmc/qemu/include/exec/ram_addr.h
/openbmc/qemu/include/exec/translator.h
/openbmc/qemu/include/hw/arm/aspeed.h
/openbmc/qemu/include/hw/arm/aspeed_soc.h
/openbmc/qemu/include/hw/arm/bcm2835_peripherals.h
/openbmc/qemu/include/hw/arm/bcm2836.h
/openbmc/qemu/include/hw/arm/raspi_platform.h
/openbmc/qemu/include/hw/arm/xlnx-zynqmp.h
/openbmc/qemu/include/hw/block/block.h
/openbmc/qemu/include/hw/block/swim.h
/openbmc/qemu/include/hw/core/cpu.h
/openbmc/qemu/include/hw/display/macfb.h
/openbmc/qemu/include/hw/i386/microvm.h
/openbmc/qemu/include/hw/i386/pc.h
/openbmc/qemu/include/hw/i386/x86.h
/openbmc/qemu/include/hw/misc/bcm2835_thermal.h
/openbmc/qemu/include/hw/misc/mac_via.h
/openbmc/qemu/include/hw/nubus/mac-nubus-bridge.h
/openbmc/qemu/include/hw/nubus/nubus.h
/openbmc/qemu/include/hw/nvram/fw_cfg.h
/openbmc/qemu/include/hw/pci/pci.h
/openbmc/qemu/include/hw/pci/pci_ids.h
pnv.h
spapr_irq.h
xics.h
xive.h
/openbmc/qemu/include/hw/qdev-core.h
/openbmc/qemu/include/hw/riscv/sifive_u.h
/openbmc/qemu/include/hw/riscv/spike.h
/openbmc/qemu/include/hw/riscv/virt.h
/openbmc/qemu/include/hw/rtc/aspeed_rtc.h
/openbmc/qemu/include/hw/rtc/m48t59.h
/openbmc/qemu/include/hw/rtc/mc146818rtc.h
/openbmc/qemu/include/hw/rtc/mc146818rtc_regs.h
/openbmc/qemu/include/hw/rtc/pl031.h
/openbmc/qemu/include/hw/rtc/sun4v-rtc.h
/openbmc/qemu/include/hw/rtc/xlnx-zynqmp-rtc.h
/openbmc/qemu/include/hw/scsi/esp.h
/openbmc/qemu/include/hw/scsi/scsi.h
/openbmc/qemu/include/hw/timer/bcm2835_systmr.h
/openbmc/qemu/include/hw/virtio/virtio-mmio.h
/openbmc/qemu/include/hw/virtio/virtio-net.h
/openbmc/qemu/include/hw/virtio/virtio.h
/openbmc/qemu/include/migration/vmstate.h
/openbmc/qemu/include/qemu-common.h
/openbmc/qemu/include/qemu/bitops.h
/openbmc/qemu/include/qemu/co-shared-resource.h
/openbmc/qemu/include/qemu/compiler.h
/openbmc/qemu/include/qemu/coroutine.h
/openbmc/qemu/include/qemu/log.h
/openbmc/qemu/include/qemu/osdep.h
/openbmc/qemu/include/qemu/plugin-memory.h
/openbmc/qemu/include/qemu/plugin.h
/openbmc/qemu/include/qemu/qemu-plugin.h
/openbmc/qemu/include/qemu/queue.h
/openbmc/qemu/include/sysemu/block-backend.h
/openbmc/qemu/include/sysemu/sysemu.h
/openbmc/qemu/include/user/syscall-trace.h
/openbmc/qemu/linux-user/aarch64/cpu_loop.c
/openbmc/qemu/linux-user/arm/cpu_loop.c
/openbmc/qemu/linux-user/exit.c
/openbmc/qemu/linux-user/main.c
/openbmc/qemu/linux-user/riscv/cpu_loop.c
/openbmc/qemu/linux-user/syscall.c
/openbmc/qemu/migration/migration.c
/openbmc/qemu/migration/migration.h
/openbmc/qemu/migration/postcopy-ram.c
/openbmc/qemu/migration/savevm.c
/openbmc/qemu/migration/savevm.h
/openbmc/qemu/monitor/misc.c
/openbmc/qemu/net/colo-compare.c
/openbmc/qemu/pc-bios/bios-microvm.bin
/openbmc/qemu/pc-bios/openbios-ppc
/openbmc/qemu/pc-bios/openbios-sparc32
/openbmc/qemu/pc-bios/openbios-sparc64
/openbmc/qemu/plugins/.gitignore
/openbmc/qemu/plugins/Makefile.objs
/openbmc/qemu/plugins/api.c
/openbmc/qemu/plugins/core.c
/openbmc/qemu/plugins/loader.c
/openbmc/qemu/plugins/plugin.h
/openbmc/qemu/plugins/qemu-plugins.symbols
/openbmc/qemu/po/bg.po
/openbmc/qemu/python/qemu/machine.py
/openbmc/qemu/python/qemu/qtest.py
/openbmc/qemu/qapi/block-core.json
/openbmc/qemu/qapi/machine-target.json
/openbmc/qemu/qapi/migration.json
/openbmc/qemu/qapi/net.json
/openbmc/qemu/qdev-monitor.c
/openbmc/qemu/qemu-deprecated.texi
/openbmc/qemu/qemu-img.c
/openbmc/qemu/qemu-io-cmds.c
/openbmc/qemu/qemu-options.hx
/openbmc/qemu/roms/Makefile
/openbmc/qemu/roms/openbios
/openbmc/qemu/roms/qboot
/openbmc/qemu/scripts/checkpatch.pl
/openbmc/qemu/scripts/qapi/doc.py
/openbmc/qemu/scripts/qapi/expr.py
/openbmc/qemu/scripts/qapi/parser.py
/openbmc/qemu/scripts/qapi/schema.py
/openbmc/qemu/scripts/tracetool/transform.py
/openbmc/qemu/target/alpha/translate.c
/openbmc/qemu/target/arm/arm_ldst.h
/openbmc/qemu/target/arm/cpu.c
/openbmc/qemu/target/arm/cpu.h
/openbmc/qemu/target/arm/cpu64.c
/openbmc/qemu/target/arm/helper-a64.c
/openbmc/qemu/target/arm/helper.c
/openbmc/qemu/target/arm/helper.h
/openbmc/qemu/target/arm/internals.h
/openbmc/qemu/target/arm/kvm.c
/openbmc/qemu/target/arm/kvm32.c
/openbmc/qemu/target/arm/kvm64.c
/openbmc/qemu/target/arm/kvm_arm.h
/openbmc/qemu/target/arm/m_helper.c
/openbmc/qemu/target/arm/machine.c
/openbmc/qemu/target/arm/monitor.c
/openbmc/qemu/target/arm/op_helper.c
/openbmc/qemu/target/arm/translate-a64.c
/openbmc/qemu/target/arm/translate-vfp.inc.c
/openbmc/qemu/target/arm/translate.c
/openbmc/qemu/target/cris/translate_v10.inc.c
/openbmc/qemu/target/hppa/translate.c
/openbmc/qemu/target/i386/cpu.c
/openbmc/qemu/target/i386/cpu.h
/openbmc/qemu/target/i386/fpu_helper.c
/openbmc/qemu/target/i386/hyperv-proto.h
/openbmc/qemu/target/i386/kvm.c
/openbmc/qemu/target/i386/machine.c
/openbmc/qemu/target/i386/translate.c
/openbmc/qemu/target/m68k/translate.c
/openbmc/qemu/target/mips/helper.c
/openbmc/qemu/target/mips/helper.h
/openbmc/qemu/target/mips/msa_helper.c
/openbmc/qemu/target/mips/op_helper.c
/openbmc/qemu/target/mips/translate.c
/openbmc/qemu/target/openrisc/translate.c
/openbmc/qemu/target/ppc/kvm.c
/openbmc/qemu/target/ppc/translate.c
/openbmc/qemu/target/riscv/cpu.c
/openbmc/qemu/target/riscv/cpu.h
/openbmc/qemu/target/riscv/cpu_helper.c
/openbmc/qemu/target/riscv/csr.c
/openbmc/qemu/target/riscv/gdbstub.c
/openbmc/qemu/target/riscv/pmp.c
/openbmc/qemu/target/riscv/translate.c
/openbmc/qemu/target/sh4/translate.c
/openbmc/qemu/target/sparc/translate.c
/openbmc/qemu/target/xtensa/core-test_mmuhifi_c3.c
/openbmc/qemu/target/xtensa/core-test_mmuhifi_c3/core-isa.h
/openbmc/qemu/target/xtensa/core-test_mmuhifi_c3/gdb-config.inc.c
/openbmc/qemu/target/xtensa/core-test_mmuhifi_c3/xtensa-modules.inc.c
/openbmc/qemu/target/xtensa/translate.c
/openbmc/qemu/tcg/tcg-op.c
/openbmc/qemu/tcg/tcg-op.h
/openbmc/qemu/tcg/tcg-opc.h
/openbmc/qemu/tcg/tcg.c
/openbmc/qemu/tcg/tcg.h
/openbmc/qemu/tcg/tci.c
/openbmc/qemu/tests/Makefile.include
/openbmc/qemu/tests/acceptance/avocado_qemu/__init__.py
/openbmc/qemu/tests/acceptance/boot_linux_console.py
/openbmc/qemu/tests/acceptance/linux_ssh_mips_malta.py
/openbmc/qemu/tests/acceptance/machine_sparc_leon3.py
/openbmc/qemu/tests/acceptance/ppc_prep_40p.py
/openbmc/qemu/tests/arm-cpu-features.c
/openbmc/qemu/tests/benchmark-crypto-cipher.c
/openbmc/qemu/tests/benchmark-crypto-hash.c
/openbmc/qemu/tests/docker/Makefile.include
/openbmc/qemu/tests/docker/dockerfiles/travis.docker
/openbmc/qemu/tests/hd-geo-test.c
/openbmc/qemu/tests/libqos/libqos.c
/openbmc/qemu/tests/libqos/pci.c
/openbmc/qemu/tests/libqos/pci.h
/openbmc/qemu/tests/libqos/virtio-9p.c
/openbmc/qemu/tests/libqos/virtio-mmio.c
/openbmc/qemu/tests/libqos/virtio-mmio.h
/openbmc/qemu/tests/libqos/virtio-net.c
/openbmc/qemu/tests/libqos/virtio-pci-modern.c
/openbmc/qemu/tests/libqos/virtio-pci-modern.h
/openbmc/qemu/tests/libqos/virtio-pci.c
/openbmc/qemu/tests/libqos/virtio-pci.h
/openbmc/qemu/tests/libqos/virtio.c
/openbmc/qemu/tests/libqos/virtio.h
/openbmc/qemu/tests/plugin/Makefile
/openbmc/qemu/tests/plugin/bb.c
/openbmc/qemu/tests/plugin/empty.c
/openbmc/qemu/tests/plugin/hotblocks.c
/openbmc/qemu/tests/plugin/hotpages.c
/openbmc/qemu/tests/plugin/howvec.c
/openbmc/qemu/tests/plugin/insn.c
/openbmc/qemu/tests/plugin/mem.c
/openbmc/qemu/tests/qapi-schema/doc-bad-alternate-member.err
/openbmc/qemu/tests/qapi-schema/doc-bad-boxed-command-arg.err
/openbmc/qemu/tests/qapi-schema/doc-bad-boxed-command-arg.json
/openbmc/qemu/tests/qapi-schema/doc-bad-boxed-command-arg.out
/openbmc/qemu/tests/qapi-schema/doc-bad-command-arg.err
/openbmc/qemu/tests/qapi-schema/doc-bad-enum-member.err
/openbmc/qemu/tests/qapi-schema/doc-bad-enum-member.json
/openbmc/qemu/tests/qapi-schema/doc-bad-enum-member.out
/openbmc/qemu/tests/qapi-schema/doc-bad-event-arg.err
/openbmc/qemu/tests/qapi-schema/doc-bad-event-arg.json
/openbmc/qemu/tests/qapi-schema/doc-bad-event-arg.out
/openbmc/qemu/tests/qapi-schema/doc-bad-feature.err
/openbmc/qemu/tests/qapi-schema/doc-bad-feature.json
/openbmc/qemu/tests/qapi-schema/doc-bad-feature.out
/openbmc/qemu/tests/qapi-schema/doc-bad-union-member.err
/openbmc/qemu/tests/qapi-schema/doc-good.json
/openbmc/qemu/tests/qapi-schema/doc-good.out
/openbmc/qemu/tests/qapi-schema/doc-good.texi
/openbmc/qemu/tests/qapi-schema/doc-undoc-feature.err
/openbmc/qemu/tests/qapi-schema/doc-undoc-feature.json
/openbmc/qemu/tests/qapi-schema/doc-undoc-feature.out
/openbmc/qemu/tests/qapi-schema/test-qapi.py
/openbmc/qemu/tests/qemu-iotests/051.pc.out
/openbmc/qemu/tests/qemu-iotests/083
/openbmc/qemu/tests/qemu-iotests/083.out
/openbmc/qemu/tests/qemu-iotests/093
/openbmc/qemu/tests/qemu-iotests/118
/openbmc/qemu/tests/qemu-iotests/136
/openbmc/qemu/tests/qemu-iotests/140
/openbmc/qemu/tests/qemu-iotests/140.out
/openbmc/qemu/tests/qemu-iotests/143
/openbmc/qemu/tests/qemu-iotests/143.out
/openbmc/qemu/tests/qemu-iotests/147
/openbmc/qemu/tests/qemu-iotests/181
/openbmc/qemu/tests/qemu-iotests/182
/openbmc/qemu/tests/qemu-iotests/183
/openbmc/qemu/tests/qemu-iotests/192
/openbmc/qemu/tests/qemu-iotests/192.out
/openbmc/qemu/tests/qemu-iotests/194
/openbmc/qemu/tests/qemu-iotests/201
/openbmc/qemu/tests/qemu-iotests/205
/openbmc/qemu/tests/qemu-iotests/208
/openbmc/qemu/tests/qemu-iotests/209
/openbmc/qemu/tests/qemu-iotests/222
/openbmc/qemu/tests/qemu-iotests/223
/openbmc/qemu/tests/qemu-iotests/240
/openbmc/qemu/tests/qemu-iotests/241
/openbmc/qemu/tests/qemu-iotests/245
/openbmc/qemu/tests/qemu-iotests/261
/openbmc/qemu/tests/qemu-iotests/261.out
/openbmc/qemu/tests/qemu-iotests/264
/openbmc/qemu/tests/qemu-iotests/267
/openbmc/qemu/tests/qemu-iotests/267.out
/openbmc/qemu/tests/qemu-iotests/check
/openbmc/qemu/tests/qemu-iotests/common.filter
/openbmc/qemu/tests/qemu-iotests/common.nbd
/openbmc/qemu/tests/qemu-iotests/common.rc
/openbmc/qemu/tests/qemu-iotests/group
/openbmc/qemu/tests/qemu-iotests/iotests.py
/openbmc/qemu/tests/rtc-test.c
/openbmc/qemu/tests/tcg/Makefile.target
/openbmc/qemu/tests/tcg/aarch64/Makefile.softmmu-target
/openbmc/qemu/tests/tcg/aarch64/Makefile.target
/openbmc/qemu/tests/tcg/arm/Makefile.softmmu-target
/openbmc/qemu/tests/tcg/arm/Makefile.target
/openbmc/qemu/tests/tcg/cris/Makefile.target
/openbmc/qemu/tests/tcg/i386/Makefile.target
/openbmc/qemu/tests/test-block-iothread.c
/openbmc/qemu/tests/vhost-user-bridge.c
/openbmc/qemu/tests/virtio-blk-test.c
/openbmc/qemu/tests/virtio-scsi-test.c
/openbmc/qemu/tests/vm/basevm.py
/openbmc/qemu/tests/vm/netbsd
/openbmc/qemu/trace-events
/openbmc/qemu/trace/mem-internal.h
/openbmc/qemu/trace/mem.h
/openbmc/qemu/util/Makefile.objs
/openbmc/qemu/util/async.c
/openbmc/qemu/util/event_notifier-posix.c
/openbmc/qemu/util/hbitmap.c
/openbmc/qemu/util/log.c
/openbmc/qemu/util/main-loop.c
/openbmc/qemu/util/mmap-alloc.c
/openbmc/qemu/util/oslib-posix.c
/openbmc/qemu/util/oslib-win32.c
/openbmc/qemu/util/qemu-co-shared-resource.c
/openbmc/qemu/util/qemu-coroutine-io.c
/openbmc/qemu/util/qemu-timer.c
/openbmc/qemu/util/systemd.c
/openbmc/qemu/util/vfio-helpers.c
/openbmc/qemu/vl.c
97c00c5422-Oct-2019 Cédric Le Goater <clg@kaod.org>

spapr/xive: Set the OS CAM line at reset

When a Virtual Processor is scheduled to run on a HW thread, the
hypervisor pushes its identifier in the OS CAM line. When running with
kernel_irqchip=off, Q

spapr/xive: Set the OS CAM line at reset

When a Virtual Processor is scheduled to run on a HW thread, the
hypervisor pushes its identifier in the OS CAM line. When running with
kernel_irqchip=off, QEMU needs to emulate the same behavior.

Set the OS CAM line when the interrupt presenter of the sPAPR core is
reset. This will also cover the case of hot-plugged CPUs.

This change also has the benefit to remove the use of CPU_FOREACH()
which can be unsafe.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Message-Id: <20191022163812.330-8-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

d49e8a9b22-Oct-2019 Cédric Le Goater <clg@kaod.org>

ppc: Reset the interrupt presenter from the CPU reset handler

On the sPAPR machine and PowerNV machine, the interrupt presenters are
created by a machine handler at the core level and are reset
inde

ppc: Reset the interrupt presenter from the CPU reset handler

On the sPAPR machine and PowerNV machine, the interrupt presenters are
created by a machine handler at the core level and are reset
independently. This is not consistent and it raises issues when it
comes to handle hot-plugged CPUs. In that case, the presenters are not
reset. This is less of an issue in XICS, although a zero MFFR could
be a concern, but in XIVE, the OS CAM line is not set and this breaks
the presenting algorithm. The current code has workarounds which need
a global cleanup.

Extend the sPAPR IRQ backend and the PowerNV Chip class with a new
cpu_intc_reset() handler called by the CPU reset handler and remove
the XiveTCTX reset handler which is now redundant.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20191022163812.330-6-clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

aa5ac64b22-Oct-2019 Cédric Le Goater <clg@kaod.org>

ppc/pnv: Add a PnvChip pointer to PnvCore

We will use it to reset the interrupt presenter from the CPU reset
handler.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Greg Kurz <groug@ka

ppc/pnv: Add a PnvChip pointer to PnvCore

We will use it to reset the interrupt presenter from the CPU reset
handler.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Message-Id: <20191022163812.330-5-clg@kaod.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

show more ...

54255c1f26-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr: Move SpaprIrq::nr_xirqs to SpaprMachineClass

For the benefit of peripheral device allocation, the number of available
irqs really wants to be the same on a given machine type version,
regardl

spapr: Move SpaprIrq::nr_xirqs to SpaprMachineClass

For the benefit of peripheral device allocation, the number of available
irqs really wants to be the same on a given machine type version,
regardless of what irq backends we are using. That's the case now, but
only because we make sure the different SpaprIrq instances have the same
value except for the special legacy one.

Since this really only depends on machine type version, move the value to
SpaprMachineClass instead of SpaprIrq. This also puts the code to set it
to the lower value on old machine types right next to setting
legacy_irq_allocation, which needs to go hand in hand.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

8cbe71ec26-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr: Remove SpaprIrq::nr_msis

The nr_msis value we use here has to line up with whether we're using
legacy or modern irq allocation. Therefore it's safer to derive it based
on legacy_irq_allocati

spapr: Remove SpaprIrq::nr_msis

The nr_msis value we use here has to line up with whether we're using
legacy or modern irq allocation. Therefore it's safer to derive it based
on legacy_irq_allocation rather than having SpaprIrq contain a canned
value.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

605994e526-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr, xics, xive: Move SpaprIrq::post_load hook to backends

The remaining logic in the post_load hook really belongs to the interrupt
controller backends, and just needs to be called on the active

spapr, xics, xive: Move SpaprIrq::post_load hook to backends

The remaining logic in the post_load hook really belongs to the interrupt
controller backends, and just needs to be called on the active controller
(after the active controller is set to the right thing based on the
incoming migration in the generic spapr_irq_post_load() logic).

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

567192d426-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr, xics, xive: Move SpaprIrq::reset hook logic into activate/deactivate

It turns out that all the logic in the SpaprIrq::reset hooks (and some in
the SpaprIrq::post_load hooks) isn't really rela

spapr, xics, xive: Move SpaprIrq::reset hook logic into activate/deactivate

It turns out that all the logic in the SpaprIrq::reset hooks (and some in
the SpaprIrq::post_load hooks) isn't really related to resetting the irq
backend (that's handled by the backends' own reset routines). Rather its
about getting the backend ready to be the active interrupt controller or
stopping being the active interrupt controller - reset (and post_load) is
just the only time that changes at present.

To make this flow clearer, move the logic into the explicit backend
activate and deactivate hooks.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

0a17e0c326-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr: Remove SpaprIrq::init_kvm hook

This hook is a bit odd. The only caller is spapr_irq_init_kvm(), but
it explicitly takes an SpaprIrq *, so it's never really called through the
current SpaprIr

spapr: Remove SpaprIrq::init_kvm hook

This hook is a bit odd. The only caller is spapr_irq_init_kvm(), but
it explicitly takes an SpaprIrq *, so it's never really called through the
current SpaprIrq. Essentially this is just a way of passing through a
function pointer so that spapr_irq_init_kvm() can handle some
configuration and error handling logic without duplicating it between the
xics and xive reset paths.

So, make it just take that function pointer. Because of earlier reworks
to the KVM connect/disconnect code in the xics and xive backends we can
also eliminate some wrapper functions and streamline error handling a bit.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

98a39a7926-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr, xics, xive: Match signatures for XICS and XIVE KVM connect routines

Both XICS and XIVE have routines to connect and disconnect KVM with
similar but not identical signatures. This adjusts the

spapr, xics, xive: Match signatures for XICS and XIVE KVM connect routines

Both XICS and XIVE have routines to connect and disconnect KVM with
similar but not identical signatures. This adjusts them to match
exactly, which will be useful for further cleanups later.

While we're there, we add an explicit return value to the connect path
to streamline error reporting in the callers. We remove error
reporting the disconnect path. In the XICS case this wasn't used at
all. In the XIVE case the only error case was if the KVM device was
set up, but KVM didn't have the capability to do so which is pretty
obviously impossible.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

0528927329-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr, xics, xive: Move dt_populate from SpaprIrq to SpaprInterruptController

This method depends only on the active irq controller. Now that we've
formalized the notion of active controller we can

spapr, xics, xive: Move dt_populate from SpaprIrq to SpaprInterruptController

This method depends only on the active irq controller. Now that we've
formalized the notion of active controller we can dispatch directly
through that, rather than dispatching via SpaprIrq with the dual
version having to do a second conditional dispatch.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

328d8eb226-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr, xics, xive: Move print_info from SpaprIrq to SpaprInterruptController

This method depends only on the active irq controller. Now that we've
formalized the notion of active controller we can

spapr, xics, xive: Move print_info from SpaprIrq to SpaprInterruptController

This method depends only on the active irq controller. Now that we've
formalized the notion of active controller we can dispatch directly
through that, rather than dispatching via SpaprIrq with the dual
version having to do a second conditional dispatch.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

7bcdbcca26-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr, xics, xive: Move set_irq from SpaprIrq to SpaprInterruptController

This method depends only on the active irq controller. Now that we've
formalized the notion of active controller we can dis

spapr, xics, xive: Move set_irq from SpaprIrq to SpaprInterruptController

This method depends only on the active irq controller. Now that we've
formalized the notion of active controller we can dispatch directly through
that, rather than dispatching via SpaprIrq with the dual version having
to do a second conditional dispatch.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

81106ddd26-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr: Formalize notion of active interrupt controller

spapr now has the mechanism of constructing both XICS and XIVE instances of
the SpaprInterruptController interface. However, only one of the i

spapr: Formalize notion of active interrupt controller

spapr now has the mechanism of constructing both XICS and XIVE instances of
the SpaprInterruptController interface. However, only one of the interrupt
controllers will actually be active at any given time, depending on feature
negotiation with the guest. This is handled in the current code via
spapr_irq_current() which checks the OV5 vector from feature negotiation to
determine the current backend.

Determining the active controller at the point we need it like this
can be pretty confusing, because it makes it very non obvious at what
points the active controller can change. This can make it difficult
to reason about the code and where a change of active controller could
appear in sequence with other events.

Make this mechanism more explicit by adding an 'active_intc' pointer
and an explicit spapr_irq_update_active_intc() function to update it
from the CAS state. We also add hooks on the intc backend which will
get called when it is activated or deactivated.

For now we just introduce the switch and hooks, later patches will
actually start using them.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

0b0e52b125-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr, xics, xive: Move irq claim and free from SpaprIrq to SpaprInterruptController

These methods, like cpu_intc_create, really belong to the interrupt
controller, but need to be called on all poss

spapr, xics, xive: Move irq claim and free from SpaprIrq to SpaprInterruptController

These methods, like cpu_intc_create, really belong to the interrupt
controller, but need to be called on all possible intcs.

Like cpu_intc_create, therefore, make them methods on the intc and
always call it for all existing intcs.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

ebd6be0825-Sep-2019 David Gibson <david@gibson.dropbear.id.au>

spapr, xics, xive: Move cpu_intc_create from SpaprIrq to SpaprInterruptController

This method essentially represents code which belongs to the interrupt
controller, but needs to be called on all pos

spapr, xics, xive: Move cpu_intc_create from SpaprIrq to SpaprInterruptController

This method essentially represents code which belongs to the interrupt
controller, but needs to be called on all possible intcs, rather than
just the currently active one. The "dual" version therefore calls
into the xics and xive versions confusingly.

Handle this more directly, by making it instead a method on the intc
backend, and always calling it on every backend that exists.

While we're there, streamline the error reporting a bit.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>

show more ...

1...<<11121314151617181920>>...39