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

Internal structure and you change requests/suggestions
  • Mario_r4
    Проблемы не зафиксированы.
    Логи нужны?
  • Unduing wrote:Логи нужны?
    Пока нет, потом при следующих ревизиях, если вылезет что-нибудь, то понадобятся.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Phantom-84 wrote:Тогда пользуемся SET FEATURES и выставляем желаемый режим на свой страх и риск.
    Нет, не прокатило. Режим UltraDMA уже выбран согласно информационному блоку (512 байт) получаемому при обнаружении устройства.
    Однако я выяснил удивительную вещь. Если прерывания от контроллера отключены, записью соответствующих битов в BAR1 и BAR3, то при попытке работать в DMA просто возвращается ошибка по таймауту. Однако стоит только включить прерывания, то сразу все вешается. Причем не важно есть в обработчике прерывания какие-либо действия вообще или он пустой.

    Также на назначенном прерывании висят Ethernet и Wi-FI контроллер. Я пробовал их отключать через BIOS, но эффекта никакого не дало. Попробую еще принудительно повесить SATA контроллер на 14 или 15 прерывание. Они свободные и честно говоря не понятно почему BIOS вешает все устройства на одни и те же прерывания.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Mario_r4
    Это может быть из-за неправильной настройки роутера прерываний. Надо смотреть документацию на чипсет и проверить как там подключено прерывание к 8259 и запрограммирован линк.
  • Serge wrote:Mario_r4
    Это может быть из-за неправильной настройки роутера прерываний. Надо смотреть документацию на чипсет и проверить как там подключено прерывание к 8259 и запрограммирован линк.
    Что на всех SATA работающих в режиме Native неправильно настроено? Стабильно вешается на всех ведь. Имхается мне что проблема может быть и в общем коде обработке прерываний самой Колибри. Там вообще все ядро ведь повисает. Даже Beep замирает и графическая часть.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Mario_r4
    А ты уверен, что снимаешь запрос прерывания с устройства в native ?
    А если проверить в режиме APIC ?

    USB, звук, AHCI и i915 работают совместно. Вероятность ошибки в ядре есть, но в драйвере она выше.
  • Serge wrote:А ты уверен, что снимаешь запрос прерывания с устройства в native ?
    Если оно работает в SATA IDE, но порты не Legacy и прерывания не 14 и 15, а сам контроллер 018F - то что это еще может быть?
    Spoiler:
    Downloaded 168 times
    Serge wrote:А если проверить в режиме APIC ?
    Устройству назначено 10-е прерывание.
    Spoiler:
    Downloaded 166 times
    В режиме AHCI дело выглядит так:
    Spoiler:
    Downloaded 165 times
    В BIOS нет настройки отвечающей за включение/выключение APIC.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Mario_r4
    Если оно работает в SATA IDE, но порты не Legacy и прерывания не 14 и 15, а сам контроллер 018F - то что это еще может быть?
    Я имел ввиду то, что сигнал прерывания от устройства сам по себе не снимается. Его надо явно сбрасывать. В ядре я ничего похожего не нашёл. В ISA режиме не фатально, а в PCI приводит к зависанию ядра.

    Проверка в APIC
    Вектор прерывания надо считывать уже после инициализации ядра, оно его меняет.
  • Serge wrote:Я имел ввиду то, что сигнал прерывания от устройства сам по себе не снимается. Его надо явно сбрасывать. В ядре я ничего похожего не нашёл. В ISA режиме не фатально, а в PCI приводит к зависанию ядра.
    Хм.. а ведь ты гений! Ты натолкнул меня на мысль.

    Раньше я пробовал воткнуть:
    Spoiler:

    Code: Select all

    ; clear Bus Master IDE Status register
    ; clear Error bit and Interrupt bit
            add     edx, 2
            mov     al, 6 ; 110b
            out     dx, al
    В обработчик прерывания, но ничего не изменилось. Зависание было железным.

    А теперь я решил попробовать так:
    Spoiler:

    Code: Select all

    ; clear Bus Master IDE Status register
    ; clear Interrupt bit
            add     edx, 2
            mov     al, 4 ; 100b
            out     dx, al
    И система таки заработала! Никаких зависаний - файлы открываются значительно быстрее.
    Spoiler:HD видео на примере сериала House и контейнера mkv правда, все равно подтормаживает спустя десяток секунд - загрузка процессора i5-450 стопроцентная, но тут уже с сами видеоплеером нужно разбираться.
    Serge wrote: Проверка в APIC
    Вектор прерывания надо считывать уже после инициализации ядра, оно его меняет.
    А вот эту часть твоего сообщения я не понял. Причем тут APIC? Вроде так без APIC заработало, не знаю как будет делиться с другими устройствами правда.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Mario_r4
    Для сброса прерывания надо считывать статусный регистр 1F7 177.

    Почему надо проверять в APIC
    1.Иногда встречаются баги в PIC режиме. Похоже, что никто его толком уже не проверяет, все современные ОС работают в режиме APIC/MSI. Можно долго искать ошибку там, где её нет.
    2.Ядро работает и в режиме APIC. Хоть и включается через задний проход, но всё же поддержка есть.
    HD видео на примере сериала House и контейнера mkv правда, все равно подтормаживает спустя десяток секунд - загрузка процессора i5-450 стопроцентная, но тут уже с сами видеоплеером нужно разбираться.
    Плеер не причём. Очень тормозная реализация файловой системы.
  • Serge wrote:Плеер не причём. Очень тормозная реализация файловой системы.
    Эмм... а я помню еще то время, когда даже /bd дисков хватало и не заикалось. Интересно это было в параллельном мире или фантомные воспоминания? :mrgreen:
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • ... а я помню еще то время, когда даже /bd дисков хватало и не заикалось
    Fat32. А текущая реализация ntfs безнадёжна. Если надо считать файл за раз, ещё нормально. Но последовательное чтение просто кошмар. Хотя это ко всей vfs относится.
  • Serge wrote:Fat32. А текущая реализация ntfs безнадёжна. Если надо считать файл за раз, ещё нормально. Но последовательное чтение просто кошмар. Хотя это ко всей vfs относится.
    Так в том то и дело, что я читал с той же NTFS и даже с того же раздела и даже файл тот же. Вся разница в том, что в той реализации плеера происходила рассинхронизация видео и звука, но ничего не заикалось, в текущей реализации плеера видео и звук синхронно заикаются. Вернее первые 10 секунд они не заикаются, а вот потом начинают регулярно раз в 2-3 секунды. Я разумный человек и понимаю, что производительности даже моего неслабого i5-450 при таком подходе не хватает, но мне почему то думается что какая-либо оптимизация декодера возможна, просто ты сам в ту сторону не копал еще. Пенять исключительно на файловую систему не рационально.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Mario_r4
    Первые 10 секунд это кеш плеера. Так что производительности процессора хватает. А скорости чтения файла не хватает, кеш пустеет и начинает заикаться.
  • Who is online

    Users browsing this forum: No registered users and 4 guests