Lanzamiento de Linux 7.3: cambios principales en Arm, RISC-V y MIPS

Linus Torvalds anunció el pasado domingo en la LKML la publicación de Linux 7.3:

Es domingo por la tarde y esta semana he conseguido mantener la cabeza lo bastante despejada como para no perder la cuenta de los días, así que el lanzamiento no se ha retrasado sin motivo. ¿Habrá milagros?

En cualquier caso, no parece que haya ocurrido nada especialmente relevante durante la última semana, así que, como estaba previsto, la versión final 7.3 ya está aquí y mañana se abre la ventana de fusión de 7.4. Eso sí, estoy de vacaciones familiares, así que en lugar de empezar a fusionar cosas a primera hora de la mañana pasaré buena parte del día en un barco y bajo el agua. Retomaré las fusiones por la tarde, pero espero que mi horario sea algo atípico durante un tiempo.

Confío en poder completar la ventana de fusión en las dos semanas habituales, aunque es posible que acabe necesitando una semana extra de fusiones para ponerme al día.

Conviene aclarar que esa semana adicional no significa que vaya a aceptar pull requests enviadas fuera del calendario habitual: la regla sigue siendo que lo que se fusiona debe estar listo antes de que se abra la ventana, y no ser un desarrollo tardío durante la propia ventana. Así que nada de artimañas.

Abajo tenéis el shortlog de la última semana de desarrollo de 7.3. Está bastante repartido y no sigue ningún patrón claro: correcciones aleatorias por todas partes.

Linus

Publicado hace unos dos meses, Linux 7.2 nos trajo la planificación de tareas con reconocimiento de caché para mejorar el rendimiento y reducir los fallos de caché, un planificador de GPU más justo, USB4STREAM para transmitir datos con USB4 y la fase IV de la implementación de la tabla de swap, entre otros cambios. Ahora vamos a repasar Linux 7.3 con una lista de las novedades más importantes y un análisis detallado de los cambios en las arquitecturas Arm, RISC-V y MIPS.

Algunos aspectos destacados de Linux 7.3

Entre los cambios más notables de Linux 7.3 encontramos:

  • Mejor gestión de la VRAM en GPU de gama baja – Cuando la GPU no dispone de suficiente VRAM (memoria de vídeo), distintas aplicaciones pueden acabar compitiendo por ella. Esta versión permite usar el cgroup dmem para aliviar la situación en la que dos aplicaciones se disputan la RAM. En lugar de ceder espacio de inmediato, el sistema intentará expulsar del dominio los búferes no protegidos para hacer sitio al protegido. Así se garantiza que las aplicaciones puedan utilizar realmente toda la protección de memoria que el sistema les concede, sin caer en un vaivén constante. Más detalles en pixelcluster.dev.
  • Mejoras de rendimiento en Btrfs y Ext4
    • Btrfs recupera el rendimiento de E/S directa que había perdido en versiones anteriores. En discos no SSD, la eliminación de un retardo innecesario de 1 jiffy durante las operaciones de registro reduce la latencia y multiplica por cinco el rendimiento. fsync con la función no-holes activada (predeterminada desde btrfs-progs 5.15) también es cinco veces más rápido.
    • Ext4 mejora el rendimiento de las escrituras paralelas con E/S directa y de fallocate(), y se ha corregido una regresión en las escrituras con búfer.
  • Mejor rendimiento de FUSE con io_uring – Linux 7.3 permite que los servidores FUSE proporcionen un pool de búferes que el núcleo usará para atender las peticiones, de forma que se reducen los requisitos de memoria. También añade copia cero a FUSE io_uring para mejorar aún más el rendimiento. Consulta la documentación oficial para más detalles.
  • Soporte de subplanificadores por cgroup (sched_ext) – La implementación de sched_ext ya está completa. Permite que un cgroup tenga sus procesos gestionados por su propio planificador de tareas basado en BPF. Distintos cgroups pueden usar subplanificadores BPF diferentes y tomar decisiones de planificación distintas. Hay más información en este artículo de LWN.

Actualizaciones de Arm en Linux 7.3

  • Allwinner
    • Controlador de reloj – Algunas limpiezas en la librería de controladores de reloj de Allwinner y soporte para los relojes RTC del Allwinner A733.
    • Allwinner A733 – Se añade soporte para MMC, RTC y el controlador NMI.
    • Cambios en el device tree para Linux 7.3
      • A10 – Corregido el número de interrupción de la PMU.
      • A100/A133 – Incorporan LRADC.
      • Se habilita el soporte de overlays para las placas sun8i-h2-plus de Raspberry Pi.
      • A523 – Incorpora receptor de infrarrojos de consumo.
      • El decodificador X96QPRO+ basado en H728 recibe salida de audio S/PDIF.
      • Corregida la orientación de montaje del mpu6050 del PinePhone.
      • Diversas correcciones de estilo.
    • Defconfig Arm64 – Se habilita LRADC.
    • Nuevos dispositivos
      • Baijie Helper A133
      • NetCube Systems OpenNMC (dobermann)
  • Rockchip
    • Controlador de reloj
      • Controlador de reloj para Rockchip RV1106.
      • Corrección del mux de origen de SPI del Rockchip RK3576.
      • Mejor representación de los coeficientes fraccionarios de PLL en el controlador de reloj de Rockchip.
      • Corrección para que el dclk del tercer puerto de vídeo de Rockchip no afecte a otros componentes cuando cambia su frecuencia.
    • PHY – Ajuste actualizado de la fase del carril de reloj de Rockchip, soporte de 2500 Mbps y gestión de la tasa TMDS.
    • Pinctrl – Se añade soporte para los SoC Rockchip RK3308B y RV1106.
    • IOMMU – Se reestructura la gestión de estado de Rockchip y se corrigen el reloj, el sondeo y el tratamiento de fallos obsoletos.
    • Controlador CAN-DF – Se añade soporte en RK3588.
    • Watchdog – Añadido para RV1106.
    • Nuevos dispositivos
      • Placa EmbedFire LubanCat 4 (RK3588S)
      • Consola Anbernic RG Vita-Pro (RK3576)
      • Placas Vicharak Vaaman2 y Axon (RK3588)
      • Placa LCKFB Taishan Pi 3M (RK3576)
      • Placa Orange Pi 5 Pro (RK3588S)
      • Placa Graperain G3568 v2 (RK3568)
      • Router HINLINK/LinkStar H28K (RK3528)
      • SBC Youyeetoo YY3588 (RK3588)
      • Placa portadora Alientek DLRV1126 y módulo de núcleo CLRV1126F (Rockchip RV1126)
      • LincStation E1
  • Amlogic
    • Controlador de reloj
      • Se añaden los relojes AO y de periféricos del Amlogic A9.
      • Corregido el número de padre incorrecto del reloj de 32 kHz en Amlogic GXBB.
    • Controlador PCIe de Meson – Se corrige el estado del GPIO PERST# para que se mantenga activo hasta que la alimentación y REFCLK se estabilicen, solucionando un fallo de enumeración.
    • Controlador de SoC – Se añade soporte de SoC Amlogic para A1 y T7.
    • Controladores de Amlogic
      • Corrección en debugfs de clock measure.
      • Soporte de clock measure para Amlogic A1 y T7.
    • Device tree de Arm – No aplica.
    • Device tree de Arm64 para Linux 7.3
      • Correcciones de Amlogic AXG para PCIe y NAND.
      • Correcciones generales de indentación y espacios en blanco.
      • Nodos de pinctrl y de IRQ de GPIO del Amlogic A9.
      • Nodos de clock measure para Amlogic T7 y A1.
    • Nuevo dispositivo – No aplica.
  • Samsung
    • Se añade el SoC Samsung Exynos 1580 para móviles de gama alta (de 2024).
    • PHY – Mejoras en el controlador hdptx de Samsung para modernizar el acceso a registros y limpiar el código.
    • Control de pines – Se añade el SoC Samsung Exynos 8855.
    • Entrada
      • Actualizaciones del controlador de teclado de Samsung para mantener las interrupciones deshabilitadas mientras el dispositivo está cerrado, junto con limpiezas en la lógica de wakeup y el uso de guardas pm_runtime_active.
      • Actualización del recuento de contactos del Samsung SUR40 según la especificación PixelSense.
    • Controlador de reloj
      • Exynos990: se añaden varios relojes que faltaban y se corrigen los padres de los relojes de puerta en el controlador de relojes PERIS.
      • Limpieza – Uso de kzalloc_flex para las comprobaciones de __counted_by en el controlador de reloj de Samsung.
    • Controladores de SoC
      • Corregida una fuga muy antigua de un nodo OF en el controlador de la PMU.
      • Algunas limpiezas y nuevos bindings para el syscon HSI0 del Exynos Auto v920.
    • Cambios en DTS de Arm – Se añade Bluetooth a la placa Google Manta (Nexus 10) basada en Exynos5250.
    • Cambios en DTS de Arm64 de Samsung para Linux 7.3
      • Nuevo SoC Exynos8855 (nombre comercial: Exynos 1580) – Soporte básico junto con su placa de desarrollo SMDK.
      • ExynosAutov920: se añade el nodo syscon HSI0.
      • Varios cambios no funcionales (espacios en blanco y estilo) para ajustarse al estilo de codificación de DTS según lo indicado por la reciente herramienta dt-check-style. El objetivo es llegar con el tiempo a cero avisos con dt-check-style --mode strict.
    • Cambios en defconfig – No aplica.
    • Nuevos dispositivos – Samsung Exynos8855 SMDK
  • Qualcomm
    • Nuevo SoC – El «misterioso» «Shikra» de Qualcomm, basado en Cortex-A78C.
    • ASoC – Correcciones de Qualcomm LPASS en las restricciones de reproducción y el volumen del macro WSA.
    • Retroiluminación – Qualcomm WLED: se eliminan llamadas redundantes a dev_err().
    • MFD
      • PMIC SPMI de Qualcomm: se documentan el PMG1110 y el dispositivo de háptica.
      • TCSR de Qualcomm: se añade compatible para los SoC Hawi, Maili y Shikra, y se documenta el bloque TCSR del IPQ9650.
    • Térmico
      • Se añade soporte para el monitor térmico Master BandGap de Qualcomm.
      • Se añade el compatible de bindings de temperatura de Maili.
    • Controlador de reloj
      • Relojes GCC, TCSR, RPMh y de vídeo de Qualcomm Maili.
      • Relojes GCC, RPM, GPU, de pantalla y de audio de Qualcomm Shikra.
      • Relojes de pantalla y gráficos de Qualcomm Nord.
      • Relojes de cámara y EVA de Qualcomm Glymur.
      • Relojes de vídeo de Qualcomm Hawi.
    • PHY
      • PHY USB QMP y PHY PCIe de Qualcomm SM8475, PHY PCIe QMP del IPQ9650, PHY QUSB2 para el SoC Shikra y soporte Hawi para el PHY PCIe QMP y el PHY UFS.
      • Controlador Multi-PHY PCIe QMP de Glymur y soporte de múltiples modos de enlace, soporte del PHY PCIe del IPQ5210.
      • Qualcomm elimina las cabeceras DP v8 duplicadas y mejora la gestión en tiempo de ejecución de los controladores QMP.
    • SoundWire – Paginación de direcciones SCP de Qualcomm y soporte de mclk_freq en el bus. Se amplían los puertos de datos a 17 y se mejoran los controladores.
    • Control de pines
      • Se añaden el SoC Qualcomm Maili TLMM, el PMIC PMG1110 y el SoC Eliza LPASS LPI TLMM.
      • Los GPIO TLMM de Qualcomm se marcan incondicionalmente como capaces de despertar el sistema.
      • Mejoras de Qualcomm sobre las mejoras del irqchip PDC (controlador de dominio de alimentación) de Qualcomm provenientes del árbol de tglx.
      • Correcciones de grupos de pines no urgentes en Qualcomm IPQ806x e IPQ9650.
    • Controlador PCIe
      • Se añade el compatible del IPQ9650 con interrupción global.
      • Se añade el compatible del IPQ5210 con fallback al IPQ9574.
      • Se añaden el binding de DT y el soporte del controlador para el SoC Hawi.
      • Se omiten los GPIO PERST# proporcionados por dispositivos PCIe downstream, que deben gestionar los controladores de dichos dispositivos.
      • Se deja de anunciar Attention Button Present (ningún SoC de Qualcomm admite botones de atención) para que pciehp pueda usar los eventos Presence Detect Changed.
    • WiFi – Qualcomm (ath12k)
      • Gran cantidad de trabajo de integración con la infraestructura del núcleo.
      • Soporte MultiPD en la plataforma AHB.
    • IOMMU
      • ARM SMMUv2
        • Actualizaciones de bindings de device tree para los SoC Qualcomm Eliza, Maili, Shikra e IPQ9650.
        • Se añade soporte para Qualcomm SM8450.
      • Se corrigen condiciones de carrera en runtime-PM, desmontaje de sondeo, notificación de fallos e inicialización de tablas de páginas en Qualcomm.
    • ASoC
      • Actualizaciones en la pila de controladores de Qualcomm.
      • Nuevas plataformas: Qualcomm LPI MI2S, SM8475 y WSA855X.
    • I2C – Se añade soporte para Qualcomm Nord SA8797P y SA8255p.
    • Actualizaciones de controladores
      • Se añaden bindings de plataforma Maili para SCM, IMEM, AOSS y PMIC GLINK. Se añade soporte de Shikra para IMEM, RPM SMD, LLCC y UBWC, incluida la gestión de interrupciones ECC de LLCC configuradas por firmware.
      • Se añade el servicio genérico Peripheral Authentication Service con backends SCM y OP-TEE, y se migran a él los controladores MSM DRM e IPA.
      • Se añaden tracepoints de llamadas SMC de SCM y entrega configurable de minidumps mediante SRAM siempre activa. Se corrige el orden de punteros del modo de descarga de SCM y se mejoran los diagnósticos de sondeo en ese modo.
      • Se reestructura la base de datos de configuración UBWC y se añaden las configuraciones de Milos y Shikra. Se añaden mapas de dominio de protección para SA8775P y QCS8300, soporte para versiones más recientes de ICE, estadísticas del subsistema Hawi e identificación del SDM850.
      • Se simplifica la selección de Kconfig de los SoC Qualcomm y las dependencias de arquitectura.
      • Se usan recursos gestionados en las rutas de sondeo de EBI2 y RPMh RSC para corregir la limpieza en caso de fallo.
      • Se añade el análisis de SMEM para los datos de configuración de DDR y se usa el bit más alto de dirección del banco para seleccionar la configuración UBWC adecuada.
      • Se habilitan las API genéricas de trusted zone de PAS para los controladores multimedia Iris y Venus.
      • Se corrigen el estado de reintento del sondeo de SCM, la limpieza de memoria reservada y una desreferencia nula temprana en el manejador de IRQ. Se habilita el acceso a las variables EFI de QSEECOM en el Asus Zenbook A16.
      • Se corrige la validación del tamaño del firmware GENI usando la profundidad de la RAM CFG del hardware y se corrige el diseño de los extradatos Thunderbolt de PMIC GLINK.
      • Se documentan el canal lateral AOSS de Nord y la propiedad SRAM del minidump de IMEM.
      • Se limpian las macros de estadísticas de Qualcomm y el esquema de bindings de WCNSS.
    • Actualizaciones de device tree de Arm64
      • Se introduce soporte de DeviceTree para el SoC Shikra, sus controladores de reloj GCC y RPM, las plataformas SoM CQM, CQS e IQS y sus placas de evaluación. Se documentan los SoC Hawi y Maili.
      • Se añaden las plataformas SoM y EVK Eliza CQS, el QCS8550 RB5 Gen 2, el Vicharak Axon Mini, el HONOR MagicBook Art 14, el Microsoft Surface Pro 12, el Xiaomi 12 Lite, el Motorola Edge 30, el Sony Xperia M2 y el Motorola Moto G2.
      • Se amplía el soporte de Eliza con descripciones de USB, tarjeta SD, pantalla táctil, PMIC, interconnect, térmica, monitor de ancho de banda de CPU y LLCC, QUPv3 y ADSP GPR.
      • Se amplía el soporte de Glymur con controladores de reloj de GPU, cámara y EVA, audio LPASS, CoreSight, PCIe, USB, regiones de memoria IMEM y PIL, dominios de alimentación, refrigeración térmica y periféricos de la CRD. Se añaden descripciones de SoCCP, regulador PMIC, TRNG y capacidad de CPU.
      • Se añade soporte de pantalla, IPA, cámara, USB, audio, criptografía, TRNG, CoreSight y térmica a las plataformas Kaanapali, Milos, Hamoa y relacionadas. Se añade soporte de controlador embebido para las placas Hamoa y Glymur.
      • Se mejoran las descripciones de las plataformas de red con actualizaciones de puertos PCIe, PHY, reloj, PWM, regulador e interrupciones del IPQ. Se actualizan las descripciones de CTCU, pantalla, Iris, audio, cámara, PCIe, USB-C, dominios de alimentación, regiones de memoria y térmica en las plataformas Qualcomm ya establecidas.
      • Se corrigen bindings y la validación de DeviceTree para las cadenas compatible de Qualcomm, los compatibles de fallback heredados, el nombrado y formato de nodos, los rangos de direcciones, los especificadores de reloj, la memoria reservada, los reguladores, los GPIO y el cableado de periféricos.
      • Se añaden descripciones del puente PCIe del IPQ9574 y se habilitan PCIe0 y PCIe2 para las tarjetas Wi-Fi QCN92xx en la RDP454. Se alinean las descripciones de PHY PCIe y reset de IPQ5018, IPQ6018 e IPQ8074 con el binding de nodo de puerto.
      • Se amplía la habilitación de la plataforma Shikra con descripciones de Wi-Fi y Bluetooth de los SoM CQM e IQS. Se habilitan los procesadores remotos CDSP, LPAICP y MPSS en las EVK CQM, CQS e IQS, y se añaden SMP2P, QUPv3, monitor de ancho de banda de DDR, hardware de frecuencia de CPU, interconnect L3 de EPSS, tablas OPP, zonas térmicas, reservas de GPIO y controladores de reloj de pantalla y GPU.
      • Se habilita el audio de la EVK Eliza CQS y se añaden sus descripciones de macro LPASS y SoundWire. Se añade soporte de ADC de PMIC para Hamoa, Monaco y Lemans, y macros de canal ADC para el bloque ADC de tercera generación. Se añaden configuraciones de SRAM de minidump en las plataformas Qualcomm afectadas.
      • Se corrigen las asignaciones de alimentación vdda-phy y vdda-pll del PHY QMP en las plataformas Qualcomm. Se corrigen los mapas IOMMU de PCIe para QCS6490, Lemans, Monaco, Talos, SM, SC y placas relacionadas. Se corrige el mapeo de interrupciones del PDC de Glymur/Mahua, las propiedades de USB HS y la configuración de wakeup; se corrigen identificadores de placa, configuración de pines, alimentaciones de GPIO, frecuencia de bus predeterminada y problemas de validación de DT.
      • Se habilita el estado de reposo más profundo del X1E80100, se configura la monitorización térmica del ADC de SPMI en SM8550 y SM8650, se añade el controlador de reloj de GPU de Milos y se asignan las frecuencias del reloj CCI del SM8650.
    • Actualizaciones de device tree de Arm32
      • Se añade soporte inicial de device tree para el Sony Xperia M2 basado en MSM8926 y el Motorola Moto G2 (2014) basado en MSM8226.
      • Se añaden pantalla táctil, configuración de pines de Bluetooth, NFC y LED de estado multicolor al device tree del HTC One M8 basado en MSM8974.
      • Se añade el nodo de touchkey compatible coreriver,tc360-touchkey al device tree del Samsung ExpressATT basado en MSM8960 y se etiquetan los canales XOADC del PM8921.
      • Se consolidan las propiedades compartidas de IPA en el device tree del SDX55.
    • Actualizaciones de defconfig de Arm64
      • Se habilita el controlador embebido de los dispositivos de referencia de Qualcomm para Hamoa y Glymur.
      • Se habilita el controlador de sonido DMIC para las plataformas Monaco y Lemans.
      • Se habilita el controlador WWAN BAM-DMUX para Shikra y otras plataformas que usan hardware A2 BAM.
    • Nuevos dispositivos
      • Asus Zenbook A16 (UX3607OA)
      • Plataforma SoM Eliza CQS y placa Eliza CQS EVK
      • SBC Vicharak Axon Mini (QCS6490)
      • Motorola Moto G2 (teléfono de 2014)
      • Sony Xperia M2
      • Microsoft Surface Pro 12in
      • Módulos system-on-module Shikra IQ2390S/CQ2390M y sus EVK
      • Xiaomi 12 Lite 5G (taoyao)
      • Motorola Edge 30 (dubai)
  • MediaTek
    • Controlador MFD
      • MediaTek MT6397: se añade soporte de AUXADC y EFUSE del mt6323.
      • MediaTek MT8195 SCP: se añade soporte para el SoC MT8189.
    • Controlador de reloj – Se añade el MFG_TOP del MediaTek MT8173.
    • Controlador PCIe – Se añade soporte para el controlador PCIe de los SoC EcoNet EN7528 y EN751221.
    • Controlador PCIe Gen3 – Se añade la «memory-region» de mediatek-gen3 para el búfer DMA restringido.
    • WiFi (mt76):
      • Soporte de MT7928.
      • Soporte NAN de MT7925.
      • Mejoras de ahorro de energía en modo AP del MT7996.
    • Actualizaciones de controladores de SoC
      • Se corrige una comprobación de error ausente en mtk-socinfo y también un MODULE_DEVICE_TABLE() ausente en el controlador mtk-dvfsrc.
      • Se reestructura cómo se especifican las tablas MMSYS con la macro, separando la instancia de hardware del componente de su tipo real, lo que resuelve un requisito previo para la reestructuración de mediatek-drm.
    • Actualizaciones de Arm32
      • Corrige un pequeño problema de indentación en el device tree del MT8127.
      • Añade soporte para el ADC auxiliar presente en el PM MT6323.
    • Actualizaciones de device tree de Arm64 para Linux 7.3
      • Correcciones de indentación y espacios en blanco en algunos device trees.
      • Mejoras de documentación para MediaTek Mute-X.
      • Correcciones de avisos de dtbs-check
        • Placas MT8390 Tungsten: eliminación de celdas innecesarias.
        • SoC MT6795: eliminación de una propiedad obsoleta en el DMA de UART.
      • El RTC del PMIC MT6359 usa ahora la cadena compatible correcta.
      • Los SoC MT8183/86/88/92/95 incorporan soporte para las IP de DMA de UART.
      • El MT8186 recibe una nueva tabla OPP de CCI para resolver bloqueos.
      • Los Chromebooks con MT8188/83 reciben ahora la alimentación correcta de la SPI NOR.
      • El MT8192 Asurada elimina el soporte del puerto MMC1 (sin uso).
      • Las EVK MediaTek Genio 510/700/1200 y la Radxa NIO-12L completan ahora su árbol de alimentación del PMIC con la asignación de las alimentaciones correctas.
    • Actualizaciones de defconfig – No aplica.
    • Nuevos dispositivos – No aplica.
  • Otras plataformas y SoC Arm nuevos
    • Altera – SoC FPGA Agilex72 basado en Cortex-A720.
    • Apple – Incorpora soporte para los SoC M3 Pro, Max y Ultra (a partir del soporte básico del M3 en Linux 7.2).
    • NVIDIA – Caja de sobremesa Lenovo ThinkEdge SE70 (Jetson Xavier NX).
    • NXP
    • Texas Instruments
  • Cambios específicos para Raspberry Pi
    • V3D – Se reduce el retardo de autosuspensión del runtime PM. El retardo de 100 ms solo era un apaño: los retardos más cortos provocaban ciclos de suspensión y reanudación más frecuentes en el BCM2711 (Raspberry Pi 4), lo que sacaba a la luz los errores de coherencia de caché y MMU en forma de bloqueos aleatorios de la GPU. Con esos bloqueos ya resueltos, el retardo inflado deja de ser necesario. Se reduce de 100 ms a 50 ms para que el dominio de alimentación de la GPU pueda liberarse antes en cuanto esta quede inactiva.
    • VC4
      • Se corrige el fallo de asignación de slots del binner en una GPU inactiva (error de Raspberry Pi 3).
      • Se usa sondeo KMS gestionado para corregir un UAF al desenlazar.
    • Se añade soporte para la pantalla táctil Raspberry Pi Touch Display 2 de 7 pulgadas en la placa Toradex Versin.

Actualizaciones de RISC-V en Linux 7.3

También hay una buena cantidad de cambios en la arquitectura RISC-V:

  • Se añaden definiciones y detección iniciales para las extensiones del ISA RISC-V Smcsrind, Sscsrind, Smcntrpmf, Ssccfg, Smcdeleg, Zicclsm, Ziccamoa, Ziccif, Ziccrse, Za64rs y Ssqosid.
  • Se mejora la implementación de update_mmu_cache_range() en RISC-V mediante flush por ASID, lo que habilita mejoras de rendimiento en microarquitecturas que admiten las optimizaciones correspondientes, y aprovechando la extensión del ISA RISC-V Svinval en las microarquitecturas que la soportan.
  • Se reduce aún más la asignación de la pila de sombra de CFI (hasta 512 MB) para ahorrar espacio de direcciones virtuales (y memoria física en sistemas con políticas de overcommit estrictas).
  • Se añade soporte inicial de cambio de contexto de CPU para el etiquetado QoS (Ssqosid).
  • El código de prueba de velocidad de acceso vectorial desalineado pasa a ser síncrono, evitando varios errores relacionados con una asincronía innecesaria.
  • Se habilita ARCH_HAS_ACPI_TABLE_UPGRADE para RISC-V para facilitar la depuración de tablas ACPI (de forma similar a ARM64 y x86).
  • Los desplazamientos de sección del vDSO se extraen en tiempo de compilación en lugar de en tiempo de ejecución, para evitar la sobrecarga durante el arranque.
  • Se usan directivas del ensamblador para controlar el uso de instrucciones de las extensiones Zacas y Zabha del ISA RISC-V, en lugar de indicadores -march del compilador que podrían afectar a todo el núcleo (de forma similar a ARM64).
  • Se añade un kselftest para el soporte de kprobes de la instrucción c.jal en RISC-V.
  • Cuando los servicios en tiempo de ejecución de UEFI están disponibles, se usan para reiniciar y apagar el sistema.
  • Se corrige ARCH_HAS_ACPI_TABLE_UPGRADE en RISC-V añadiendo un archivo de inclusión que faltaba en el código ACPI.
  • Se retrasa la reserva de memoria DMA contigua a una fase posterior del arranque, para garantizar que se asignen los pools globales y por nodo correctos cuando CONFIG_CMA_SIZE_PERNUMA está habilitado.
  • Se prohíben las sondas en los manejadores de breakpoint para evitar recursión indefinida en do_trap_break().
  • Se parchea el vDSO de compatibilidad durante el procesamiento de alternativas en tiempo de ejecución, y no solo el vDSO estándar.
  • Se eliminan algunos restos de soporte de XIP que pasaron desapercibidos en el commit 9b3a2be84803 («riscv: Remove support for XIP kernel»).
  • Se corrige la conmutación del temporizador de broadcast en los estados de energía ACPI LPI implementando una versión RISC-V de arch_get_idle_state_flags().
  • Correcciones diversas, entre ellas: simplificación del makefile del vDSO; marcado de default_power_off() como __noreturn; correcciones en rutas de error del controlador perf PMU SBI; consistencia en el uso de mayúsculas en las extensiones RISC-V; uso de macros BIT() en uno de los archivos de inclusión; y algunas correcciones de documentación.
  • Alibaba T-Head (TH1520)
    • DRM – th1520-dw-hdmi
      • Se corrige la comprobación de error del valor devuelto por dw_hdmi_probe().
      • Se corrige la función de callback remove().
    • PWM – Se adopta el estilo de importación vertical.
    • Device tree – Conjunto de cambios para los chips de expansión de E/S restantes en la placa LicheePi 4a basada en TH1520.
  • Canaan/Kendryte
  • Microchip – Hwmon – Sensor de temperatura y tensión del PolarFire SoC.
  • Sophgo
    • El SG2000 es un chip mixto Arm/RISC-V que ya era compatible usando el núcleo Arm, pero ahora también se añade para RISC-V junto con otras variantes de la serie cv18xx.
    • Device tree
      • Soporte inicial para las placas Milk-V Duo S (SG2000) y Duo 256M (SG2002).
      • Se permite al multiplexor DMA establecer el número de canal del controlador DMA.
  • Spacemit
    • Control térmico – Se añade una acción devm para limpiar las interrupciones de hardware y los registros de muestreo y control en Spacemit K1.
    • PHY – Controlador del PHY combinado USB3/PCIe de Spacemit.
    • Controlador PCIe – Se añade el MODULE_DEVICE_TABLE() que faltaba para generar la información de alias de módulo y permitir la carga automática de módulos basada en OF.
    • Controlador de reloj
      • Se añade el reloj del controlador UFS de SpacemiT.
      • Se añade el reloj I2S de SpacemiT y correcciones.
    • Cambios en device tree
      • SoC K3
        • Se habilita el soporte de tarjeta SD.
        • Se habilita QSPI.
        • Se corrige el retardo de reset del PHY Ethernet.
        • Se corrige el ID del PHY Ethernet.
        • ID PDAM simbólico.
        • Se añade soporte del controlador SPI.
        • Se añade soporte de USB y PHY.
        • Se añaden nodos I2S.
      • SoC K1
        • ID PDAM simbólico.
        • Se habilita el soporte de cpufreq.
        • Se corrige la tensión máxima del núcleo de CPU.
      • Placas K3
        • Pico-ITX
          • Se habilita ALDPS en el PHY RTL8211F.
          • Se deshabilita el reloj de 125 MHz en el PHY RTL8211F.
          • Se habilita la flash NOR.
          • Se añade soporte de EEPROM.
        • Módulo CoM260 – Se añade soporte de EEPROM.
      • Placas K1
  • StarFive
    • Controlador PCIe
      • Se corrigen fugas de recursos en las rutas de error de host_init().
      • Se corrige la gestión del runtime PM y el orden de desmontaje para evitar accesos a registros mientras la alimentación o los relojes están deshabilitados.
      • Se comprueba si falla la reanudación del runtime PM para evitar accesos a registros mientras la alimentación o los relojes están deshabilitados.
    • SPI – Se añade soporte para el SFC (controlador de flash SPI) StarFive JHB100.
    • Device tree – Se añaden bindings para el PLIC del StarFive JHB100.

Cambios en MIPS

Como de costumbre, solo hay unas pocas actualizaciones de MIPS:

  • El código GPIO pasa a usar software nodes.
  • Reestructuración del código GPIO de TXX9.
  • Se habilita multi-VPE para econet.
  • Limpiezas y correcciones.

Lista completa:

  • mips: dts: econet: Describe dual-VPE 34Kc processor
  • mips: econet: add multi-vpe capability to EN751221
  • MIPS: ptrace: Fix syscall skipping via PTRACE_SYSCALL
  • mips: remove dead select
  • MIPS: BCM47XX: Convert buttons to software nodes
  • ssb: gpio: Add and register software node for GPIO controller
  • bcma: gpio: Add and register software node for GPIO controller
  • MIPS: ip22-gio: Drop #include of <linux/mod_devicetable.h>
  • MIPS: TXX9: Clean up txx9_iocled_init()
  • MIPS: TXX9: Convert gpio_txx9 to dynamic GPIO base allocation
  • MIPS: TXX9: Drop GPIOLIB_LEGACY select
  • MIPS: TXX9: Use GPIO lookup table for iocled LEDs
  • MIPS: TXX9: Reduce TXX9_IOCLED_MAXLEDS to 3
  • MIPS: TXX9: rbtx4927: Use GPIO lookup table for TXx9 LEDs
  • MIPS: TXX9: rbtx4927: Use GPIO lookup table for SIO DTR
  • MIPS: TXX9: Remove txx9_7segled_*() forward declarations
  • MIPS: TXX9: Remove tx4938_spi_init() and txx9_spi_init()
  • MIPS: kernel: proc: Use two seq_putc() calls in show_cpuinfo()

Podéis consultar el changelog detallado de Linux 7.3, generado solo con los comentarios, usando el comando git log v7.2..v7.3-rc7 --stat. Como alternativa, también podéis leer el changelog en Kernelnewbies.

Traducido del artículo en inglés «Linux 7.3 release – Main Changes, Arm, RISC-V, and MIPS architectures» de Jean-Luc Aufranc (CNXSoft).

Salir de la versión móvil