From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Igor Mammedov <imammedo@redhat.com>,
Gerd Hoffmann <kraxel@redhat.com>,
mst@redhat.com, anisinha@redhat.com, jusual@redhat.com
Subject: [PULL 26/31] acpi: pcihp: allow repeating hot-unplug requests
Date: Tue, 25 Apr 2023 03:46:24 -0400 [thread overview]
Message-ID: <0f689cf5ada4d5df5ab95c7f7aa9fc221afa855d.1682408661.git.mst@redhat.com> (raw)
In-Reply-To: <cover.1682408661.git.mst@redhat.com>
From: Igor Mammedov <imammedo@redhat.com>
with Q35 using ACPI PCI hotplug by default, user's request to unplug
device is ignored when it's issued before guest OS has been booted.
And any additional attempt to request device hot-unplug afterwards
results in following error:
"Device XYZ is already in the process of unplug"
arguably it can be considered as a regression introduced by [2],
before which it was possible to issue unplug request multiple
times.
Accept new uplug requests after timeout (1ms). This brings ACPI PCI
hotplug on par with native PCIe unplug behavior [1] and allows user
to repeat unplug requests at propper times.
Set expire timeout to arbitrary 1msec so user won't be able to
flood guest with SCI interrupts by calling device_del in tight loop.
PS:
ACPI spec doesn't mandate what OSPM can do with GPEx.status
bits set before it's booted => it's impl. depended.
Status bits may be retained (I tested with one Windows version)
or cleared (Linux since 2.6 kernel times) during guest's ACPI
subsystem initialization.
Clearing status bits (though not wrong per se) hides the unplug
event from guest, and it's upto user to repeat device_del later
when guest is able to handle unplug requests.
1) 18416c62e3 ("pcie: expire pending delete")
2)
Fixes: cce8944cc9ef ("qdev-monitor: Forbid repeated device_del")
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
CC: mst@redhat.com
CC: anisinha@redhat.com
CC: jusual@redhat.com
CC: kraxel@redhat.com
Message-Id: <20230418090449.2155757-1-imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Ani Sinha <anisinha@redhat.com>
---
hw/acpi/pcihp.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c
index dcfb779a7a..cdd6f775a1 100644
--- a/hw/acpi/pcihp.c
+++ b/hw/acpi/pcihp.c
@@ -357,6 +357,16 @@ void acpi_pcihp_device_unplug_request_cb(HotplugHandler *hotplug_dev,
* acpi_pcihp_eject_slot() when the operation is completed.
*/
pdev->qdev.pending_deleted_event = true;
+ /* if unplug was requested before OSPM is initialized,
+ * linux kernel will clear GPE0.sts[] bits during boot, which effectively
+ * hides unplug event. And than followup qmp_device_del() calls remain
+ * blocked by above flag permanently.
+ * Unblock qmp_device_del() by setting expire limit, so user can
+ * repeat unplug request later when OSPM has been booted.
+ */
+ pdev->qdev.pending_deleted_expires_ms =
+ qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL); /* 1 msec */
+
s->acpi_pcihp_pci_status[bsel].down |= (1U << slot);
acpi_send_event(DEVICE(hotplug_dev), ACPI_PCI_HOTPLUG_STATUS);
}
--
MST
next prev parent reply other threads:[~2023-04-25 7:49 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-25 7:44 [PULL 00/31] virtio,pc,pci: fixes, features, cleanups Michael S. Tsirkin
2023-04-25 7:44 ` [PULL 01/31] virtio: refresh vring region cache after updating a virtqueue size Michael S. Tsirkin
2023-04-26 16:32 ` Michael Tokarev
2023-04-25 7:44 ` [PULL 02/31] Add my old and new work email mapping and use work email to support biosbits Michael S. Tsirkin
2023-04-25 7:44 ` [PULL 03/31] vdpa: accept VIRTIO_NET_F_SPEED_DUPLEX in SVQ Michael S. Tsirkin
2023-04-25 7:44 ` [PULL 04/31] meson_options.txt: Enable qom-cast-debug by default again Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 05/31] vhost: Drop unused eventfd_add|del hooks Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 06/31] docs: vhost-user: Define memory region separately Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 07/31] docs: vhost-user: Add Xen specific memory mapping support Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 08/31] virtio-balloon: optimize the virtio-balloon on the ARM platform Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 09/31] MAINTAINERS: Mark AMD-Vi emulation as orphan Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 10/31] hw/i386/amd_iommu: Explicit use of AMDVI_BASE_ADDR in amdvi_init Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 11/31] hw/i386/amd_iommu: Remove intermediate AMDVIState::devid field Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 12/31] hw/i386/amd_iommu: Move capab_offset from AMDVIState to AMDVIPCIState Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 13/31] hw/i386/amd_iommu: Set PCI static/const fields via PCIDeviceClass Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 14/31] hw/i386/amd_iommu: Factor amdvi_pci_realize out of amdvi_sysbus_realize Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 15/31] hw: Add compat machines for 8.1 Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 16/31] pci: avoid accessing slot_reserved_mask directly outside of pci.c Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 17/31] vhost-user-blk-server: notify client about disk resize Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 18/31] Add my old and new work email mapping and use work email to support acpi Michael S. Tsirkin
2023-04-25 8:22 ` Ani Sinha
2023-04-25 7:45 ` [PULL 19/31] hw/acpi: limit warning on acpi table size to pc machines older than version 2.3 Michael S. Tsirkin
2023-04-25 7:45 ` [PULL 20/31] tests: bios-tables-test: replace memset with initializer Michael S. Tsirkin
2023-04-25 7:46 ` [PULL 21/31] MAINTAINERS: Add Eugenio Pérez as vhost-shadow-virtqueue reviewer Michael S. Tsirkin
2023-04-25 7:46 ` [PULL 22/31] docs/cxl: Fix sentence Michael S. Tsirkin
2023-04-25 7:46 ` [PULL 23/31] intel_iommu: refine iotlb hash calculation Michael S. Tsirkin
2023-04-25 8:04 ` Michael S. Tsirkin
2023-04-25 7:46 ` [PULL 25/31] virtio: i2c: Check notifier helpers for VIRTIO_CONFIG_IRQ_IDX Michael S. Tsirkin
2023-04-25 7:46 ` Michael S. Tsirkin [this message]
2023-04-25 7:46 ` [PULL 27/31] docs/specs/pci-ids: Convert from txt to rST Michael S. Tsirkin
2023-04-25 7:46 ` [PULL 28/31] docs/specs: Convert pci-serial.txt to rst Michael S. Tsirkin
2023-04-25 7:46 ` [PULL 29/31] docs/specs: Convert pci-testdev.txt " Michael S. Tsirkin
2023-04-25 7:46 ` [PULL 30/31] hw/pci-bridge: pci_expander_bridge fix type in pxb_cxl_dev_reset() Michael S. Tsirkin
2023-04-25 7:46 ` [PULL 31/31] hw/pci-bridge: Make PCIe and CXL PXB Devices inherit from TYPE_PXB_DEV Michael S. Tsirkin
2023-04-25 8:04 ` [PULL 24/31] docs: Remove obsolete descriptions of SR-IOV support Michael S. Tsirkin
2023-04-25 11:16 ` [PULL 00/31] virtio,pc,pci: fixes, features, cleanups Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0f689cf5ada4d5df5ab95c7f7aa9fc221afa855d.1682408661.git.mst@redhat.com \
--to=mst@redhat.com \
--cc=anisinha@redhat.com \
--cc=imammedo@redhat.com \
--cc=jusual@redhat.com \
--cc=kraxel@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).