Вопрос или проблема
Я установил SCSI-карту Adaptec 29320 LVE в сервер HP DL380 Gen9. До этого она использовалась в HP DL380 Gen5.
При загрузке POST видит карту:
[ 8.586139] scsi host7: Adaptec AIC79XX PCI-X SCSI HBA DRIVER, Rev 3.0
<Adaptec 29320LPE PCIe Ultra320 SCSI adapter>
aic7901: Ultra320 Wide Channel A, SCSI Id=7, PCI-X 101-133MHz, 512 SCBs
затем выводится серия сообщений, по одному для каждого канала, аналогичная:
[ 29.595322] scsi 7:0:0:0: tag#448 Attempting to queue an ABORT message:
[ 29.596425] CDB:
[ 29.596427] 0x12
[ 29.597486] 0x0
[ 29.598527] 0x0
[ 29.599561] 0x0
[ 29.600582] 0x24
[ 29.601598] 0x0
[ 29.605751] scsi 7:0:0:0: tag#448 Command already completed
Номер tag
и канал scsi увеличиваются с каждым сообщением. После загрузки lsscsi
не показывает устройство(а), подключенное к карте, хотя использование программного обеспечения SCSISelect из PROM распознает подключенные устройства.
Я пробовал это с Ubuntu 24.04.01 и Debian 12 с тем же результатом. Я пробовал UEFI (с включенной и отключенной безопасностью) и режимы загрузки legacy с тем же результатом. В SCSISelect я пробовал устанавливать Int 13 Support
в Enabled
, Disabled:scan
и Disabled: NOT scan
с тем же результатом.
lsmod
возвращает:
# lsmod | grep aic79xx
Module Size Used by
aic79xx 221184 0
scsi_transport_spi 40960 1 aic79xx
В dmesg
есть дополнительная информация:
# dmesg | grep aic79xx
[ 2.750109] UBSAN: shift-out-of-bounds in /build/linux-dLQ24T/linux-6.8.0/drivers/scsi/aic7xxx/aic79xx_core.c:7026:31
[ 2.753600] ? ahd_write_flexport+0xe5/0x130 [aic79xx]
[ 2.753961] ahd_init.cold+0x14/0x19 [aic79xx]
[ 2.754306] ahd_pci_config+0x1bf/0x210 [aic79xx]
[ 2.754646] ahd_linux_pci_dev_probe+0xfe/0x260 [aic79xx]
[ 3.085612] UBSAN: shift-out-of-bounds in /build/linux-dLQ24T/linux-6.8.0/drivers/scsi/aic7xxx/aic79xx_core.c:4338:31
[ 3.088560] ahd_reset_channel.cold+0x15/0x1a [aic79xx]
[ 3.089119] ahd_linux_initialize_scsi_bus+0x51/0x1e0 [aic79xx]
[ 3.089395] ahd_linux_register_host+0x204/0x2e0 [aic79xx]
[ 3.089668] ahd_linux_pci_dev_probe+0x12a/0x260 [aic79xx]
Я не уверен, что попробовать дальше. Не хотел засорять этот пост ненужной информацией. Если кто-то хочет увидеть что-то еще, пожалуйста, сообщите.
У кого-нибудь есть идеи, что я могу попробовать, чтобы эта карта заработала?
Ответ или решение
Ваша проблема связана с некорректным распознаванием SCSI-карты Adaptec 29320 LVE операционной системой на сервере HP DL380 Gen9 после предыдущего использования в сервере HP DL380 Gen5. Давайте рассмотрим все аспекты этой ситуации и предложим возможные варианты решения.
Теория
SCSI-карта Adaptec 29320 LVE является высокопроизводительным устройством, поддерживающим Ultra320 SCSI-интерфейс и предлагает хорошую производительность для подключения различных периферийных устройств. Однако перенос карты с одного поколения сервера на другое может выявить несовместимости, связанные с архитектурными изменениями и обновлением программного обеспечения.
Сообщения, которые вы видите в dmesg
, свидетельствуют о попытке драйвера работать с устройством, однако эта попытка сопровождается ошибками, такими как "UBSAN: shift-out-of-bounds". Это указывает на наличие проблем в коде драйвера, связанных с обработкой специфических данных или регистров устройства.
Пример
Сообщения, которые отображаются в выводе dmesg
, такие как:
[ 2.750109] UBSAN: shift-out-of-bounds in /build/linux-dLQ24T/linux-6.8.0/drivers/scsi/aic7xxx/aic79xx_core.c:7026:31
указывает на проблему в исходном коде драйвера aic79xx
. UBSAN (Undefined Behavior SANitizer) — это инструмент, который выявляет неопределенные поведения в коде. Ошибка "shift-out-of-bounds" показывает, что происходит некорректная операция с битовыми сдвигами, что приводит к неопределенному поведению, влияющему на инициализацию и последующую работу карты.
Применение
1. Обновление драйверов и прошивки:
- Проверьте наличие обновлений для драйверов SCSI вашего оборудования. Более новые версии драйверов могут содержать исправления известных ошибок и улучшения совместимости с новым серверным оборудованием.
- Убедитесь, что у вас установлена самая последняя версия BIOS и прошивки для сервера HP DL380 Gen9, поскольку обновления могут содержать исправления, улучшающие взаимодействие с устаревшими устройствами.
2. Компиляция и настройка драйвера из исходного кода:
- Подумайте о получении последней версии драйвера
aic79xx
из официальных репозиториев или от разработчиков Adaptec. Возможно, вам потребуется самостоятельно собрать драйвер из исходного кода с применением исправлений, устраняющих текущие ошибки. - Если вы уверены в своих силах, вы можете попытаться внести изменения в код драйвера, чтобы исправить ошибку "shift-out-of-bounds". Это потребует понимания, как драйвер взаимодействует с оборудованием на низком уровне.
3. Проверка параметров конфигурации:
- Обратите внимание на параметры конфигурации SCSI в BIOS сервера, особенно функции, касающиеся режима работы SCSI-карты, такие как Int 13 Support. Хотя вы уже пробовали разные настройки, возможно, стоит обратиться к документации Adaptec для более подробного понимания, как эти параметры влияют на работу карты.
- Убедитесь, что ваши конфигурации UEFI/Legacy boot mode согласуются с требованиями поддерживаемого оборудования и операционной системы.
4. Тестирование в другой среде:
- Если возможно, протестируйте вашу SCSI-карту в аналогичном сервере или на другой операционной системе для исключения аппаратной неисправности карты.
- Рассмотрите использование более старой версии операционной системы или ядра, где драйверы могли быть более совместимыми с данной версией оборудования.
5. Обратная связь и поддержка сообщества:
- Обратитесь к сообществу Linux или специализированным форумам Adaptec для получения поддержки и возможных патчей. Сообщество может предоставить ценные предложения и решение вашей проблемы на основе опыта других пользователей.
Заключение
Настройка устаревших SCSI-карт на современном оборудовании может быть сложной задачей, требующей внимания как к аппаратным несовместимостям, так и к программным проблемам. Расположение источника проблемы через детальное тестирование и использование вышеуказанных методик может привести к успешному решению проблемы. В некоторых случаях может потребоваться компромисс в виде использования другой версии операционной системы или расширение возможностей за счет дополнительного оборудования.