qemu-e2k/hw/mips
Peter Maydell 0c285e0128 hw/block/fdc-sysbus: Always mark sysbus floppy controllers as not having DMA
The sysbus floppy controllers (devices sysbus-fdc and sun-fdtwo)
don't support DMA.  The core floppy controller code expects this to
be indicated by setting FDCtrl::dma_chann to -1.  This used to be
done in the device instance_init functions sysbus_fdc_initfn() and
sun4m_fdc_initfn(), but in commit 1430759ec3 we refactored this code
and accidentally lost the setting of dma_chann.

For sysbus-fdc this has no ill effects because we were redundantly
also setting dma_chann in fdctrl_init_sysbus(), but for sun-fdtwo
this means that guests which try to enable DMA on the floppy
controller will cause QEMU to crash because FDCtrl::dma is NULL.

Set dma_chann to -1 in the common instance init, and remove the
redundant code in fdctrl_init_sysbus() that is also setting it.

There is a six-year-old FIXME comment in the jazz board code to the
effect that in theory it should support doing DMA via a custom DMA
controller.  If anybody ever chooses to fix that they can do it by
adding support for setting both FDCtrl::dma_chann and FDCtrl::dma.
(A QOM link property 'dma-controller' on the sysbus device which can
be set to an instance of IsaDmaClass is probably the way to go.)

Fixes: 1430759ec3 ("hw/block/fdc: Extract SysBus floppy controllers to fdc-sysbus.c")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/958
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-Id: <20220505101842.2757905-1-peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
2022-06-11 11:36:14 +02:00
..
bootloader.c hw/mips/bootloader: Fix write_ulong() 2021-12-06 11:57:31 +01:00
boston.c hw/mips/boston: Fix load_elf() error detection 2021-12-06 11:57:36 +01:00
cps.c
fuloong2e.c Warn user if the vga flag is passed but no vga device is created 2022-05-09 08:21:14 +02:00
fw_cfg.c
fw_cfg.h
gt64xxx_pci.c Replace TARGET_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
jazz.c hw/block/fdc-sysbus: Always mark sysbus floppy controllers as not having DMA 2022-06-11 11:36:14 +02:00
Kconfig hw/display: Rename VGA_ISA_MM -> VGA_MMIO 2022-01-13 10:58:54 +01:00
loongson3_bootp.c
loongson3_bootp.h
loongson3_virt.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
malta.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
meson.build hw/mips: Restrict non-virtualized machines to TCG 2021-05-02 16:49:35 +02:00
mips_int.c Do not include cpu.h if it's not really necessary 2021-05-02 17:24:51 +02:00
mipssim.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
trace-events hw/mips/gt64xxx: Trace accesses to ISD registers 2021-03-13 20:29:36 +01:00
trace.h