Selepas dua bulan pembangunan, Linus Torvalds mengeluarkan kernel tersebut. Linux 6.11. Antara perubahan yang paling ketara: sokongan untuk operasi penulisan atom pada peringkat blok, sokongan untuk operasi bind() dan listen() dalam io_uring, mekanisme baharu untuk menyekat pengendali gangguan perisian, keupayaan untuk menulis kepada fail boleh laku yang dicerminkan memori, sokongan untuk menulis pemacu peranti blok dalam bahasa Rust, pengoptimuman panggilan getrandom(), pelaksanaan baharu AES-GCM.
Versi baharu termasuk 15130 pembaikan daripada 2078 pembangun, saiz tampalan ialah 85 MB (perubahan mempengaruhi 13282 fail, 985857 baris kod telah ditambah, 268915 baris telah dipadamkan). Keluaran terakhir mempunyai 14564 pembetulan daripada pembangun 1989, saiz patch ialah 41 MB (separuh saiz patch kernel 6.11). Kira-kira 46% daripada semua perubahan yang diperkenalkan dalam 6.11 adalah berkaitan dengan pemacu peranti, kira-kira 17% perubahan berkaitan dengan pengemaskinian kod khusus untuk seni bina perkakasan, 10% berkaitan dengan susunan rangkaian, 5% berkaitan dengan sistem fail dan 3% adalah berkaitan dengan subsistem kernel dalaman.
Inovasi utama dalam kernel 6.11:
- Subsistem cakera, I/O dan sistem fail
- Sokongan untuk operasi tulis atom pada peringkat blok telah dilaksanakan, di mana sama ada keseluruhan set blok yang ditentukan atau tiada blok ditulis pada pemacu, yang membolehkan anda melindungi daripada situasi di mana, selepas kegagalan perkakasan, hanya sebahagian daripada blok ditulis, manakala maklumat lama kekal di bahagian lain. Untuk mendayakan mod tulis atom, bendera RWF_ATOMIC telah ditambahkan pada panggilan sistem pwritev(). Maklumat tentang sokongan penulisan atom (atomic_write_unit_min, atomic_write_unit_max dan atomic_write_segments_max) berhubung dengan fail individu boleh diperoleh menggunakan fungsi statx().
- Menyediakan sokongan untuk menulis kepada fail boleh laku yang dikaitkan dengan proses yang sedang berjalan. Sebelum ini, seperti dalam sistem seperti Unix yang lain, kernel akan memaparkan ralat apabila cuba menulis ke fail boleh laku proses yang sedang berjalan. Sekatan ini telah dialih keluar kerana ia tidak mempunyai makna praktikal.
- Keupayaan untuk membangunkan pemacu peranti blok dalam bahasa Rust telah dilaksanakan. Sebagai contoh, pemacu rnull telah ditambahkan pada kernel, yang merupakan analog pemacu null_blk, yang ditulis dalam bahasa Rust.
- Dalam sistem fail Btrfs, pilihan pelekap "rescue=" melaksanakan sokongan untuk mod "ignoremetacsums" dan "ignoresuperflags" baharu, yang boleh digunakan untuk mengalihkan beberapa semakan ke ruang pengguna apabila memulihkan FS selepas kegagalan. Pelaksanaan operasi kumpulan blok yang kembali secara dinamik telah dibuat semula untuk menghapuskan berlakunya situasi kekurangan ruang kosong apabila sistem fail tidak sepenuhnya penuh.
- Sistem fail ntfs3 menyokong atribut "mampat" dan "tidak berubah", yang mentakrifkan fail mampat dan tidak boleh diubah.
- Dalam sistem fail F2FS dan Ext4, pemprosesan nama fail tidak sensitif huruf besar (casefold) dipermudahkan dengan menyimpan nama dalam bentuk rentetan qstr tanpa penukaran kes yang tidak perlu.
- Dalam sistem fail Ext4, pelaksanaan fungsi jbd2_transaction_committed dioptimumkan untuk meningkatkan prestasi pada pemacu yang sangat pantas (dalam ujian, peningkatan dalam operasi diproses sesaat sehingga 20% telah dicatatkan).
- Panggilan sistem statx() membenarkan menghantar penunjuk NULL dan bukannya rentetan kosong dengan laluan fail jika bendera AT_EMPTY_PATH ditetapkan.
- Panggilan sistem open_by_handle_at() telah melonggarkan semakan kebenaran fail sekiranya tiada kuasa CAP_DAC_READ_SEARCH untuk mencari ruang nama awal. Sebelum ini, keperluan untuk kuasa CAP_DAC_READ_SEARCH pada ruang nama awal menghalang panggilan sistem open_by_handle_at() daripada digunakan dalam bekas.
- Keupayaan panggilan sistem listmount() dan statmount() telah diperluaskan. Menambahkan bendera LISTMOUNT_REVERSE ke listmount() untuk memaparkan kandungan jadual titik lekap dalam susunan terbalik (entri terbaru di bahagian atas). statmount() melaksanakan output pilihan yang ditetapkan semasa memasang sistem fail. Kedua-dua panggilan sistem dibenarkan berfungsi apabila tiada akses kepada ruang nama awal (apabila hanya akses kepada ruang nama tempatan atau luaran tersedia).
- Bcachefs FS melaksanakan sokongan untuk pemulihan telus automatik bagi data bermasalah menggunakan kod pemulihan ralat - jika ralat I/O berlaku semasa membaca atau ketidakpadanan jumlah semak dikira, blok data bermasalah akan ditulis semula secara automatik jika terdapat lebihan untuk memulihkannya.
- Perkhidmatan memori dan sistem
- Komposisi ini termasuk tampalan dengan pelaksanaan mekanisme baharu untuk menyekat pengendali gangguan perisian (BH, separuh bawah), yang memastikan penyekatan struktur data yang digunakan, tetapi tidak menyebabkan penyekatan pelaksanaan selari kod yang tidak berkaitan. Adalah diperhatikan bahawa perubahan itu memungkinkan bukan sahaja untuk mengurangkan kependaman untuk teras yang beroperasi dalam mod masa nyata, tetapi juga untuk meningkatkan prestasi teras konvensional (contohnya, untuk beberapa jenis beban kerja terdapat peningkatan dalam prestasi subsistem rangkaian. sebanyak 14.5%).
- Subsistem I/O asynchronous io_uring telah menambah sokongan untuk operasi untuk melaksanakan fungsi bind() dan listen() yang digunakan untuk mencipta soket rangkaian yang menerima sambungan.
- Menambah satu set operasi ioctl untuk NSFS pseudo-FS (NameSpace FS), digunakan untuk berfungsi dengan ruang nama. Ioctls baharu membenarkan pengecam kumpulan proses dan utas ditukar antara ruang nama pengecam proses yang berbeza (ruang nama PID). Ioctls serupa, yang membenarkan penentuan deskriptor fail proses dalam ruang nama berasingan berdasarkan pengecam pidfd, juga telah ditambahkan pada pidfd pseudo-FS.
- Untuk program BPF, sokongan telah ditambahkan untuk iterator baharu untuk bekerja dengan topeng bit, yang boleh digunakan, sebagai contoh, untuk mengulang bit individu dalam kawasan ingatan, seperti cpumask. Menambahkan mekanisme untuk menghantar pemberitahuan kepada proses dalam ruang pengguna bahawa objek struct_ops telah ditanggalkan/tidak didaftarkan. Julat jenis yang boleh digunakan dalam tatasusunan telah dikembangkan (contohnya, anda boleh mengisytiharkan tatasusunan yang mempunyai elemen dengan jenis kptr, bpf_rb_root dan bpf_list_head). Mekanisme Split BTF (Format Jenis BPF) yang lebih dipercayai telah dicadangkan, digunakan untuk menyemak jenis dalam pseudokod BPF.
- Subsistem telah ditambahkan yang membolehkan anda mengatur bekalan kuasa kepada peranti dalam susunan tertentu, sekiranya satu peranti mesti diaktifkan sebelum yang lain (contohnya, apabila mengaktifkan cip wayarles pada platform Qualcomm).
- Menambah modul "Penganalisis logik ceroboh", yang membolehkan anda membuat penganalisis isyarat logik mudah yang menggunakan GPIO dan dijalankan pada teras CPU yang berasingan.
- Menambah sokongan untuk pemalar masa jalan, yang boleh digunakan dan bukannya pembolehubah yang dimulakan sekali. Sebagai contoh, pemalar masa jalan boleh digunakan dan bukannya pembolehubah yang menyimpan penunjuk dan saiz untuk cache gigi. Pembolehubah ini ditetapkan pada masa but dan kemudian tidak pernah berubah. Ideanya adalah untuk menggantikan nilai pembolehubah sedemikian terus ke dalam arahan dalam kod, menghapuskan overhed yang berkaitan dengan manipulasi penunjuk.
- Perubahan yang berterusan daripada cabang Rust-for-Linux, berkaitan dengan penggunaan Rust sebagai bahasa kedua untuk membangunkan pemacu dan modul kernel (sokongan Rust tidak diaktifkan secara lalai dan tidak termasuk Rust sebagai kebergantungan binaan kernel yang diperlukan). Sokongan untuk Rust 1.80 telah ditambah (Rust 1.78 kekal disokong sebagai versi minimum). Selain alat yang dinyatakan sebelum ini untuk membangunkan pemacu peranti blok, versi baharu ini menambah abstraksi untuk memuatkan firmware, mengakses ruang pengguna (uaccess) dan berfungsi dengan struktur "halaman".
- Untuk sistem x86-64, panggilan sistem uretprobe() baharu telah dilaksanakan yang mengoptimumkan mekanisme surih uretprobe untuk menjejak nilai pulangan fungsi dalam aplikasi ruang pengguna.
- Menambahkan pilihan baris arahan kernel: "reserve_mem" untuk menempah kawasan memori bernama pada masa but dan "ramoops.mem_name" untuk menggunakan kawasan memori yang dicipta melalui reserve_mem dalam pstore.
- Dalam pengawal memori berasaskan cgroup, parameter "swappiness" telah ditambahkan pada fail memory.reclaim, yang melaluinya tetapan tuntutan semula memori ditentukan, membolehkan anda menukar keseimbangan antara mengalihkan halaman memori tanpa nama ke bahagian swap dan membebaskan memori halaman yang diduduki oleh cache fail.
- Menambahkan antara muka ioctl PROCMAP_QUERY untuk mencari Kawasan Memori Maya dengan lebih cekap dalam /proc/PID/maps.
- Menambahkan bendera MAP_DROPPABLE pada panggilan sistem mmap() untuk meminta memori yang tidak akan dibuang ke dalam partition swap, dan boleh dialih keluar jika memori tidak mencukupi.
- Untuk seni bina ARM64, sokongan untuk palam panas (pindah ke mod dalam talian/luar talian) CPU fizikal dan maya pada sistem dengan ACPI telah dilaksanakan.
- Untuk seni bina RISC-V, sokongan untuk palam panas memori disediakan dan sokongan untuk pemalam GCC STACKLEAK ditambah (memulakan semua pembolehubah yang disimpan pada tindanan untuk mengelakkan kebocoran maklumat daripada kernel melalui pembolehubah tidak diinisialisasi yang mungkin mengandungi sisa data yang disimpan sebelum ini. pada timbunan).
- Mekanisme peta memori EFI palsu semasa but telah dialih keluar. Mekanisme ini tidak digunakan dalam amalan dan menghalang perkembangan dalam bidang pelaksanaan sulit. mesin maya.
- Sokongan untuk platform PowerPC 40x telah dihentikan.
- Keperluan untuk versi GNU Make telah ditingkatkan - sekurang-kurangnya keluaran GNU Make yang diterbitkan pada 2013 diperlukan untuk membina kernel.
- Maya dan Keselamatan
- Tampalan bersepadu yang dengan ketara (sehingga 15 kali) mempercepatkan mendapatkan nombor rawak melalui panggilan sistem getrandom(). Pengoptimuman adalah berdasarkan penggunaan mekanisme vDSO (objek kongsi dinamik maya), yang memungkinkan untuk memindahkan pengendali panggilan sistem dari kernel ke ruang pengguna dan mengelakkan suis konteks. Memuatkan pelaksanaan panggilan sistem ke dalam ruang alamat proses secara langsung oleh kernel.
- Untuk sistem x86-64, pelaksanaan baharu algoritma penyulitan AES-GCM disertakan, menyokong penggunaan arahan vektor VAES, VPCLMULQDQ dan AVX512/AVX10 untuk pengiraan yang lebih pantas. Dalam ujian yang dilakukan, peningkatan prestasi selepas beralih kepada pelaksanaan baharu mencapai 156%. Pelaksanaan bahasa himpunan AES-GCM telah ditulis semula sepenuhnya dengan mengambil kira ketepatan, prestasi, saiz dan dokumentasi kod yang komprehensif.
- Keupayaan untuk menjalankan kernel sebagai sistem tetamu dalam persekitaran maya menggunakan sambungan pemproses AMD SEV-SNP (Secure Nested Paging), yang direka untuk memastikan operasi yang selamat dengan jadual halaman memori bersarang, telah dilaksanakan. Modul SVSM boleh digunakan untuk pengasingan tambahan akses kepada sumber daripada mesin maya (Linux Modul Perkhidmatan VM Selamat). Dalam hipervisor KVM Menambah sokongan awal untuk menjalankan sistem tetamu yang dilindungi oleh AMD SEV-SNP.
- Pengalokasi papak baldi yang berasingan telah ditambah, didayakan melalui parameter CONFIG_SLAB_BUCKETS dan memberikan perlindungan terhadap serangan menggunakan teknik "semburan timbunan".
- Panggilan ioctl telah ditambahkan pada hipervisor KVM untuk memperuntukkan memori secara proaktif kepada sistem tetamu sebelum ia sebenarnya bermula.
- Subsistem rangkaian
- Menambah parameter sysctl net.tcp_rto_min_us, yang melaluinya anda boleh mengkonfigurasi tamat masa penghantaran semula minimum untuk soket TCP.
- Keupayaan untuk memperhalusi konfigurasi pengendali gangguan untuk antara muka rangkaian menggunakan antara muka Net DIM telah ditambahkan pada utiliti ethtool.
- Оборудование
- Pemacu AMDGPU termasuk sokongan awal untuk GPU AMD RDNA4 (“GFX12”). Menambahkan sokongan untuk teknologi DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 dan MMHUB 4.1.
- Kerja diteruskan pada pemacu Xe drm (Pengurus Render Langsung) untuk GPU berdasarkan seni bina Intel Xe, yang digunakan dalam kad video keluarga Intel Arc dan grafik bersepadu, bermula dengan pemproses Tiger Lake. Sokongan yang dipertingkatkan untuk GPU berdasarkan Battlemage, Arrow Lake dan arkitek mikro Tasik Lunar.
- Dalam subsistem DRM (Pengurus Rendering Langsung), pengendali untuk parameter EDID (Data Pengenalan Paparan Lanjutan) yang ditetapkan oleh monitor telah ditulis semula.
- Pemacu i915 menambah sokongan untuk GPU Battlemage Xe2 dan mendayakan mod CMRR (Kadar Refresh Padanan Kandungan) secara lalai.
- Sokongan untuk platform SM7150 dan GPU X185 dan a505 telah ditambahkan pada pemacu DRM msm (Qualcomm Adreno GPU).
- Sokongan tambahan untuk Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeViews LCD COM 070 panel 4ULC ,AUO G197STN35, K&d kd3ne70-104ti.
- Subsistem audio menambah sokongan untuk Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 dan kod Texas Instruments PC5242.
- Pusingan terakhir perubahan telah dibuat untuk menyediakan sokongan untuk ARM SoC Snapdragon X Elite, yang menggunakan CPU Oryon 12-teras Qualcomm sendiri dan GPU Qualcomm Adreno. Cip ini bertujuan untuk digunakan dalam komputer riba dan PC, dan mendahului cip Apple M3 dan Intel Core Ultra 155H dalam banyak ujian prestasi. Perubahan yang ditambahkan pada kernel 6.11 adalah berkaitan dengan sokongan GPU Adreno X1-85 dan pengurusan kuasa. Antara peranti berasaskan Snapdragon X Elite SoC, sokongan untuk komputer riba ASUS Vivobook S15 dan Lenovo Yoga Slim7x diumumkan.
Pada masa yang sama, Yayasan Perisian Bebas Amerika Latin telah mencipta versi kernel 6.11 yang percuma sepenuhnya - Linux-libre 6.10-gnu, dibersihkan daripada elemen firmware dan pemacu yang mengandungi komponen bukan bebas atau bahagian kod dengan skop terhad oleh pengilang. Keluaran 6.11 termasuk kod pembersihan blob yang dikemas kini dalam pemacu mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth dan tas2781. Pemacu amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 dan pcie-rcar-gen4 baharu dibersihkan. Nama blob dalam fail dts (devicetree) untuk seni bina Aarch64 telah dibersihkan. Versi senyap primitif pemuatan firmware (nowait-nowarn) telah ditambah. Kod untuk mengesan primitif pemuatan firmware dalam kod Rust telah ditambah.
Sumber: opennet.ru
