Version Linux 6.6 – Points forts, architectures Arm, RISC-V et MIPS

Version Linux 6.6 – Points forts, architectures Arm, RISC-V et MIPS

La version Linux 6.6 vient d’être annoncée par Linus Torvalds sur la Linux Kernel Mailing List (LKML) :

La semaine dernière a donc été plutôt calme, et je n’ai absolument aucune excuse pour retarder davantage la sortie de la v6.6, alors la voici.

Il y a une poignée de correctifs aléatoires partout, et à part quelques correctifs plus importants apportés au pilote r8152, tout est assez petit. Vous trouverez ci-dessous le petit journal de la semaine dernière pour tous ceux qui veulent vraiment avoir une idée des détails. C’est assez court pour faire défiler.

Cela signifie évidemment que la fenêtre de fusion pour la version 6.7 s’ouvre demain, et j’apprécie le nombre de demandes d’extraction précoces que j’ai alignées, avec plus de 40 prêtes à être lancées. Cela me facilitera un peu la tâche, puisque je serai sur la route pendant la première semaine de la fenêtre de fusion.

Linus

Il y a environ deux mois, Linux 6.5 a été publié avec la prise en charge initiale de l’USB4 v2 avec une bande passante allant jusqu’à 80 Gbit/s, d’autres mises à jour de la prise en charge de Rust, le multithreading simultané (SMT) pour l’architecture Loongarch ainsi que la possibilité de construire le noyau Loongarch avec le compilateur Clang. , l’ajout de l’extension d’autorisation-indirection (PIE) d’arm64 pour les futures fonctionnalités de sécurité, la prise en charge des cartes NVIDIA IGX Orin et Jetson Orin Nano et de nombreux autres changements.

Version Linux 6.6

Points forts de Linux 6.6

Certains changements et mises à jour notables apportés au noyau Linux 6.6 incluent :

  • Prise en charge matérielle de la pile fantôme d’Intel pour empêcher les exploits. La pile fantôme fonctionne en conservant une pile secondaire (ombre) qui ne peut pas être directement modifiée. Lors de la gestion de la pile, le processeur transmet l’adresse de retour à la fois à la pile normale et à la pile fantôme spéciale autorisée. Au retour, le processeur affiche la copie fantôme de la pile et la compare à la copie normale de la pile. Si les deux diffèrent, le processeur génère une erreur de protection de contrôle, ce qui peut empêcher les exploits qui tentaient de modifier la pile. Cette implémentation prend en charge la pile fantôme sur les noyaux 64 bits uniquement, avec la prise en charge du 32 bits uniquement via l’émulation IA32 et uniquement pour l’espace utilisateur. Lisez l’article LWN pertinent pour plus d’informations.
  • Planificateur de tâches EEVDF – Le planificateur EEVDF (« Early Eligible Virtual Deadline First ») remplace CFS qui a été fusionné dans Linux 2.6.23. Le nouvel algorithme est conçu pour garantir que les processus qui ne reçoivent pas l’attention qu’ils méritent soient automatiquement sélectionnés la prochaine fois, tandis que les processus qui ont obtenu plus que ce qu’ils méritaient sont « punis ». Cela se fait de manière propre et algorithmique, alors que CFS utilisait des heuristiques et des boutons réglables pour tenter de deviner quels processus nécessitaient plus d’attention. Le nouvel ordonnanceur de l’EEVDF devrait améliorer la latence des tâches qui seraient laissées de côté par CFS tout en permettant à d’autres tâches d’être systématiquement surprogrammées. Ce document de recherche (PDF) fournit plus de détails.
  • E/S directes asynchrones plus rapides grâce à io_uring avec une amélioration jusqu’à 37 % du débit/latence pour les E/S à faible profondeur de file d’attente.

Armer les changements dans Linux 6.6

Comme d’habitude, il y a eu à nouveau un grand nombre de changements et de mises à jour pour l’architecture Arm sous Linux 6.6 :

  • Gagnant
    • Allwinner T113 – Bus CAN
    • Allwinner A31/A31s – Prise en charge QSPI
    • Pilote d’horloge
      • Correction du nom du paramètre pour ccu_nkm_round_rate()
      • Implémentez CLK_SET_RATE_PARENT pour les horloges NKM, c’est-à-dire envisagez des taux parents alternatifs lors de la détermination des taux d’horloge
      • Définir CLK_SET_RATE_PARENT pour A64 pll-mipi
      • Prise en charge de la recherche de la fréquence d’horloge la plus proche (par opposition à la plus proche mais pas supérieure) pour les horloges de type NM, NKM, mux et div, comme utilisez-la pour A64 pll-video0
      • Préférer le taux parent actuel s’il est capable de générer une fréquence d’horloge idéale pour les horloges NKM
    • Arborescence des appareils – Ajouter Allwinner V3s xHCI USB
    • Nouvelle carte – Orange Pi Zero 3 (Remarque : WiFi/BT non pris en charge pour le moment)
  • Puce de roche
    • PHY -Ajout du support Rockchip RV1126 inno-dsi phy, RK3588 USB et PCIe
    • IOMMU – Supprimer les restrictions d’allocation de table de pages sur le matériel plus récent
    • Pilote d’horloge
      • Ajouter les tarifs PLL pour Rockchip RK3568
      • Ajouter l’arborescence d’horloge d’affichage pour Rockchip RV1126
    • Pilote de contrôleur PCIe – Utilisez un masque 64 bits sur l’adresse PCI 64 bits MSI pour éviter de mettre à zéro les 32 bits supérieurs
    • Configuration de configuration Arm64
      • Activer les pilotes pour la carte Odroid-M1
      • Activer GPIO_SYSCON
      • Activer le pilote de mémoire Rockchip OTP
      • Activer PHY_ROCKCHIP_NANENG_COMBO_PHY
    • Nouveaux appareils et cartes – N/A
  • Amlogic
    • Watchdog – Ajout de la prise en charge des SoC Amlogic-T7
    • Pilote IRQ – Nouveau pilote pour les SoC Amlogic C3
    • Pilote d’horloge
      • dt-bindings : expose tous les identifiants d’horloge Amlogic
      • Migrer les contrôleurs d’horloge Amlogic gxbb dt-bindings vers le schéma
    • Divers autres changements de pilote
      • Ajouter des domaines d’alimentation C3
      • Inclure explicitement les inclusions DT correctes dans les pilotes Amlogic SoC
      • Correctif pour éviter un déréférencement potentiel de pointeur NULL dans meson_sm
      • Fusion de genpd-v6.5-rc1-1 pour déplacer les pilotes genpd amlogic
    • Modifications d’ARM64 DT pour Linux 6.6 :
      • Ajouter le support initial pour l’A311D2
      • Ajoutez gpio_intc, domaine d’alimentation pour le SoC C3
      • Encore quelques corrections et nettoyages de liaisons DT
    • Nouvelles cartes – Carte Amlogic AN400 (Amlogic T7/A311D2), Khadas VIM4
  • Samsung
    • Pilote PHY – Prise en charge USB Samsung Exynos850
    • Pilotes – Nettoyage mineur des en-têtes et des entrées du responsable pour les pilotes Samsung SoC.
    • Modifications de DTS ARM pour Linux 6.6
      • Galaxy S II : corriger la taille physique de l’écran LCD.
      • Ajoutez des cartes Samsung Galaxy Tab 3 8.0 (Exynos4212).
      • Famille Galaxy S3 : ajoutez un connecteur USB et USB OTG. Le Full USB OTG ne semble toujours pas fonctionner, mais au moins le HDMI s’est amélioré et dtbs_check est content.
      • Corrigez les problèmes signalés par dtbs_check et W=1 : adresses d’unité, utilisez le suffixe ‘gpios’ sur ‘gpio’, mettez à jour le nœud de périphérique i2c-arb vers une liaison plus récente.
      • Peu de nettoyages d’espaces blancs.
    • Modifications du Samsung DTS ARM64
      • Ajoutez des compatibles dédiés pour le bloc PWM.
      • Ajoutez PWM à la carte ExynosAutov9 SADK.
      • Peu d’espaces blancs et autres nettoyages.
    • Nouveaux appareils – Cartes Samsung Galaxy Tab 3 8.0 (modèles WiFi, 3G et LTE)
  • Qualcomm
    • Pilote PHY
      • Ajouter la prise en charge Qualcomm SA8775p PCIe, le pilote M31 USB PHY
      • Qualcomm SM8150 combo PHY avec refonte du pilote QMP PCIe
    • Moteur DMA – Prise en charge des moteurs dmaengine Qualcomm SM6115 et QCM2290
    • Pilote du contrôleur PCIe :
      • Ajout de la prise en charge de DT et de pilotes pour le vote de la bande passante d’interconnexion pour les interconnexions « pcie-mem » et « cpu-pcie »
      • Correction de la propriété DT « compatible » SDX65 cassée
      • Configurez le contrôleur pour que l’horloge principale du bus MHI soit désactivée dans les états ASPM L1.x
      • Utiliser la restriction d’alignement du noyau EPF dans le pilote EPF MHI
      • Ajouter la prise en charge de MHI et Endpoint eDMA
      • Ajoutez la prise en charge du Snapdragon SM8450 à la prise en charge du pilote EPF MHI
      • Utilisez iATU pour les transferts EPF MHI inférieurs à 4K afin d’éviter la latence de configuration eDMA
      • Ajouter la liaison sa8775p DT et la prise en charge des pilotes
    • Pilote d’horloge
      • Pilote du contrôleur d’horloge global Qualcomm IPQ5018
      • La structure de bus principal MSM8996 prend en charge MSM8996 Pro.
      • Des réinitialisations liées au réseau sont ajoutées sur IPQ4019
      • Les fournitures d’horloge du contrôleur d’horloge GPU SM6350 sont corrigées.
      • Le contrôleur d’horloge vidéo SM83550 est étendu pour prendre en charge le SC8280XP.
      • Et plein d’autres (petits) changements dont la liste est trop longue pour être postée ici…
    • Pilote Pincontrol
      • Prise en charge du contrôle des broches Qualcomm SM8350 et SM6115 LPASS (Low Power Audio Sub-System)
      • Prise en charge du contrôle des broches Qualcomm PMX75 et PM7550BA (gestion de l’alimentation)
      • Prise en charge du contrôle des broches Qualcomm PMC8180 et PMC8180C (gestion de l’alimentation)
    • La mise en réseau
      • Le pilote Qualcomm Wi-Fi 7 (ath12k) bénéficie d’une prise en charge PHY à débit extrêmement élevé (EHT)
      • Ajout de la prise en charge des puces Bluetooth ualcomm WCN3988 et WCN7850
    • Nouveaux SoC
      • Qualcomm IPQ5018 pour les points d’accès sans fil
      • Qualcomm SM4450 (Snapdragon 4 Gen 2), nouvelle plate-forme de téléphonie mobile bas de gamme.
    • Mises à jour ARM32 DTS
      • Les horloges parents des contrôleurs d’horloge GCC et LCC sont introduites sur MDM9615.
      • La nouvelle représentation RPM est introduite sur plusieurs plates-formes. Les noms des canaux ADC de tension sont corrigés sur plusieurs plates-formes.
      • APQ8064 obtient une définition pour GSBI4.
      • L’horloge XO pour SDHCI est corrigée, tout comme le nom du nœud USB, sur IPQ4019. Le nom du nœud USB est également corrigé pour le SDX55.
      • Le PMIC correct est inclus sur le SDX65 MTP.
      • La propriété incorrecte spi-max- Frequency est supprimée des contrôleurs sur IPQ8064 et MSM8960.
      • OCMEM et le sous-système d’affichage sont ajoutés à MSM8226.
      • Une ligne de réinitialisation est ajoutée au PM8941 et au Dragonboard APQ8074, tandis que quelques propriétés de l’écran tactile de la tablette Sony Xperia Z2 sont corrigées.
    • Mises à jour Arm64 DTS pour Linux 6.6
      • Une définition partagée du RDP IPQ5332 est introduite, tout comme les LED et boutons basés sur GPIO.
      • IPQ9574 – RDP433 USB, des cartes de refroidissement du processeur et des régulateurs sont ajoutés.
      • MSM8916 – La mezzanine de la caméra D3 est améliorée et refactorisée selon ses propres dts. Le Samsung Galaxy S4 Mini prend en charge son PMIC avec chargeur, tandis que les Samsung Galaxy J5 et E5 bénéficient de la prise en charge de l’écran tactile.
      • MSM8939 – Quelques correctifs et une prise en charge initiale du Samsung Galaxy A7 sont ajoutés.
      • MSM8996 – Prise en charge de la mise à l’échelle de la structure du bus de cache, une interruption manquante pour le contrôleur USB2 est ajoutée. L’alimentation en écran tactile du Xiaomi Mi 5 est corrigée et quelques autres nettoyages sont introduits sur d’autres appareils.
      • MSM8998 – Contrôleur d’affichage introduit, quelques correctifs d’horloge sont introduits et les domaines d’alimentation manquants sont ajoutés pour le sous-système multimédia iommu.
      • Les régions de mémoire réservées et les listes GPIO réservées sont mises à jour pour les IDP QDU/QRU1000.
      • QCM2290 – Ajout du PHY USB3. La carte RB1 gagne des régulateurs et le GPU est activé pour le RB2.
      • SA8775P – La prise en charge PCIe et Ethernet est introduite et activée pour la carte Ride.
      • SC7180 – L’intégration PSCI est refactorisée pour permettre la prise en charge des appareils avec le micrologiciel Qualcomm. BWMON est introduit, parallèlement au vote de bus basé sur CPUfreq.
      • SC8180X – Un certain nombre de correctifs. pmic_glink est introduit et câblé sur les appareils Primus et Lenovo Flex 5G pour prendre en charge les écrans externes.
      • SC8280XP – L’interconnexion SCM manquante est ajoutée et le PDC est marqué comme parent de réveil de TLMM. Sur le CRD, le gpio pour vreg_misc_3p3 est corrigé et quelques régulateurs sont renommés pour s’aligner sur les schémas. Le Lenovo Thinkpad X13s gagne le voyant d’activité de la caméra et un ensemble de GPIO précédemment réservés est libéré.
      • La plate-forme SA8540P Ride bénéficie du support RTC. SDM670 – La mise à l’échelle du processeur et de la fréquence L3 est ajoutée. Le PDC est introduit et câblé en tant que parent de réveil du TLMM.
      • SDM845 – Le contrôleur UFS obtient la description du chemin d’interconnexion, les informations sur le domaine d’alimentation sont ajoutées à GCC et la fréquence minimale de l’UFS ICE est corrigée. Sur RB3, la région de mémoire de démarrage continue est décrite et le sous-système de caméra est activé. Sur le Lenovo Yoga C630, une alimentation manquante pour le panneau d’affichage est ajoutée et le débogage
        L’UART est introduit.
      • SDX75 – Les domaines d’alimentation RPMh et le contrôleur SPMI sont introduits, le PMIC PMX75 est décrit et ajouté à l’IDP.
      • SM6115 – La description du GPU est ajoutée et l’affichage est activé sur le Lenovo Tab P11.
      • SM635 – BWMON est introduit pour la mise à l’échelle LLCC et DDR. L’affichage et le GPU sont ajoutés et le PDC est enregistré comme parent de réveil de TLMM.
      • SM6375 – La mise à l’échelle du cache L3 est introduite.
      • SM8150 – La compatibilité DSI PHY et une interruption pour I2C7 sont corrigées et sur les Sony Xperia 1 et 5, la taille ramoops pmsg est corrigée.
      • SM8250 – Les BWMON sont introduits pour la mise à l’échelle DDR et LLCC, le nœud UFS gagne des chemins d’interconnexion, SMMU est marqué comme cohérent DMA et les coefficients de puissance dynamiques sont mis à jour. Sur Sony Xperia 0 II et 5 II, les noms des lignes GPIO sont mis à jour.
      • SM8350 – Les états de veille manquants du cluster et les interruptions LMH sont ajoutés, les compatibilités CPU sont corrigées et la prise en charge APR et LPASS pinctrl est introduite. Le HDK prend en charge la carte USB et le PMK8350 est ajouté.
      • SM8450 – La prise en charge des statistiques RNG et RPMh est ajoutée, la gestion ICE est extraite du nœud UFS et le sous-système d’affichage obtient un chemin d’interconnexion manquant. La description thermique est améliorée pour le HDK.
      • SM8550 M-TP et QRD, le pmic_glink est introduit pour fournir une sortie DisplayPort. Une alimentation de régulateur manquante est également ajoutée.
      • Quelques plates-formes qui partagent les constantes d’identifiant de ressource du domaine de puissance RPMH sont migrées vers de nouvelles définitions génériques. Les noms de canaux ADC sont généralisés sur divers PMIC.
      • Une variété de périphériques acquièrent le type de châssis et la constante GIC_SPI remplace le 0 sur quelques plates-formes différentes.
    • Armer les mises à jour defconfig – N/A
    • Mises à jour de la configuration d’Arm64
      • Marquez le contrôleur d’horloge global MSM8996 comme intégré, pour éviter les problèmes de démarrage.
      • Le contrôleur d’horloge GPU SC8280XP est activé pour activer la prise en charge du GPU.
      • Une série de pilotes nécessaires au démarrage de la plate-forme IPQ5018 est activée
      • Le PHY Ethernet pour activer Ethernet sur le SA8775P est activé.
    • Nouveaux appareils et cartes
      • Carte RDP432-C2 (IPQ5018)
      • Planche de transport (SA8775P)
  • MédiaTek
    • Contrôle thermique
      • Divers correctifs pour Mediatek LVTS
      • Supprimez dev_err_probe() redondant, car la fonction sous-jacente l’a déjà appelé, du capteur Mediatek
    • PHY – Mises à jour de l’horloge du pilote Mediatek dsi
    • SMMU – Ajouter la prise en charge MT8188 IOMMU
    • SoC audio – Prise en charge de Mediatek MT7986 (Filogic 830)
    • Mise en réseau – Ajoutez la prise en charge Bluetooth pour Mediatek MT2925
    • DRM Suivant
      • Petits nettoyages mtk-dpi
      • DisplayPort : prend en charge eDP et aux-bus
      • Correction du symbole non initialisé
      • Ne vérifiez pas le retour 0 après avoir appelé platform_get_irq()
      • Convertir en plate-forme supprimer le rappel renvoyant le vide
      • Résoudre les problèmes de couverture
      • Corriger une fuite de mémoire potentielle en cas d’échec de vmap()
      • Correction de l’avertissement void-pointer-to-enum-cast
      • Supprimer les avertissements W=1 du GPU
  • Autres nouvelles plates-formes matérielles et SoC Arm
    • Intel – SoC Agilex5 FPGA avec cœurs Cortex-A76/A55
    • Texas Instruments – AM62P5, une variante de la famille Sitara AM62x existante
  • Modifications liées au Raspberry Pi
    • Ajoutez la prise en charge des écrans Raspberry Pi suivants :
      • DFROBOT DRF0678 Tactile capacitif 7 pouces 800 × 480 TFT DSI
      • DFROBOT DRF0550 Tactile capacitif 5 pouces 800×480 TFT DSI

Mises à jour RISC-V Linux 6.6

Les travaux sur l’architecture RISC-V se poursuivent avec certains des changements, notamment :

  • Prise en charge des nouvelles interfaces d’arborescence de périphériques « riscv,isa-extensions » et « riscv,isa-base » pour tester les extensions
  • Prise en charge de l’accès de l’espace utilisateur aux compteurs de performances
  • Prise en charge de plus d’instructions dans kprobes
  • Les noyaux de crash peuvent être alloués au-dessus de 4 Go
  • Prise en charge de KCFI
  • Prise en charge des ELF dans les configurations !MMU
  • ARCH_KMALLOC_MINALIGN a été réduit à 8
  • mmap() utilise par défaut des adresses de taille SV48, avec des adresses plus longues cachées derrière un indice (similaire à Arm et Intel)
  • Divers correctifs et nettoyages
  • Tête en T Alibaba TH1520
    • Changez les fichiers TH1520 en double licence (GPL-2.0 ou MIT)
    • Ajoutez la carte BeagleV Ahead (suffisante uniquement pour démarrer sur une console, avec des travaux en cours sur les côtés MMC, horloges et Ethernet)
  • Allwinner D1 – Pilote pour les contrôleurs CAN Bus (testé sur Lichee Panel RV86), ajouter le nœud D1 GPADC dans le fichier DT
  • StarFive JH7110
    • PHY – Prise en charge DHPY Rx, USB et PCIe
    • Pilotes d’horloge ajoutés
    • Ajout du pilote ASoC (I2S)
    • Ajout de la prise en charge de QSPI
    • Arborescences de périphériques pour Linux 6.6
      • Liaisons pour obtenir les définitions d’ID d’horloge à partir des en-têtes de liaison. Les obtenir (ainsi que les liaisons syscon) a débloqué une série de éléments figurant sur la liste. Sont ajoutés : de nouveaux contrôleurs d’horloge et sycons, la prise en charge d’Ethernet, des capteurs thermiques, des PHY USB et PCIe, hwrng, mmc et quelques autres encore pour le VisionFive v2.
      • Les VisionFive et BeagleV Starlight d’origine bénéficient également du support du capteur thermique, car celui-ci est pris en charge par le même pilote. Ces changements rendent la carte réellement utilisable avec
        autre chose qu’un initramfs.
      • La prise en charge de la superposition via l’indicateur -@ défini lors de la création de dtb est également ajoutée.

MIPS « nettoyages et correctifs »

Il ne se passe pas grand-chose sur MIPS sous Linux 6.6 avec quelques correctifs ici et là :

  • MIPS : TXx9 : effectuez des vérifications d’erreur PCI sur votre propre ligne
  • arch/mips/configs/*_defconfig nettoyage
  • MIPS : VDSO : exporter sous condition __vdso_gettimeofday()
  • Mips : loongson3_defconfig : activer le pilote ast drm par défaut
  • mips : supprimer
  • mips : remplacez #include par #include
  • mips : supprime les #include inutiles
  • MIPS : Loongson64 : correction de plus d’attributs __iomem
  • MIPS : loongson32 : Supprimer regs-rtc.h
  • MIPS : loongson32 : Supprimer regs-clk.h
  • MIPS : DT plus explicite incluant les nettoyages
  • MIPS : la correction explicite du DT inclut le nettoyage
  • Rétablir MIPS : Loongson : correction d’une erreur de construction lors de make modules_install
  • MIPS : ne jouez avec CHECKFLAGS que si need-compiler'
  • MIPS : correction de la régression de CONFIG_CPU_DADDI_WORKAROUNDS modules_install
  • MIPS : inclure explicitement les inclusions DT correctes

Pour plus de détails, vous pouvez consulter le journal complet des modifications de Linux 6.6 avec les messages de validation générés uniquement avec la commande git log v6.5..v6.6 --stat. Des informations supplémentaires peuvent également être trouvées sur le site Web KernelNewbies.

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

YouTube video