Unduing
Просьба внимательно протестировать SVN r.3870.
SATA в режиме IDE - полная поддержка
-
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
Проблемы не зафиксированы.
Логи нужны?
Проблемы не зафиксированы.
Логи нужны?
Пока нет, потом при следующих ревизиях, если вылезет что-нибудь, то понадобятся.Unduing wrote:Логи нужны?
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Нет, не прокатило. Режим UltraDMA уже выбран согласно информационному блоку (512 байт) получаемому при обнаружении устройства.Phantom-84 wrote:Тогда пользуемся SET FEATURES и выставляем желаемый режим на свой страх и риск.
Однако я выяснил удивительную вещь. Если прерывания от контроллера отключены, записью соответствующих битов в BAR1 и BAR3, то при попытке работать в DMA просто возвращается ошибка по таймауту. Однако стоит только включить прерывания, то сразу все вешается. Причем не важно есть в обработчике прерывания какие-либо действия вообще или он пустой.
Также на назначенном прерывании висят Ethernet и Wi-FI контроллер. Я пробовал их отключать через BIOS, но эффекта никакого не дало. Попробую еще принудительно повесить SATA контроллер на 14 или 15 прерывание. Они свободные и честно говоря не понятно почему BIOS вешает все устройства на одни и те же прерывания.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
Это может быть из-за неправильной настройки роутера прерываний. Надо смотреть документацию на чипсет и проверить как там подключено прерывание к 8259 и запрограммирован линк.
Это может быть из-за неправильной настройки роутера прерываний. Надо смотреть документацию на чипсет и проверить как там подключено прерывание к 8259 и запрограммирован линк.
Что на всех SATA работающих в режиме Native неправильно настроено? Стабильно вешается на всех ведь. Имхается мне что проблема может быть и в общем коде обработке прерываний самой Колибри. Там вообще все ядро ведь повисает. Даже Beep замирает и графическая часть.Serge wrote:Mario_r4
Это может быть из-за неправильной настройки роутера прерываний. Надо смотреть документацию на чипсет и проверить как там подключено прерывание к 8259 и запрограммирован линк.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
А ты уверен, что снимаешь запрос прерывания с устройства в native ?
А если проверить в режиме APIC ?
USB, звук, AHCI и i915 работают совместно. Вероятность ошибки в ядре есть, но в драйвере она выше.
А ты уверен, что снимаешь запрос прерывания с устройства в native ?
А если проверить в режиме APIC ?
USB, звук, AHCI и i915 работают совместно. Вероятность ошибки в ядре есть, но в драйвере она выше.
Если оно работает в SATA IDE, но порты не Legacy и прерывания не 14 и 15, а сам контроллер 018F - то что это еще может быть?Serge wrote:А ты уверен, что снимаешь запрос прерывания с устройства в native ?
Spoiler:
Устройству назначено 10-е прерывание.Serge wrote:А если проверить в режиме APIC ?
Spoiler:
Spoiler:
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
Проверка в APIC
Вектор прерывания надо считывать уже после инициализации ядра, оно его меняет.
Я имел ввиду то, что сигнал прерывания от устройства сам по себе не снимается. Его надо явно сбрасывать. В ядре я ничего похожего не нашёл. В ISA режиме не фатально, а в PCI приводит к зависанию ядра.Если оно работает в SATA IDE, но порты не Legacy и прерывания не 14 и 15, а сам контроллер 018F - то что это еще может быть?
Проверка в 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, alSpoiler:
HD видео на примере сериала House и контейнера mkv правда, все равно подтормаживает спустя десяток секунд - загрузка процессора i5-450 стопроцентная, но тут уже с сами видеоплеером нужно разбираться.А вот эту часть твоего сообщения я не понял. Причем тут APIC? Вроде так без APIC заработало, не знаю как будет делиться с другими устройствами правда.Serge wrote: Проверка в APIC
Вектор прерывания надо считывать уже после инициализации ядра, оно его меняет.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
Для сброса прерывания надо считывать статусный регистр 1F7 177.
Почему надо проверять в APIC
1.Иногда встречаются баги в PIC режиме. Похоже, что никто его толком уже не проверяет, все современные ОС работают в режиме APIC/MSI. Можно долго искать ошибку там, где её нет.
2.Ядро работает и в режиме APIC. Хоть и включается через задний проход, но всё же поддержка есть.
Для сброса прерывания надо считывать статусный регистр 1F7 177.
Почему надо проверять в APIC
1.Иногда встречаются баги в PIC режиме. Похоже, что никто его толком уже не проверяет, все современные ОС работают в режиме APIC/MSI. Можно долго искать ошибку там, где её нет.
2.Ядро работает и в режиме APIC. Хоть и включается через задний проход, но всё же поддержка есть.
Плеер не причём. Очень тормозная реализация файловой системы.HD видео на примере сериала House и контейнера mkv правда, все равно подтормаживает спустя десяток секунд - загрузка процессора i5-450 стопроцентная, но тут уже с сами видеоплеером нужно разбираться.
Эмм... а я помню еще то время, когда даже /bd дисков хватало и не заикалось. Интересно это было в параллельном мире или фантомные воспоминания?Serge wrote:Плеер не причём. Очень тормозная реализация файловой системы.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Fat32. А текущая реализация ntfs безнадёжна. Если надо считать файл за раз, ещё нормально. Но последовательное чтение просто кошмар. Хотя это ко всей vfs относится.... а я помню еще то время, когда даже /bd дисков хватало и не заикалось
Так в том то и дело, что я читал с той же NTFS и даже с того же раздела и даже файл тот же. Вся разница в том, что в той реализации плеера происходила рассинхронизация видео и звука, но ничего не заикалось, в текущей реализации плеера видео и звук синхронно заикаются. Вернее первые 10 секунд они не заикаются, а вот потом начинают регулярно раз в 2-3 секунды. Я разумный человек и понимаю, что производительности даже моего неслабого i5-450 при таком подходе не хватает, но мне почему то думается что какая-либо оптимизация декодера возможна, просто ты сам в ту сторону не копал еще. Пенять исключительно на файловую систему не рационально.Serge wrote:Fat32. А текущая реализация ntfs безнадёжна. Если надо считать файл за раз, ещё нормально. Но последовательное чтение просто кошмар. Хотя это ко всей vfs относится.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4
Первые 10 секунд это кеш плеера. Так что производительности процессора хватает. А скорости чтения файла не хватает, кеш пустеет и начинает заикаться.
Первые 10 секунд это кеш плеера. Так что производительности процессора хватает. А скорости чтения файла не хватает, кеш пустеет и начинает заикаться.
Who is online
Users browsing this forum: No registered users and 4 guests