Вы не вошли.


Разумеется линии от разных слотов подключены по схеме логическое ИЛИ. А определяется с какого девайса пришло прерывание посылкой сигнала сброса прерывания последовательно на все девайсы и проверкой состояния линии после каждого такого сброса.
Неувязочка выходит. Если два или более устройств висят на одном прерывании и сигналы прерываний от них суммируются по ИЛИ, то при одновременном приходе сигналов от двух разных устройств, висящих на одном и том же прерывании, обработается только прерывание от того устройства, которому будет последним отправлена команда сброса. Походу, матчасть не знаешь ни ты, ни Рехтор.
З.Ы. Всё ещё жду пруфов.
Отредактировано MOP3E (15-01-12 22:47:22)
Я не игрушечный. Я, б*я, коллекционный! (с) Duke Nukem Forever
Я не специалист по [вставить название]. Мне главное концептуально решить задачу! (с) АхаRu.
Линукс - это альтернативная ОС о которой известно, что она не является ОС ну вот просто ни разу. (с) Linups_Troolvalds.
А с какого такого перепугу пользователей линукса должно быть больше 1%? (с) petrun
Вне форума


Походу, матчасть не знаешь ни ты, ни Рехтор.
Походу матчасть не знаешь именно ты, ибо грамотно спроектированное PCI устройство не выдаст запрос на прерывание если линия уже занята прерыванием от другого устройства, так что об одновременном приходе говорить не приходится.
Yesterday it worked.
Today it is not working.
Windows is like that.
Вне форума


Походу матчасть не знаешь именно ты, ибо грамотно спроектированное PCI устройство не выдаст запрос на прерывание если линия уже занята прерыванием от другого устройства, так что об одновременном приходе говорить не приходится.
Вот не нужно свои косяки выдавать за чужие.
В третий раз спрашиваю тебя о пруфах. А потом нутыпонел.
Я не игрушечный. Я, б*я, коллекционный! (с) Duke Nukem Forever
Я не специалист по [вставить название]. Мне главное концептуально решить задачу! (с) АхаRu.
Линукс - это альтернативная ОС о которой известно, что она не является ОС ну вот просто ни разу. (с) Linups_Troolvalds.
А с какого такого перепугу пользователей линукса должно быть больше 1%? (с) petrun
Вне форума


MOP3E, какие тебе ещё пруфы нужны? Для тебя понятия APIC, MSI, Interrupt Sharing китайская грамота? Ладно, надеюсь Михаила Гука ты знаешь? Вот цитата из его книги.
Линии запросов прерываний в компьютере, насыщенном периферийными устройствами, являются самым дефицитным ресурсом, поэтому приходится использовать эти линии совместно, то есть применять разделяемые прерывания между несколькими устройствами (shared interrupts). Для шины PCI с аппаратной точки зрения проблема разделения прерываний решена — здесь активным уровнем запроса является низкий, и контроллер прерываний чувствителен к уровню, а не перепаду. Для шины ISA с ее запросами прерываний по положительному перепаду разделяемость прерываний невозможна. Исключения составляют системные платы и устройства с поддержкой ISA PnP, которые можно заставить работать и по низкому уровню.
После успешного решения аппаратной задачи обеспечения разделяемости линий запроса возникает задача идентификации источника каждого прерывания, чтобы запустить выполнение соответствующей процедуры обработки. Желательно, чтобы эта задача решалась средствами ОС и с минимальными потерями времени.
В первых версиях PCI (до PCI 2.2 включительно) не было общепринятого способа программной индикации и запрета прерываний. К сожалению, в конфигурационных регистрах не нашлось стандартного места для бита, индицирующего введение запроса прерывания данным устройством, — тогда бы в прерываниях для PCI не было бы проблем с унификацией поддержки разделяемых прерываний. В каждом устройстве для работы с прерываниями используются свои специфические биты операционных регистров, относящихся к пространству памяти или ввода/вывода (иногда и к конфигурационному). При этом определить, является ли данное устройство в текущий момент источником прерывания, может только его обработчик прерывания (ISR, Interrupt Service Routine), входящий в драйвер данного устройства. Таким образом, у ОС нет иной возможности диспетчеризации разделяемых прерываний, кроме как выстроить их ISR-ы в цепочку. За расторопность и корректность ISR отвечает его разработчик. В PCI 2.3 наконец-то появился фиксированный бит (Interrupt Status) в регистре состояния конфигурационного пространства устройства (функции), по которому ОС может определить источник разделяемого прерывания и вызвать только его ISR. Однако упоминание о поддержке PCI 2.3 в описаниях устройств и операционных систем встречается не часто.
Обработчики прерываний устройств должны вести себя корректно, учитывая возможность попадания в цепочку обработчиков разделяемого прерывания. В процессе обработки прерывания очередной обработчик в цепочке чтением известного ему регистра своего устройства должен определить, не это ли устройство вызвало прерывание. Если это, то обработчик должен выполнить необходимые действия и сбросить сигнал запроса прерывания от своего устройства, после чего передать управление следующему обработчику в цепочке; в противном случае он просто передает управление следующему обработчику. Встречается типичная ошибка обработчика прерываний: прочитав регистр состояния устройства и не обнаружив признака запроса, драйвер «на всякий случай» выполняет сброс всех источников запроса (а то и сброс всего устройства). Эту ошибку порождает незадачливый разработчик драйвера, не учитывающий возможности разделяемости прерываний и не доверяющий разработчикам аппаратных средств. Увидев в процессе отладки эту неожиданную ситуацию (прерывание вызвано, а источник не виден), он ее «учитывает» введением вредного фрагмента программного кода. Вредность заключается в том, что с момента чтения регистра устройства (не давшего признака запроса) и до выполнения этого ненужного сброса в устройстве может возникнуть запрос прерывания, который будет «вслепую» сброшен и, следовательно, потерян.
Однако и при корректности обработчиков, выстроенных в цепочку, разделяемые прерывания для разнотипных устройств в общем случае работоспособными считать нельзя — возможны потери прерываний от устройств, требующих быстрой реакции. Это может происходить, если обработчик такого устройства окажется в конце цепочки, а предшествующие ему обработчики окажутся «нерасторопными» (не самым быстрым способом обнаружат, что прерывание — чужое). Поведение системы в такой ситуации может меняться в зависимости от порядка загрузки драйверов. Для нескольких однотипных устройств (например, сетевых адаптеров на однотипных микросхемах контроллеров), пользующихся одним драйвером, разделяемые прерывания работают вполне успешно.
Проявления конфликтов по прерываниям могут быть разнообразными. Сетевая карта не сможет принимать кадры из сети или будет их иногда терять (при этом она может их успешно посылать). У устройств хранения доступ к данным будет поразительно медленным (иногда можно минутами ожидать, например, появления информации о файлах и каталогах) или вообще невозможным. Звуковые карты будут молчать или «заикаться», на видеопроигрывателях изображение будет дергаться и т. д. Конфликты могут приводить и к внезапным перезагрузкам компьютера, например по приходу кадра из сети или сигналу от модема. Спасением от бед разделяемости может быть перестановка карт PCI в подходящий слот, в котором конфликты не наблюдаются (это может и не означать, что их нет). Однако попадаются «подарки разработчиков» интегрированных плат, у которых из нескольких слотов PCI неразделяемая линия прерывания есть только у одного (а то и нет вообще). Такие недуги без скальпеля и паяльника, как правило, не лечатся. Более радикальный способ — переход на сигнализацию прерываний через сообщения — MSI
Отредактировано Rector (16-01-12 04:12:42)
Винда - это ведро с тухлыми червями.
Вне форума


MOP3E, какие тебе ещё пруфы нужны? Для тебя понятия APIC, MSI, Interrupt Sharing китайская грамота? Ладно, надеюсь Михаила Гука ты знаешь? Вот цитата из его книги.
Фигегознаит, что это за текст. В общем, пруфов от вас, луноходов, ждать бесполезно. Только понты. Рехтор, Иккуан - слив засчитан.
Отредактировано MOP3E (16-01-12 21:29:56)
Я не игрушечный. Я, б*я, коллекционный! (с) Duke Nukem Forever
Я не специалист по [вставить название]. Мне главное концептуально решить задачу! (с) АхаRu.
Линукс - это альтернативная ОС о которой известно, что она не является ОС ну вот просто ни разу. (с) Linups_Troolvalds.
А с какого такого перепугу пользователей линукса должно быть больше 1%? (с) petrun
Вне форума


2 Rector
По моему приведенный текст только подтверждает, что при конфликте прерываний устройства старого стандарта PCI или с кривым драйвером корректно работать не будут. Кроме того, не будут работать сразу а не после 10 минут. И план питания на это влиять не должен.
Встречается типичная ошибка обработчика прерываний: прочитав регистр состояния устройства и не обнаружив признака запроса, драйвер «на всякий случай» выполняет сброс всех источников запроса (а то и сброс всего устройства). Эту ошибку порождает незадачливый разработчик драйвера, не учитывающий возможности разделяемости прерываний и не доверяющий разработчикам аппаратных средств. Увидев в процессе отладки эту неожиданную ситуацию (прерывание вызвано, а источник не виден), он ее «учитывает» введением вредного фрагмента программного кода. Вредность заключается в том, что с момента чтения регистра устройства (не давшего признака запроса) и до выполнения этого ненужного сброса в устройстве может возникнуть запрос прерывания, который будет «вслепую» сброшен и, следовательно, потерян.
Но опять же, баг проявится сразу.
Нет, так мы целей гнусных не достигнем... / В.П. Вишневский
Вне форума


TrollWINNT, так я собственно это и говорил Rebel'у. Что-бы он посмотрел на предмет использования устройствами общих прерываний.
Винда - это ведро с тухлыми червями.
Вне форума
[ Сгенерировано за 0.009 сек, 7 запросов выполнено - Использовано памяти: 1.72 Мбайт (Пик: 1.81 Мбайт) ]