Hi All: I have 2 questions about (un)hotplug on pcie-root-port. First Question (hotplug failure because of redundant PCI_EXP_LNKSTA_DLLLA bit set): during VM boot, qemu sets PCI_EXP_LNKSTA_DLLLA according to this process: pcie_cap_init() -> pcie_cap_v1_fill(), even if there's no pcie device added to the VM. I noticed that during hotplug, qemu also sets PCI_EXP_LNKSTA_DLLLA in pcie_cap_slot_hotplug_cb(). It means that the bit PCI_EXP_LNKSTA_DLLLA is set TWICE. why set this bit during initializing pcie-root-port? It seems unnecessary. The bad side of this is it causes HOTPLUG FAILURE if we boot the VM and hotplug a pcie device at the same time: In VM kernel,according to this bit set, it senses a PDC event, the process is: pciehp_probe -> pcie_init -> pcie_init_slot -> pciehp_queue_pushbutton_work. If the 2 PDC events get too close, the VM kernel will wrongly unplug the device. Suggestion to the 1st problem: Can I remove the PCI_EXP_LNKSTA_DLLLA bit set process during pcie_cap_init().
Second Question (time cost too much during pcie device unplug): qemu only send ABP event to VM kernel during unpluging pcie devices, VM kernel receives the ABP event then sleep 5s to expect a PDC event, which causes unpluging devices takes too long. Suggestion to the 2nd problem: Can I send ABP and *PDC* events to kernet when unplug devices.