qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] hw/mips/jazz: Fix implicit creation of "-drive


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] hw/mips/jazz: Fix implicit creation of "-drive if=scsi" devices
Date: Thu, 8 Mar 2018 19:49:40 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0

On 07/03/2018 10:24, Thomas Huth wrote:
> The global hack for creating SCSI devices has recently been removed,
> but this apparently broke SCSI devices on some boards that were not
> ready for this change yet. For the pica61 machine you now get:
> 
> $ mips64-softmmu/qemu-system-mips64 -M pica61 -cdrom x.iso
> qemu-system-mips64: -cdrom x.iso: machine type does not support 
> if=scsi,bus=0,unit=2
> 
> Fix it by calling scsi_bus_legacy_handle_cmdline() after creating the
> corresponding SCSI controller.
> 
> Fixes: 1454509726719e0933c800fad00d6999752688ea
> Signed-off-by: Thomas Huth <address@hidden>
> ---
>  hw/mips/mips_jazz.c   |  7 ++++---
>  hw/scsi/esp.c         | 12 +++++++-----
>  include/hw/scsi/esp.h | 10 +++++-----
>  3 files changed, 16 insertions(+), 13 deletions(-)
> 
> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
> index b09871a..bde2c9b 100644
> --- a/hw/mips/mips_jazz.c
> +++ b/hw/mips/mips_jazz.c
> @@ -147,6 +147,7 @@ static void mips_jazz_init(MachineState *machine,
>      MemoryRegion *ram = g_new(MemoryRegion, 1);
>      MemoryRegion *bios = g_new(MemoryRegion, 1);
>      MemoryRegion *bios2 = g_new(MemoryRegion, 1);
> +    ESPState *esp;
>  
>      /* init CPUs */
>      cpu = MIPS_CPU(cpu_create(machine->cpu_type));
> @@ -278,9 +279,9 @@ static void mips_jazz_init(MachineState *machine,
>      }
>  
>      /* SCSI adapter */
> -    esp_init(0x80002000, 0,
> -             rc4030_dma_read, rc4030_dma_write, dmas[0],
> -             qdev_get_gpio_in(rc4030, 5), &esp_reset, &dma_enable);
> +    esp = esp_init(0x80002000, 0, rc4030_dma_read, rc4030_dma_write, dmas[0],
> +                   qdev_get_gpio_in(rc4030, 5), &esp_reset, &dma_enable);
> +    scsi_bus_legacy_handle_cmdline(&esp->bus);
>  
>      /* Floppy */
>      for (n = 0; n < MAX_FD; n++) {
> diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
> index 45975c2..64ec285 100644
> --- a/hw/scsi/esp.c
> +++ b/hw/scsi/esp.c
> @@ -618,11 +618,11 @@ static const MemoryRegionOps sysbus_esp_mem_ops = {
>      .valid.accepts = esp_mem_accepts,
>  };
>  
> -void esp_init(hwaddr espaddr, int it_shift,
> -              ESPDMAMemoryReadWriteFunc dma_memory_read,
> -              ESPDMAMemoryReadWriteFunc dma_memory_write,
> -              void *dma_opaque, qemu_irq irq, qemu_irq *reset,
> -              qemu_irq *dma_enable)
> +ESPState *esp_init(hwaddr espaddr, int it_shift,
> +                   ESPDMAMemoryReadWriteFunc dma_memory_read,
> +                   ESPDMAMemoryReadWriteFunc dma_memory_write,
> +                   void *dma_opaque, qemu_irq irq, qemu_irq *reset,
> +                   qemu_irq *dma_enable)
>  {
>      DeviceState *dev;
>      SysBusDevice *s;
> @@ -644,6 +644,8 @@ void esp_init(hwaddr espaddr, int it_shift,
>      sysbus_mmio_map(s, 0, espaddr);
>      *reset = qdev_get_gpio_in(dev, 0);
>      *dma_enable = qdev_get_gpio_in(dev, 1);
> +
> +    return esp;
>  }
>  
>  static const struct SCSIBusInfo esp_scsi_info = {
> diff --git a/include/hw/scsi/esp.h b/include/hw/scsi/esp.h
> index 3b160f8..93fdace 100644
> --- a/include/hw/scsi/esp.h
> +++ b/include/hw/scsi/esp.h
> @@ -7,11 +7,6 @@
>  /* esp.c */
>  #define ESP_MAX_DEVS 7
>  typedef void (*ESPDMAMemoryReadWriteFunc)(void *opaque, uint8_t *buf, int 
> len);
> -void esp_init(hwaddr espaddr, int it_shift,
> -              ESPDMAMemoryReadWriteFunc dma_memory_read,
> -              ESPDMAMemoryReadWriteFunc dma_memory_write,
> -              void *dma_opaque, qemu_irq irq, qemu_irq *reset,
> -              qemu_irq *dma_enable);
>  
>  #define ESP_REGS 16
>  #define TI_BUFSZ 16
> @@ -136,6 +131,11 @@ typedef struct {
>  #define TCHI_FAS100A 0x4
>  #define TCHI_AM53C974 0x12
>  
> +ESPState *esp_init(hwaddr espaddr, int it_shift,
> +                   ESPDMAMemoryReadWriteFunc dma_memory_read,
> +                   ESPDMAMemoryReadWriteFunc dma_memory_write,
> +                   void *dma_opaque, qemu_irq irq, qemu_irq *reset,
> +                   qemu_irq *dma_enable);
>  void esp_dma_enable(ESPState *s, int irq, int level);
>  void esp_request_cancelled(SCSIRequest *req);
>  void esp_command_complete(SCSIRequest *req, uint32_t status, size_t resid);
> 

Queued, thanks.

Paolo



reply via email to

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