Hi,
Reason for this is that commit [1] didn't take into account pcie-pci-bridge, marking bridge as non hotpluggable instead of handling it as possibly SHPC capable bridge. Fix issue by checking if pcie-pci-bridge is SHPC capable and if it is mark it as hotpluggable.
Fix #1
With this hotplug of rtl8139 succeeds, with caveat that it fails initialize IO bar, which is caused by [2] which makes firmware skip IO reservation for any PCI device which isn't correct in case of pcie-pci-bridge. Fix it by exposing hotplug type and making resource optional only if PCIe hotplug is in use.
Fix #2
Can we make them two separate patches please?
switch (port_type) {
case PCI_EXP_TYPE_PCI_BRIDGE:
/* do nothing and check later if SHPC is enabled */
break;
if (port_type == PCI_EXP_TYPE_PCI_BRIDGE) goto check_shcp;
check_shpc:
shpc_cap = pci_find_capability(bus->bus_dev->bdf, PCI_CAP_ID_SHPC, 0);
I think this would be more readable.
thanks, Gerd