Представлен набор патчей для асинхронной инициализации устройств в Linux

Некоторое время назад в Chrome OS была реализована техника ускорения загрузки системы, основанная на асинхронной инциализации (probe) устройств. Теперь механизм асинхронной инициализации устройств предложен для включения в состав основного ядра Linux. Суть проблемы состоит в том, что некоторые устройства работают достаточно медленно. Поэтому вызов probe () при сканировании и инициализации устройств может занимать весьма ощутимое время. В этот момент загрузка системы приостанавливается и система не делает ничего полезного вплоть до завершения инициализации устройства, что является неоптимальным с точки зрения времени запуска системы.

Предложенный патч отличается от предыдущих вариантов подобных патчей тем, что старается сохранить точки синхронизации, используемые драйверами в процессе загрузки, что минимизирует побочные эффекты от перехода на асинхронный режим. Кроме того, реализован интерфейс, через который драйвер может отказаться от асинхронной инициализации.

Для экспериментаторов доступен дополнительный, «бескомпромиссный» вариант патча, когда все драйверы принудиельно используют асинхронный режим инициализации. Автор смог успешно загрузить систему на основе RockChip в полностью асинхронном режиме. Тем не менее, эксперименты показали, что некоторые драйверы не работают корректно в таком режиме и использовать данный вариант патча можно только на свой страх и риск.

©  OpenNet