From patchwork Tue Mar 13 22:46:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 10281155 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 71639601A0 for ; Tue, 13 Mar 2018 23:10:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1E20D22B26 for ; Tue, 13 Mar 2018 23:10:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 13253285AF; Tue, 13 Mar 2018 23:10:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 3709F22B26 for ; Tue, 13 Mar 2018 23:10:38 +0000 (UTC) Received: from localhost ([::1]:43406 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evt41-0008NJ-4h for patchwork-qemu-devel@patchwork.kernel.org; Tue, 13 Mar 2018 19:10:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58024) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evshy-0005fP-FE for qemu-devel@nongnu.org; Tue, 13 Mar 2018 18:47:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evshx-0003CO-2i for qemu-devel@nongnu.org; Tue, 13 Mar 2018 18:47:50 -0400 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]:52461) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1evshw-0003Az-OG for qemu-devel@nongnu.org; Tue, 13 Mar 2018 18:47:48 -0400 Received: by mail-wm0-x234.google.com with SMTP id t3so868280wmc.2 for ; Tue, 13 Mar 2018 15:47:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=v1EPGv9Cce9uuLtorMLRNSGF8tQZyoqASX916tvwq0U=; b=Yslgc2Qc1ak8rkk5OukbyuNMkInji50c3EpDG0XOLgmYqtWTnBclLeRj7h63Xm+qWs xISAV5xKMvoNWQGwzFBQRuCLKCfUIRoZWQXZmm3tzB81AOhRdzFlU+zyCDGB1mxMqubv /XLP8dskwqF0hJgAp4On5ey9qaTNk5B4/gE+L3IMAbJQZWsCi/8qTdxXqn+bEmxO0LoL gwUsFII0nVfrkSBSWocwtgWuwpG28rIOEakG2qHDADTzZOpTd8o8ay19B8zLxqsh+5kZ 3pZUFGgdcf/XgExRVDnO+T5EB4v0j3G6LEIenkPs3qLvFtUj8kVyiVXJ7ggCuXzaYxeB MA9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=v1EPGv9Cce9uuLtorMLRNSGF8tQZyoqASX916tvwq0U=; b=pxhV7gX5l1CxAgyz2DM7dAiigazUAY5UIhAxJs60r/YtFAOl7nDqiv2k93KdrYRS/f Lz36JGqPNuK/XS5GYvmQyiKiIHjojwjFN/g/TTta+RQluU1M5X+WV6XsbaUaQ6jaDbj+ afogQvyxfIejqP87WPQimQolEYBboIvCQ2ovkdIijnHXx6N1D9kTgNgNTlzOVFbCZOBX 8r9nkA68Wf7imyKUYZq+311J54HXy+FLEUu0+c8ySpLoTcxlyo5r+DCoViQgZY3fe5RU B2n41oha7g45CW8pvZCPyp6ZQEvZh3ffBczQUxr3jbG+EnbAZGymg+QEi70zpm4g0W3U 1mgg== X-Gm-Message-State: AElRT7ESKFSsz7wiIds2w2mUPJqxiEa5XkHmr6Jj1AXZbXf6kSbp2YiN OVSOP5cK9P31YAzneF7KML81v/gB X-Google-Smtp-Source: AG47ELtDHYHQ9xSh1Yw9ZTPRjreGhN1gJ8V/HQJHTBGwWl/egJGze9EQfcAomp5FRIrP/5NrqoETOw== X-Received: by 10.28.16.21 with SMTP id 21mr2075069wmq.109.1520981267264; Tue, 13 Mar 2018 15:47:47 -0700 (PDT) Received: from donizetti.lan (94-36-191-219.adsl-ull.clienti.tiscali.it. [94.36.191.219]) by smtp.gmail.com with ESMTPSA id x107sm1557951wrb.97.2018.03.13.15.47.46 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 13 Mar 2018 15:47:46 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 13 Mar 2018 23:46:31 +0100 Message-Id: <20180313224719.4954-22-pbonzini@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180313224719.4954-1-pbonzini@redhat.com> References: <20180313224719.4954-1-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::234 Subject: [Qemu-devel] [PULL 21/69] hw/mips/jazz: Fix implicit creation of "-drive if=scsi" devices X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Thomas Huth 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 Message-Id: <1520414644-11535-1-git-send-email-thuth@redhat.com> Reviewed-by: Hervé Poussineau Signed-off-by: Paolo Bonzini --- 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 08e6f620fc..e135385265 100644 --- a/hw/mips/mips_jazz.c +++ b/hw/mips/mips_jazz.c @@ -146,6 +146,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)); @@ -277,9 +278,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 45975c21e8..64ec285826 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 3b160f858c..93fdaced67 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);