Page 1 of 18

SATA в режиме IDE - полная поддержка

Posted: Tue Jun 25, 2013 6:52 am
by Mario_r4
SVN r.3702

1) Добавлена поддержка режима SATA IDE для HDD и ATAPI устройств.
Имейте ввиду, что если в BIOS стоят режимы RAID или AHCI, для SATA контроллера, то вы получите по прежнему дырку от бублика. Также имейте ввиду, что если вы для работы с Колибри таки переключили режим контроллера SATA и BIOS (называется либо IDE, либо ATA, возможны и другие варианты - у меня только эти), то перед загрузкой в другие ОС верните прежний режим - особенно если там стоял режим AHCI. В противном случае другие ОС (Linux, Windows и др.) будут сильно "удивлены", особенно если вы пользуетесь гибернацией.

2) Добавлено LBA48 чтение для PIO режима. Запись по прежнему только LBA28. Будет исправлено несколько позже.
SATA IDE работают пока в PIO режиме, поскольку я еще не разобрался можно ли повесить SATA контроллер в режиме IDE на "стандартные" прерывания 14 и 15. Как выяснилось порты отнюдь не стандартные используются, так что хз насчет прерываний. SATA в режиме AHCI повешены на прерывания выше 15-го.

Для стандартного IDE (настоящий) контроллера активируется DMA режим, если он есть, со старым LBA28. Не знаю встречались ли в природе жесткие диски более 128 Гб с PATA разъемом - я лично не встречал. Если у вас такой есть в наличие просьба здесь отписаться.

Также имейте ввиду, что несмотря на наличие LBA48 (который поддерживает очень большие диски до 128 ПиБ), в настоящее время поддерживаются только диски объемом до 2 Тб, по причине использования старого кэша с адресацией до 2 в 32 степени.

Диски /bd по умолчанию отключены. Включать их имеет смысл, лишь когда у вас BIOS стоит режим AHCI и соответственно /hd диски не видны вообще. Для SATA в режиме IDE - включенные /bd диски могут вызывать разнообразные по симптомам проблемы. Не включайте их для SATA в режиме IDE.

И последняя просьба - не пишите багрепорты в стиле озвученном в крике отчаяния:
Spoiler:
Дмитрий Переверзев
Павел, из-за чего? Ёлки, почему все (поголовно) рассказывают об ошибках примерно так:
"Машина сломалась! Совсем-совсем сломалась!". И даже не говорят о видимых неполадках - двигатель глохнет на высоких оборотах, или зеркало заднего вида отвалилось
Подробно описывайте свое железо, настройки BIOS и обязательно прилагайте лог BOARD и лог PCIDEV. Текст, фотография - не важно в каком формате, лишь бы был.

Re: SATA в режиме IDE - полная поддержка

Posted: Tue Jun 25, 2013 9:37 am
by UnКайF
Имеется PATA диск обьёмом около 300 гиг. Стоит в старом компе на i815 чипсете+. К сожалению комп подключен к телевизору через HDMI и в VESA режиме ничего не видно будет.

Re: SATA в режиме IDE - полная поддержка

Posted: Tue Jun 25, 2013 9:48 am
by Serge
Mario_r4
Не используй sti.
pushfd
cli
...
...
popfd

Re: SATA в режиме IDE - полная поддержка

Posted: Wed Jun 26, 2013 1:46 am
by yogev_ezra
eBox-3310MX с подключенным SATA SSD диском на 16GB (KingSpec KSD-SU25.1-016MJ) стал зависать при определённых настройках BIOS. До этого изменения, при всех настройках работало. Прилагаю boardlog + pcidev + фото BIOS при тех настройках, при которых работает. А если поменять одну строчку (IDE Operate Mode) с Legacy Mode на Native Mode, то через несколько секунд после загрузки зависает (лог снять не хватает времени). Но как раз именно с Native Mode работает Windows.
Spoiler:
2013-06-26_01.19.56.jpg
2013-06-26_01.19.56.jpg (139.03 KiB)
Viewed 22805 times
2013-06-26_01.20.14.jpg
2013-06-26_01.20.14.jpg (124 KiB)
Viewed 22805 times
Для тех, кто не в курсе, замечу, что на самом деле eBox имеет только PATA контроллер, но так как PATA-диски ушли в прошлое, производитель eBox добавил ещё и PATA->SATA bridge, через который, собственно, и подключаются SATA диски.

Re: SATA в режиме IDE - полная поддержка

Posted: Wed Jun 26, 2013 2:07 am
by yogev_ezra
eBox-3310MX: Лог board + pcidev при тех настройках BIOS, при которых зависает после загрузки если вставить SATA диск. Логи были сняты, естественно, без диска.

Re: SATA в режиме IDE - полная поддержка

Posted: Wed Jun 26, 2013 2:26 am
by X-Ray
award 6.00pg
mb sapphire am2rd790fx (790fx/sb600)
hdd0 wd 80 gb ide
hdd1 samsung 80 gb sata
hdd2 samsung 200 gb sata
dvdrw samsung sata

Настроек на sata-контроллер лишь три - native ide/legacy ide/raid
В native видны только sata устройства,в legacy лишь ide hdd

Re: SATA в режиме IDE - полная поддержка

Posted: Wed Jun 26, 2013 2:39 am
by Mario_r4
X-Ray wrote:award 6.00pg
mb sapphire am2rd790fx (790fx/sb600)
hdd0 wd 80 gb ide
hdd1 samsung 80 gb sata
hdd2 samsung 200 gb sata
dvdrw samsung sata

Настроек на sata-контроллер лишь три - native ide/legacy ide/raid
В native видны только sata устройства,в legacy лишь ide hdd
А какая из больших ОС используется и при какой настройке есть доступ ко всем дискам в большой ОС?

З.Ы. Забавно, что собственно AHCI контроллера ни в каком режиме не видно, и похоже что это два IDE контроллера, которые на шине PCI меняются местами в зависимости от настройки. Похоже придется таки вводить таблицу на минимум два контроллера, а так не хотелось. Ведь еще и HD диски выше 4-го придется делать.

Re: SATA в режиме IDE - полная поддержка

Posted: Wed Jun 26, 2013 2:49 am
by X-Ray
Win XP. В режиме native видно все диски,в legacy сейчас проверю (если смогу снова подключиться к соседскому роутеру,карта лагает,гребанный ralink)

Re: SATA в режиме IDE - полная поддержка

Posted: Wed Jun 26, 2013 5:45 am
by Mario_r4
SVN r.3706
1) Добавлена LBA48 запись для PIO режима.
DMA по прежнему только для контролеров 0180 (т.е. исходных PATA IDE) и до 128 Гб.

2)
Serge wrote:Mario_r4
Не используй sti.
pushfd
cli
...
...
popfd
Сделано.

3)
hidnplayr « Tue Jun 25, 2013 9:00 am » Mario_r4: Just so you know,

Code: Select all

movzx eax,[IDE_BAR0_val]
DEBUGF 1, "K : BAR0 %x \n", eax
can also be written as

Code: Select all

DEBUGF 1, "K : BAR0 %x \n", [IDE_BAR0_val]:1
Также сделано с некоторыми коррекциями.
Done! Thanks!

Re: SATA в режиме IDE - полная поддержка

Posted: Wed Jun 26, 2013 2:24 pm
by X-Ray
Интернет-таки отвалился(
В режиме legacy win xp заново нашел дисковод dvd-rw (sata) и два ide-контроллера,изменений никаких нет.

Re: SATA в режиме IDE - полная поддержка

Posted: Wed Jun 26, 2013 2:39 pm
by Mario_r4
X-Ray wrote:Интернет-таки отвалился(
В режиме legacy win xp заново нашел дисковод dvd-rw (sata) и два ide-контроллера,изменений никаких нет.
Тогда мои размышления были правильные и два контроллера просто меняются местами на шине PCI. Я буду заниматься доработкой поддерживающей одновременно более одного контроллера немного позже.

Re: SATA в режиме IDE - полная поддержка

Posted: Wed Jun 26, 2013 10:36 pm
by Phantom-84
Скорее контроллеры меняются функциями, а не местами. А то что второй переключается в режим совместимости при использовании настройки NATIVE, так это скорее всего как раз ради экономии IRQ-линий, чтобы можно было использовать IRQ14/15. Задействовать IRQ14/15 под что-либо еще сложно, а часто и невозможно. На моем компе второй контроллер не может работать в режиме совместимости (байт интерфейса 85h), поэтому он при любых настройках работает в нативном режиме и забирает под себя доп. IRQ-линию. Хотя в принципе можно разделять одну IRQ-линию между несколькими контроллерами, работающими в нативном режиме.

Re: SATA в режиме IDE - полная поддержка

Posted: Thu Jun 27, 2013 2:01 am
by art_zh
Phantom-84 абсолютно прав.

По крайней мере во всех AMD-чипсетах один контроллер SATA, но в зависимости от BIOS-настройки он представляется системе как IDE, AHCI или RAID.
Spoiler:The SB800 SATA will have different device IDs for different drivers, because they are
totally different devices from the driver point of view. It’s not sufficient for the OS to know
whether to load IDE, AHCI, or RAID driver. In a non-fresh installed condition, Windows
will match the 4 IDs (vendor ID, device ID, sub-system ID and sub-vendor ID) first, and if
they are matched, it will load the driver and will not check the sub-class code. This will
cause blue screen in WinXP if SATA RAID driver is loaded, SATA controller is in IDE
mode, and device ID is shared.
кстати, BIOS-настройка может быть очень легко изменена при старте ядра.
Spoiler:1. Enable the subclass code register (PCI config register 0Ah) and the program interface register (PCI config register 09h) to be programmable
SATA_PCI_config 0x40 [0] = 1

2.Program SATA Controller mode in
a) IDE mode, or
SATA_PCI_config 0x09 = 0x8F (default)
SATA_PCI_config 0x0A = 0x01
b) AHCI mode, or
SATA_PCI_config 0x09 = 0x01
SATA_PCI_config 0x0A = 0x06
c) RAID mode
SATA_PCI_config 0x09 = 0x00
SATA_PCI_config 0x0A = 0x04

3. Clear the bit to convert the subclass code register to be a read-only register.
SATA_PCI_config 0x40 [0] = 0
Поскольку 9-й и 10-й байты конфигспейса просто отображают функцию устройства, такой финт может сработать и в других чипсетах (а вот регистр 0х40 в PCI-стандарте не определен, так что на интелах выключатель может сидеть где-то в другом месте).

Re: SATA в режиме IDE - полная поддержка

Posted: Thu Jun 27, 2013 9:30 am
by Mario_r4
SVN r.3712
1) Поддержка LBA48 для чтения и записи в режиме DMA, для жестких дисков.
2) Чистка и оптимизация кода

Промежуточные итоги:
1) Теперь стандартные PATA контроллеры 0180 и 018A поддерживают LBA48 в режимах PIO и DMA.
2) Также SATA контроллеры 0185 и 018F в режиме эмуляции IDE поддерживают LBA48 в режиме PIO.

Задачи на будущее:
1) Система пока не умеет работать с прерываниями отличающимися от 14 и 15, потому собственно только PIO для SATA IDE. Собственно в этом сама задача - написать код работы с нестандартными прерываниями.
2) Система пока не умеет работать с более чем одним физическим контроллером на шине PCI. Соответственно задача реализовать таблицу контроллеров и написать весь прочий код.

Re: SATA в режиме IDE - полная поддержка

Posted: Thu Jun 27, 2013 3:41 pm
by Phantom-84
art_zh wrote:но в зависимости от BIOS-настройки он представляется системе как IDE, AHCI или RAID.
Это само собой. Правда, я имел в виду немного другое, а именно изменения, происходящие с двумя PCI IDE-контроллерами в логах X-Ray при изменении настройки LEGACY/NATIVE.

Mario_r4 прав, SATA-контроллер может отображаться в виде двух PCI IDE-, хотя на данной материнке есть IDE-порт, а значит наверняка и обычный PCI IDE-контроллер, который может быть одним из двух видимых PCI IDE-.