aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/pci/hotplug/shpchp_hpc.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/pci/hotplug/shpchp_hpc.c b/drivers/pci/hotplug/shpchp_hpc.c
index e2a8671545f2..8b63f772a6f2 100644
--- a/drivers/pci/hotplug/shpchp_hpc.c
+++ b/drivers/pci/hotplug/shpchp_hpc.c
@@ -798,7 +798,7 @@ static void hpc_release_ctlr(struct controller *ctrl)
798 struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle; 798 struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle;
799 struct php_ctlr_state_s *p, *p_prev; 799 struct php_ctlr_state_s *p, *p_prev;
800 int i; 800 int i;
801 u32 slot_reg; 801 u32 slot_reg, serr_int;
802 802
803 DBG_ENTER_ROUTINE 803 DBG_ENTER_ROUTINE
804 804
@@ -822,6 +822,15 @@ static void hpc_release_ctlr(struct controller *ctrl)
822 822
823 cleanup_slots(ctrl); 823 cleanup_slots(ctrl);
824 824
825 /*
826 * Mask SERR and System Interrut generation
827 */
828 serr_int = shpc_readl(ctrl, SERR_INTR_ENABLE);
829 serr_int |= (GLOBAL_INTR_MASK | GLOBAL_SERR_MASK |
830 COMMAND_INTR_MASK | ARBITER_SERR_MASK);
831 serr_int &= ~SERR_INTR_RSVDZ_MASK;
832 shpc_writel(ctrl, SERR_INTR_ENABLE, serr_int);
833
825 if (shpchp_poll_mode) { 834 if (shpchp_poll_mode) {
826 del_timer(&php_ctlr->int_poll_timer); 835 del_timer(&php_ctlr->int_poll_timer);
827 } else { 836 } else {