diff options
Diffstat (limited to 'drivers/pci/hotplug/shpchp_hpc.c')
-rw-r--r-- | drivers/pci/hotplug/shpchp_hpc.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/pci/hotplug/shpchp_hpc.c b/drivers/pci/hotplug/shpchp_hpc.c index 943ed2b4dabe..b392606a905a 100644 --- a/drivers/pci/hotplug/shpchp_hpc.c +++ b/drivers/pci/hotplug/shpchp_hpc.c | |||
@@ -813,6 +813,7 @@ static void hpc_release_ctlr(struct controller *ctrl) | |||
813 | { | 813 | { |
814 | struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle; | 814 | struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle; |
815 | struct php_ctlr_state_s *p, *p_prev; | 815 | struct php_ctlr_state_s *p, *p_prev; |
816 | int i; | ||
816 | 817 | ||
817 | DBG_ENTER_ROUTINE | 818 | DBG_ENTER_ROUTINE |
818 | 819 | ||
@@ -821,6 +822,14 @@ static void hpc_release_ctlr(struct controller *ctrl) | |||
821 | return ; | 822 | return ; |
822 | } | 823 | } |
823 | 824 | ||
825 | /* | ||
826 | * Mask all slot event interrupts | ||
827 | */ | ||
828 | for (i = 0; i < ctrl->num_slots; i++) | ||
829 | writel(0xffff3fff, php_ctlr->creg + SLOT1 + (4 * i)); | ||
830 | |||
831 | cleanup_slots(ctrl); | ||
832 | |||
824 | if (shpchp_poll_mode) { | 833 | if (shpchp_poll_mode) { |
825 | del_timer(&php_ctlr->int_poll_timer); | 834 | del_timer(&php_ctlr->int_poll_timer); |
826 | } else { | 835 | } else { |
@@ -830,6 +839,7 @@ static void hpc_release_ctlr(struct controller *ctrl) | |||
830 | pci_disable_msi(php_ctlr->pci_dev); | 839 | pci_disable_msi(php_ctlr->pci_dev); |
831 | } | 840 | } |
832 | } | 841 | } |
842 | |||
833 | if (php_ctlr->pci_dev) { | 843 | if (php_ctlr->pci_dev) { |
834 | iounmap(php_ctlr->creg); | 844 | iounmap(php_ctlr->creg); |
835 | release_mem_region(ctrl->mmio_base, ctrl->mmio_size); | 845 | release_mem_region(ctrl->mmio_base, ctrl->mmio_size); |