PCI or PCIe Hot-Plugging With the cfgadm Command
This section provides step-by-step instructions for hot-plugging PCI or PCIe adapter cards on
SPARC and x86 systems.
In addition to the cfgadm command, the prtconf command is helpful during hot-plug
operations. The prtconf command displays additional configuration information that pertains to the hardware.
After adding hardware, you can use the prtconf command to verify that the
hardware is configured correctly. For example, after a configure operation, use the prtconf
-D command to verify that the driver is attached to the newly
installed hardware device. If the device driver has not been added to the
system prior to hardware configuration, it may be manually added by using the
add_drv command.
For more information, see prtconf(1M) and add_drv(1M).
In the examples, only PCI attachment points are listed, for brevity. The attachment
points that are displayed on your system depend on your system configuration.
PCIe Led Indicator Behavior
You might observe the LED indicators on the system to get a
visual indication about the status of the slot's hot-plug operation. The LED behavior,
in case of PCI Express, matches that defined in the PCI Express specification
or the behavior might otherwise be platform dependent.
Please refer to your platform guide for specific details. In case of PCI
Express, when the Attention Button is pressed, the power indicator blinks, which indicates
the beginning of a state transition. The blinking ends when the state transition
has ended.
How to Display PCI Slot Configuration Information
This procedure has been updated to include PCIe configuration information.
The cfgadm command displays the status of PCI hot-pluggable devices and slots on
a system. For more information, see cfgadm(1M).
- Become superuser.
- Display PCI configuration information.
Display PCI slot configuration information.
For example:
# cfgadm
Ap_Id Type Receptacle Occupant Condition
pci1:hpc0_slot0 unknown empty unconfigured unknown
pci1:hpc0_slot1 unknown empty unconfigured unknown
pci1:hpc0_slot2 unknown empty unconfigured unknown
pci1:hpc0_slot3 ethernet/hp connected configured ok
pci1:hpc0_slot4 unknown empty unconfigured unknown
Display specific PCI device information.
For example:
# cfgadm -s "cols=ap_id:type:info" pci
Ap_Id Type Information
pci1:hpc0_slot0 unknown Slot 7
pci1:hpc0_slot1 unknown Slot 8
pci1:hpc0_slot2 unknown Slot 9
pci1:hpc0_slot3 ethernet/hp Slot 10
pci1:hpc0_slot4 unknown Slot 11
The logical Ap_Id, pci1:hpc0_slot0, is the logical Ap_Id for hot-pluggable slot, Slot 7. The component hpc0 indicates the hot-pluggable adapter card for this slot, and pci1 indicates the PCI bus instance. The Type field indicates the type of PCI adapter card that is present in the slot.
Display PCIe slot configuration information.
For example:
# cfgadm pci
Ap_Id Type Receptacle Occupant Condition
pcie1 unknown empty unconfigured unknown
pcie2 unknown empty unconfigured unknown
pcie3 unknown empty unconfigured unknown
pcie4 etherne/hp connected configured ok
pcie5 pci-pci/hp connected configured ok
pcie6 unknown disconnected unconfigured unknown
Display specific PCIe device information.
For example:
# cfgadm -s "cols=ap_id:busy:o_state" pci
Ap_Id Busy Occupant
pcie1 n unconfigured
pcie2 n unconfigured
pcie3 n unconfigured
pcie4 n configured
pcie5 n configured
pcie6 n configured
Note - The logical Ap_Id in most cases should match the slot label that is silk-screened on the system chassis. Refer to your platform guide for the cfgadm output of the hot-pluggable slots. The Busy field can be displayed to ensure that the Ap_Id is not transitioning to another state before a hot-plug operation is attempted.
How to Remove a PCI Adapter Card
The following procedure has been updated for removing a PCIe adapter card. However,
the procedure to remove an adapter card is the same whether you are
using PCI or PCIe.
- Become superuser.
- Determine which slot the PCI adapter card is in.
For example:
# cfgadm pci
Ap_Id Type Receptacle Occupant Condition
pcie1 unknown empty unconfigured unknown
pcie2 unknown empty unconfigured unknown
pcie3 unknown empty unconfigured unknown
pcie4 etherne/hp connected configured ok
pcie5 pci-pci/hp connected configured ok
pcie6 unknown disconnected unconfigured unknown
- Stop the application that has the device open.
For example, if the device is an Ethernet card, use the ifconfig
command to bring down the interface and unplumb the interface.
- Unconfigure the device manually by using the cfgadm(1M) command as shown below. Or,
if you have a PCIe adapter card, use the auto-configuration method, such as
pressing the slot's Attention Button as defined by your platform guide.
# cfgadm -c unconfigure pcie4
- Confirm that the device has been unconfigured.
For example:
# cfgadm pci
Ap_Id Type Receptacle Occupant Condition
pcie1 unknown empty unconfigured unknown
pcie2 unknown empty unconfigured unknown
pcie3 unknown empty unconfigured unknown
pcie4 unknown connected unconfigured unknown
pcie5 pci-pci/hp connected configured ok
pcie6 unknown disconnected unconfigured unknown
Note - The Type and Condition also become unknown when the device is unconfigured.
- Disconnect the power to the slot manually. If the auto-configuration method is used,
this step is not necessary. Refer to your platform guide for more information.
# cfgadm -c disconnect pcie4
- Confirm that the device has been disconnected.
For example:
# cfgadm pci
Ap_Id Type Receptacle Occupant Condition
pcie1 unknown empty unconfigured unknown
pcie2 unknown empty unconfigured unknown
pcie3 unknown empty unconfigured unknown
pcie4 unknown disconnected unconfigured unknown
pcie5 pci-pci/hp connected configured ok
pcie6 unknown disconnected unconfigured unknown
- Follow appropriate instructions in your platform guide to remove the PCI adapter card.
After the card is removed, the Receptacle state is empty.
For example:
# cfgadm pci
Ap_Id Type Receptacle Occupant Condition
pcie1 unknown empty unconfigured unknown
pcie2 unknown empty unconfigured unknown
pcie3 unknown empty unconfigured unknown
pcie4 unknown empty unconfigured unknown
pcie5 pci-pci/hp connected configured ok
pcie6 unknown disconnected unconfigured unknown
Note - The auto-configuration method can be enabled or disabled at boot, depending on the
platform implementation. Set the auto-configuration method as appropriate for your environment.
How to Add a PCI Adapter Card
The following procedure has been updated for adding a PCIe adapter card. However,
the procedure to add an adapter card is the same whether you
are using PCI or PCIe.
- Become superuser.
- Identify the hot-pluggable slot and open latches.
For example, pcie3.
# cfgadm pci
Ap_Id Type Receptacle Occupant Condition
pcie1 unknown empty unconfigured unknown
pcie2 unknown empty unconfigured unknown
pcie3 unknown empty unconfigured unknown
pcie4 unknown empty unconfigured unknown
pcie5 pci-pci/hp connected configured ok
pcie6 unknown disconnected unconfigured unknown
- Follow the appropriate instructions in your platform guide to insert a PCI adapter
card into the slot.
- Determine which slot the PCI adapter card is in after it is inserted.
For example:
# cfgadm pci
Ap_Id Type Receptacle Occupant Condition
pcie1 unknown empty unconfigured unknown
pcie2 unknown empty unconfigured unknown
pcie3 unknown disconnected unconfigured unknown
pcie4 unknown empty unconfigured unknown
pcie5 pci-pci/hp connected configured ok
pcie6 unknown disconnected unconfigured unknown
- Connect the power to the slot manually using the cfgadm command. Or, if
you have a PCIe adapter card, use the auto-configuration method, such as pressing
the slot's Attention Button as defined by your platform guide.
For example:
# cfgadm -c connect pcie3
- Confirm that the attachment point is connected.
For example:
# cfgadm pci
Ap_Id Type Receptacle Occupant Condition
pcie1 unknown empty unconfigured unknown
pcie2 unknown empty unconfigured unknown
pcie3 unknown connected unconfigured unknown
pcie4 unknown empty unconfigured unknown
pcie5 pci-pci/hp connected configured ok
pcie6 unknown disconnected unconfigured unknown
- Configure the PCI adapter card manually by using the cfgadm command as shown
below. If using the auto-configuration method, this step should not be necessary. Refer
to your platform guide for more information.
For example:
# cfgadm -c configure pcie3
- Verify the configuration of the PCI adapter card in the slot.
For example:
# cfgadm pci
Ap_Id Type Receptacle Occupant Condition
pcie1 unknown empty unconfigured unknown
pcie2 unknown empty unconfigured unknown
pcie3 etherne/hp connected configured unknown
pcie5 pci-pci/hp connected configured ok
pcie6 unknown disconnected unconfigured unknown
- Configure any supporting software if this device is a new device.
For example, if this device is an Ethernet card, use the ifconfig command
to set up the interface.
Note - The auto-configuration method can be enabled or disabled at boot, depending on the
platform implementation. Set the auto-configuration method as appropriate for your environment.
Troubleshooting PCI Configuration Problems
- Error Message
cfgadm: Configuration operation invalid: invalid transition
- Cause
An invalid transition was attempted.
- Solution
Check whether the cfgadm -c command was issued appropriately. Use the cfgadm command to check the current receptacle and occupant state and to make sure that the Ap_Id is correct.
- Error Message
cfgadm: Attachment point not found
- Cause
The specified attachment point was not found.
- Solution
Check whether the attachment point is correct. Use the cfgadm command to display a list of available attachment points. Also check the physical path to see if the attachment point is still there.