spapr: Do PCI device hotplug sanity checks at pre-plug only
commit9e4dc0a1c2743cb115ebdb32258a78b328c05205
authorGreg Kurz <groug@kaod.org>
Fri, 20 Nov 2020 23:42:00 +0000 (21 00:42 +0100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Mon, 14 Dec 2020 04:50:55 +0000 (14 15:50 +1100)
treebf0e113fd97dca54171af4f4f778cf90f1cc83cc
parent0b66209d9f8d35ba0f894b14ac00996b5ecf547c
spapr: Do PCI device hotplug sanity checks at pre-plug only

The PHB acts as the hotplug handler for PCI devices. It does some
sanity checks on DR enablement, PCI bridge chassis numbers and
multifunction. These checks are currently performed at plug time,
but they would best sit in a pre-plug handler in order to error
out as early as possible.

Create a spapr_pci_pre_plug() handler and move all the checking
there. Add a check that the associated DRC doesn't already have
an attached device. This is equivalent to the slot availability
check performed by do_pci_register_device() upon realization of
the PCI device.

This allows to pass &error_abort to spapr_drc_attach() and to end
up with a plug handler that doesn't need to report errors anymore.

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <20201120234208.683521-2-groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/ppc/spapr_pci.c