Linus Torvalds ได้ประกาศเปิดตัว Linux 7.3 อย่างเป็นทางการผ่าน Linux Kernel Mailing List (LKML) ก่อนหน้านี้เมื่อประมาณสองเดือนที่ผ่านมา Linux 7.2 ได้นำฟีเจอร์ใหม่หลายอย่างมาใช้งาน ได้แก่ การจัดตารางงาน (Task Scheduling) ที่คำนึงถึงแคช เพื่อเพิ่มประสิทธิภาพและลดจำนวนครั้งที่เกิด Cache Miss, การปรับปรุงตัวจัดตารางงาน GPU ให้มีความเป็นธรรมมากขึ้น, การรองรับ USB4STREAM สำหรับการสตรีมข้อมูลผ่าน USB4 และการพัฒนาระบบ Swap Table ระยะที่ 4 รวมถึงการเปลี่ยนแปลงอื่น ๆ ตอนนี้เรามาดู Linux 7.3 กัน โดยจะสรุปการเปลี่ยนแปลงสำคัญ พร้อมเจาะลึกการปรับปรุงที่เกี่ยวข้องกับสถาปัตยกรรม Arm, RISC-V และ MIPS
การเปลี่ยนแปลงสำคัญใน Linux 7.3
การเปลี่ยนแปลงที่น่าสนใจใน Linux 7.3 มีดังนี้:
- ปรับปรุงการจัดการ VRAM สำหรับ GPU ระดับเริ่มต้น – เมื่อ GPU มีหน่วยความจำ VRAM (Video RAM) ไม่เพียงพอ แอปพลิเคชันหลายตัวอาจต้องแข่งขันกันใช้ VRAM ที่มีอยู่อย่างจำกัด, Linux 7.3 เพิ่มความสามารถในการใช้ dmem cgroup เพื่อช่วยแก้ปัญหาที่เกิดขึ้นเมื่อแอปพลิเคชันสองตัวแข่งขันกันใช้หน่วยความจำ แทนที่ระบบจะหยุดการทำงานหรือปฏิเสธการจัดสรรหน่วยความจำให้แอปพลิเคชันทันที ระบบจะพยายามขับไล่บัฟเฟอร์ที่ไม่ได้รับการปกป้องออกจากโดเมนหน่วยความจำก่อน เพื่อสร้างพื้นที่ว่างสำหรับบัฟเฟอร์ที่ได้รับการปกป้อง แนวทางนี้ช่วยให้แอปพลิเคชันสามารถใช้หน่วยความจำตามสิทธิ์การปกป้องที่ระบบจัดสรรให้ได้อย่างเต็มประสิทธิภาพ โดยไม่เกิดปัญหาการแย่งใช้หน่วยความจำและการสลับจัดการหน่วยความจำไปมาซ้ำ ๆ (Ping-Ponging) สามารถดูรายละเอียดเพิ่มเติมได้ที่ pixelcluster.dev
- ปรับปรุงประสิทธิภาพ Btrfs และ Ext4
- Btrfs ได้ประสิทธิภาพ Direct I/O สามารถกลับมาทำงานด้วยประสิทธิภาพ Direct I/O ที่เคยสูญเสียไปใน Linux รุ่นก่อนหน้า สำหรับดิสก์ที่ไม่ใช่ SSD การนำความล่าช้าที่ไม่จำเป็นออกไป 1 jiffy ระหว่างการบันทึกข้อมูลในลักษณะงาน Logging ช่วยลด Latency และเพิ่ม Throughput ได้ถึง 5 เท่า ส่วน fsync เมื่อเปิดใช้งานฟีเจอร์ No-Holes (ค่าเริ่มต้นตั้งแต่ btrfs-progs 5.15) ก็เร็วขึ้น 5 เท่า
- Ext4 ปรับปรุงประสิทธิภาพการเขียนข้อมูลแบบ Direct I/O พร้อมกันหลายรายการ (Parallel Writes) และประสิทธิภาพของ fallocate() พร้อมทั้งแก้ไขปัญหาประสิทธิภาพการเขียนข้อมูลแบบ Buffered Write
- ประสิทธิภาพ FUSE io_uring ดีขึ้น – Linux 7.3 ปรับปรุงประสิทธิภาพของ เซิร์ฟเวอร์ FUSE สามารถส่งพูลบัฟเฟอร์ (Buffer Pool) ให้เคอร์เนลนำไปใช้จัดการคำขอต่าง ๆ ได้โดยตรง ซึ่งช่วยลดความต้องการใช้หน่วยความจำ นอกจากนี้ยังเพิ่มการรองรับ Zero-Copy สำหรับ FUSE io_uring เพื่อช่วยเพิ่มประสิทธิภาพการทำงานให้ดียิ่งขึ้น สามารถดูรายละเอียดได้ในเอกสารอย่างเป็นทางการ
- รองรับ Sub-Scheduler สำหรับ cgroup ผ่าน sched_ext – การพัฒนา sched_ext เสร็จสมบูรณ์แล้ว ทำ ให้รองรับการใช้ BPF Scheduler แยกกันในแต่ละ cgroup ช่วยให้แต่ละกลุ่มโปรเซสสามารถกำหนดนโยบายการจัดตารางงานของตนเองได้อย่างยืดหยุ่น และปรับประสิทธิภาพให้เหมาะกับลักษณะงานที่แตกต่างกัน สามารถอ่านรายละเอียดเพิ่มเติมได้จากบทความของ LWN
การอัปเดต Arm ใน Linux 7.3
- Allwinner
- ไดรเวอร์ Clock – ทำความสะอาดไลบรารีไดรเวอร์ Clock ของ Allwinner และเพิ่มการรองรับ RTC Clock ของ Allwinner A733
- Allwinner A733 – เพิ่มการรองรับ MMC, RTC และตัวควบคุม NMI
- การเปลี่ยนแปลง device tree สำหรับ Linux 7.3
- A10 – แก้ไขหมายเลข PMU Interrupt
- A100/A133 – เพิ่ม LRADC
- เปิดใช้การรองรับ overlay สำหรับบอร์ด sun8i-h2-plus pi
- A523 – เพิ่มตัวรับสัญญาณ IR สำหรับผู้บริโภค
- กล่องทีวี X96QPRO+ ที่ใช้ H728 ได้เอาต์พุตเสียง S/PDIF
- แก้ไขทิศทางการติดตั้ง mpu6050 ของ PinePhone
- แก้ไขสไตล์ต่างๆ
- Defconfig Arm64 – เปิดใช้ LRADC
- อุปกรณ์ใหม่
- Baijie Helper A133
- NetCube Systems OpenNMC (dobermann)
- Rockchip
- ไดรเวอร์ Clock
- ไดรเวอร์ Clock สำหรับ Rockchip RV1106
- แก้ไข spi source mux ของ Rockchip rk3576
- แสดงค่าสัมประสิทธิ์ fractional PLL ใน ไดรเวอร์ Clock Rockchip ได้ดีขึ้น
- แก้ไข dclk ของ video-port ตัวที่ 3 ของ Rockchip ไม่ให้กระทบส่วนอื่นเมื่อความเร็วเปลี่ยน
- PHY – อัปเดตการปรับ phase ของ clock lane ของ Rockchip รองรับ 2500 Mbps และการจัดการอัตรา TMDS
- Pinctrl – เพิ่มการรองรับ SoC Rockchip RK3308B และ RV1106
- IOMMU – ปรับโครงสร้างการจัดการสถานะของ Rockchip และแก้ไขการจัดการ clock, probe และ stale fault
- ตัวควบคุม CAN-DF – เพิ่มการรองรับบน RK3588
- Watchdog – เพิ่มสำหรับ RV1106
- อุปกรณ์ใหม่
- บอร์ด EmbedFire LubanCat 4 (RK3588S)
- เครื่องเล่นเกม Anbernic RG Vita-Pro (RK3576)
- บอร์ด Vicharak Vaaman2 และ Axon (RK3588)
- บอร์ด LCKFB Taishan Pi 3M (RK3576)
- บอร์ด Orange Pi 5 Pro (RK3588S)
- บอร์ด Graperain G3568 v2 (RK3568)
- เราเตอร์ HINLINK/LinkStar H28K (RK3528)
- บอร์ด Youyeetoo YY3588 (RK3588)
- Alientek DLRV1126 carrier board และโมดูลแกน CLRV1126F (Rockchip RV1126)
- LincStation E1
- ไดรเวอร์ Clock
- Amlogic
- ไดรเวอร์ Clock
- เพิ่ม Clock ของส่วน AO และอุปกรณ์ต่อพ่วงสำหรับ Amlogic A9
- แก้ไขหมายเลข Parent ที่ไม่ถูกต้องของ Clock 32 kHz บน Amlogic GXBB
- ไดรเวอร์ตัวควบคุม Meson PCIe – แก้ไขสถานะ GPIO ของ PERST# ให้คง asserted ไว้จนกว่าไฟเลี้ยงและ REFCLK จะเสถียร เพื่อแก้ปัญหาการ enumeration ล้มเหลว
- ไดรเวอร์ SoC – เพิ่มการรองรับ Amlogic SoC สำหรับ A1 และ T7
- ไดรเวอร์ Amlogic
- แก้ไข clock measure debugfs
- รองรับ clock measure สำหรับ Amlogic A1 และ T7
- Arm device tree – ไม่มี
- Arm64 device tree สำหรับ Linux 7.3
- แก้ไข PCIe และ NAND ของ Amlogic AXG
- แก้ไขการเยื้องและช่องว่างโดยรวม
- โหนด Pinctrl และ GPIO IRQ ของ Amlogic A9
- โหนด clock measure สำหรับ Amlogic T7 และ A1
- อุปกรณ์ใหม่ – ไม่มี
- ไดรเวอร์ Clock
- Samsung
- เพิ่ม SoC สำหรับมือถือระดับสูง Samsung Exynos 1580 (จากปี 2024)
- PHY – ปรับปรุงไดรเวอร์ Samsung hdptx ให้ทันสมัย ทั้งการเข้าถึงรีจิสเตอร์และการทำความสะอาดโค้ด
- Pin control – เพิ่ม SoC Samsung Exynos 8855
- Input
- อัปเดตไดรเวอร์คีย์แพดของ Samsung ให้คงการปิดอินเทอร์รัปต์ไว้ขณะอุปกรณ์ถูกปิด พร้อมทำความสะอาดตรรกะ wakeup และใช้ pm_runtime_active guard
- อัปเดตจำนวนจุดสัมผัสของ Samsung SUR40 ตามสเปก PixelSense
- ไดรเวอร์ Clock
- Exynos990: เพิ่ม Clock ที่ขาดหายไปสำหรับ Exynos990 และแก้ไข Parent ของ Clock Gate ในตัวควบคุม Clock PERIS
- ทำความสะอาด – ใช้ kzalloc_flex สำหรับการตรวจสอบ __counted_by ในไดรเวอร์ Clock ของ Samsung
- ไดรเวอร์ SoC
- แก้ไขการรั่วของ OF node ที่มีมานานมากในไดรเวอร์ PMU
- ทำความสะอาดเล็กน้อยและเพิ่ม binding ใหม่สำหรับ Exynos Auto v920 HSI0 syscon
- การเปลี่ยนแปลง DTS Arm – เพิ่ม Bluetooth ให้บอร์ด Google Manta (Nexus 10) ที่ใช้ Exynos5250
- การเปลี่ยนแปลง Samsung DTS Arm64 สำหรับ Linux 7.3
- SoC ใหม่ Exynos8855 (ชื่อการตลาด: Exynos 1580) – รองรับพื้นฐานพร้อมบอร์ดพัฒนา SMDK
- ExynosAutov920: เพิ่มโหนด HSI0 syscon
- แก้ไขเรื่องรูปแบบและการเว้นวรรคหลายจุดเพื่อให้ตรงกับสไตล์การเขียน DTS ตามที่เครื่องมือ dt-check-style รายงาน เป้าหมายคือลดคำเตือน
dt-check-style --mode strictให้เหลือศูนย์ในอนาคต
- การเปลี่ยนแปลง Defconfig – ไม่มี
- อุปกรณ์ใหม่ – Samsung Exynos8855 SMDK
- Qualcomm
- SoC ใหม่ – Qualcomm “Shikra” ที่ใช้ Cortex-A78C ซึ่งยังเป็นปริศนา
- ASoC – แก้ไข LPASS ของ Qualcomm เรื่องข้อจำกัดการเล่นเสียงและระดับเสียงของ WSA macro
- Backlight – Qualcomm WLED: ลบการเรียก
dev_err()ที่ซ้ำซ้อน - MFD
- Qualcomm SPMI PMIC: เพิ่มเอกสารของ PMG1110 และอุปกรณ์ haptics
- Qualcomm TCSR: เพิ่ม compatible สำหรับ SoC Hawi, Maili และ Shikra พร้อมเอกสารบล็อก TCSR ของ IPQ9650
- Thermal
- เพิ่มการรองรับ thermal monitor แบบ Master BandGap ของ Qualcomm
- เพิ่ม compatible ของ binding อุณหภูมิ Maili
- ไดรเวอร์ Clock
- Qualcomm Maili GCC, TCSR, RPMh และ Video Clock
- Qualcomm Shikra GCC, RPM, GPU, Display และ Audio Clock
- Qualcomm Nord Display และ Graphics Clock
- Qualcomm Glymur Camera และ EVA Clock
- Qualcomm Hawi Video Clock
- PHY
- Qualcomm SM8475 QMP USB PHY และ PCIe PHY, IPQ9650 QMP PCIe PHY, QUSB2 PHY สำหรับ SoC Shikra และการรองรับ Hawi สำหรับ QMP PCIe PHY และ UFS PHY
- ไดรเวอร์ Glymur QMP PCIe Multi-PHY และการรองรับหลาย link mode, การรองรับ IPQ5210 PCIe PHY
- Qualcomm ลบ header v8 DP ที่ซ้ำซ้อน และปรับการจัดการ runtime ของไดรเวอร์ QMP ให้ดีขึ้น
- Soundwire – การแบ่งหน้าหน่วยความจำแอดเดรส SCP ของ Qualcomm, รองรับ bus mclk_freq, เพิ่ม data port เป็น 17 พอร์ต และปรับปรุงไดรเวอร์
- Pin control
- เพิ่ม SoC Qualcomm Maili TLMM, PMIC PMG1110 และ SoC Eliza LPASS LPI TLMM
- กำหนดให้ GPIO ของ Qualcomm TLMM สามารถปลุกระบบได้โดยไม่มีเงื่อนไข
- ปรับปรุง Qualcomm ต่อยอดจากการปรับปรุง irqchip ของ Qualcomm PDC (power domain controller) ในทรีของ tglx
- แก้ไขกลุ่มพินแบบ non-urgent ของ Qualcomm IPQ806x และ IPQ9650
- ไดรเวอร์ตัวควบคุม PCIe
- เพิ่ม compatible ของ IPQ9650 พร้อม global interrupt
- เพิ่ม compatible ของ IPQ5210 พร้อม fallback ของ IPQ9574
- เพิ่ม DT binding และการรองรับไดรเวอร์สำหรับ SoC Hawi
- ข้าม GPIO ของ PERST# ที่มาจากอุปกรณ์ PCIe ปลายทาง ซึ่งควรจัดการโดยไดรเวอร์ของอุปกรณ์เหล่านั้น
- หยุดประกาศ Attention Button Present (ไม่มี SoC ของ Qualcomm รองรับ Attention Button) เพื่อให้ pciehp ใช้เหตุการณ์ Presence Detect Changed ได้
- WiFi – Qualcomm (ath12k)
- งานเชื่อมโยงโครงสร้างพื้นฐานเคอร์เนลจำนวนมาก
- รองรับ MultiPD บนแพลตฟอร์ม AHB
- IOMMU
- ARM SMMUv2
- อัปเดต device-tree binding สำหรับ SoC Qualcomm Eliza, Maili, Shikra และ IPQ9650
- เพิ่มการรองรับ Qualcomm SM8450
- แก้ไข race ใน runtime-PM, probe unwind, การรายงาน fault และการเริ่มต้น page table ของ Qualcomm
- ARM SMMUv2
- ASoC
- อัปเดตสแตกไดรเวอร์ Qualcomm
- แพลตฟอร์มใหม่: Qualcomm LPI MI2S, SM8475, WSA855X
- I2C – เพิ่มการรองรับ Qualcomm Nord SA8797P และ SA8255p
- อัปเดตไดรเวอร์
- เพิ่ม binding แพลตฟอร์ม Maili สำหรับ SCM, IMEM, AOSS และ PMIC GLINK เพิ่มการรองรับ Shikra IMEM, RPM SMD, LLCC และ UBWC รวมถึงการจัดการอินเทอร์รัปต์ LLCC ECC ที่ตั้งค่าโดย firmware
- เพิ่ม Peripheral Authentication Service แบบทั่วไปพร้อม backend SCM และ OP-TEE และย้ายไดรเวอร์ MSM DRM และ IPA มาใช้
- เพิ่ม tracepoint ของ SCM SMC-call และการส่ง minidump ที่กำหนดค่าได้ผ่าน always-on SRAM แก้ไขลำดับ pointer ของ SCM download-mode และปรับปรุง diagnostic ของ download-mode probe
- ปรับโครงสร้างฐานข้อมูลการตั้งค่า UBWC และเพิ่มการตั้งค่าของ Milos และ Shikra เพิ่มการแมป protection domain สำหรับ SA8775P และ QCS8300 รองรับ ICE เวอร์ชันใหม่ สถิติ subsystem Hawi และการระบุ SDM850
- ลดความซับซ้อนของการเลือก Kconfig และ dependency ด้านสถาปัตยกรรมของ SoC Qualcomm
- ใช้ managed resource ในเส้นทาง probe ของ EBI2 และ RPMh RSC เพื่อให้การ cleanup เมื่อเกิดข้อผิดพลาดถูกต้อง
- เพิ่มการแยกวิเคราะห์ SMEM สำหรับข้อมูลการตั้งค่า DDR และใช้บิตแอดเดรสของแบงก์สูงสุดในการเลือกการตั้งค่า UBWC ที่เหมาะสม
- เปิดใช้ generic PAS trusted-zone API สำหรับไดรเวอร์มีเดีย Iris และ Venus
- แก้ไขสถานะ retry ของ SCM probe, การ cleanup reserved-memory และ NULL dereference ใน IRQ handler ช่วงต้น เปิดใช้การเข้าถึงตัวแปร EFI ของ QSEECOM บน Asus Zenbook A16
- แก้ไขการตรวจสอบขนาด firmware ของ GENI ให้ใช้ความลึก CFG RAM ของฮาร์ดแวร์ และแก้ไขเลย์เอาต์ Thunderbolt extradata ของ PMIC GLINK
- เพิ่มเอกสาร side channel ของ Nord AOSS และพร็อพเพอร์ตี้ IMEM minidump SRAM
- ทำความสะอาด macro สถิติของ Qualcomm และ schema binding ของ WCNSS
- อัปเดต Arm64 device tree
- เพิ่มการรองรับ DeviceTree สำหรับ SoC Shikra, Clock Controller GCC และ RPM, แพลตฟอร์ม SoM CQM, CQS และ IQS รวมถึง evaluation board และเพิ่มเอกสารของ SoC Hawi และ Maili
- เพิ่มแพลตฟอร์ม Eliza CQS SoM และ EVK, QCS8550 RB5 Gen 2, Vicharak Axon Mini, HONOR MagicBook Art 14, Microsoft Surface Pro 12, Xiaomi 12 Lite, Motorola Edge 30, Sony Xperia M2 และ Motorola Moto G2
- ขยายการรองรับ Eliza ด้วย USB, การ์ด SD, ทัชสกรีน, PMIC, interconnect, thermal, CPU และ LLCC bandwidth monitor, QUPv3 และ ADSP GPR
- ขยายการรองรับ Glymur ทั้ง GPU, Camera, EVA Clock, เสียง LPASS, CoreSight, PCIe, USB, พื้นที่หน่วยความจำ IMEM และ PIL, power domain, thermal cooling และอุปกรณ์ต่อพ่วง CRD เพิ่มคำอธิบาย SoCCP, PMIC regulator, TRNG และ CPU capacity
- เพิ่มการรองรับ display, IPA, camera, USB, audio, crypto, TRNG, CoreSight และ thermal ให้แพลตฟอร์ม Kaanapali, Milos, Hamoa และแพลตฟอร์มที่เกี่ยวข้อง เพิ่มการรองรับ embedded controller สำหรับบอร์ด Hamoa และ Glymur
- ปรับปรุงคำอธิบายแพลตฟอร์มเครือข่ายด้วยการอัปเดตพอร์ต IPQ PCIe, PHY, clock, PWM, regulator และอินเทอร์รัปต์ อัปเดตคำอธิบาย CTCU, display, Iris, audio, camera, PCIe, USB-C, power domain, memory region และ thermal ในแพลตฟอร์ม Qualcomm ที่มีอยู่
- แก้ไข binding และการตรวจสอบ DeviceTree สำหรับ compatible string, legacy fallback compatible, การตั้งชื่อและรูปแบบโหนด, ช่วงแอดเดรส, clock specifier, reserved memory, regulator, GPIO และการเดินสายอุปกรณ์ต่อพ่วงของ Qualcomm
- เพิ่มคำอธิบาย PCIe bridge ของ IPQ9574 และเปิดใช้ PCIe0 และ PCIe2 สำหรับการ์ด Wi-Fi QCN92xx บน RDP454 ปรับคำอธิบาย PCIe PHY และ reset ของ IPQ5018, IPQ6018 และ IPQ8074 ให้ตรงกับ binding ของ port node
- ขยายการเปิดใช้งานแพลตฟอร์ม Shikra ด้วยคำอธิบาย Wi-Fi และ Bluetooth ของ SoM CQM และ IQS เปิดใช้ CDSP, LPAICP และ MPSS remote processor บน EVK CQM, CQS และ IQS พร้อมเพิ่ม SMP2P, QUPv3, DDR bandwidth monitor, ฮาร์ดแวร์ CPU frequency, EPSS L3 interconnect, ตาราง OPP, thermal zone, การจอง GPIO และตัวควบคุม Clock สำหรับจอแสดงผลและ GPU
- เปิดใช้เสียงบน Eliza CQS EVK พร้อมเพิ่มคำอธิบาย LPASS macro และ SoundWire เพิ่มการรองรับ PMIC ADC สำหรับ Hamoa, Monaco และ Lemans และ macro ช่องสัญญาณ ADC สำหรับบล็อก ADC รุ่นที่สาม เพิ่มการตั้งค่า minidump SRAM ในแพลตฟอร์ม Qualcomm ที่เกี่ยวข้อง
- แก้ไขการกำหนดแหล่งจ่าย vdda-phy และ vdda-pll ของ QMP PHY ในแพลตฟอร์ม Qualcomm แก้ไขการแมป PCIe IOMMU สำหรับ QCS6490, Lemans, Monaco, Talos, SM, SC และบอร์ดที่เกี่ยวข้อง แก้ไขการแมปอินเทอร์รัปต์ PDC ของ Glymur/Mahua, พร็อพเพอร์ตี้ USB HS และการตั้งค่า wakeup ตลอดจนแก้ไขตัวระบุบอร์ด การตั้งค่าพิน แหล่งจ่าย GPIO ความถี่บัสเริ่มต้น และปัญหาการตรวจสอบ DT
- เปิดใช้สถานะ idle ที่ลึกที่สุดของ X1E80100 ตั้งค่าการตรวจสอบอุณหภูมิ SPMI ADC บน SM8550 และ SM8650 เพิ่มGPU Clock Controller สำหรับ Milos และกำหนดอัตรา CCI Clock ของ SM8650
- อัปเดต Arm32 device tree
- เพิ่มการรองรับ device tree เบื้องต้นสำหรับ Sony Xperia M2 ที่ใช้ MSM8926 และ Motorola Moto G2 (2014) ที่ใช้ MSM8226
- เพิ่มทัชสกรีน, การตั้งค่าพิน Bluetooth, NFC และไฟสถานะ LED หลายสีให้ device tree ของ HTC One M8 ที่ใช้ MSM8974
- เพิ่มโหนด touchkey ที่ compatible กับ coreriver,tc360-touchkey ให้ device tree ของ Samsung ExpressATT ที่ใช้ MSM8960 และตั้งชื่อช่อง ADC ของ PM8921 XOADC
- รวมพร็อพเพอร์ตี้ IPA ที่ใช้ร่วมกันไว้ใน device tree ของ SDX55
- อัปเดต Arm64 defconfig
- เปิดใช้ไดรเวอร์ embedded controller ของอุปกรณ์อ้างอิง Qualcomm สำหรับ Hamoa และ Glymur
- เปิดใช้ไดรเวอร์เสียง DMIC สำหรับแพลตฟอร์ม Monaco และ Lemans
- เปิดใช้ไดรเวอร์ BAM-DMUX WWAN สำหรับ Shikra และแพลตฟอร์มอื่นที่ใช้ฮาร์ดแวร์ A2 BAM
- อุปกรณ์ใหม่
- Asus Zenbook A16 (UX3607OA)
- แพลตฟอร์ม Eliza CQS SoM และบอร์ด Eliza CQS EVK
- บอร์ด Vicharak Axon Mini SBC (QCS6490)
- Motorola Moto G2 (โทรศัพท์ปี 2014)
- Sony Xperia M2
- Microsoft Surface Pro 12 นิ้ว
- system-on-module และ EVK ของ Shikra IQ2390S/CQ2390M
- Xiaomi 12 Lite 5G (taoyao)
- Motorola Edge 30 (dubai)
- MediaTek
- ไดรเวอร์ MFD
- MediaTek MT6397: เพิ่มการรองรับ mt6323 AUXADC และ EFUSE
- MediaTek MT8195 SCP: เพิ่มการรองรับ SoC MT8189
- ไดรเวอร์ Clock – เพิ่ม MediaTek MT8173 MFG_TOP
- ไดรเวอร์ตัวควบคุม PCIe – เพิ่มการรองรับตัวควบคุม PCIe ใน SoC EcoNet EN7528 และ EN751221
- ไดรเวอร์ตัวควบคุม PCIe Gen3 – เพิ่ม ‘memory-region’ ของ mediatek-gen3 สำหรับบัฟเฟอร์ DMA แบบจำกัด
- WiFi (mt76):
- รองรับ MT7928
- รองรับ MT7925 NAN
- ปรับปรุงโหมดประหยัดพลังงานของ AP บน MT7996
- อัปเดตไดรเวอร์ SoC
- แก้ไขการตรวจสอบข้อผิดพลาดที่ขาดหายใน mtk-socinfo และ MODULE_DEVICE_TABLE() ที่ขาดหายในไดรเวอร์ mtk-dvfsrc
- ปรับโครงสร้างการระบุตาราง MMSYS ด้วย macro โดยแยกฮาร์ดแวร์อินสแตนซ์ของคอมโพเนนต์ออกจากชนิดจริง ซึ่งเป็นเงื่อนไขเบื้องต้นสำหรับการปรับโครงสร้าง mediatek-drm
- อัปเดต Arm32
- แก้ไขปัญหาการเยื้องเล็กน้อยใน device tree ของ MT8127
- เพิ่มการรองรับ Auxiliary ADC ที่มีอยู่ใน MT6323 PM
- อัปเดต Arm64 device tree สำหรับ Linux 7.3
- แก้ไขการเยื้องและช่องว่างใน device tree บางตัว
- ปรับปรุงเอกสารสำหรับ MediaTek Mute-X
- แก้ไขคำเตือน dtbs-check
- บอร์ด MT8390 Tungsten: ลบเซลล์ที่ไม่จำเป็น
- SoC MT6795: ลบพร็อพเพอร์ตี้ที่เลิกใช้ใน UART DMA
- RTC ของ PMIC MT6359 ใช้ compatible string ที่ถูกต้องแล้ว
- SoC MT8183/86/88/92/95 รองรับ UART DMA IP
- MT8186 ได้ตาราง CCI OPP ใหม่เพื่อแก้ปัญหาล็อก
- Chromebook ที่ใช้ MT8188/83 ได้แหล่งจ่าย SPI NOR ที่ถูกต้อง
- MT8192 Asurada ยกเลิกการรองรับพอร์ต MMC1 ที่ไม่ได้ใช้
- EVK MediaTek Genio 510/700/1200 และ Radxa NIO-12L ได้ทรีแหล่งจ่ายไฟ PMIC ที่สมบูรณ์พร้อมการกำหนดแหล่งจ่ายที่ถูกต้อง
- อัปเดต Defconfig – ไม่มี
- อุปกรณ์ใหม่ – ไม่มี
- ไดรเวอร์ MFD
- แพลตฟอร์มฮาร์ดแวร์ Arm และ SoC ใหม่ๆ อื่นๆ
- Altera – SoC FPGA Agilex72 ที่ใช้ Cortex-A720
- Apple – รองรับ SoC M3 Pro, Max และ Ultra (ต่อยอดจากการรองรับ M3 พื้นฐานใน Linux 7.2)
- NVIDIA – Lenovo ThinkEdge SE70 เดสก์ท็อปบ็อกซ์ (Jetson Xavier NX)
- NXP
- โมดูล Variscite DART-MX8M PLUS และบอร์ด Sonata
- โมดูล Variscite VAR-SOM-MX8 QuadMax และบอร์ด Symphony
- Texas Instruments
- BeagleBadge (AM62L3)
- Variscite VAR-SOM-AM62 และบอร์ด Symphony
- การเปลี่ยนแปลงเฉพาะ Raspberry Pi
- V3D – ลดดีเลย์ autosuspend ของ PM runtime จาก 100ms เหลือ 50ms ดีเลย์ 100ms เดิมเป็นเพียง workaround เพราะดีเลย์ที่สั้นกว่านั้นทำให้เกิดรอบ runtime suspend/resume ถี่ขึ้นบน BCM2711 (Raspberry Pi 4) ซึ่งไปกระตุ้นบั๊ก coherence ของแคชและ MMU จน GPU ค้างแบบสุ่ม เมื่อบั๊กเหล่านั้นถูกแก้แล้ว จึงไม่จำเป็นต้องใช้ดีเลย์ที่ยาวเกินจริงอีกต่อไป การลดลงเหลือ 50ms ทำให้ปล่อย power domain ของ GPU ได้เร็วขึ้นเมื่อ GPU ว่าง
- VC4
- แก้ไขการจัดสรร binner slot ที่ล้มเหลวบน GPU ที่ว่าง (บั๊กของ Raspberry Pi 3)
- ใช้ managed KMS polling เพื่อแก้ use-after-free ตอน unbind
- เพิ่มการรองรับจอ Raspberry Pi Touch Display 2 ขนาด 7 นิ้วบนบอร์ด Toradex Versin
การอัปเดต RISC-V ใน Linux 7.3
นอกจากนี้ยังมีการเปลี่ยนแปลงด้านสถาปัตยกรรม RISC-V จำนวนไม่น้อยเช่นกัน:
- เพิ่มนิยามและการตรวจพบเบื้องต้นสำหรับส่วนขยาย RISC-V ISA ได้แก่ Smcsrind, Sscsrind, Smcntrpmf, Ssccfg, Smcdeleg, Zicclsm, Ziccamoa, Ziccif, Ziccrse, Za64rs และ Ssqosid
- ปรับปรุงการทำงานของ update_mmu_cache_range() บน RISC-V ด้วย flush-by-ASID ช่วยเพิ่มประสิทธิภาพบนไมโครอาร์คิเทกเจอร์ที่รองรับการปรับแต่งที่เกี่ยวข้อง และใช้ประโยชน์จากส่วนขยาย Svinval บนไมโครอาร์คิเทกเจอร์ที่รองรับ
- ลดขนาดการจัดสรร CFI shadow stack ลงอีก (เหลือ 512MB) เพื่อประหยัดพื้นที่แอดเดรสเสมือน (และหน่วยความจำจริงในระบบที่ใช้นโยบาย overcommit แบบเข้มงวด)
- เพิ่มการรองรับ context switch ของ CPU เบื้องต้นสำหรับการติดแท็ก QoS (Ssqosid)
- เปลี่ยนโค้ดทดสอบความเร็วการเข้าถึงแบบ misaligned ของ vector ให้เป็น synchronous เพื่อหลีกเลี่ยงบั๊กหลายอย่างที่เกิดจากความไม่ synchronous ที่ไม่จำเป็น
- เปิดใช้ ARCH_HAS_ACPI_TABLE_UPGRADE สำหรับ RISC-V เพื่อช่วยดีบักตาราง ACPI (คล้าย ARM64 และ x86)
- ดึงค่า offset ของส่วน vDSO ตอน build แทนที่จะเป็นตอนรัน เพื่อลด overhead ช่วงบูต
- ใช้ assembler directive ควบคุมการใช้คำสั่งจากส่วนขยาย RISC-V ISA อย่าง Zacas และ Zabha แทนแฟล็ก -march ของคอมไพเลอร์ที่อาจส่งผลทั้งเคอร์เนล (คล้าย ARM64)
- เพิ่ม kselftest สำหรับการรองรับ kprobes ของคำสั่ง c.jal บน RISC-V
- เมื่อมี UEFI runtime service ให้ใช้บริการเหล่านั้นในการรีสตาร์ตและปิดเครื่อง
- แก้ไข ARCH_HAS_ACPI_TABLE_UPGRADE สำหรับ RISC-V โดยเพิ่มไฟล์ include ที่ขาดหายในโค้ด ACPI
- เลื่อนการจองหน่วยความจำ DMA แบบ contiguous ไปภายหลังในช่วงบูต เพื่อให้แน่ใจว่ามีการจัดสรร pool ระดับ global และ per-node ที่ถูกต้องเมื่อเปิด CONFIG_CMA_SIZE_PERNUMA
- ห้าม probe บน breakpoint handler เพื่อหลีกเลี่ยงการเรียกซ้ำไม่สิ้นสุดเข้าไปใน do_trap_break()
- แพตช์ compat vDSO ระหว่างการประมวลผล alternatives ตอนรัน ไม่ใช่เฉพาะ vDSO มาตรฐาน
- ลบองค์ประกอบสนับสนุน XIP ที่ตกค้างซึ่ง commit 9b3a2be84803 (“riscv: Remove support for XIP kernel”) มองข้ามไป
- แก้ไขการสลับ broadcast timer ในสถานะประหยัดพลังงาน ACPI LPI ด้วยการ implement เวอร์ชัน RISC-V ของ arch_get_idle_state_flags()
- แก้ไขเบ็ดเตล็ดต่างๆ ได้แก่ การลดความซับซ้อนของ makefile vDSO, การทำเครื่องหมาย default_power_off() เป็น __noreturn, การแก้เส้นทางข้อผิดพลาดในไดรเวอร์ PMU SBI perf, ความสม่ำเสมอของการใช้ตัวพิมพ์ในชื่อส่วนขยาย RISC-V, การใช้ macro BIT() ในไฟล์ include ไฟล์หนึ่ง และการแก้ไขเอกสารบางส่วน
- Alibaba T-Head (TH1520)
- DRM – th1520-dw-hdmi
- แก้ไขการตรวจสอบข้อผิดพลาดของค่าที่ส่งคืนจาก dw_hdmi_probe()
- แก้ไข callback remove()
- PWM – ใช้รูปแบบ vertical import
- Device tree – ชุดการเปลี่ยนแปลงสำหรับชิปขยาย I/O ที่เหลือบนบอร์ด LicheePi 4a ที่ใช้ TH1520
- DRM – th1520-dw-hdmi
- Canaan/Kendryte
- เพิ่ม K230 SoC AI 64 บิตบน RISC-V ซึ่งพัฒนาต่อยอดจากชิป K210
- การรองรับเบื้องต้นสำหรับ CanMV-K230 และ K230-EVB
- Microchip – Hwmon – เซนเซอร์อุณหภูมิและแรงดันของ PolarFire SoC
- Sophgo
- SG2000 เป็นชิปแบบผสม Arm/RISC-V ที่รองรับผ่านแกน Arm อยู่แล้ว ตอนนี้เพิ่มการรองรับฝั่ง RISC-V พร้อมซีรีส์ cv18xx อีกหลายรุ่น
- Device tree
- การรองรับเบื้องต้นสำหรับบอร์ด Milk-V Duo S (SG2000) และ Duo 256M (SG2002)
- อนุญาตให้ DMA multiplexer กำหนดหมายเลขช่องสัญญาณให้ตัวควบคุม DMA
- Spacemit
- Thermal control – เพิ่ม devm action เพื่อทำความสะอาดฮาร์ดแวร์อินเทอร์รัปต์ การสุ่มตัวอย่าง และรีจิสเตอร์ควบคุมบน Spacemit K1
- PHY – ไดรเวอร์ Spacemit USB3/PCIe comb PHY
- ไดรเวอร์ตัวควบคุม PCIe – เพิ่ม MODULE_DEVICE_TABLE() ที่ขาดหายเพื่อสร้างข้อมูล module alias สำหรับการโหลดโมดูลอัตโนมัติแบบ OF
- ไดรเวอร์ Clock
- เพิ่ม Clock สำหรับตัวควบคุม UFS ของ SpacemiT
- เพิ่มน Clock สำหรับ I2S ของ SpacemiT และแก้ไขต่างๆ
- การเปลี่ยนแปลง device tree
- SoC K3
- เปิดใช้การรองรับการ์ด SD
- เปิดใช้ QSPI
- แก้ไขดีเลย์การรีเซ็ตของ ETH PHY
- แก้ไข PHY ID ของ ETH
- ใช้ PDAM ID แบบ symbolic
- เพิ่มการรองรับตัวควบคุม SPI
- เพิ่มการรองรับ USB และ PHY
- เพิ่มโหนด I2S
- SoC K1
- ใช้ PDAM ID แบบ symbolic
- เปิดใช้การรองรับ cpufreq
- แก้ไขแรงดันสูงสุดของ CPU core
- บอร์ด K3
- Pico-ITX
- เปิดใช้ ALDPS บน PHY RTL8211F
- ปิด Clock 125MHz บน PHY RTL8211F
- เปิดใช้ NOR flash
- เพิ่มการรองรับ EEPROM
- โมดูล CoM260 – เพิ่มการรองรับ EEPROM
- Pico-ITX
- บอร์ด K1
- Milk-V Jupiter – เปิดใช้ CPU DVFS
- การรองรับเบื้องต้นสำหรับ Banana Pi BPI-CM6 และบอร์ด IO
- Orange Pi R2S – เปิดใช้ PCIe
- SoC K3
- StarFive
- ไดรเวอร์ตัวควบคุม PCIe
- แก้ไขการรั่วของ resource ในเส้นทางข้อผิดพลาดของ host_init()
- แก้ไขการจัดการ runtime PM และลำดับการ teardown เพื่อหลีกเลี่ยงการเข้าถึงรีจิสเตอร์ขณะไฟหรือ Clock ถูกปิด
- ตรวจสอบความล้มเหลวของการ resume runtime PM เพื่อหลีกเลี่ยงการเข้าถึงรีจิสเตอร์ขณะไฟหรือ Clock ถูกปิด
- SPI – เพิ่มการรองรับ StarFive JHB100 SFC (SPI Flash Controller)
- Device tree – เพิ่ม binding สำหรับ StarFive JHB100 PLIC
- ไดรเวอร์ตัวควบคุม PCIe
การเปลี่ยนแปลงด้าน MIPS
เช่นเคย มีการอัปเดต MIPS เพียงไม่กี่รายการ:
- เปลี่ยนโค้ด GPIO ให้ใช้ swnode
- ปรับโครงสร้างโค้ด GPIO ของ TXX9
- เปิดใช้ multi-VPE สำหรับ econet
- ทำความสะอาดและแก้ไขทั่วไป
รายการทั้งหมด:
- mips: dts: econet: อธิบายโปรเซสเซอร์ dual-VPE 34Kc
- mips: econet: เพิ่มความสามารถ multi-vpe ให้ EN751221
- MIPS: ptrace: แก้ไขการข้าม syscall ผ่าน PTRACE_SYSCALL
- mips: ลบ select ที่ไม่ได้ใช้
- MIPS: BCM47XX: แปลงปุ่มกดเป็น software node
- ssb: gpio: เพิ่มและลงทะเบียน software node สำหรับตัวควบคุม GPIO
- bcma: gpio: เพิ่มและลงทะเบียน software node สำหรับตัวควบคุม GPIO
- MIPS: ip22-gio: ลบ #include ของ <linux/mod_devicetable.h>
- MIPS: TXX9: ทำความสะอาด txx9_iocled_init()
- MIPS: TXX9: แปลง gpio_txx9 เป็นการจัดสรร GPIO base แบบไดนามิก
- MIPS: TXX9: ลบการเลือก GPIOLIB_LEGACY
- MIPS: TXX9: ใช้ตารางค้นหา GPIO สำหรับ LED ของ iocled
- MIPS: TXX9: ลด TXX9_IOCLED_MAXLEDS เหลือ 3
- MIPS: TXX9: rbtx4927: ใช้ตารางค้นหา GPIO สำหรับ LED ของ TXx9
- MIPS: TXX9: rbtx4927: ใช้ตารางค้นหา GPIO สำหรับ SIO DTR
- MIPS: TXX9: ลบ forward declaration ของ txx9_7segled_*()
- MIPS: TXX9: ลบ tx4938_spi_init() และ txx9_spi_init()
- MIPS: kernel: proc: ใช้ seq_putc() สองครั้งใน show_cpuinfo()
นอกจากนี้ สามารถดูรายละเอียดการเปลี่ยนแปลงของสถาปัตยกรรม Arm, RISC-V และ MIPS ทั้งหมดได้จาก Linux 7.3 changelog ซึ่งจัดทำขึ้นจากข้อความของ Commit ต่าง ๆ ได้ด้วยคำสั่ง git log v7.2..v7.3-rc7 --stat หรืออ่าน Changelog ได้จากเว็บไซต์ Kernelnewbies
แปลจากบทความ : Linux 7.3 release – Main Changes, Arm, RISC-V, and MIPS architectures

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT

