在 Intel 多处理器系统上,ata 驱动程序可能会在系统引导过程中超时。当根设备所在的驱动器具有绑定到传统 ata 驱动程序的 HBA 控制器时,会出现这样的超时。在系统引导过程中,这样的超时会导致暂时挂起、硬挂起或出现紧急情况,控制台上会出现类似如下的消息:
scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: reset bus, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: early timeout, target=0 lun=0 gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0): Error for command 'read sector' Error Level: Informational gda: [ID 107833 kern.notice] Sense Key: aborted command gda: [ID 107833 kern.notice] Vendor 'Gen-ATA ' error code: 0x3 gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0): Error for command 'read sector' Error Level: Informational gda: [ID 107833 kern.notice] Sense Key: aborted command gda: [ID 107833 kern.notice] Vendor 'Gen-ATA ' error code: 0x3 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: abort request, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: abort device, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: reset target, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: reset bus, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: early timeout, target=0 lun=0 gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0): Error for command 'read sector' Error Level: Informational gda: [ID 107833 kern.notice] Sense Key: aborted command gda: [ID 107833 kern.notice] Vendor 'Gen-ATA ' error code: 0x3 gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0): |
解决方法:请选择以下解决方法之一:
为了避免性能下降,解决方法 3 或 4 只应在解决方法 5 尚不可用时临时使用。
解决方法 1: 如果系统上有 AHCI,请在 BIOS 中启用它。启用此设置会要求重新安装 Solaris OS。
解决方法 2: 在其中的控制器不使用 ata 驱动程序的磁盘上安装 Solaris。
解决方法 3: 在 BIOS 设置中禁用 MP,以便只有一个处理器处于活动状态。
解决方法 4: 在 Solaris 中禁用 MP,以便只有一个处理器处于活动状态。从 Grand Unified Bootloader (GRUB) 菜单中执行以下步骤:
键入 e 编辑选定的 Solaris 项。
导航到以 kernel 开头的行。
键入 e 切换到 GRUB 编辑模式。
将 -kd 附加到该行。
按 Enter 键接受更改。
键入 b 使用选定的 Solaris 项进行引导。
在 kbmd 提示符下,键入以下命令:
use_mp/W 0 :c |
如果执行系统引导,则继续执行步骤 10。否则,请安装 Solaris 10 10/09 软件。
在安装结束时,请重新引导系统。重复步骤 1 至 7。
为了使所做的更改永久生效,以便不必在后续的引导过程中重复上述步骤,请执行以下操作:
在完成系统引导之后成为超级用户。
打开 /etc/system 文件。
添加以下行:
set use_mp = 0 |
解决方法 5: 禁用微代码更新。键入以下命令:
# mv /platform/i86pc/ucode /platform/i86pc/ucode.disabled |
在系统引导之后,可以手动调用微代码更新:
# ucodeadm -u /platform/i86pc/ucode.disabled/intel-ucode.txt |