From patchwork Tue Aug 13 15:10:29 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Michael Roth X-Patchwork-Id: 266832 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (unknown [IPv6:2001:4830:134:3::12]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 3F5A22C0121 for ; Wed, 14 Aug 2013 01:15:38 +1000 (EST) Received: from localhost ([::1]:60696 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V9GJq-0007xI-Q7 for incoming@patchwork.ozlabs.org; Tue, 13 Aug 2013 11:15:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59755) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V9GGF-0004Qf-4N for qemu-devel@nongnu.org; Tue, 13 Aug 2013 11:11:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V9GGA-0003hm-R1 for qemu-devel@nongnu.org; Tue, 13 Aug 2013 11:11:51 -0400 Received: from mail-oa0-x233.google.com ([2607:f8b0:4003:c02::233]:34203) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V9GGA-0003hU-LT; Tue, 13 Aug 2013 11:11:46 -0400 Received: by mail-oa0-f51.google.com with SMTP id h1so11315984oag.24 for ; Tue, 13 Aug 2013 08:11:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=f0CHJfsnsD08V4eXKf4NOjFs6KCqtiT8m8MBBMwSZlE=; b=FxIMUGYMGbV5jcQb0nUKnGlKZ+MgynvZNnNcInTC6AWXLYsmSL/qBtiYOqR07X9TKh BAcG2t6r09DJw6UBjAKlnufqC4SuJ3YbIeeRdXKToK7ehqlFwDI8J43Z2ZvUjh+JXR8T u/dIF56pfPmRLey7+wHuARVHcwdXEdKU5Nv9U2K6toafDH46qkdpX77yBaSBu7aMOMSd 6KBY3ZLiXDmsZSfj/Fa5Rl29tb+4Elwtg9DUG4v/xhE90D2YJcVgWaTUOf+nUW8CWqeJ CFEoe7JRxCsDePtD7Ku2zQVIWPU74bwa9ECo73gyfRZewCuEXvRIH+wtfpOen34WM2/2 WDVw== X-Received: by 10.182.242.11 with SMTP id wm11mr16386499obc.26.1376406706112; Tue, 13 Aug 2013 08:11:46 -0700 (PDT) Received: from loki.austin.ibm.com ([32.97.110.51]) by mx.google.com with ESMTPSA id uz16sm12947878obc.5.2013.08.13.08.11.44 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 13 Aug 2013 08:11:45 -0700 (PDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 13 Aug 2013 10:10:29 -0500 Message-Id: <1376406680-16302-6-git-send-email-mdroth@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1376406680-16302-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1376406680-16302-1-git-send-email-mdroth@linux.vnet.ibm.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:4003:c02::233 Cc: aliguori@us.ibm.com, qemu-stable@nongnu.org Subject: [Qemu-devel] [PATCH 05/56] virtio-scsi: forward scsibus for virtio-scsi-pci. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: KONRAD Frederic This fix a bug with scsi hotplug on virtio-scsi-pci: As virtio-scsi-pci doesn't have any scsi bus, we need to forward scsi-hot-add to the virtio-scsi-device plugged on the virtio-bus. Cc: qemu-stable@nongnu.org Reported-by: Alexey Kardashevskiy Reviewed-by: Andreas Färber Signed-off-by: KONRAD Frederic Acked-by: Michael S. Tsirkin Signed-off-by: Michael Roth --- hw/pci/pci-hotplug.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/hw/pci/pci-hotplug.c b/hw/pci/pci-hotplug.c index 12287d1..c708752 100644 --- a/hw/pci/pci-hotplug.c +++ b/hw/pci/pci-hotplug.c @@ -30,6 +30,8 @@ #include "monitor/monitor.h" #include "hw/scsi/scsi.h" #include "hw/virtio/virtio-blk.h" +#include "hw/virtio/virtio-scsi.h" +#include "hw/virtio/virtio-pci.h" #include "qemu/config-file.h" #include "sysemu/blockdev.h" #include "qapi/error.h" @@ -79,13 +81,26 @@ static int scsi_hot_add(Monitor *mon, DeviceState *adapter, { SCSIBus *scsibus; SCSIDevice *scsidev; + VirtIOPCIProxy *virtio_proxy; scsibus = (SCSIBus *) object_dynamic_cast(OBJECT(QLIST_FIRST(&adapter->child_bus)), TYPE_SCSI_BUS); if (!scsibus) { - error_report("Device is not a SCSI adapter"); - return -1; + /* + * Check if the adapter is a virtio-scsi-pci, and forward scsi_hot_add + * to the virtio-scsi-device. + */ + if (!object_dynamic_cast(OBJECT(adapter), TYPE_VIRTIO_SCSI_PCI)) { + error_report("Device is not a SCSI adapter"); + return -1; + } + virtio_proxy = VIRTIO_PCI(adapter); + adapter = DEVICE(virtio_proxy->bus.vdev); + scsibus = (SCSIBus *) + object_dynamic_cast(OBJECT(QLIST_FIRST(&adapter->child_bus)), + TYPE_SCSI_BUS); + assert(scsibus); } /*