diff options
Diffstat (limited to 'arch/powerpc/kernel/eeh_driver.c')
-rw-r--r-- | arch/powerpc/kernel/eeh_driver.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c index 2714a3b81d24..b5f73cb5eeb6 100644 --- a/arch/powerpc/kernel/eeh_driver.c +++ b/arch/powerpc/kernel/eeh_driver.c | |||
@@ -642,7 +642,6 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus, | |||
642 | if (pe->type & EEH_PE_VF) { | 642 | if (pe->type & EEH_PE_VF) { |
643 | eeh_pe_dev_traverse(pe, eeh_rmv_device, NULL); | 643 | eeh_pe_dev_traverse(pe, eeh_rmv_device, NULL); |
644 | } else { | 644 | } else { |
645 | eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); | ||
646 | pci_lock_rescan_remove(); | 645 | pci_lock_rescan_remove(); |
647 | pci_hp_remove_devices(bus); | 646 | pci_hp_remove_devices(bus); |
648 | pci_unlock_rescan_remove(); | 647 | pci_unlock_rescan_remove(); |
@@ -692,10 +691,12 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus, | |||
692 | */ | 691 | */ |
693 | edev = list_first_entry(&pe->edevs, struct eeh_dev, list); | 692 | edev = list_first_entry(&pe->edevs, struct eeh_dev, list); |
694 | eeh_pe_traverse(pe, eeh_pe_detach_dev, NULL); | 693 | eeh_pe_traverse(pe, eeh_pe_detach_dev, NULL); |
695 | if (pe->type & EEH_PE_VF) | 694 | if (pe->type & EEH_PE_VF) { |
696 | eeh_add_virt_device(edev, NULL); | 695 | eeh_add_virt_device(edev, NULL); |
697 | else | 696 | } else { |
697 | eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); | ||
698 | pci_hp_add_devices(bus); | 698 | pci_hp_add_devices(bus); |
699 | } | ||
699 | } else if (frozen_bus && rmv_data->removed) { | 700 | } else if (frozen_bus && rmv_data->removed) { |
700 | pr_info("EEH: Sleep 5s ahead of partial hotplug\n"); | 701 | pr_info("EEH: Sleep 5s ahead of partial hotplug\n"); |
701 | ssleep(5); | 702 | ssleep(5); |