|
Прерывания PCI. |
|
|
|
 |
Ответов
|
Sep 13 2010, 11:55
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(DS @ Sep 13 2010, 14:01)  Из обработчика прерывания можно каким нибудь проводом дергать ? Надо понять, встает шина или "залип" запрос на обработку прерывания. Иначе дальше не двинетесь. Нужно что-то поднять и опустить во время нахождения в обработчике, чтобы было видно зацикливание. Встает шина. Если после этого попробовать что-то прочитать из карточки, то в карточку не приходит запросов вообще, и как результат читаются одни FF. И сразу после чтения жесткий зависон всего. На сигнал-тап видно. Прошло одно прерывание, обработчик его сбросил. Пришло второе, и уже просто ни команда записи, ни команды чтения до автомата который обрабатывает входящие сообщения не доходят. Цитата(Oldring @ Sep 13 2010, 14:11)  А у Линукса что-ли нет ядерного отладчика? Быть не может. У меня явно не в отладчике проблема. У меня явно что-то не то по шине твориться. У меня совершенно нормально бегают MSI-X прерывания. У меня запись/чтение нормально работают. У меня только непонятно с легаси. По моему я что-то упустил. Хотя там всего два вывода. Я уже все варианты перепробовал.
|
|
|
|
|
Sep 13 2010, 12:20
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(Oldring @ Sep 13 2010, 15:01)  "жесткий зависон всего" - это как? Это ведь экспресс? Комп вообще ни на что не реагирует, пока карточку через jtag не остановиш. Цитата Карты в других слотах работают или тоже зависают? У меня один сплот для видеокарточки, в него мое и воткнуто.
|
|
|
|
|
Sep 13 2010, 12:27
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Methane @ Sep 13 2010, 16:20)  Комп вообще ни на что не реагирует, пока карточку через jtag не остановиш. А после остановки карточки оживает? А если просто карточку выдернуть? Похоже что карточка бомбардирует root complex какими-то запросами, и случается DOS. Что мне кажется странным. Наверное, такими запросами должны быть неснятые прерывания, которые процессор непрерывно обрабатывает. Как это может случиться под Линуксом - не скажу. Цитата(Methane @ Sep 13 2010, 16:20)  У меня один сплот для видеокарточки, в него мое и воткнуто. Мне кажется, эта проблема не стоит даже упоминания. Мамка с несколькими экспрессными слотами обойдется явно дешевле вашей зарплаты.
--------------------
Пишите в личку.
|
|
|
|
|
Sep 13 2010, 12:35
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(Oldring @ Sep 13 2010, 15:27)  А после остановки карточки оживает? А если просто карточку выдернуть? Похоже что карточка бомбардирует root complex какими-то запросами, и случается DOS. Что мне кажется странным. Наверное, такими запросами должны быть неснятые прерывания, которые процессор непрерывно обрабатывает. Как это может случиться под Линуксом - не скажу. Может быть. Сигнал что INTA случилось, имеет более высокий приоритет. НО! У меня всего две линии. Одну я могу либо вверх либо вниз. А другой - просто ACK. У меня нет других возможностей на INTА влиять. Цитата Мне кажется, эта проблема не стоит даже упоминания. Мамка с несколькими экспрессными слотами обойдется явно дешевле вашей зарплаты. Все не пашет. Ни клава ни мышка. И сама карточка не пашет после первого прерывания. Я явно что-то делаю не так.
|
|
|
|
|
Sep 15 2010, 07:08
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(Oldring @ Sep 15 2010, 09:29)  Ну так в случае DOS клава с мышкой работать и не должны - им не хватит времени. Да и обработка мышки скорее всего сделана не в самом обрабортчике мышиного прерывания. Цитата static irqreturn_t Avia_pci_interrupt (int irq, void *dev_id) {
RP1 *rp; rp = (RP1 *) dev_id;
rp->interrupts++; barrier(); mb(); rp->dmaRxMain.iomem->dma0.msi[0].dataA = 1; return IRQ_HANDLED; } Вот обработчик. В аттаче картинка. app_int_sts - INTA app_int_ack - ACK для INTA. vector_pending - кол-векторов которые требуют обработки, ..clear_req - шина по которой вектора сбрасываются. dma_tx_reg_addr - адресс внутри карточки, dataA - имеет адресс 0х10000 запись в этот регистр поднимает clear_req, и запрос на обработку прерывания сбрасывается, INTA опускается. Видно что одно прерывание проходит нормально, а когда происходит второе прерывание, обработчик в переывание входит, но сбросить запрос на прерывание уже не получается, потому что карточка стоит. Потом, как я понимаю, когда заканчиваются TAGи, зависает и комп. Если, через JTAG начать заливать новую прошивку в ПЛИС, комп уходит в мягкий ресет.
Эскизы прикрепленных изображений
|
|
|
|
Сообщений в этой теме
Methane Прерывания PCI. Sep 10 2010, 04:00 Victor® Цитата(Methane @ Sep 10 2010, 07:00) Наро... Sep 10 2010, 06:07 Methane Цитата(Victor® @ Sep 10 2010, 09:07) Что-... Sep 10 2010, 06:16  Victor® Цитата(Methane @ Sep 10 2010, 09:16) В ко... Sep 10 2010, 06:48   Methane Цитата(Victor® @ Sep 10 2010, 09:48) К со... Sep 10 2010, 06:51 Methane Стабильно генерит 1 прерывание и клин. Чует мое се... Sep 10 2010, 08:31 DS Цитата(Methane @ Sep 10 2010, 12:31) Стаб... Sep 10 2010, 08:44  Methane Цитата(DS @ Sep 10 2010, 11:44) Это обычн... Sep 10 2010, 08:56   DS Цитата(Methane @ Sep 10 2010, 12:56) Алго... Sep 10 2010, 08:59    Methane Цитата(DS @ Sep 10 2010, 11:59) А запрос ... Sep 10 2010, 09:15     DS Цитата(Methane @ Sep 10 2010, 13:15) Или ... Sep 10 2010, 09:22      Methane Цитата(DS @ Sep 10 2010, 12:22) Да.
Не па... Sep 10 2010, 13:25       DS Цитата(Methane @ Sep 10 2010, 17:25) Не п... Sep 10 2010, 13:31        Methane Цитата(DS @ Sep 10 2010, 16:31) Осциллогр... Sep 10 2010, 13:36 DS Нет клина прерывания (после выхода обработчик вызы... Sep 10 2010, 13:41 Methane Только что проверил, у меня прерывание вызывается ... Sep 10 2010, 13:48 DS Цитата(Methane @ Sep 10 2010, 17:48) Толь... Sep 10 2010, 14:00  Methane Цитата(DS @ Sep 10 2010, 17:00) А в цепоч... Sep 10 2010, 14:56 Methane Вот пример из примера Альтеры.
Код // LEGACY INT... Sep 13 2010, 09:20 Oldring Цитата(DS @ Sep 13 2010, 15:01) Из обрабо... Sep 13 2010, 11:11        Oldring Цитата(Methane @ Sep 15 2010, 11:08) Вот ... Sep 15 2010, 07:22         Methane Цитата(Oldring @ Sep 15 2010, 10:22) Спас... Sep 15 2010, 07:43 otv116 Добрый день.
У меня тоже возникли проблемы с преры... May 26 2015, 06:28 krux у PCIe нет отдельной сигнальной цепи-прерывания в ... May 26 2015, 11:37 soldat_shveyk Не пугайтесь раньше времени, все что Вы описали пр... May 26 2015, 12:15 otv116 Спасибо.
soldat_shveyk,
я делал эксперимент с во... May 26 2015, 18:52 soldat_shveyk Пробуйте MSI.
Отпишитесь потом в этой ветке, если... May 27 2015, 04:46 otv116 Перешел я на использование IOConnectInterruptEx, F... Jun 4 2015, 10:03 otv116 Идея про неправильный ServiceContext себя не подтв... Jun 5 2015, 09:22 otv116 С тостером та же фигня.
Тупик, блин. Jun 7 2015, 19:00 otv116 Решил поглядеть, что будет на Win8 x64.
При загруз... Jun 9 2015, 19:20 otv116 Чтобы отмести возможные глюки моей платы, воткнул ... Jun 11 2015, 19:29 otv116 Разобрался я в чем дело.
soldat_shveyk первым же ... Jun 17 2015, 07:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|