Сервера HPE Proliant с RAID контроллером Smart Array P408i-a SR Gen10 могут падать с ошибкой:
NMI watchdog: BUG: soft lockup - CPU#7 stuck for 22s!
Проблема наблюдалась на сервере HPE Proliant DL 360 Gen10 с установленной операционной системой Ubuntu 16.04. Сервер то работает, то не работает. Проблема связана с драйвером для работы с RAID контроллером. В обычном ядре Ubuntu нет драйвера smartpqi, вместо этого используется aacraid из-за чипа, контроллер видится как Adaptec Smart Storage PQI 12G SAS/PCIe 3 (rev 01).
Для решения проблемы нужно сменить ядро Ubuntu:
sudo apt-get install --install-recommends linux-generic-hwe-16.04
sudo reboot
linux-generic-hwe содержит обновлённые драйвера, в том числе smartpqi.
После установки и перезагрузки проверяем текущий драйвер:
lsmod | grep smartpqi
Результат:
smartpqi 65536 2
scsi_transport_sas 40960 2 ses,smartpqi
Проверим, какой драйвер используется для контроллера. Определим идентификатор:
lspci | grep "Adapt"
5c:00.0 Serial Attached SCSI controller: Adaptec Smart Storage PQI 12G SAS/PCIe 3 (rev 01)
Идентификатор — "5c:00.0". Выведем информацию об устройстве:
lspci -s "5c:00.0" -vvv
5c:00.0 Serial Attached SCSI controller: Adaptec Smart Storage PQI 12G SAS/PCIe 3 (rev 01)
DeviceName: Embedded RAID 1
Subsystem: Hewlett-Packard Company Smart Array P408i-a SR Gen10
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 32
Region 0: Memory at e6c00000 (64-bit, non-prefetchable) [size=32K]
Region 4: I/O ports at 8000 [size=256]
Capabilities: [80] Power Management version 3
Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b0] MSI-X: Enable+ Count=64 Masked-
Vector table: BAR=0 offset=00002000
PBA: BAR=0 offset=00003000
Capabilities: [c0] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <4us, L1 <1us
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported-
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
MaxPayload 256 bytes, MaxReadReq 4096 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #0, Speed 8GT/s, Width x8, ASPM L1, Exit Latency L0s <1us, L1 <1us
ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 8GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR-, OBFF Via message
DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF Disabled
LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+
EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP- SDES+ TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
Capabilities: [300 v1] #19
Kernel driver in use: smartpqi
Kernel modules: smartpqi
Строки "Kernel driver in use: smartpqi" и "Kernel modules: smartpqi" показывают, что используется новый драйвер.
Проблема устранена.