«KVM Chainsaw»: чистка кода виртуализации в ядре Linux 7.3
Изменения подсистемы KVM (Kernel-based Virtual Machine) вошли в окно слияния Linux 7.3, которое закрывается сегодня. На этот раз новых заметных для пользователя функций почти нет — речь идёт преимущественно об исправлении ошибок и приведении кода в порядок.
Разбор «божественной» структуры
Главным событием стал давно ожидавшийся набор правок под названием «KVM chainsaw» («бензопила KVM»). Название отражает суть: разработчики распилили одну из разросшихся структур данных, которую разработчики иронично называли «god data structure». Код kvm_mmu приведён в порядок под современные сценарии использования KVM, попутно прошла и общая «весенняя (точнее, летняя) уборка» в x86-части.
AMD: устранение повреждения данных
В коде AMD KVM для операций ENCRYPT/DECRYPT в SEV/SEV-ES теперь выделяются полные страницы памяти. Это исправляет повреждение данных, возникавшее из-за того, что драйвер AMD PSP передавал прошивке страницы, предназначенные для записи. Изменение приводит поведение ядра в соответствие со спецификациями AMD SEV-SNP. Кроме того, ioctl-вызовы для заполнения памяти в SEV-SNP защитили от некорректного ввода — среди прочих улучшений для механизма Secure Encrypted Virtualization.
Intel: исправления TLB
На стороне Intel устранён ряд проблем. В частности, теперь корректно выполняется локальный сброс TLB при неудачном вложенном VM-Enter — раньше KVM могла пропустить сброс при следующем успешном входе с тем же L2 VPID. Также исправлены ошибки виртуализации VPID, из-за которых KVM не сбрасывала аппаратные TLB.
Прочие архитектуры
В реализации KVM для RISC-V добавлена поддержка FWFT для расширений Svadu/Zicfiss/Zicfilp в гостевых системах, а также оптимизирована обработка запросов HFENCE для многопроцессорных гостей. Для LoongArch и ARM работа свелась в основном к исправлению ошибок.
Подробности доступны в соответствующем pull-запросе.
Источник: Phoronix
Комментарии
Войдите, чтобы комментировать.