diff options
Diffstat (limited to 'drivers/misc/cxl/vphb.c')
| -rw-r--r-- | drivers/misc/cxl/vphb.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/misc/cxl/vphb.c b/drivers/misc/cxl/vphb.c index 7ada5f1b7bb6..3519acebfdab 100644 --- a/drivers/misc/cxl/vphb.c +++ b/drivers/misc/cxl/vphb.c | |||
| @@ -230,6 +230,11 @@ int cxl_pci_vphb_add(struct cxl_afu *afu) | |||
| 230 | if (phb->bus == NULL) | 230 | if (phb->bus == NULL) |
| 231 | return -ENXIO; | 231 | return -ENXIO; |
| 232 | 232 | ||
| 233 | /* Set release hook on root bus */ | ||
| 234 | pci_set_host_bridge_release(to_pci_host_bridge(phb->bus->bridge), | ||
| 235 | pcibios_free_controller_deferred, | ||
| 236 | (void *) phb); | ||
| 237 | |||
| 233 | /* Claim resources. This might need some rework as well depending | 238 | /* Claim resources. This might need some rework as well depending |
| 234 | * whether we are doing probe-only or not, like assigning unassigned | 239 | * whether we are doing probe-only or not, like assigning unassigned |
| 235 | * resources etc... | 240 | * resources etc... |
| @@ -256,7 +261,10 @@ void cxl_pci_vphb_remove(struct cxl_afu *afu) | |||
| 256 | afu->phb = NULL; | 261 | afu->phb = NULL; |
| 257 | 262 | ||
| 258 | pci_remove_root_bus(phb->bus); | 263 | pci_remove_root_bus(phb->bus); |
| 259 | pcibios_free_controller(phb); | 264 | /* |
| 265 | * We don't free phb here - that's handled by | ||
| 266 | * pcibios_free_controller_deferred() | ||
| 267 | */ | ||
| 260 | } | 268 | } |
| 261 | 269 | ||
| 262 | static bool _cxl_pci_is_vphb_device(struct pci_controller *phb) | 270 | static bool _cxl_pci_is_vphb_device(struct pci_controller *phb) |
