Я разрабатываю драйвер cpufreq (как загружаемый модуль ядра) для архитектуры microblaze. У меня есть FPGA-логика, которая способна масштабировать встроенные часы, и работает очень хорошо. Я следил за информацией в Documentation/cpu-freq/cpu-drivers.txt
и смотрел модель в драйвере blackfin cpufreq.Какой код ядра linux создает/sys/devices/system/cpu/cpuX?
Я также внесли необходимые изменения в arch/microblaze/Kconfig
, чтобы опции cpufreq были встроены в ядро (а не модули).
Когда я впервые загрузил драйвер, cpufreq_register_driver()
возвращал -ENODEV, что подразумевало, что он не смог найти процессор. Я установил флаг драйвера CPUFREQ_STICKY и смог вставить модуль.
Однако в этот момент я понял, что /sys/devices/system/cpu/cpu0
нет (хотя /sys/devices/system/cpu/cpufreq
есть). Итак, почему? Какая часть кода ядра отвечает за создание этого каталога?