WinXP не паркует SATA харды на RAID контроллере SIS180

Устаревшие IBM PC-совместимые ПК и комплектующие
marinovsoft
Advanced Member
Сообщения: 568
Зарегистрирован: 02.09.2017,09:08
Откуда: Кемерово
Контактная информация:

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение marinovsoft » 15.10.2019,17:47

https://yandex.ru/search/?text=%22_w2k_ ... id=2186618

А вообще на old-dos есть.
ПК8010 "Корвет"+ExtRom+AY, Atari 65XE+SDrive, Дельта-С(52ИС)+AY
Продам материнские платы

geg
Advanced Member
Сообщения: 12303
Зарегистрирован: 21.11.2010,12:04

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение geg » 15.10.2019,19:47

i8088 писал(а): 15.10.2019,14:19 вот ACPI kernel /non-ACPI kernel проблемы бывают
(это и есть смена HAL)
Jason писал(а): 15.10.2019,14:56 Сейчас попробовал отключить - получил BSOD от драйвера видеокарты (Radeon 9200).
Повторил то же самое на ноуте - тоже BSOD и тоже от видеокарты (RadeonHD 3470). Система перестала грузиться даже в безопасном режиме. Пришлось восстанавливать из бэкапа.
Винда ставилась при включенном APIC, коего в стандартном PC попросту нет.
На совсем старых машинках такой фокус работает, но это не наш случай.
кривые руки детект, грусть печаль #пограмисты
Jason писал(а): 15.10.2019,16:02 У них высота полёта головок в разы больше, 10-15 нм и более.
рукалицо
Jason писал(а): 15.10.2019,16:37 Вытащил контроллер SiI3114 не-RAID из другой машины, мигрировал на него. Диск тоже определяется как SCSI, но паркуется и по таймеру и при выключении
Jason писал(а): 04.10.2019,17:52 Нагуглил инфу, что с контроллером на SiI3114 - поведение аналогичное.
:(
i8088 писал(а): 15.10.2019,14:19 На нем останов точно
работает, Вы проверили?
А оно мне надо? Мне фигнёй заниматся некогда.
Последний раз редактировалось geg 16.10.2019,20:31, всего редактировалось 1 раз.

Jason
Advanced Member
Сообщения: 309
Зарегистрирован: 22.03.2018,03:17
Откуда: Москва

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение Jason » 16.10.2019,04:15

i8088 писал(а): 15.10.2019,16:43 а про старые вообще считаю программную парковку вредной.
И я тоже. Поэтому у меня на фидошной ноде Quantum Fireball 3 GB прожил 10 лет почти не выключаясь. И был отправлен на отдых в полностью рабочем состоянии.
Предлагаю целесообразность парковки больше не обсуждать
ОК.
ZX-Spectrum 128k

Jason
Advanced Member
Сообщения: 309
Зарегистрирован: 22.03.2018,03:17
Откуда: Москва

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение Jason » 16.10.2019,04:25

aleksvolgin писал(а): 15.10.2019,19:47 кривые руки детект, грусть печаль #пограмисты
Ага, кривость старых ATI-шных драйверов - известный факт.
рукалицо
Извольте писать на понятном языке.
5.1 Язык общения на форуме -- русский. Допускается в случае необходимости умеренное использование английского языка.
ZX-Spectrum 128k

i8088
Advanced Member
Сообщения: 4384
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение i8088 » 16.10.2019,09:48

aleksvolgin писал(а): 15.10.2019,19:47 А оно мне надо? Мне фигнёй заниматся некогда.
Я не Вам писал. А фигнёй Вы занимаетесь постоянно, отправляя бессмысленные сообщения...
Jason писал(а): 15.10.2019,16:37 Драйвер вот этот.
Посмотрю, когда будет время

Jason
Advanced Member
Сообщения: 309
Зарегистрирован: 22.03.2018,03:17
Откуда: Москва

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение Jason » 17.10.2019,06:10

Управление питанием там есть, но не работает. См. sisraid.sys от 06.05.2005.
Вот этот кусок кода пытается перевести диск в standby, если удаётся - выводит отладочное сообщение 'Issue standby to dev %x'.
Рядом с ним есть и 'set power mode' и 'flush' и ещё много всего. Смотреть около loc_157D0.
Похоже, собака зарыта здесь.
Код является частью функции AtapiAdapterControl. Очевидно, "Atapi" можно понимать как "ATA".

Код: Выделить всё

.text:000156EA loc_156EA:                              ; CODE XREF: AtapiAdapterControl+49F
.text:000156EA                 movzx   ebx, byte ptr [ebp+arg_4]
.text:000156EE                 cmp     byte ptr [ebp+ebx+var_8], 0
.text:000156F3                 jz      short loc_1576E
.text:000156F5                 mov     edi, [esi+ebx*4+0Ch]
.text:000156F9                 xor     eax, eax
.text:000156FB                 mov     al, byte ptr [ebp+arg_4]
.text:000156FE                 or      al, 0FAh
.text:00015700                 shl     al, 4
.text:00015703                 push    eax
.text:00015704                 lea     eax, [edi+6]
.text:00015707                 push    eax
.text:00015708                 call    _ScsiPortWritePortUchar@8 ; ScsiPortWritePortUchar(x,x)
.text:0001570D                 push    5
.text:0001570F                 lea     eax, [edi+1]
.text:00015712                 push    eax
.text:00015713                 call    _ScsiPortWritePortUchar@8 ; ScsiPortWritePortUchar(x,x)
.text:00015718                 push    0FEh
.text:0001571D                 lea     eax, [edi+2]
.text:00015720                 push    eax
.text:00015721                 call    _ScsiPortWritePortUchar@8 ; ScsiPortWritePortUchar(x,x)
.text:00015726                 push    0EFh
.text:0001572B                 add     edi, 7
.text:0001572E                 push    edi
.text:0001572F                 call    _ScsiPortWritePortUchar@8 ; ScsiPortWritePortUchar(x,x)
.text:00015734                 and     [ebp+arg_8], 0
.text:00015738
.text:00015738 loc_15738:                              ; CODE XREF: AtapiAdapterControl+483j
.text:00015738                 push    edi
.text:00015739                 call    _ScsiPortReadPortUchar@4 ; ScsiPortReadPortUchar(x)
.text:0001573E                 test    al, al
.text:00015740                 mov     byte ptr [ebp+arg_0+3], al
.text:00015743                 jns     short loc_1575B
.text:00015745                 push    96h
.text:0001574A                 call    _ScsiPortStallExecution@4 ; ScsiPortStallExecution(x)
.text:0001574F                 inc     [ebp+arg_8]
.text:00015752                 cmp     [ebp+arg_8], 0EA60h
.text:00015759                 jb      short loc_15738
.text:0001575B
.text:0001575B loc_1575B:                              ; CODE XREF: AtapiAdapterControl+46D
.text:0001575B                 test    byte ptr [ebp+arg_0+3], 80h
.text:0001575F                 jnz     short loc_157D0
.text:00015761                 push    ebx
.text:00015762                 push    offset aIssueStandbyTo ; "Issue standby to dev %x\n"
.text:00015767                 call    _DbgPrint
.text:0001576C                 pop     ecx
.text:0001576D                 pop     ecx
.text:0001576E
.text:0001576E loc_1576E:                              ; CODE XREF: AtapiAdapterControl+41D
.text:0001576E                 inc     byte ptr [ebp+arg_4]
.text:00015771                 cmp     byte ptr [ebp+arg_4], 4
.text:00015775                 jb      loc_156EA

.text:000151F2 aIssueStandbyTo db 'Issue standby to dev %x',0Ah,0
.text:000151F2                                         ; DATA XREF: AtapiAdapterControl+48C
.text:0001526A aScsistopadap_0 db 'ScsiStopAdapter: Flush status BUSY dev = %x',0Ah,0
.text:0001526A                                         ; DATA XREF: AtapiAdapterControl+4F3
.text:0001529A aScsistopadap_1 db 'ScsiStopAdapter: set power mode status BUSY dev = %x',0Ah,0
.text:0001529A                                         ; DATA XREF: AtapiAdapterControl+4FF
ZX-Spectrum 128k

Jason
Advanced Member
Сообщения: 309
Зарегистрирован: 22.03.2018,03:17
Откуда: Москва

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение Jason » 19.10.2019,19:21

Jason писал(а): 17.10.2019,06:10 Вот этот кусок кода пытается перевести диск в standby, если удаётся - выводит отладочное сообщение
А если не удаётся - выводит сообщение 'set power mode status BUSY'.
Софтайс скотина, не хочет работать с моей видеокартой.
Поставил syser - шрифт мелкий, плююсь и привыкаю.
Времени мало, ничего не успеваю.
ZX-Spectrum 128k

Jason
Advanced Member
Сообщения: 309
Зарегистрирован: 22.03.2018,03:17
Откуда: Москва

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение Jason » 20.10.2019,22:07

Jason писал(а): 19.10.2019,19:21 Софтайс скотина, не хочет работать с моей видеокартой.
Переключился на интегрированную SIS6330 - заработал. Что прояснилось:
DriverEntry возвращает наверх адреса семи точек входа. Их описание - здесь и здесь. Пять из них - обязательные. AdapterControl - опциональная.

Код: Выделить всё

.text:0001B0BC                 mov     [ebp+var_54], offset AtapiHwInitialize
.text:0001B0C3                 mov     [ebp+var_44], offset AtapiResetController
.text:0001B0CA                 mov     [ebp+var_50], offset AtapiStartIo
.text:0001B0D1                 mov     [ebp+var_4C], offset AtapiInterrupt
.text:0001B0D8                 mov     [ebp+var_48], offset AtapiFindController
.text:0001B0DF                 mov     [ebp+var_3C], offset AtapiAdapterState
.text:0001B0E6                 mov     [ebp+var_10], offset AtapiAdapterControl
Поставил бряки на некоторые.
StartIo срабатывает при любом обращении к диску. Хорошо.
AdapterControl не сработала ни разу. Вообще ни разу. Даже при standby по таймеру! А парковка диска возможна только через неё.
Одно из двух:
1. DriverEntry неверно (не туда) возвращает адрес функции AdapterControl. Маловероятно.
2. Сама AdapterControl (при первом вызове) возвращает неверный SUPPORTED_CONTROL_TYPE_LIST. Точного описания не нашёл.
3. Или это. Появилось в Win7. Маловероятно.
ZX-Spectrum 128k

i8088
Advanced Member
Сообщения: 4384
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение i8088 » 21.10.2019,16:39

Пока затрудняюсь помочь, но напомнило, как у меня не вызывался
mfm_shutdown, из-за отсутствия объявления device_shutdown в ata-isa.c

Но если бы ошибка была такого подобного рода, не работал бы shutdown
для всех SCSI контроллеров. Тем не менее, причина 2 кажется более
вероятной

Jason
Advanced Member
Сообщения: 309
Зарегистрирован: 22.03.2018,03:17
Откуда: Москва

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение Jason » 21.10.2019,22:07

i8088 писал(а): 21.10.2019,16:39 но напомнило, как у меня не вызывался mfm_shutdown, из-за отсутствия объявления device_shutdown
Объявления? Имеется ввиду public mfm_shutdown ?
В драйверах разве могут быть экспорты? Это же не dll.
Тем не менее, причина 2 кажется более вероятной
Угу. Насколько я понял, параметр при первом вызове - ссылка на пустой boolean массив, его надо заполнить единицами/нулями, если функция поддерживается/не поддерживается. Исходя из этого определяется дальнейшая логика работы "наверху". А как отличить первый вызов от непервого? Точной инфы не нашёл, разве что вот это. Непонятно, что на входе, и куда возвращается результат.
Однако, первый вызов происходит ещё до загрузки SoftICE, поэтому не брякается.

ps: вообще-то мой родной язык - чистый асм, я с него начинал. ZX-Spectrum, однако. Си и Паскаль я выучил намного позже.
ZX-Spectrum 128k

i8088
Advanced Member
Сообщения: 4384
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

WinXP не паркует SATA харды на RAID контроллере SIS180

Сообщение i8088 » 22.10.2019,09:38

Jason писал(а): 21.10.2019,22:07 Объявления? Имеется ввиду public mfm_shutdown ?
В драйверах разве могут быть экспорты? Это же не dll.
Это относительно драйвера для FreeBSD, и чтобы shutdown в ata-mfm.c вызывался, необходимо
было дополнительное присваивание указателя в ata-isa, которая необходима для работы mfm.

Во FreeBSD первый вызов драйвера происходит по device_probe - проверяется, что имеется драйвер для устройства
(их может быть несколько), а второй уже device_attach, в котором определяется драйвер, который конкретно
будет держать данное устройство. Есть еще специальный код возврата BUS_PROBE_SPECIFIC, при этом вызов
происходит только один раз. Это нужно для драйверов, которые выполняют какую-то настройку и более не нужны.
В windows как всегда и без того непростую вещь искусственно усложнили.
Jason писал(а): 21.10.2019,22:07 ps: вообще-то мой родной язык - чистый асм, я с него начинал. ZX-Spectrum, однако. Си и Паскаль я выучил намного позже.
Я тоже, правда с 8-разрядными машинами дела не имел, но собирал самодельные контроллеры,
и приходилось транслировать вручную (из-за отсутсвия денег на компьютер) для 8080.

Ответить