Opened 5 months ago
Last modified 5 months ago
#704 assigned баг
Странное поведение резервирования потоков E1 платой SW-01
Reported by: | alx | Owned by: | anatoly |
---|---|---|---|
Priority: | средний | Milestone: | 1 очередь |
Component: | ПЛИС (sw) | Keywords: | |
Cc: |
Description
В плате SW-01 я столкнулся со странным поведением функции резервирования потоков E1. В результате экспериментов обнаружено сразу много странностей. Опишу эксперименты по порядку.
Исходное состояние: в ПЛИС загружена прошивка версии 12, потокам 5E1 и 6E1 настройки СУВ установлены в значения "выкл" и "abcd".
- Поток 6E1 настраивается резервным для потока 5E1, в строке "Активировать при" отмечен только чекбокс "СЦС", также отмечен чекбокс "Возвращаться на основной поток", параметр "Таймаут возврата на основной" установлен в значение 50 секунд.
Результаты эксперимента:
- бит 0 регистра 0x124 ПЛИС равен единице, что означает аварию СЦС основного потока, хотя такой аварии нет - в регистре 0x103 ПЛИС бит 4 равен нулю. Ожидалось, что бит 0 регистра 0x124 будет возвращать то же значение, что и бит 4 регистра 0x103, так как основным потоком назначен 5E1.
- бит 4 регистра 0x124 ПЛИС равен единице, что означает аварию СЦС резервного потока, хотя такой аварии нет - в регистре 0x103 ПЛИС бит 5 равен нулю. Ожидалось, что бит 4 регистра 0x124 будет возвращать то же значение, что и бит 5 регистра 0x103, так как резервным потоком назначен 6E1.
- бит 4 регистра 0x124 ПЛИС периодически меняет свое значение с 0 на единицу и обратно, что означает переходы с основного потока на резервный и обратно (активацию/деактивацию резерного потока). Ожидалось, что резервный поток никогда не будет активирован, так как, во-первых, у потока 5E1 нет аварии СЦС, во-вторых, если учесть, что схема резервирования почему-то ложно считает, что авария есть, резервный поток все равно не должен был быть активирован, так как он точно так же имеет (ложную) аварию, а, согласно РЭ блока MC04-DSL-3U, если резервный поток в аварии, он не активируется.
- время активности резервного потока составляло единицы секунд (обычно 2-3 секунды). Ожидалось, что время активности резервного потока не будет меньше 50 секунд, так как параметр "Таймаут возврата на основной" установлен в значение 50 секунд.
Вот результат чтения регистров ПЛИС 0x103 и 0x124 (чтение выполнялось с интервалами около 1 секунды):
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 00 0x0000: 00 00 00 00 11 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 00 0x0000: 00 00 00 00 19 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 00 0x0000: 00 00 00 00 11 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 00 0x0000: 00 00 00 00 11 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 00 0x0000: 00 00 00 00 11 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 00 0x0000: 00 00 00 00 19 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 00 0x0000: 00 00 00 00 11
- Настройка СУВ потока 5E1 установлена в значение "КИ16". В результате у потока 5E1 появилась авария СЦС - бит 4 регистра 0x103 стал единицей (что правильно), однако в работе резервирования ничего не изменилось. Вот результат чтения регистров ПЛИС 0x103 и 0x124 (чтение также выполнялось с интервалами около 1 секунды):
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 10 0x0000: 00 00 00 00 11 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 10 0x0000: 00 00 00 00 19 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 10 0x0000: 00 00 00 00 11 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 10 0x0000: 00 00 00 00 11 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 10 0x0000: 00 00 00 00 11 root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00 0x0000: 00 00 00 a0 10 0x0000: 00 00 00 00 11
Ожидалось, что резервный поток всегда будет активным, так как основной поток в аварии.
Конфигурация резервирования была прочитана из ПЛИС, и она соответствует ожидаемой:
root@sw01:~# spictl 1 20 0 0 0 0x0000: 00 00 00 04 00 root@sw01:~# spictl 1 21 0 0 0 0x0000: 00 00 00 05 00 root@sw01:~# spictl 1 22 0 0 0 0x0000: 00 00 00 01 00 root@sw01:~# spictl 1 23 0 0 0 0x0000: 00 00 00 32 00
- Режим СУВ 5E1 вернул в значение "выкл", в ПЛИС "на ходу" загрузил прошивку версии 13.
Результат: первое время (около 30 секунд, специально не измерял) видел в веб-интерфейсе, как резервный тракт несколько раз поменял состояние (активировался/деактивировался), после чего "застрял" в активированном состоянии.
- В ПЛИС "на ходу" загрузил прошивку версии 12.
Результат тот же: сначала резервный тракт менял состояние, после чего "застрял" в активированном состоянии.
Судя по описанным наблюдениям, различий в поведении прошивок версий 12 и 13 нет. Отличия результатов экспериментов 3 и 4 от эксперимента 1 вероятно как-то связаны с тем, что прошивка ПЛИС менялась "на ходу". Я попробую воспроизвести первоначальное поведение и по результатам дополню тикет.
Предлагаю попробовать выяснить причины неправильного поведения ПЛИС и устранить их.
Replying to alx:
Дополняю.
ПЛИС версии 12, резервный поток "залип" в активном состоянии. Отключил резервирование потока 6E1, а затем снова включил. В результате эксперимент 1 сразу воспроизвелся - поток переключался туда-сюда и не "залипал" в одном состоянии.
Произвел еще несколько раз переконфигурирование ПЛИС версии 13. Каждый раз первоначальный эксперимент сразу воспроизводился - резервный тракт постоянно переключался тудя-сюда, в одном состоянии больше не "залипал". Без каких-либо дополнительных действий.