Linux 5.14 llega con soporte para RPI 400, mejoras a EXT4, controladores, KMV y mas
Después de dos meses de desarrollo, Linus Torvalds dio a conocer el lanzamiento del kernel de Linux 5.14 y en esta nueva versión de los cambios más notables, se destacan por ejemplo nuevas llamadas al sistema quotactl_fd() y memfd_secret(), la eliminación de controladores ide y raw, nuevo controlador de prioridad de E/S para cgroup, modo de programación de tareas SCHED_CORE, infraestructura para crear cargadores de programas verificados BPF.
La nueva versión recibió 15883 correcciones de los desarrolladores de 2002, tamaño del parche: 69 MB (los cambios afectaron a 12,580 archivos, se agregaron 861501 líneas de código, se eliminaron 321,654 líneas).
Principales novedades de Linux 5.14
En esta nueva version se ha implementado un nuevo controlador de priorización de E/S para cgroup -rq-qos, que puede controlar la prioridad de procesamiento de solicitudes para bloquear dispositivos generados por miembros de cada cgroup. Se ha agregado soporte para el nuevo controlador de prioridad al programador de E/S mq-deadline.
Otro cambio importante es en ext4, que ahora implementa un nuevo comando EXT4_IOC_CHECKPOINT ioctl que obliga a que todas las transacciones pendientes del diario y sus búferes asociados se descarguen en el disco, y también sobrescribe el área del almacenamiento utilizada por el diario. El cambio se preparó como parte de la iniciativa para evitar fugas de información de los sistemas de archivos. Además se han realizado optimizaciones de rendimiento en Btrfs al eliminar el registro en diario de atributos extendidos innecesarios durante la ejecución de fsync, el rendimiento de operaciones intensivas con atributos extendidos aumentó al 17%.
Por otra parte se agregó la llamada al sistema quotactl_fd(), que permite administrar las cuotas no a través de un archivo de dispositivo especial, sino mediante la especificación de un descriptor de archivo asociado con el sistema de archivos para el que se aplica la cuota.
Además los controladores antiguos para dispositivos de bloque con la interfaz IDE se han eliminado del kernel, que durante mucho tiempo han sido reemplazados por el subsistema libata. El soporte para dispositivos antiguos se conserva en su totalidad, los cambios se refieren solo a la posibilidad de usar controladores antiguos, cuando se usan las unidades que se llamaron /dev/hd*, no /dev/sd*.
El Programador de tareas tiene un nuevo modo de programación SCHED_CORE que permite controlar qué procesos pueden ejecutarse juntos en el mismo núcleo de CPU. A cada proceso se le puede asignar una cookie de identificación que define el alcance de la confianza entre procesos (por ejemplo, perteneciente al mismo usuario o contenedor).
Se ha agregado la llamada al sistema memfd_secret(), que permite crear un área de memoria privada en un espacio de direcciones aislado, visible solo para el proceso propietario, no reflejado en otros procesos y directamente inaccesible para el kernel.
El hipervisor KVM para sistemas ARM64 ha agregado la capacidad de usar la extensión MTE en los sistemas invitados, lo que permite vincular etiquetas a cada operación de asignación de memoria y organizar una verificación para el uso correcto de punteros para bloquear la explotación de vulnerabilidades causadas por el acceso a bloques de memoria ya liberados, desbordamientos de búfer, llamadas antes de la inicialización y uso fuera del contexto actual.
La autenticación de puntero proporcionada por ARM64 ahora se puede configurar por separado para el kernel y el espacio de usuario. La tecnología permite el uso de instrucciones ARM64 especializadas para verificar las direcciones de retorno mediante firmas digitales, que se almacenan en los bits superiores no utilizados del propio puntero.
Para las CPU Intel, comenzando con la familia Skylake y terminando con Coffee Lake, el uso de Intel TSX (Transactional Synchronization Extensions) está deshabilitado de forma predeterminada, lo que proporciona un medio para mejorar el rendimiento de las aplicaciones multiproceso eliminando dinámicamente las operaciones de sincronización innecesarias. Las extensiones están deshabilitadas debido a la posibilidad de realizar ataques Zombieload.
Tambien sé continuo con la integración MPTCP (MultiPath TCP), en la nueva versión, se ha agregado un mecanismo para establecer sus propias políticas de hash de tráfico para IPv4 e IPv6, que hace posible desde el espacio del usuario determinar cuál de los campos de los paquetes, incluidos los encapsulados, se utilizará al calcular un hash que determina la elección de una ruta para un paquete.
El controlador amdgpu implementó soporte para la nueva serie de GPU AMD Radeon RX 6000, desarrollada bajo los nombres en clave «Beige Goby» (Navi 24) y «Yellow Carp», así como soporte mejorado para GPU Aldebaran (gfx90a) y APU Van Gogh. Se agregó la capacidad de trabajar con múltiples paneles eDP al mismo tiempo.
Para APU Renoir, se implementa el soporte para trabajar con búferes encriptados en la memoria de video, mientras que para la GPU Radeon RX 6000 (Navi 2x) y GPU AMD anteriores, la compatibilidad con Active State Power Management (ASPM) está habilitada de forma predeterminada, que anteriormente solo estaba habilitada para las GPU Navi 1x, Vega y Polaris.
Para los chips AMD, se ha agregado soporte para memoria virtual compartida (SVM) basada en el subsistema de administración de memoria heterogénea (HMM), que permite utilizar dispositivos con sus propias unidades de administración de memoria (MMU), que pueden acceder a la memoria principal. Incluso con la ayuda de HMM, puede organizar un espacio de direcciones conjunto entre la GPU y la CPU, en el que la GPU puede acceder a la memoria principal del proceso.
De los demás cambios que se destacan:
- Se agregó soporte inicial para la tecnología AMD Smart Shift, que cambia dinámicamente el consumo de energía de la CPU y la GPU en computadoras portátiles con un chipset AMD y una tarjeta gráfica para mejorar el rendimiento en juegos, edición de video y renderizado 3D.
- Se agregó un controlador de gráficos simpledrm utilizando EFI-GOP o VESA framebuffer proporcionado por el firmware UEFI o BIOS para la salida.
- Se agregó soporte para la Raspberry Pi 400.
- Para las computadoras portátiles Lenovo, se agregó una interfaz WMI para cambiar la configuración del BIOS a través de /sys/class/firmware-attributes/.
- Soporte ampliado para USB4.