qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] [PATCH 10/17] magnum: disable floppy DMA f


From: John Snow
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH 10/17] magnum: disable floppy DMA for now
Date: Tue, 5 Jan 2016 17:02:10 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0


On 12/29/2015 03:04 AM, Hervé Poussineau wrote:
> Floppy uses the DMA controller in rc4030 chipset, and not the i8259 from the 
> ISA bus.
> It's better to disable DMA than to call the wrong DMA controller.
> 

I'll trust that these platforms' FDCs are already terribly broken and
unusable, I've not tested them personally.

> Signed-off-by: Hervé Poussineau <address@hidden>
> ---
>  hw/block/fdc.c         | 5 +++--
>  hw/mips/mips_jazz.c    | 3 ++-
>  include/hw/block/fdc.h | 2 +-
>  3 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/block/fdc.c b/hw/block/fdc.c
> index 4292ece..cfdd625 100644
> --- a/hw/block/fdc.c
> +++ b/hw/block/fdc.c
> @@ -2255,7 +2255,7 @@ ISADevice *fdctrl_init_isa(ISABus *bus, DriveInfo **fds)
>      return isadev;
>  }
>  
> -void fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
> +void fdctrl_init_sysbus(qemu_irq irq, int dma_chann, IsaDma *dma,
>                          hwaddr mmio_base, DriveInfo **fds)
>  {
>      FDCtrl *fdctrl;
> @@ -2266,7 +2266,8 @@ void fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
>      dev = qdev_create(NULL, "sysbus-fdc");
>      sys = SYSBUS_FDC(dev);
>      fdctrl = &sys->state;
> -    fdctrl->dma_chann = dma_chann; /* FIXME */
> +    fdctrl->dma = dma;

You haven't added this field yet; so this breaks the bisect.

> +    fdctrl->dma_chann = dma ? dma_chann : -1;
>      if (fds[0]) {
>          qdev_prop_set_drive_nofail(dev, "driveA", 
> blk_by_legacy_dinfo(fds[0]));
>      }
> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
> index 64a0de2..300c199 100644
> --- a/hw/mips/mips_jazz.c
> +++ b/hw/mips/mips_jazz.c
> @@ -296,7 +296,8 @@ static void mips_jazz_init(MachineState *machine,
>      for (n = 0; n < MAX_FD; n++) {
>          fds[n] = drive_get(IF_FLOPPY, 0, n);
>      }
> -    fdctrl_init_sysbus(qdev_get_gpio_in(rc4030, 1), 0, 0x80003000, fds);
> +    /* FIXME: we should enable DMA with a custom IsaDma device */
> +    fdctrl_init_sysbus(qdev_get_gpio_in(rc4030, 1), 0, NULL, 0x80003000, 
> fds);
>  
>      /* Real time clock */
>      rtc_init(isa_bus, 1980, NULL);
> diff --git a/include/hw/block/fdc.h b/include/hw/block/fdc.h
> index d48b2f8..f92e44f 100644
> --- a/include/hw/block/fdc.h
> +++ b/include/hw/block/fdc.h
> @@ -16,7 +16,7 @@ typedef enum FDriveType {
>  #define TYPE_ISA_FDC "isa-fdc"
>  
>  ISADevice *fdctrl_init_isa(ISABus *bus, DriveInfo **fds);
> -void fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
> +void fdctrl_init_sysbus(qemu_irq irq, int dma_chann, IsaDma *dma,
>                          hwaddr mmio_base, DriveInfo **fds);
>  void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base,
>                         DriveInfo **fds, qemu_irq *fdc_tc);
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]