From 3ff64a000649028df66c83c6647258461b0ab8c5 Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Wed, 17 Apr 2019 13:57:27 +0100 Subject: [PATCH 10/24] s390x/pci: Send correct event on hotplug RH-Author: Cornelia Huck Message-id: <20190417135741.25297-11-cohuck@redhat.com> Patchwork-id: 85794 O-Subject: [RHEL-8.1.0 qemu-kvm PATCH v2 10/24] s390x/pci: Send correct event on hotplug Bugzilla: 1699070 RH-Acked-by: David Hildenbrand RH-Acked-by: Thomas Huth RH-Acked-by: Jens Freimann From: David Hildenbrand Comit 2c28c490571f ("s390x/pci: let pci devices start in configured mode") changed the initial state of zPCI devices from ZPCI_FS_STANDBY to ZPCI_FS_DISABLED (a.k.a. configured). However we still only send a HP_EVENT_RESERVED_TO_STANDBY event to the guest, indicating a wrong state. Let's send a HP_EVENT_TO_CONFIGURED event instead, to match the actual state the device is in. This fixes hotplugged devices having to be enabled explicitly in the guest e.g. via echo 1 > /sys/bus/pci/slots/00000000/power. On real HW, a PCI device always pops up in the STANDBY state. In QEMU, we decided to let it show up directly in the configured state (as configuring it is otherwise just an extra burden for the admin). We can safely bypass the STANDBY state when hotplugging PCI devices to a guest. Fixes: 2c28c490571f ("s390x/pci: let pci devices start in configured mode") Reported-by: Cornelia Huck Signed-off-by: David Hildenbrand Message-Id: <20190110210358.24035-1-david@redhat.com> Tested-by: Cornelia Huck Reviewed-by: Pierre Morel Reviewed-by: Collin Walling Signed-off-by: Cornelia Huck (cherry picked from commit d57d6abc33c770b77732039ebcc96e26cf6ff285) Signed-off-by: Cornelia Huck Signed-off-by: Danilo C. L. de Paula --- hw/s390x/s390-pci-bus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 486c4b6..e19e134 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -903,7 +903,7 @@ static void s390_pcihost_plug(HotplugHandler *hotplug_dev, DeviceState *dev, } if (dev->hotplugged) { - s390_pci_generate_plug_event(HP_EVENT_RESERVED_TO_STANDBY, + s390_pci_generate_plug_event(HP_EVENT_TO_CONFIGURED , pbdev->fh, pbdev->fid); } } else if (object_dynamic_cast(OBJECT(dev), TYPE_S390_PCI_DEVICE)) { -- 1.8.3.1