From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41578) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1crPSB-0003AW-Fa for qemu-devel@nongnu.org; Fri, 24 Mar 2017 09:40:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1crPS8-00036o-Aw for qemu-devel@nongnu.org; Fri, 24 Mar 2017 09:40:31 -0400 Received: from smtp.citrix.com ([66.165.176.89]:45521) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1crPS8-00036R-3r for qemu-devel@nongnu.org; Fri, 24 Mar 2017 09:40:28 -0400 From: Paul Durrant Date: Fri, 24 Mar 2017 13:40:25 +0000 Message-ID: <1490362825-24854-1-git-send-email-paul.durrant@citrix.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH v3] xen-platform: separate unplugging of NVMe disks List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, xen-devel@lists.xenproject.org Cc: Paul Durrant , Anthony Perard Commit 090fa1c8 "add support for unplugging NVMe disks..." extended the existing disk unplug flag to cover NVMe disks as well as IDE and SCSI. The recent thread on the xen-devel mailing list [1] has highlighted that this is not desirable behaviour: PV frontends should be able to distinguish NVMe disks from other types of disk and should have separate control over whether they are unplugged. This patch defines a new bit in the unplug mask for this purpose (see Xen commit [2]) and also tidies up the definitions of, and improves the comments regarding, the previously exiting bits in the protocol. [1] https://lists.xen.org/archives/html/xen-devel/2017-03/msg02924.html [2] http://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=1096aa02 Signed-off-by: Paul Durrant Reviewed-by: Stefano Stabellini -- Cc: Anthony Perard v3: - Updated to reference Xen documentation patch v2: - Fix the commit comment --- hw/i386/xen/xen_platform.c | 47 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c index 6010f35..983d532 100644 --- a/hw/i386/xen/xen_platform.c +++ b/hw/i386/xen/xen_platform.c @@ -87,10 +87,30 @@ static void log_writeb(PCIXenPlatformState *s, char val) } } -/* Xen Platform, Fixed IOPort */ -#define UNPLUG_ALL_DISKS 1 -#define UNPLUG_ALL_NICS 2 -#define UNPLUG_AUX_IDE_DISKS 4 +/* + * Unplug device flags. + * + * The logic got a little confused at some point in the past but this is + * what they do now. + * + * bit 0: Unplug all IDE and SCSI disks. + * bit 1: Unplug all NICs. + * bit 2: Unplug IDE disks except primary master. This is overridden if + * bit 0 is also present in the mask. + * bit 3: Unplug all NVMe disks. + * + */ +#define _UNPLUG_IDE_SCSI_DISKS 0 +#define UNPLUG_IDE_SCSI_DISKS (1u << _UNPLUG_IDE_SCSI_DISKS) + +#define _UNPLUG_ALL_NICS 1 +#define UNPLUG_ALL_NICS (1u << _UNPLUG_ALL_NICS) + +#define _UNPLUG_AUX_IDE_DISKS 2 +#define UNPLUG_AUX_IDE_DISKS (1u << _UNPLUG_AUX_IDE_DISKS) + +#define _UNPLUG_NVME_DISKS 3 +#define UNPLUG_NVME_DISKS (1u << _UNPLUG_NVME_DISKS) static void unplug_nic(PCIBus *b, PCIDevice *d, void *o) { @@ -111,7 +131,7 @@ static void unplug_disks(PCIBus *b, PCIDevice *d, void *opaque) { uint32_t flags = *(uint32_t *)opaque; bool aux = (flags & UNPLUG_AUX_IDE_DISKS) && - !(flags & UNPLUG_ALL_DISKS); + !(flags & UNPLUG_IDE_SCSI_DISKS); /* We have to ignore passthrough devices */ if (!strcmp(d->name, "xen-pci-passthrough")) { @@ -124,12 +144,16 @@ static void unplug_disks(PCIBus *b, PCIDevice *d, void *opaque) break; case PCI_CLASS_STORAGE_SCSI: - case PCI_CLASS_STORAGE_EXPRESS: if (!aux) { object_unparent(OBJECT(d)); } break; + case PCI_CLASS_STORAGE_EXPRESS: + if (flags & UNPLUG_NVME_DISKS) { + object_unparent(OBJECT(d)); + } + default: break; } @@ -147,10 +171,9 @@ static void platform_fixed_ioport_writew(void *opaque, uint32_t addr, uint32_t v switch (addr) { case 0: { PCIDevice *pci_dev = PCI_DEVICE(s); - /* Unplug devices. Value is a bitmask of which devices to - unplug, with bit 0 the disk devices, bit 1 the network - devices, and bit 2 the non-primary-master IDE devices. */ - if (val & (UNPLUG_ALL_DISKS | UNPLUG_AUX_IDE_DISKS)) { + /* Unplug devices. See comment above flag definitions */ + if (val & (UNPLUG_IDE_SCSI_DISKS | UNPLUG_AUX_IDE_DISKS | + UNPLUG_NVME_DISKS)) { DPRINTF("unplug disks\n"); pci_unplug_disks(pci_dev->bus, val); } @@ -338,14 +361,14 @@ static void xen_platform_ioport_writeb(void *opaque, hwaddr addr, * If VMDP was to control both disk and LAN it would use 4. * If it controlled just disk or just LAN, it would use 8 below. */ - pci_unplug_disks(pci_dev->bus, UNPLUG_ALL_DISKS); + pci_unplug_disks(pci_dev->bus, UNPLUG_IDE_SCSI_DISKS); pci_unplug_nics(pci_dev->bus); } break; case 8: switch (val) { case 1: - pci_unplug_disks(pci_dev->bus, UNPLUG_ALL_DISKS); + pci_unplug_disks(pci_dev->bus, UNPLUG_IDE_SCSI_DISKS); break; case 2: pci_unplug_nics(pci_dev->bus); -- 2.1.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v3] xen-platform: separate unplugging of NVMe disks Date: Fri, 24 Mar 2017 13:40:25 +0000 Message-ID: <1490362825-24854-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1crPSA-0003hx-2f for xen-devel@lists.xenproject.org; Fri, 24 Mar 2017 13:40:30 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: qemu-devel@nongnu.org, xen-devel@lists.xenproject.org Cc: Anthony Perard , Paul Durrant List-Id: xen-devel@lists.xenproject.org Q29tbWl0IDA5MGZhMWM4ICJhZGQgc3VwcG9ydCBmb3IgdW5wbHVnZ2luZyBOVk1lIGRpc2tzLi4u IiBleHRlbmRlZCB0aGUKZXhpc3RpbmcgZGlzayB1bnBsdWcgZmxhZyB0byBjb3ZlciBOVk1lIGRp c2tzIGFzIHdlbGwgYXMgSURFIGFuZCBTQ1NJLgoKVGhlIHJlY2VudCB0aHJlYWQgb24gdGhlIHhl bi1kZXZlbCBtYWlsaW5nIGxpc3QgWzFdIGhhcyBoaWdobGlnaHRlZCB0aGF0CnRoaXMgaXMgbm90 IGRlc2lyYWJsZSBiZWhhdmlvdXI6IFBWIGZyb250ZW5kcyBzaG91bGQgYmUgYWJsZSB0byBkaXN0 aW5ndWlzaApOVk1lIGRpc2tzIGZyb20gb3RoZXIgdHlwZXMgb2YgZGlzayBhbmQgc2hvdWxkIGhh dmUgc2VwYXJhdGUgY29udHJvbCBvdmVyCndoZXRoZXIgdGhleSBhcmUgdW5wbHVnZ2VkLgoKVGhp cyBwYXRjaCBkZWZpbmVzIGEgbmV3IGJpdCBpbiB0aGUgdW5wbHVnIG1hc2sgZm9yIHRoaXMgcHVy cG9zZSAoc2VlIFhlbgpjb21taXQgWzJdKSBhbmQgYWxzbyB0aWRpZXMgdXAgdGhlIGRlZmluaXRp b25zIG9mLCBhbmQgaW1wcm92ZXMgdGhlCmNvbW1lbnRzIHJlZ2FyZGluZywgdGhlIHByZXZpb3Vz bHkgZXhpdGluZyBiaXRzIGluIHRoZSBwcm90b2NvbC4KClsxXSBodHRwczovL2xpc3RzLnhlbi5v cmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNy0wMy9tc2cwMjkyNC5odG1sClsyXSBodHRw Oi8veGVuYml0cy54ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9Y29tbWl0O2g9MTA5NmFhMDIK ClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+ClJl dmlld2VkLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Ci0t CkNjOiBBbnRob255IFBlcmFyZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KCnYzOgotIFVw ZGF0ZWQgdG8gcmVmZXJlbmNlIFhlbiBkb2N1bWVudGF0aW9uIHBhdGNoCgp2MjoKLSBGaXggdGhl IGNvbW1pdCBjb21tZW50Ci0tLQogaHcvaTM4Ni94ZW4veGVuX3BsYXRmb3JtLmMgfCA0NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaHcvaTM4 Ni94ZW4veGVuX3BsYXRmb3JtLmMgYi9ody9pMzg2L3hlbi94ZW5fcGxhdGZvcm0uYwppbmRleCA2 MDEwZjM1Li45ODNkNTMyIDEwMDY0NAotLS0gYS9ody9pMzg2L3hlbi94ZW5fcGxhdGZvcm0uYwor KysgYi9ody9pMzg2L3hlbi94ZW5fcGxhdGZvcm0uYwpAQCAtODcsMTAgKzg3LDMwIEBAIHN0YXRp YyB2b2lkIGxvZ193cml0ZWIoUENJWGVuUGxhdGZvcm1TdGF0ZSAqcywgY2hhciB2YWwpCiAgICAg fQogfQogCi0vKiBYZW4gUGxhdGZvcm0sIEZpeGVkIElPUG9ydCAqLwotI2RlZmluZSBVTlBMVUdf QUxMX0RJU0tTIDEKLSNkZWZpbmUgVU5QTFVHX0FMTF9OSUNTIDIKLSNkZWZpbmUgVU5QTFVHX0FV WF9JREVfRElTS1MgNAorLyoKKyAqIFVucGx1ZyBkZXZpY2UgZmxhZ3MuCisgKgorICogVGhlIGxv Z2ljIGdvdCBhIGxpdHRsZSBjb25mdXNlZCBhdCBzb21lIHBvaW50IGluIHRoZSBwYXN0IGJ1dCB0 aGlzIGlzCisgKiB3aGF0IHRoZXkgZG8gbm93LgorICoKKyAqIGJpdCAwOiBVbnBsdWcgYWxsIElE RSBhbmQgU0NTSSBkaXNrcy4KKyAqIGJpdCAxOiBVbnBsdWcgYWxsIE5JQ3MuCisgKiBiaXQgMjog VW5wbHVnIElERSBkaXNrcyBleGNlcHQgcHJpbWFyeSBtYXN0ZXIuIFRoaXMgaXMgb3ZlcnJpZGRl biBpZgorICogICAgICAgIGJpdCAwIGlzIGFsc28gcHJlc2VudCBpbiB0aGUgbWFzay4KKyAqIGJp dCAzOiBVbnBsdWcgYWxsIE5WTWUgZGlza3MuCisgKgorICovCisjZGVmaW5lIF9VTlBMVUdfSURF X1NDU0lfRElTS1MgMAorI2RlZmluZSBVTlBMVUdfSURFX1NDU0lfRElTS1MgKDF1IDw8IF9VTlBM VUdfSURFX1NDU0lfRElTS1MpCisKKyNkZWZpbmUgX1VOUExVR19BTExfTklDUyAxCisjZGVmaW5l IFVOUExVR19BTExfTklDUyAoMXUgPDwgX1VOUExVR19BTExfTklDUykKKworI2RlZmluZSBfVU5Q TFVHX0FVWF9JREVfRElTS1MgMgorI2RlZmluZSBVTlBMVUdfQVVYX0lERV9ESVNLUyAoMXUgPDwg X1VOUExVR19BVVhfSURFX0RJU0tTKQorCisjZGVmaW5lIF9VTlBMVUdfTlZNRV9ESVNLUyAzCisj ZGVmaW5lIFVOUExVR19OVk1FX0RJU0tTICgxdSA8PCBfVU5QTFVHX05WTUVfRElTS1MpCiAKIHN0 YXRpYyB2b2lkIHVucGx1Z19uaWMoUENJQnVzICpiLCBQQ0lEZXZpY2UgKmQsIHZvaWQgKm8pCiB7 CkBAIC0xMTEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgdW5wbHVnX2Rpc2tzKFBDSUJ1cyAqYiwg UENJRGV2aWNlICpkLCB2b2lkICpvcGFxdWUpCiB7CiAgICAgdWludDMyX3QgZmxhZ3MgPSAqKHVp bnQzMl90ICopb3BhcXVlOwogICAgIGJvb2wgYXV4ID0gKGZsYWdzICYgVU5QTFVHX0FVWF9JREVf RElTS1MpICYmCi0gICAgICAgICEoZmxhZ3MgJiBVTlBMVUdfQUxMX0RJU0tTKTsKKyAgICAgICAg IShmbGFncyAmIFVOUExVR19JREVfU0NTSV9ESVNLUyk7CiAKICAgICAvKiBXZSBoYXZlIHRvIGln bm9yZSBwYXNzdGhyb3VnaCBkZXZpY2VzICovCiAgICAgaWYgKCFzdHJjbXAoZC0+bmFtZSwgInhl bi1wY2ktcGFzc3Rocm91Z2giKSkgewpAQCAtMTI0LDEyICsxNDQsMTYgQEAgc3RhdGljIHZvaWQg dW5wbHVnX2Rpc2tzKFBDSUJ1cyAqYiwgUENJRGV2aWNlICpkLCB2b2lkICpvcGFxdWUpCiAgICAg ICAgIGJyZWFrOwogCiAgICAgY2FzZSBQQ0lfQ0xBU1NfU1RPUkFHRV9TQ1NJOgotICAgIGNhc2Ug UENJX0NMQVNTX1NUT1JBR0VfRVhQUkVTUzoKICAgICAgICAgaWYgKCFhdXgpIHsKICAgICAgICAg ICAgIG9iamVjdF91bnBhcmVudChPQkpFQ1QoZCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr OwogCisgICAgY2FzZSBQQ0lfQ0xBU1NfU1RPUkFHRV9FWFBSRVNTOgorICAgICAgICBpZiAoZmxh Z3MgJiBVTlBMVUdfTlZNRV9ESVNLUykgeworICAgICAgICAgICAgb2JqZWN0X3VucGFyZW50KE9C SkVDVChkKSk7CisgICAgICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAg IH0KQEAgLTE0NywxMCArMTcxLDkgQEAgc3RhdGljIHZvaWQgcGxhdGZvcm1fZml4ZWRfaW9wb3J0 X3dyaXRldyh2b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHYKICAgICBzd2l0 Y2ggKGFkZHIpIHsKICAgICBjYXNlIDA6IHsKICAgICAgICAgUENJRGV2aWNlICpwY2lfZGV2ID0g UENJX0RFVklDRShzKTsKLSAgICAgICAgLyogVW5wbHVnIGRldmljZXMuICBWYWx1ZSBpcyBhIGJp dG1hc2sgb2Ygd2hpY2ggZGV2aWNlcyB0bwotICAgICAgICAgICB1bnBsdWcsIHdpdGggYml0IDAg dGhlIGRpc2sgZGV2aWNlcywgYml0IDEgdGhlIG5ldHdvcmsKLSAgICAgICAgICAgZGV2aWNlcywg YW5kIGJpdCAyIHRoZSBub24tcHJpbWFyeS1tYXN0ZXIgSURFIGRldmljZXMuICovCi0gICAgICAg IGlmICh2YWwgJiAoVU5QTFVHX0FMTF9ESVNLUyB8IFVOUExVR19BVVhfSURFX0RJU0tTKSkgewor ICAgICAgICAvKiBVbnBsdWcgZGV2aWNlcy4gU2VlIGNvbW1lbnQgYWJvdmUgZmxhZyBkZWZpbml0 aW9ucyAqLworICAgICAgICBpZiAodmFsICYgKFVOUExVR19JREVfU0NTSV9ESVNLUyB8IFVOUExV R19BVVhfSURFX0RJU0tTIHwKKyAgICAgICAgICAgICAgICAgICBVTlBMVUdfTlZNRV9ESVNLUykp IHsKICAgICAgICAgICAgIERQUklOVEYoInVucGx1ZyBkaXNrc1xuIik7CiAgICAgICAgICAgICBw Y2lfdW5wbHVnX2Rpc2tzKHBjaV9kZXYtPmJ1cywgdmFsKTsKICAgICAgICAgfQpAQCAtMzM4LDE0 ICszNjEsMTQgQEAgc3RhdGljIHZvaWQgeGVuX3BsYXRmb3JtX2lvcG9ydF93cml0ZWIodm9pZCAq b3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgICAgICAqIElmIFZNRFAgd2FzIHRvIGNvbnRy b2wgYm90aCBkaXNrIGFuZCBMQU4gaXQgd291bGQgdXNlIDQuCiAgICAgICAgICAgICAgKiBJZiBp dCBjb250cm9sbGVkIGp1c3QgZGlzayBvciBqdXN0IExBTiwgaXQgd291bGQgdXNlIDggYmVsb3cu CiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHBjaV91bnBsdWdfZGlza3MocGNpX2Rldi0+ YnVzLCBVTlBMVUdfQUxMX0RJU0tTKTsKKyAgICAgICAgICAgIHBjaV91bnBsdWdfZGlza3MocGNp X2Rldi0+YnVzLCBVTlBMVUdfSURFX1NDU0lfRElTS1MpOwogICAgICAgICAgICAgcGNpX3VucGx1 Z19uaWNzKHBjaV9kZXYtPmJ1cyk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2Fz ZSA4OgogICAgICAgICBzd2l0Y2ggKHZhbCkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAg ICBwY2lfdW5wbHVnX2Rpc2tzKHBjaV9kZXYtPmJ1cywgVU5QTFVHX0FMTF9ESVNLUyk7CisgICAg ICAgICAgICBwY2lfdW5wbHVnX2Rpc2tzKHBjaV9kZXYtPmJ1cywgVU5QTFVHX0lERV9TQ1NJX0RJ U0tTKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICBw Y2lfdW5wbHVnX25pY3MocGNpX2Rldi0+YnVzKTsKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==