Участник:A1batross
Тут буду складировать заметки по Эльбрусу, которые когда-нибудь, может быть, не уверен, но перерастут во что-то большее.
Не все обязательно являются правдой в последней инстанции, так как получены в основном из работы с машиной по SSH и чтением исходных кодов ядра.
PiKVM и Эльбрус 4C
У меня есть клон PiKVM V3 (https://wiki.geekworm.com/KVM-A3). У этого клона (и по-моему в оригинальном так же) есть особенность — питание на Raspberry Pi подается не как обычно с USB-C порта, а через гребенку пинов, что удобно выведено на самой плате KVM-ки как USB-C порт.
Обычный же USB-C малинки конфигурируется из роли host в роль device, чтобы эмулировать мышь, клавиатуру, cdrom и так далее. Так вот если его оставить подключенным когда сам сервер выключен, моё предположение что возникает какая-то петля, когда USB питается как со стороны Эльбруса, так и со стороны Raspberry Pi. Проявляется это как их ресет их обоих, на Эльбрусе и RPi мигают лампочки питания.
Так вот эту проблему можно решить сделав себе data only кабель — срезать оплетку и откусить провод на +5V, он по классике должен быть красного цвета.
syscall 12
Принимает только 1 аргумент -- 64-битный указатель на bootblock. sys_num, похоже, всегда равен 0.
{
addd 0, 0, %b[0]
addd 0, bootblock, %b[1]
sdisp %ctpr1, 12
}
call %ctpr1, wbs = 5
Elbrus PCI
IOHub из себя представляет PCI шину, к которой подключены мосты, уже к которым подключаются сами устройства. Получается такая древовидная структура. Встроенные в мост или SoC висят на первой шине и являются Conventional PCI устройствами, к второй подключается PCI-Express.
PCI config
Доступ к конфигурации осуществляется через адресное пространство, базовый адрес которого получаем из чтения регистра SIC_rt_pcicfgb(0x90). Адресное пространство имеет ширину в 28 бит, поэтому в него кодируются следующие данные:
- 0:11 заняты адресом регистра PCI устройства.
- 12:19 занят devfn.
- 20:27 занят номером шины.