qemu-e2k/hw/arm
Igor Mammedov 60b8fe49cc arm: fix qemu crash on startup with -bios option
When QEMU is started with following CLI
 -machine virt,gic-version=3,accel=kvm -cpu host -bios AAVMF_CODE.fd
it crashes with abort at
 accel/kvm/kvm-all.c:2164:
 KVM_SET_DEVICE_ATTR failed: Group 6 attr 0x000000000000c665: Invalid argument

Which is caused by implicit dependency of kvm_arm_gicv3_reset() on
arm_gicv3_icc_reset() where the later is called by CPU reset
reset callback.

However commit:
 3b77f6c arm/boot: split load_dtb() from arm_load_kernel()
broke CPU reset callback registration in case

  arm_load_kernel()
      ...
      if (!info->kernel_filename || info->firmware_loaded)

branch is taken, i.e. it's sufficient to provide a firmware
or do not provide kernel on CLI to skip cpu reset callback
registration, where before offending commit the callback
has been registered unconditionally.

Fix it by registering the callback right at the beginning of
arm_load_kernel() unconditionally instead of doing it at the end.

NOTE:
 we probably should eliminate that dependency anyways as well as
 separate arch CPU reset parts from arm_load_kernel() into CPU
 itself, but that refactoring that I probably would have to do
 anyways later for CPU hotplug to work.

Reported-by: Auger Eric <eric.auger@redhat.com>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 1527070950-208350-1-git-send-email-imammedo@redhat.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2018-05-31 14:50:51 +01:00
..
Makefile.objs hw/arm/smmuv3: Skeleton 2018-05-04 18:49:10 +01:00
allwinner-a10.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
armv7m.c armv7m: Forward init-svtor property to CPU object 2018-03-02 11:03:45 +00:00
aspeed.c hw/arm/aspeed: don't make 'boot_rom' region 'nomigrate' 2018-04-26 11:04:39 +01:00
aspeed_soc.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
bcm2835_peripherals.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
bcm2836.c hw/arm/bcm2836: Use the Cortex-A7 instead of Cortex-A15 2018-03-23 18:26:45 +00:00
boot.c arm: fix qemu crash on startup with -bios option 2018-05-31 14:50:51 +01:00
collie.c arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
cubieboard.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
digic.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
digic_boards.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
exynos4_boards.c hw: add .min_cpus and .default_cpus fields to machine_class 2017-11-13 13:55:27 +00:00
exynos4210.c Remove unnecessary variables for function return value 2018-05-20 08:48:13 +03:00
fsl-imx6.c Remove checks on MAX_SERIAL_PORTS that are just bounds checks 2018-04-26 13:57:00 +01:00
fsl-imx7.c Remove checks on MAX_SERIAL_PORTS that are just bounds checks 2018-04-26 13:57:00 +01:00
fsl-imx25.c Remove checks on MAX_SERIAL_PORTS that are just bounds checks 2018-04-26 13:57:00 +01:00
fsl-imx31.c Remove checks on MAX_SERIAL_PORTS that are just bounds checks 2018-04-26 13:57:00 +01:00
gumstix.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
highbank.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
imx25_pdk.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
integratorcp.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
iotkit.c hw/arm/iotkit.c: fix minor memory leak 2018-05-10 18:10:56 +01:00
kzm.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
mainstone.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
mcimx7d-sabre.c Implement support for i.MX7 Sabre board 2018-03-09 17:09:43 +00:00
mps2-tz.c Remove checks on MAX_SERIAL_PORTS that are just bounds checks 2018-04-26 13:57:00 +01:00
mps2.c Remove checks on MAX_SERIAL_PORTS that are just bounds checks 2018-04-26 13:57:00 +01:00
msf2-soc.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
msf2-som.c msf2: Add Emcraft's Smartfusion2 SOM kit 2017-09-21 16:36:56 +01:00
musicpal.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
netduino2.c arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
nseries.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
omap1.c hw/arm: Don't fail qtest due to missing SD card in -nodefaults mode 2018-05-04 18:05:51 +01:00
omap2.c hw/arm: Don't fail qtest due to missing SD card in -nodefaults mode 2018-05-04 18:05:51 +01:00
omap_sx1.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
palm.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
pxa2xx.c hw/arm: Don't fail qtest due to missing SD card in -nodefaults mode 2018-05-04 18:05:51 +01:00
pxa2xx_gpio.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
pxa2xx_pic.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
raspi.c hw/arm/raspi: Don't bother setting default_cpu_type 2018-04-26 11:04:39 +01:00
realview.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
sabrelite.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
smmu-common.c hw/arm/smmu-common: Fix coverity issue in get_block_pte_address 2018-05-18 17:48:07 +01:00
smmu-internal.h hw/arm/smmu-common: VMSAv8-64 page table walk 2018-05-04 18:05:51 +01:00
smmuv3-internal.h hw/arm/smmuv3: Implement translate callback 2018-05-04 18:51:25 +01:00
smmuv3.c hw/arm/smmuv3: Fix Coverity issue in smmuv3_record_event 2018-05-18 17:48:07 +01:00
spitz.c hw/audio/wm8750: move WM8750 declarations from i2c/i2c.h to audio/wm8750.h 2018-02-02 08:19:25 +01:00
stellaris.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
stm32f205_soc.c Remove checks on MAX_SERIAL_PORTS that are just bounds checks 2018-04-26 13:57:00 +01:00
strongarm.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
strongarm.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
sysbus-fdt.c arm/boot: split load_dtb() from arm_load_kernel() 2018-05-10 18:10:56 +01:00
tosa.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
trace-events hw/arm/smmuv3: Implement translate callback 2018-05-04 18:51:25 +01:00
versatilepb.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
vexpress.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
virt-acpi-build.c hw/arm/virt-acpi-build: Add smmuv3 node in IORT table 2018-05-04 18:52:58 +01:00
virt.c make sure that we aren't overwriting mc->get_hotplug_handler by accident 2018-05-10 18:10:56 +01:00
xilinx_zynq.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
xlnx-zcu102.c xlnx-zcu102: Add support for the ZynqMP QSPI 2017-12-13 17:59:22 +00:00
xlnx-zynqmp.c xlnx-zynqmp: Connect the ZynqMP GDMA and ADMA 2018-05-18 17:48:07 +01:00
z2.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00