From: David Gibson <david@gibson.dropbear.id.au>
To: peter.maydell@linaro.org
Cc: lvivier@redhat.com, aik@ozlabs.ru,
Daniel Henrique Barboza <danielhb413@gmail.com>,
groug@kaod.org, qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PULL 09/19] spapr_pci: remove all child functions in function zero unplug
Date: Thu, 29 Aug 2019 16:08:17 +1000 [thread overview]
Message-ID: <20190829060827.25731-10-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20190829060827.25731-1-david@gibson.dropbear.id.au>
From: Daniel Henrique Barboza <danielhb413@gmail.com>
There is nothing wrong with how sPAPR handles multifunction PCI
hot unplugs. The problem is that x86 does it simpler. Instead of
removing each non-zero function and then removing function zero,
x86 can remove any function of the slot to trigger the hot unplug.
Libvirt will be directly impacted by this difference, in the
(hopefully soon) PCI Multifunction hot plug/unplug support. For
hot plugs, both x86 and sPAPR will operate the same way: a XML
with all desired functions to be added, then consecutive hotplugs
of all non-zero functions first, zero last. For hot unplugs, at
least in the current state, a XML with the devices to be removed
must also be provided because of how sPAPR operates - x86 does
not need it - since any function unplug will unplug the whole
PCIe slot. This difference puts extra strain in the management
layer, which needs to either handle both archs differently in
the unplug scenario or choose treat x86 like sPAPR, forcing x86
users to cope with sPAPR internals.
This patch changes spapr_pci_unplug_request to handle the
unplug of function zero differently. When removing function zero,
instead of error-ing out if there are any remaining function
DRCs which needs detaching, detach those. This has no effect in
any existing scripts that are detaching the non-zero functions
before function zero, and can be used by management as a shortcut
to remove the whole PCI multifunction device without specifying
each child function.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20190822195918.3307-1-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
hw/ppc/spapr_pci.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index deb0b0c80c..9f176f463e 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1700,11 +1700,13 @@ static void spapr_pci_unplug_request(HotplugHandler *plug_handler,
state = func_drck->dr_entity_sense(func_drc);
if (state == SPAPR_DR_ENTITY_SENSE_PRESENT
&& !spapr_drc_unplug_requested(func_drc)) {
- error_setg(errp,
- "PCI: slot %d, function %d still present. "
- "Must unplug all non-0 functions first.",
- slotnr, i);
- return;
+ /*
+ * Attempting to remove function 0 of a multifunction
+ * device will will cascade into removing all child
+ * functions, even if their unplug weren't requested
+ * beforehand.
+ */
+ spapr_drc_detach(func_drc);
}
}
}
--
2.21.0
next prev parent reply other threads:[~2019-08-29 6:14 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-29 6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 01/19] ppc/pnv: Set default ram size to 1.75GB David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 03/19] ppc/pnv: add more dummy XSCOM addresses for the P9 CAPP David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 04/19] ppc/pnv: Generate phandle for the "interrupt-parent" property David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 05/19] ppc/pnv: Introduce PowerNV machines with fixed CPU models David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 06/19] tests/boot-serial-test: add support for all the PowerNV machines David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 07/19] ppc: Fix xsmaddmdp and friends David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 08/19] ppc: Fix xscvdpspn for SNAN David Gibson
2019-08-29 6:08 ` David Gibson [this message]
2019-08-29 6:08 ` [Qemu-devel] [PULL 10/19] pseries: Fix compat_pvr on reset David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 11/19] target/ppc: Set float_tininess_before_rounding at cpu reset David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 12/19] target/ppc: Fix do_float_check_status vs inexact David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 13/19] target/ppc: Refactor emulation of vmrgew and vmrgow instructions David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 14/19] pseries: Update SLOF firmware image David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 15/19] powerpc/spapr: Add host threads parameter to ibm, get_system_parameter David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 16/19] spapr: Use SHUTDOWN_CAUSE_SUBSYSTEM_RESET for CAS reboots David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 17/19] spapr_pci: Advertise BAR reallocation capability David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 18/19] spapr/pci: Convert types to QEMU coding style David Gibson
2019-08-29 6:08 ` [Qemu-devel] [PULL 19/19] spapr: Set compat mode in spapr_core_plug() David Gibson
2019-09-04 8:17 ` [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 Peter Maydell
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=20190829060827.25731-10-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=aik@ozlabs.ru \
--cc=danielhb413@gmail.com \
--cc=groug@kaod.org \
--cc=lvivier@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@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).