From patchwork Sun Jan 20 05:55:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Li Qiang X-Patchwork-Id: 10772291 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D0B6F746 for ; Sun, 20 Jan 2019 05:58:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B5E582AE36 for ; Sun, 20 Jan 2019 05:58:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A87E4293BB; Sun, 20 Jan 2019 05:58:45 +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=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id DF905293BB for ; Sun, 20 Jan 2019 05:58:44 +0000 (UTC) Received: from localhost ([127.0.0.1]:35887 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gl683-0006ey-IW for patchwork-qemu-devel@patchwork.kernel.org; Sun, 20 Jan 2019 00:58:43 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56618) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gl673-00060b-Vf for qemu-devel@nongnu.org; Sun, 20 Jan 2019 00:57:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gl673-0004RJ-5f for qemu-devel@nongnu.org; Sun, 20 Jan 2019 00:57:41 -0500 Received: from m12-18.163.com ([220.181.12.18]:55889) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gl66w-0004D7-2o; Sun, 20 Jan 2019 00:57:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=oomx6 2aAocb5rgiSp31/OXkVo7u3l3FLj9C1hSdfHlE=; b=Jg6WjshNvMVRtDH+Dw8SP /RnJC+MSYWjQdaQlScAnidtwcgPqN2obJhEdxLTqkbG+pFz4O292ylEi8q0FoME4 nXo0N9ti9J00GHT9zZBnyTNpm+sxnpSMDly68ngfxLfJlgZsEo8dHJLT5ECUCRzh 6Nt1ynay/AjA1+ZkeYIQoI= Received: from localhost.localdomain (unknown [115.192.69.226]) by smtp14 (Coremail) with SMTP id EsCowABHnNawDURcZuZLCA--.38275S3; Sun, 20 Jan 2019 13:57:22 +0800 (CST) From: Li Qiang To: keith.busch@intel.com, kwolf@redhat.com, mreitz@redhat.com, philmd@redhat.com Date: Sat, 19 Jan 2019 21:55:56 -0800 Message-Id: <20190120055558.32984-2-liq3ea@163.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190120055558.32984-1-liq3ea@163.com> References: <20190120055558.32984-1-liq3ea@163.com> MIME-Version: 1.0 X-CM-TRANSID: EsCowABHnNawDURcZuZLCA--.38275S3 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUgBHqDUUUU X-Originating-IP: [115.192.69.226] X-CM-SenderInfo: 5oltjvrd6rljoofrz/1tbiTwJCbVsGNqIgaAAAsj X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 220.181.12.18 Subject: [Qemu-devel] [PATCH 1/3] nvme: use TYPE_NVME instead of constant string 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: Li Qiang , qemu-devel@nongnu.org, qemu-block@nongnu.org Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Li Qiang Reviewed-by: Max Reitz Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 7c8c63e8f5..f206391e8e 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1381,7 +1381,7 @@ static void nvme_instance_init(Object *obj) } static const TypeInfo nvme_info = { - .name = "nvme", + .name = TYPE_NVME, .parent = TYPE_PCI_DEVICE, .instance_size = sizeof(NvmeCtrl), .class_init = nvme_class_init, From patchwork Sun Jan 20 05:55:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Li Qiang X-Patchwork-Id: 10772297 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B87E113B4 for ; Sun, 20 Jan 2019 06:03:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 903C12AFB8 for ; Sun, 20 Jan 2019 06:03:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7FF4B2AFBA; Sun, 20 Jan 2019 06:03:22 +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=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id D50812AFB8 for ; Sun, 20 Jan 2019 06:03:21 +0000 (UTC) Received: from localhost ([127.0.0.1]:35955 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gl6CX-00012l-6n for patchwork-qemu-devel@patchwork.kernel.org; Sun, 20 Jan 2019 01:03:21 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56666) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gl676-000638-DI for qemu-devel@nongnu.org; Sun, 20 Jan 2019 00:57:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gl675-0004TA-Fo for qemu-devel@nongnu.org; Sun, 20 Jan 2019 00:57:44 -0500 Received: from m12-18.163.com ([220.181.12.18]:56039) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gl671-0004EF-VF; Sun, 20 Jan 2019 00:57:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=aonhp CKScYy0pon6xiGXNBWdhK91zYU70h5/K2OJRA4=; b=G3eMZxbieY60PECIFKjma 30l9fuXGl5UKtS4Ci+zWLnhycpL2a2GQXHsDMPTl8WY4JPOOKBpYakUh1sXTqJ9z LQ5xVXOwnUR7XexdEn2qdItrH0vwSdbeJuJRoAGMHEJcg3ASwRptHJ7QSuOYikho StkhJMUBx3+ZqRgmOSV/g4= Received: from localhost.localdomain (unknown [115.192.69.226]) by smtp14 (Coremail) with SMTP id EsCowABHnNawDURcZuZLCA--.38275S4; Sun, 20 Jan 2019 13:57:23 +0800 (CST) From: Li Qiang To: keith.busch@intel.com, kwolf@redhat.com, mreitz@redhat.com, philmd@redhat.com Date: Sat, 19 Jan 2019 21:55:57 -0800 Message-Id: <20190120055558.32984-3-liq3ea@163.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190120055558.32984-1-liq3ea@163.com> References: <20190120055558.32984-1-liq3ea@163.com> MIME-Version: 1.0 X-CM-TRANSID: EsCowABHnNawDURcZuZLCA--.38275S4 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUkXyZUUUUU X-Originating-IP: [115.192.69.226] X-CM-SenderInfo: 5oltjvrd6rljoofrz/1tbiFARCbVaDzEksbAAAsv X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 220.181.12.18 Subject: [Qemu-devel] [PATCH 2/3] nvme: ensure the num_queues is not zero 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: Li Qiang , qemu-devel@nongnu.org, qemu-block@nongnu.org Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP When it is zero, it causes segv. Using following command: "-drive file=//home/test/test1.img,if=none,id=id0 -device nvme,drive=id0,serial=test,num_queues=0" causes following Backtrack: Thread 4 "qemu-system-x86" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffe9735700 (LWP 30952)] 0x0000555555a7a77c in nvme_start_ctrl (n=0x5555577473f0) at hw/block/nvme.c:825 825 if (unlikely(n->cq[0])) { (gdb) bt 0 0x0000555555a7a77c in nvme_start_ctrl (n=0x5555577473f0) at hw/block/nvme.c:825 1 0x0000555555a7af7f in nvme_write_bar (n=0x5555577473f0, offset=20, data=4587521, size=4) at hw/block/nvme.c:969 2 0x0000555555a7b81a in nvme_mmio_write (opaque=0x5555577473f0, addr=20, data=4587521, size=4) at hw/block/nvme.c:1163 3 0x0000555555869236 in memory_region_write_accessor (mr=0x555557747cd0, addr=20, value=0x7fffe97320f8, size=4, shift=0, mask=4294967295, attrs=...) at /home/test/qemu1/qemu/memory.c:502 4 0x0000555555869446 in access_with_adjusted_size (addr=20, value=0x7fffe97320f8, size=4, access_size_min=2, access_size_max=8, access_fn=0x55555586914d , mr=0x555557747cd0, attrs=...) at /home/test/qemu1/qemu/memory.c:568 5 0x000055555586c479 in memory_region_dispatch_write (mr=0x555557747cd0, addr=20, data=4587521, size=4, attrs=...) at /home/test/qemu1/qemu/memory.c:1499 6 0x00005555558030af in flatview_write_continue (fv=0x7fffe0061130, addr=4273930260, attrs=..., buf=0x7ffff7ff0028 "\001", len=4, addr1=20, l=4, mr=0x555557747cd0) at /home/test/qemu1/qemu/exec.c:3234 7 0x00005555558031f9 in flatview_write (fv=0x7fffe0061130, addr=4273930260, attrs=..., buf=0x7ffff7ff0028 "\001", len=4) at /home/test/qemu1/qemu/exec.c:3273 8 0x00005555558034ff in address_space_write ( ---Type to continue, or q to quit--- as=0x555556758480 , addr=4273930260, attrs=..., buf=0x7ffff7ff0028 "\001", len=4) at /home/test/qemu1/qemu/exec.c:3363 9 0x0000555555803550 in address_space_rw ( as=0x555556758480 , addr=4273930260, attrs=..., buf=0x7ffff7ff0028 "\001", len=4, is_write=true) at /home/test/qemu1/qemu/exec.c:3374 10 0x00005555558884a1 in kvm_cpu_exec (cpu=0x555556920e40) at /home/test/qemu1/qemu/accel/kvm/kvm-all.c:2031 11 0x000055555584cd9d in qemu_kvm_cpu_thread_fn (arg=0x555556920e40) at /home/test/qemu1/qemu/cpus.c:1281 12 0x0000555555dbaf6d in qemu_thread_start (args=0x5555569438a0) at util/qemu-thread-posix.c:502 13 0x00007ffff5dc86db in start_thread (arg=0x7fffe9735700) at pthread_create.c:463 14 0x00007ffff5af188f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Signed-off-by: Li Qiang Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index f206391e8e..0b77b49b36 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1208,6 +1208,11 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp) int64_t bs_size; uint8_t *pci_conf; + if (!n->num_queues) { + error_setg(errp, "num_queues can't be zero"); + return; + } + if (!n->conf.blk) { error_setg(errp, "drive property not set"); return; From patchwork Sun Jan 20 05:55:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Li Qiang X-Patchwork-Id: 10772295 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2959013B4 for ; Sun, 20 Jan 2019 06:00:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1A5E82AFB8 for ; Sun, 20 Jan 2019 06:00:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0D8EF2AFBA; Sun, 20 Jan 2019 06:00: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=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7A0682AFB8 for ; Sun, 20 Jan 2019 06:00:38 +0000 (UTC) Received: from localhost ([127.0.0.1]:35935 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gl69t-0007ue-S5 for patchwork-qemu-devel@patchwork.kernel.org; Sun, 20 Jan 2019 01:00:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56649) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gl675-00061t-AJ for qemu-devel@nongnu.org; Sun, 20 Jan 2019 00:57:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gl674-0004SZ-Ip for qemu-devel@nongnu.org; Sun, 20 Jan 2019 00:57:43 -0500 Received: from m12-18.163.com ([220.181.12.18]:56345) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gl671-0004Gi-Tb; Sun, 20 Jan 2019 00:57:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=u3OUh dU1JQYc69T/F6MCATBsIrV76rdYt1xOcuhrVac=; b=n4vwj8fYJhkBZijw8+XIc ZhQy6jMtyaA9J0+KueLUQ9F7uOvgeVvCKJYdf4sRxL4ms4bhK0EC4GnXgcc5CV4I R0Vct6VJG0o24uu7vKoXHzx3K/Yagoz0N+9A+hQNNB4CSNdwogFrP7H1RNSTxSkw cCLLMobcv418s3EhvYJikQ= Received: from localhost.localdomain (unknown [115.192.69.226]) by smtp14 (Coremail) with SMTP id EsCowABHnNawDURcZuZLCA--.38275S5; Sun, 20 Jan 2019 13:57:26 +0800 (CST) From: Li Qiang To: keith.busch@intel.com, kwolf@redhat.com, mreitz@redhat.com, philmd@redhat.com Date: Sat, 19 Jan 2019 21:55:58 -0800 Message-Id: <20190120055558.32984-4-liq3ea@163.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190120055558.32984-1-liq3ea@163.com> References: <20190120055558.32984-1-liq3ea@163.com> MIME-Version: 1.0 X-CM-TRANSID: EsCowABHnNawDURcZuZLCA--.38275S5 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUkrO7UUUUU X-Originating-IP: [115.192.69.226] X-CM-SenderInfo: 5oltjvrd6rljoofrz/1tbiFAZCbVaDzEksfgAAs- X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 220.181.12.18 Subject: [Qemu-devel] [PATCH 3/3] nvme: use pci_dev directly in nvme_realize 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: Li Qiang , qemu-devel@nongnu.org, qemu-block@nongnu.org Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP There is no need to make another reference. Signed-off-by: Li Qiang Reviewed-by: Max Reitz Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 0b77b49b36..8325b5e88a 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1238,7 +1238,7 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp) pci_conf[PCI_INTERRUPT_PIN] = 1; pci_config_set_prog_interface(pci_dev->config, 0x2); pci_config_set_class(pci_dev->config, PCI_CLASS_STORAGE_EXPRESS); - pcie_endpoint_cap_init(&n->parent_obj, 0x80); + pcie_endpoint_cap_init(pci_dev, 0x80); n->num_namespaces = 1; n->reg_size = pow2ceil(0x1004 + 2 * (n->num_queues + 1) * 4); @@ -1250,10 +1250,10 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp) memory_region_init_io(&n->iomem, OBJECT(n), &nvme_mmio_ops, n, "nvme", n->reg_size); - pci_register_bar(&n->parent_obj, 0, + pci_register_bar(pci_dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY | PCI_BASE_ADDRESS_MEM_TYPE_64, &n->iomem); - msix_init_exclusive_bar(&n->parent_obj, n->num_queues, 4, NULL); + msix_init_exclusive_bar(pci_dev, n->num_queues, 4, NULL); id->vid = cpu_to_le16(pci_get_word(pci_conf + PCI_VENDOR_ID)); id->ssvid = cpu_to_le16(pci_get_word(pci_conf + PCI_SUBSYSTEM_VENDOR_ID)); @@ -1308,7 +1308,7 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp) n->cmbuf = g_malloc0(NVME_CMBSZ_GETSIZE(n->bar.cmbsz)); memory_region_init_io(&n->ctrl_mem, OBJECT(n), &nvme_cmb_ops, n, "nvme-cmb", NVME_CMBSZ_GETSIZE(n->bar.cmbsz)); - pci_register_bar(&n->parent_obj, NVME_CMBLOC_BIR(n->bar.cmbloc), + pci_register_bar(pci_dev, NVME_CMBLOC_BIR(n->bar.cmbloc), PCI_BASE_ADDRESS_SPACE_MEMORY | PCI_BASE_ADDRESS_MEM_TYPE_64 | PCI_BASE_ADDRESS_MEM_PREFETCH, &n->ctrl_mem);