Support multi-function hot-add of PCIe device via device_add, just ensure function 0 is added last. While allow user to cancel the hot-add operation via device_del.
changelog v6: 1. reimplement pci_get_function_0() using mst`s suggestion code 2. modify pcie_cap_slot_hot_unplug_request_cb(), because PCIe device only have 1 slot. changelog v5: 1. change pci_is_function_0() to pci_get_function_0(), and use it according to v4 comments. 2. reimplement the content of pci_get_function_0() changelog v4: 1. take ari into account, add api: pci_is_function_0() 2. reorder the patch 3. other minor fix according to the v3 comment changelog v3: 1. Flag device as unexposed when func 0 doesn`t exist, via return 0xFF in case of gratuitous pci bus scan. 2. Since device is unexposed to guest, can remove function individually, without interaction with the guest. Cao jin (2): remove function during multi-function hot-add enable multi-function hot-add hw/pci/pci.c | 40 +++++++++++++++++++++++++++++++++++++++- hw/pci/pci_host.c | 13 +++++++++++-- hw/pci/pcie.c | 39 ++++++++++++++++++++++++++------------- include/hw/pci/pci.h | 1 + 4 files changed, 77 insertions(+), 16 deletions(-) -- 2.1.0