From nobody Sun May 5 16:00:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.24 as permitted sender) client-ip=209.132.183.24; envelope-from=libvir-list-bounces@redhat.com; helo=mx3-phx2.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.24 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by mx.zohomail.com with SMTPS id 1485966585949460.34469551559835; Wed, 1 Feb 2017 08:29:45 -0800 (PST) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v11GQBvh020801; Wed, 1 Feb 2017 11:26:11 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v11GQACK031244 for ; Wed, 1 Feb 2017 11:26:10 -0500 Received: from mx1.redhat.com (ext-mx06.extmail.prod.ext.phx2.redhat.com [10.5.110.30]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v11GQAxq025205 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Wed, 1 Feb 2017 11:26:10 -0500 Received: from mail-lf0-f67.google.com (mail-lf0-f67.google.com [209.85.215.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C1AC03D958 for ; Wed, 1 Feb 2017 16:26:08 +0000 (UTC) Received: by mail-lf0-f67.google.com with SMTP id h65so36701401lfi.3 for ; Wed, 01 Feb 2017 08:26:07 -0800 (PST) Received: from kloomba.my.domain ([213.147.213.252]) by smtp.gmail.com with ESMTPSA id h24sm4450885ljb.46.2017.02.01.08.26.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Feb 2017 08:26:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=+U3NW5x5VeosyD0ZpgsF0yPpEi7eUiBvLC9qmIMixa0=; b=JsH5JiRKzZOcnpDDaANwtPqQqjrnQt5mtXW44Lcq7MyUpXe32fGXZdSlAtHKatpZJL 1OIjJuAfZtUcfPewHxBO6nBZeGwNVOrDHzIh212UjyNfQ1dCNSBrxWg6SbvBqu0PVqEi 7prMy69ZxW1uvjrqUWalkSregMuj1nzr/ZbBze3FMyd1GCcdZ/NFWadC91Rix2/s7pGN TMXkqliKzAhhaf6opTq0Vm04YvDN3XOzeBBTz+pMtxttIgvivheW6yaJ7QPVvlPU2djX g850lXN+xInI98CW/dKeIwbdJaOMvzmyvqAiJIroYLFkifz7Ou6CJ8cTwNlS12Mx6okQ se0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=+U3NW5x5VeosyD0ZpgsF0yPpEi7eUiBvLC9qmIMixa0=; b=cr6Fb6Roto/WRvxSIkiW0ZesLXEdSmE3cd6TL60IpJ5DIR+oV0o5gjsbu7k9EPbMRa jTKuTur94kSpu8eYqI7EfwSGjCGr4Bur2rYrZgE8b+3Ve44mmVFafhH/ZDq2BNTk5iys eP7tLhOIIHz5tT0yRaqXwoHWfMT+2GlMceroVJmgq9pesWMgIT7stO10n862m7tnHhTt qA6IkSXFycvvG3CFO4Cj0YKx3kVDU+z2hJALVk9h2SmFXwhZC+TIIGvOeqKLmavnXeV1 uwUKdhTZ0WfrZMedE4QPZ8qzWjblcTON7vBL1YUQeQfQH0PZWSLMAEAyRBKVc+cQins6 wJSA== X-Gm-Message-State: AIkVDXK2AU4SGGUaP6ZgmWjn+kqscZ43vucQx2mKRdGcttPNYDvMrEilhbaD7AogyIcDwA== X-Received: by 10.46.5.196 with SMTP id 187mr1563041ljf.36.1485966366016; Wed, 01 Feb 2017 08:26:06 -0800 (PST) From: Roman Bogorodskiy To: libvir-list@redhat.com Date: Wed, 1 Feb 2017 20:25:42 +0400 Message-Id: <20170201162542.91921-1-bogorodskiy@gmail.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 01 Feb 2017 16:26:09 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 01 Feb 2017 16:26:09 +0000 (UTC) for IP:'209.85.215.67' DOMAIN:'mail-lf0-f67.google.com' HELO:'mail-lf0-f67.google.com' FROM:'bogorodskiy@gmail.com' RCPT:'' X-RedHat-Spam-Score: 1.17 * (BAYES_50, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.215.67 mail-lf0-f67.google.com 209.85.215.67 mail-lf0-f67.google.com X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Scanned-By: MIMEDefang 2.78 on 10.5.110.30 X-loop: libvir-list@redhat.com Cc: Roman Bogorodskiy Subject: [libvirt] [PATCH] bhyve: fix virtio disk addresses X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Like it usually happens, I fixed one thing and broke another: in 803966c76 address allocation was fixed for SATA disks, but broke that for virtio disks, because it dropped disk address assignment completely. It's not needed for SATA disks anymore, but still needed for the virtio ones. Bring that back and add a couple of tests to make sure it won't happen again. --- src/bhyve/bhyve_device.c | 16 +++++++++ .../bhyvexml2argv-addr-multiple-virtio-disks.args | 11 ++++++ ...bhyvexml2argv-addr-multiple-virtio-disks.ldargs | 3 ++ .../bhyvexml2argv-addr-multiple-virtio-disks.xml | 32 +++++++++++++++++ .../bhyvexml2argv-addr-single-virtio-disk.args | 9 +++++ .../bhyvexml2argv-addr-single-virtio-disk.ldargs | 3 ++ .../bhyvexml2argv-addr-single-virtio-disk.xml | 22 ++++++++++++ tests/bhyvexml2argvtest.c | 2 ++ .../bhyvexml2xmlout-addr-multiple-virtio-disks.xml | 42 ++++++++++++++++++= ++++ .../bhyvexml2xmlout-addr-single-virtio-disk.xml | 30 ++++++++++++++++ tests/bhyvexml2xmltest.c | 2 ++ 11 files changed, 172 insertions(+) create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-vir= tio-disks.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-vir= tio-disks.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-vir= tio-disks.xml create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virti= o-disk.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virti= o-disk.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virti= o-disk.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-multiple= -virtio-disks.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-single-v= irtio-disk.xml diff --git a/src/bhyve/bhyve_device.c b/src/bhyve/bhyve_device.c index 29528230f..55ce631ec 100644 --- a/src/bhyve/bhyve_device.c +++ b/src/bhyve/bhyve_device.c @@ -129,6 +129,22 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def, goto error; } =20 + for (i =3D 0; i < def->ndisks; i++) { + /* We only handle virtio disk addresses as SATA disks are + * attached to a controller and don't have their own PCI + * addresses */ + if (def->disks[i]->bus !=3D VIR_DOMAIN_DISK_BUS_VIRTIO) + continue; + + if (def->disks[i]->info.type =3D=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE= _PCI && + !virPCIDeviceAddressIsEmpty(&def->disks[i]->info.addr.pci)) + continue; + if (virDomainPCIAddressReserveNextAddr(addrs, &def->disks[i]->info, + VIR_PCI_CONNECT_TYPE_PCI_DE= VICE, + -1) < 0) + goto error; + } + return 0; =20 error: diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-virtio-dis= ks.args b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-virtio-disks.= args new file mode 100644 index 000000000..8cc166894 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-virtio-disks.args @@ -0,0 +1,11 @@ +/usr/sbin/bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:bc:85:fe \ +-s 2:0,virtio-blk,/tmp/freebsd.img \ +-s 4:0,virtio-blk,/tmp/test.img \ +-s 5:0,virtio-blk,/tmp/test2.img bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-virtio-dis= ks.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-virtio-disk= s.ldargs new file mode 100644 index 000000000..32538b558 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-virtio-disks.ldar= gs @@ -0,0 +1,3 @@ +/usr/sbin/bhyveload \ +-m 214 \ +-d /tmp/freebsd.img bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-virtio-dis= ks.xml b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-virtio-disks.x= ml new file mode 100644 index 000000000..9bcd0a629 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-multiple-virtio-disks.xml @@ -0,0 +1,32 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + + + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virtio-disk.= args b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virtio-disk.args new file mode 100644 index 000000000..4dcc40404 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virtio-disk.args @@ -0,0 +1,9 @@ +/usr/sbin/bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:bc:85:fe \ +-s 2:0,virtio-blk,/tmp/freebsd.img bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virtio-disk.= ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virtio-disk.ldar= gs new file mode 100644 index 000000000..32538b558 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virtio-disk.ldargs @@ -0,0 +1,3 @@ +/usr/sbin/bhyveload \ +-m 214 \ +-d /tmp/freebsd.img bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virtio-disk.= xml b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virtio-disk.xml new file mode 100644 index 000000000..6be9ae134 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-single-virtio-disk.xml @@ -0,0 +1,22 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + + + + + + + + + + + +
+ + + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index e80705780..c36b55a0a 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -190,6 +190,8 @@ mymain(void) DO_TEST("addr-single-sata-disk"); DO_TEST("addr-multiple-sata-disks"); DO_TEST("addr-more-than-32-sata-disks"); + DO_TEST("addr-single-virtio-disk"); + DO_TEST("addr-multiple-virtio-disks"); =20 /* The same without 32 devs per controller support */ driver.bhyvecaps ^=3D BHYVE_CAP_AHCI32SLOT; diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-multiple-virtio= -disks.xml b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-multiple-virtio= -disks.xml new file mode 100644 index 000000000..542bff121 --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-multiple-virtio-disks.= xml @@ -0,0 +1,42 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + + + + +
+ + + + + +
+ + + + + +
+ + + + + + +
+ + + diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-single-virtio-d= isk.xml b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-single-virtio-disk= .xml new file mode 100644 index 000000000..d7abb5abc --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-single-virtio-disk.xml @@ -0,0 +1,30 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + + + + +
+ + + + + + +
+ + + diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 004afda14..ba9af2996 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -109,6 +109,8 @@ mymain(void) DO_TEST_DIFFERENT("addr-single-sata-disk"); DO_TEST_DIFFERENT("addr-multiple-sata-disks"); DO_TEST_DIFFERENT("addr-more-than-32-sata-disks"); + DO_TEST_DIFFERENT("addr-single-virtio-disk"); + DO_TEST_DIFFERENT("addr-multiple-virtio-disks"); =20 /* The same without 32 devs per controller support */ driver.bhyvecaps ^=3D BHYVE_CAP_AHCI32SLOT; --=20 2.11.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list