]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
shpc: disallow unplug when power indicator is blinking
authorVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Wed, 16 Nov 2022 21:44:58 +0000 (00:44 +0300)
committerMichael S. Tsirkin <mst@redhat.com>
Fri, 27 Jan 2023 14:48:49 +0000 (09:48 -0500)
Pressing attention button has special meaning when power indicator is
blinking. Better just not do it.

For example, trying to remove device immediately after hotplug leads to
both commands succeded but device not actually unrealized.

Same thing for PCIE hotplug was done in
  81124b3c7a5dae "pcie: add power indicator blink check"

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Message-Id: <20221116214458.82090-1-vsementsov@yandex-team.ru>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/pci/shpc.c

index e71f3a748378606eb85cac7765c6a2c1d0d48c8a..fca7f6691a9a0059d18fdae7f3150917dae6ab44 100644 (file)
@@ -568,6 +568,13 @@ void shpc_device_unplug_request_cb(HotplugHandler *hotplug_dev,
 
     state = shpc_get_status(shpc, slot, SHPC_SLOT_STATE_MASK);
     led = shpc_get_status(shpc, slot, SHPC_SLOT_PWR_LED_MASK);
+
+    if (led == SHPC_LED_BLINK) {
+        error_setg(errp, "Hot-unplug failed: "
+                   "guest is busy (power indicator blinking)");
+        return;
+    }
+
     if (state == SHPC_STATE_DISABLED && led == SHPC_LED_OFF) {
         shpc_free_devices_in_slot(shpc, slot);
         shpc_set_status(shpc, slot, 1, SHPC_SLOT_STATUS_MRL_OPEN);