summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/hotplug/pcihp/pcihp.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/hotplug/pcihp/pcihp.c')
-rw-r--r--usr/src/uts/common/io/hotplug/pcihp/pcihp.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/usr/src/uts/common/io/hotplug/pcihp/pcihp.c b/usr/src/uts/common/io/hotplug/pcihp/pcihp.c
index 1a9e236856..11385b5194 100644
--- a/usr/src/uts/common/io/hotplug/pcihp/pcihp.c
+++ b/usr/src/uts/common/io/hotplug/pcihp/pcihp.c
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -2660,13 +2659,14 @@ pcihp_event_handler(caddr_t slot_arg, uint_t event_mask)
ddi_driver_name(pcihp_p->dip),
ddi_get_instance(pcihp_p->dip),
slotinfop->name);
- }
- else
+ } else {
+ slotinfop->condition = AP_COND_UNKNOWN;
cmn_err(CE_NOTE, "pcihp (%s%d): card is removed"
" from the slot %s",
ddi_driver_name(pcihp_p->dip),
ddi_get_instance(pcihp_p->dip),
slotinfop->name);
+ }
slotinfop->rstate = AP_RSTATE_EMPTY;
@@ -2945,6 +2945,10 @@ pcihp_event_handler(caddr_t slot_arg, uint_t event_mask)
ddi_get_instance(pcihp_p->dip),
slotinfop->name);
+ if (slotinfop->rstate == AP_RSTATE_CONNECTED)
+ (void) hpc_nexus_disconnect(slotinfop->slot_hdl,
+ NULL, 0);
+
slotinfop->condition = AP_COND_FAILED;
pcihp_gen_sysevent(slotinfop->name, PCIHP_DR_AP_STATE_CHANGE,