[Arm64-baikalm] Perf counters with Alt kernel

Alexey Sheplyakov asheplyakov на basealt.ru
Чт Окт 21 12:38:33 MSK 2021


On 21.10.2021 12:53, Andrey Slepuhin wrote:

>> Потому что в device tree не написано, что они есть. Не хватает примерно
>> такого:
>>
>>         pmu {
>>                 compatible = "arm,cortex-a57-pmu";
>>                 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
>>         };
>>
> Это я понимаю. Я, собственно, скачал сорцы альтовского ядра, но я там
> вообще dts для Байкала не вижу.
Потому что их там нет. По нескольким причинам:

1) Штатно ядро получает dtb от прошивки (UEFI)
2) Кроме TF307 есть и другие платы, и есть разные версии TF307
3) firmware (ARM-TF и UEFI) тоже использует dtb (тот же, что передаёт ядру).
   Если ядро и прошивка будут использовать разные dtb - не факт, что это заработает.
   Пример - если сказать ядру, что к lvds что-то подключено, а UEFI - нет,
   то ядро пытается проинициализировать lvds и вскоре намертво зависает.
   (См. https://github.com/edelweiss-tech/kernel/issues/1)

Так что в общем случае вопрос "какой dtb нужен для этой платы" достаточно
сложный. И поэтому лучше использовать тот dtb, который выдаёт UEFI.

> Кто-то может поделиться описанием процедуры, как именно альтовское ядро для
> Байкала правильно собирать?

Вы не с того немного начинаете. Первый вопрос должен быть - "а что у меня за
плата, и какой для неё нужен device tree?" А второй - "а как передать этот
device tree ядру?" А ещё - "а что будет, если я передам ядру не тот dtb?"

И тут всё немного печально.

1. В альте пока нет штатных механизмов для того, чтобы подложить ядру dtb.
   Можно, конечно, вручную вписать в /boot/grub.cfg 

   devicetree /boot/my-blob.dtb

   Но при первом же обновлении ядра/grub/make-initrd/и т.п. будет создан новый
   grub.cfg (уже без директивы "devicetree").

2. Поддержка dtb в grub весьма на зачаточном уровне.  Он не умеет передать кусочек
   (overlay), как raspberry pi

3. В Linux тоже нет dtb overlay (потому что Линус упёрся, и сказал, что это не нужно)

Потому лично я dtb прошиваю прямо в firmware, как описано здесь:
https://github.com/edelweiss-tech/spi_builder/blob/master/tf307_flashing.md



Подробная информация о списке рассылки Arm64-baikalm