系统管理指南:设备和文件系统

使用 cfgadm 命令执行 PCI 或 PCIe 热插拔

本节提供有关热插拔 x86 系统上的 PCI 或 PCIe 适配卡的逐步说明。

除了 cfgadm 命令以外,在热插拔操作过程中,prtconf 命令也非常有帮助。prtconf 命令可以显示与硬件有关的其他配置信息。

添加硬件后,可以使用 prtconf 命令来验证该硬件是否正确配置。例如,在配置操作后,使用 prtconf -D 命令可验证是否已向新安装的硬件设备附加了驱动程序。如果在配置硬件之前未将设备驱动程序添加到系统中,则可以使用 add_drv 命令手动添加该驱动程序。

有关更多信息,请参见 prtconf(1M)add_drv(1M)

在这些示例中,为了简便起见,仅列出了 PCI 附加点。系统上显示的附加点取决于系统配置。

PCIe LED 指示灯行为

您可能需要观察系统上的 LED 指示灯,以直观地了解有关插槽热插拔操作的状态。如果使用 PCI Express,则 LED 的行为符合 PCI Express 规范中定义的行为,否则该行为可能与平台相关。

有关具体的详细信息,请参阅平台指南。如果使用 PCI Express,则按“注意”按钮时,电源指示灯将会闪烁,表示状态转换开始。状态转换结束后,即会停止闪烁。

Procedure如何显示 PCI 插槽配置信息

此过程在 Solaris 10 6/06 发行版中已进行了更新,包括 PCIe 配置信息。

cfgadm 命令可显示系统上的 PCI 可热插拔设备和插槽的状态。有关更多信息,请参见 cfgadm(1M)

  1. 成为超级用户。

  2. 显示 PCI 配置信息。

    • 显示 PCI 插槽配置信息。

      例如:


      # 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
    • 显示特定的 PCI 设备信息。

      例如:


      # 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

      逻辑 Ap_Id pci1:hpc0_slot0 是可热插拔插槽 Slot 7 的逻辑 Ap_Id。组件 hpc0 表示此插槽的可热插拔适配卡,pci1 表示 PCI 总线实例。Type 字段表示插槽中存在的 PCI 适配卡的类型。

    • 显示 PCIe 插槽配置信息。

      例如:


      # 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
    • 显示特定的 PCIe 设备信息。

      例如:


      # 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

      注 –

      在大多数情况下,逻辑 Ap_Id 都应该与系统机箱上用丝网印花法标记的插槽标签匹配。有关可热插拔插槽的 cfgadm 输出,请参阅平台指南。显示 Busy 字段可确保尝试热插拔操作之前 Ap_Id 未转换为其他状态。


Procedure如何移除 PCI 适配卡

在 Solaris 10 6/06 发行版中,以下过程已经更新,可用于移除 PCIe 适配卡。但是,无论使用 PCI 还是 PCIe,移除适配卡的过程都是相同的。

  1. 成为超级用户。

  2. 确定 PCI 适配卡所在的插槽。

    例如:


    # 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
  3. 停止用于打开设备的应用程序。

    例如,如果设备是一块以太网卡,请使用 ifconfig 命令停用相应的接口,并取消检测该接口。

  4. 按照如下方式使用 cfgadm(1M) 命令手动取消配置设备。或者,如果您有 PCIe 适配卡,也可使用自动配置方法,如按平台指南中定义的方式按插槽的“注意”按钮。


    # cfgadm -c unconfigure pcie4
    
  5. 确认是否已取消配置设备。

    例如:


    # 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

    注 –

    如果取消配置设备,则 TypeCondition 也将成为 unknown。


  6. 手动断开插槽的电源。如果使用自动配置方法,则此步骤是不必要的。有关更多信息,请参阅平台指南。


    # cfgadm -c disconnect pcie4
    
  7. 确认是否已断开设备连接。

    例如:


    # 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 
  8. 遵照平台指南中的相应说明移除 PCI 适配卡。移除该卡后,插座状态即为空。

    例如:


    # 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

    注 –

    可以在引导时启用或禁用自动配置方法,具体取决于平台的实现。请针对环境设置合适的自动配置方法。


Procedure如何添加 PCI 适配卡

在 Solaris 10 6/06 发行版中,以下过程已经更新,可用于添加 PCIe 适配卡。但是,无论使用 PCI 还是 PCIe,添加适配卡的过程都是相同的。

  1. 成为超级用户。

  2. 标识可热插拔的插槽并打开锁。

    例如,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 
  3. 遵照平台指南中的相应说明将 PCI 适配卡插入插槽。

  4. 确定插入 PCI 适配卡后该卡所在的插槽。

    例如:


    # 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 
  5. 使用 cfgadm 命令手动连接插槽的电源。或者,如果您有 PCIe 适配卡,也可使用自动配置方法,如按平台指南中定义的方式按插槽的“注意”按钮。

    例如:


    # cfgadm -c connect pcie3
    
  6. 确认附加点已连接。

    例如:


    # 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
  7. 按照如下方式使用 cfgadm 命令手动配置 PCI 适配卡。如果使用自动配置方法,此步骤应该是不必要的。有关更多信息,请参阅平台指南。

    例如:


    # cfgadm -c configure pcie3
    
  8. 验证插槽中的 PCI 适配卡的配置。

    例如:


    # 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
  9. 如果此设备为新设备,请配置任何支持的软件。

    例如,如果此设备是一块以太网卡,请使用 ifconfig 命令来设置接口。


    注 –

    可以在引导时启用或禁用自动配置方法,具体取决于平台的实现。请针对环境设置合适的自动配置方法。


对 PCI 配置问题进行疑难解答

错误消息

cfgadm: Configuration operation invalid: invalid transition
原因

尝试进行无效转换。

解决方案

检查是否正确发出了 cfgadm -c 命令。使用 cfgadm 命令检查当前的插座和插卡状态,并确保 Ap_Id 正确。

错误消息

cfgadm: Attachment point not found
原因

未找到指定的附加点。

解决方案

检查附加点是否正确。使用 cfgadm 命令显示可用附加点的列表。另外,请检查物理路径,以查看附加点是否仍然在正确的位置。