Rilis kernel Linux 5.18

Setelah dua bulan pengembangan, Linus Torvalds meluncurkan rilis kernel Linux 5.18. Di antara perubahan yang paling menonjol: pembersihan besar-besaran terhadap fungsionalitas usang dilakukan, Reiserfs FS dinyatakan usang, peristiwa penelusuran proses pengguna diterapkan, dukungan untuk mekanisme pemblokiran eksploitasi Intel IBT ditambahkan, mode deteksi buffer overflow diaktifkan ketika menggunakan fungsi memcpy(), mekanisme untuk melacak panggilan fungsi fprobe telah ditambahkan, Kinerja penjadwal tugas pada CPU AMD Zen telah ditingkatkan, driver untuk mengelola fungsionalitas CPU Intel (SDS) telah disertakan, beberapa patch telah terintegrasi untuk restrukturisasi file header, dan penggunaan standar C11 telah disetujui.

Versi baru mencakup 16206 perbaikan dari 2127 pengembang (pada rilis terakhir ada 14203 perbaikan dari 1995 pengembang), ukuran patch adalah 108 MB (perubahan mempengaruhi 14235 file, 1340982 baris kode ditambahkan, 593836 baris dihapus). Sekitar 44% dari semua perubahan yang diperkenalkan di 5.18 terkait dengan driver perangkat, sekitar 16% perubahan terkait dengan pembaruan kode khusus untuk arsitektur perangkat keras, 11% terkait dengan tumpukan jaringan, 3% terkait dengan sistem file, dan 3% terkait dengan subsistem kernel internal.

Inovasi utama dalam kernel 5.18:

  • Subsistem Disk, I/O dan Sistem File
    • Sistem file Btrfs telah menambahkan dukungan untuk meneruskan data terkompresi saat melakukan operasi pengiriman dan penerimaan. Sebelumnya, saat menggunakan kirim/terima, pihak pengirim mendekompresi data yang disimpan dalam bentuk terkompresi, dan pihak penerima mengompresi ulang sebelum menulisnya. Pada kernel 5.18, aplikasi ruang pengguna yang menggunakan panggilan kirim/terima diberi kemampuan untuk mengirimkan data terkompresi tanpa pengemasan ulang. Fungsionalitas ini diimplementasikan berkat operasi ioctl baru BTRFS_IOC_ENCODED_READ dan BTRFS_IOC_ENCODED_WRITE, yang memungkinkan Anda membaca dan menulis informasi secara langsung hingga batas tertentu.

      Selain itu, Btrfs meningkatkan kinerja fsync. Menambahkan kemampuan untuk menghapus duplikat dan melakukan reflink (mengkloning metadata file dengan membuat tautan ke data yang ada tanpa benar-benar menyalinnya) untuk seluruh penyimpanan, tidak terbatas pada titik pemasangan.

    • Dalam mode I/O Langsung, dimungkinkan untuk mengakses file terenkripsi ketika fscrypt menggunakan enkripsi inline, di mana operasi enkripsi dan dekripsi dilakukan oleh pengontrol drive, bukan oleh kernel. Dengan enkripsi kernel reguler, akses ke file terenkripsi menggunakan Direct I/O masih mustahil, karena file diakses melewati mekanisme buffering di kernel.
    • Server NFS menyertakan dukungan untuk protokol NFSv3 secara default, yang sekarang tidak memerlukan pengaktifan terpisah dan tersedia ketika NFS diaktifkan secara umum. NFSv3 dianggap sebagai versi NFS utama dan selalu didukung, dan dukungan untuk NFSv2 mungkin dihentikan di masa mendatang. Efisiensi membaca isi direktori telah meningkat secara signifikan.
    • Sistem file ReiserFS sudah tidak digunakan lagi dan diperkirakan akan dihapus pada tahun 2025. Penghentian penggunaan ReiserFS akan mengurangi upaya yang diperlukan untuk memelihara perubahan seluruh sistem file terkait dengan dukungan API baru untuk pemasangan, iomap, dan buku tebal.
    • Untuk sistem file F2FS, kemampuan untuk memetakan ID pengguna dari sistem file yang dipasang telah diterapkan, yang digunakan untuk membandingkan file pengguna tertentu di partisi asing yang dipasang dengan pengguna lain di sistem saat ini.
    • Kode untuk menghitung statistik di pengendali Device-mapper telah dikerjakan ulang, yang secara signifikan meningkatkan keakuratan akuntansi di pengendali seperti dm-crypt.
    • Perangkat NVMe kini mendukung checksum 64-bit untuk pemeriksaan integritas.
    • Untuk sistem file exfat, opsi pemasangan baru "keep_last_dots" telah diusulkan, yang menonaktifkan penghapusan titik di akhir nama file (di Windows, titik di akhir nama file dihapus secara default).
    • EXT4 meningkatkan kinerja mode fast_commit dan meningkatkan skalabilitas. Opsi pemasangan “mb_optimize_scan”, yang memungkinkan peningkatan kinerja dalam kondisi fragmentasi sistem file yang besar, diadaptasi untuk bekerja dengan file dengan luasan.
    • Dukungan untuk aliran tulis di subsistem yang mendukung perangkat blok telah dihentikan. Fitur ini diusulkan untuk SSD, tetapi tidak tersebar luas dan saat ini tidak ada perangkat yang mendukung mode ini yang digunakan dan kemungkinan besar fitur tersebut tidak akan muncul di masa mendatang.
  • Layanan memori dan sistem
    • Integrasi serangkaian tambalan telah dimulai, memungkinkan pengurangan waktu yang signifikan untuk membangun kembali kernel dengan merestrukturisasi hierarki file header dan mengurangi jumlah ketergantungan silang. Kernel 5.18 menyertakan patch yang mengoptimalkan struktur file header penjadwal tugas (kernel/jadwal). Dibandingkan dengan rilis sebelumnya, konsumsi waktu CPU saat merakit kernel/terjadwal/kode berkurang sebesar 61%, dan waktu aktual menurun sebesar 3.9% (dari 2.95 menjadi 2.84 detik).
    • Kode kernel diperbolehkan menggunakan standar C11 yang diterbitkan pada tahun 2011. Sebelumnya, kode yang ditambahkan ke kernel harus mematuhi spesifikasi ANSI C (C89), yang dibentuk pada tahun 1989. Dalam skrip build kernel 5.18, opsi '—std=gnu89' diganti dengan '—std=gnu11 -Wno-shift-negative-value'. Kemungkinan untuk menggunakan standar C17 telah dipertimbangkan, tetapi dalam hal ini perlu untuk meningkatkan versi minimum yang didukung GCC, sementara penyertaan dukungan C11 sesuai dengan persyaratan saat ini untuk versi GCC (5.1).
    • Peningkatan kinerja penjadwalan tugas pada prosesor AMD dengan mikroarsitektur Zen, yang menyediakan beberapa Last Level Cache (LLC) untuk setiap node dengan saluran memori lokal. Versi baru ini menghilangkan ketidakseimbangan LLC antara node NUMA, yang menghasilkan peningkatan kinerja yang signifikan untuk beberapa jenis beban kerja.
    • Alat untuk melacak aplikasi di ruang pengguna telah diperluas. Versi kernel baru menambahkan kemampuan proses pengguna untuk membuat peristiwa Pengguna dan menulis data ke buffer jejak, yang dapat dilihat melalui utilitas penelusuran kernel standar seperti ftrace dan perf. Peristiwa pelacakan ruang pengguna diisolasi dari peristiwa jejak kernel. Status event dapat dilihat melalui file /sys/kernel/debug/tracing/user_events_status, dan registrasi event serta pencatatan data melalui file /sys/kernel/debug/tracing/user_events_data.
    • Menambahkan mekanisme untuk memantau panggilan fungsi (probe) - fprobe. API fprobe didasarkan pada ftrace, tetapi hanya dibatasi oleh kemampuan untuk melampirkan pengendali panggilan balik ke titik masuk fungsi dan titik keluar fungsi. Berbeda dengan kprobes dan kretprobes, mekanisme baru ini memungkinkan Anda menggunakan satu handler untuk beberapa fungsi sekaligus.
    • Dukungan untuk prosesor ARM lama (ARMv4 dan ARMv5) yang tidak dilengkapi dengan unit manajemen memori (MMU) telah dihentikan. Dukungan untuk sistem ARMv7-M tanpa MMU tetap dipertahankan.
    • Dukungan untuk arsitektur NDS32 mirip RISC yang digunakan pada prosesor Andes Technologies telah dihentikan. Kode telah dihapus karena kurangnya pemeliharaan dan kurangnya permintaan untuk dukungan NDS32 di kernel Linux utama (pengguna yang tersisa menggunakan kernel khusus yang dibuat dari produsen perangkat keras).
    • Secara default, membangun kernel dengan dukungan untuk format file a.out yang dapat dieksekusi dinonaktifkan untuk arsitektur alpha dan m68k, yang terus menggunakan format ini. Kemungkinan besar dukungan untuk format a.out yang lama akan segera dihapus sepenuhnya dari kernel. Rencana penghapusan format a.out sudah dibicarakan sejak 2019.
    • Arsitektur PA-RISC memberikan dukungan minimal untuk mekanisme vDSO (objek bersama dinamis virtual), yang menyediakan serangkaian panggilan sistem terbatas yang tersedia di ruang pengguna tanpa peralihan konteks. Dukungan vDSO memungkinkan penerapan kemampuan untuk dijalankan dengan tumpukan yang tidak dapat dieksekusi.
    • Menambahkan dukungan untuk mekanisme Intel HFI (Hardware Feedback Interface), yang memungkinkan perangkat keras mengirimkan informasi ke kernel tentang kinerja saat ini dan efisiensi energi setiap CPU.
    • Menambahkan driver untuk mekanisme Intel SDSi (Software-Defined Silicon), yang memungkinkan Anda mengontrol penyertaan fitur tambahan dalam prosesor (misalnya, instruksi khusus dan memori cache tambahan). Idenya adalah bahwa chip dapat dipasok dengan harga lebih rendah dengan fungsi-fungsi lanjutan terkunci, yang kemudian dapat “dibeli” dan kemampuan tambahan diaktifkan tanpa penggantian perangkat keras pada chip tersebut.
    • Driver amd_hsmp telah ditambahkan untuk mendukung antarmuka AMD HSMP (Host System Management Port), yang menyediakan akses ke fungsi manajemen prosesor melalui serangkaian register khusus yang muncul di prosesor server AMD EPYC mulai dari generasi Fam19h. Misalnya, melalui HSMP Anda dapat memperoleh data tentang konsumsi daya dan suhu, menetapkan batas frekuensi, mengaktifkan berbagai mode peningkatan kinerja, dan mengelola parameter memori.
    • Antarmuka I/O asinkron io_uring mengimplementasikan opsi IORING_SETUP_SUBMIT_ALL untuk mendaftarkan sekumpulan deskriptor file dalam buffer ring, dan operasi IORING_OP_MSG_RING untuk mengirim sinyal dari satu buffer ring ke buffer ring lainnya.
    • Mekanisme DAMOS (Skema Operasi Berbasis Pemantauan Akses Data), yang memungkinkan pelepasan memori dengan mempertimbangkan frekuensi akses memori, telah memperluas kemampuan untuk memantau operasi memori dari ruang pengguna.
    • Patch seri ketiga telah diintegrasikan dengan penerapan konsep halaman folio, yang menyerupai halaman majemuk, namun telah meningkatkan semantik dan organisasi kerja yang lebih jelas. Menggunakan buku tebal memungkinkan Anda mempercepat manajemen memori di beberapa subsistem kernel. Dalam patch yang diusulkan, fungsi manajemen memori internal diterjemahkan ke dalam folio, termasuk variasi fungsi get_user_pages(). Memberikan dukungan untuk membuat volume besar dalam kode baca-depan.
    • Sistem perakitan sekarang mendukung variabel lingkungan USERCFLAGS dan USERLDFLAGS, yang dengannya Anda dapat meneruskan tanda tambahan ke kompiler dan linker.
    • Dalam subsistem eBPF, mekanisme BTF (BPF Type Format), yang menyediakan informasi pengecekan tipe dalam pseudocode BPF, menyediakan kemampuan untuk menambahkan anotasi ke variabel yang merujuk ke area memori di ruang pengguna. Anotasi membantu sistem verifikasi kode BPF mengidentifikasi dan memverifikasi akses memori dengan lebih baik.
    • Pengendali alokasi memori baru untuk menyimpan program BPF yang dimuat telah diusulkan, yang memungkinkan penggunaan memori lebih efisien dalam situasi ketika sejumlah besar program BPF dimuat.
    • Flag MADV_DONTNEED_LOCKED telah ditambahkan ke panggilan sistem madvise(), yang menyediakan alat untuk mengoptimalkan manajemen memori proses, yang melengkapi flag MADV_DONTNEED yang ada, yang melaluinya kernel dapat diberitahu terlebih dahulu tentang pelepasan blok memori yang akan datang, mis. bahwa blok ini tidak diperlukan lagi dan dapat digunakan oleh kernel. Berbeda dengan MADV_DONTNEED, penggunaan flag MADV_DONTNEED_LOCKED diperbolehkan untuk halaman memori yang disematkan dalam RAM, yang, ketika madvise dipanggil, akan dikeluarkan tanpa mengubah status yang disematkan dan, jika terjadi akses berikutnya ke blok dan pembuatan “halaman kesalahan,” dikembalikan dengan ikatan yang dipertahankan. Selain itu, perubahan telah ditambahkan untuk memungkinkan flag MADV_DONTNEED digunakan dengan halaman memori besar di HugeTLB.
  • Virtualisasi dan Keamanan
    • Untuk arsitektur x86, dukungan telah ditambahkan untuk mekanisme perlindungan aliran perintah Intel IBT (Indirect Branch Tracking), yang mencegah penggunaan teknik konstruksi eksploitasi menggunakan teknik pemrograman berorientasi kembali (ROP, Return-Oriented Programming), di mana eksploitasi dibentuk dalam bentuk rangkaian panggilan potongan instruksi mesin yang sudah ada di memori, diakhiri dengan instruksi pengembalian kontrol (sebagai aturan, ini adalah akhir dari fungsi). Inti dari metode perlindungan yang diterapkan adalah untuk memblokir transisi tidak langsung ke badan suatu fungsi dengan menambahkan instruksi ENDBR khusus di awal fungsi dan mengizinkan eksekusi transisi tidak langsung hanya jika terjadi transisi ke instruksi ini (tidak langsung panggilan melalui JMP dan CALL harus selalu jatuh pada instruksi ENDBR, yang ditempatkan di awal fungsi).
    • Mengaktifkan pemeriksaan batas buffer yang lebih ketat dalam fungsi memcpy(), memmove() dan memset(), dilakukan pada waktu kompilasi ketika mode CONFIG_FORTIFY_SOURCE diaktifkan. Perubahan tambahan dilakukan untuk memeriksa apakah elemen struktur yang ukurannya diketahui melampaui batas. Perlu dicatat bahwa fitur yang diimplementasikan akan memungkinkan pemblokiran semua buffer overflow kernel terkait memcpy() yang teridentifikasi setidaknya dalam tiga tahun terakhir.
    • Menambahkan bagian kedua dari kode untuk implementasi terbaru dari generator nomor pseudo-acak RDRAND, yang bertanggung jawab atas pengoperasian perangkat /dev/random dan /dev/urandom. Implementasi baru ini terkenal karena menyatukan pengoperasian /dev/random dan /dev/urandom, menambahkan perlindungan terhadap munculnya duplikat dalam aliran angka acak saat memulai mesin virtual, dan beralih menggunakan fungsi hash BLAKE2s alih-alih SHA1 untuk operasi pencampuran entropi. Perubahan tersebut meningkatkan keamanan generator bilangan pseudo-acak dengan menghilangkan algoritma SHA1 yang bermasalah dan menghilangkan penimpaan vektor inisialisasi RNG. Karena algoritma BLAKE2s lebih unggul dari SHA1 dalam hal kinerja, penggunaannya juga memiliki efek positif pada kinerja.
    • Untuk arsitektur ARM64, dukungan telah ditambahkan untuk algoritma otentikasi penunjuk baru - "QARMA3", yang lebih cepat dari algoritma QARMA dengan tetap menjaga tingkat keamanan yang tepat. Teknologi ini memungkinkan Anda menggunakan instruksi ARM64 khusus untuk memverifikasi alamat pengirim menggunakan tanda tangan digital yang disimpan di bit atas penunjuk itu sendiri yang tidak digunakan.
    • Untuk arsitektur ARM64, dukungan perakitan telah diterapkan dengan penyertaan mode perlindungan di GCC 12 terhadap penimpaan alamat pengirim dari suatu fungsi jika terjadi buffer overflow pada stack. Inti dari perlindungan adalah menyimpan alamat pengirim dalam tumpukan “bayangan” terpisah setelah mentransfer kontrol ke suatu fungsi dan mengambil alamat ini sebelum keluar dari fungsi tersebut.
    • Menambahkan keyring baru - "mesin", yang berisi kunci pemilik sistem (MOK, Kunci Pemilik Mesin), didukung di bootloader shim. Kunci ini dapat digunakan untuk menandatangani secara digital komponen kernel yang dimuat pada tahap pasca-boot (misalnya, modul kernel).
    • Menghapus dukungan untuk kunci pribadi asimetris untuk TPM, yang ditawarkan dalam versi TPM yang lama, memiliki masalah keamanan yang diketahui, dan dalam praktiknya tidak diadopsi secara luas.
    • Menambahkan perlindungan data dengan tipe size_t dari integer overflow. Kode ini mencakup penangan size_mul(), size_add() dan size_sub(), yang memungkinkan Anda mengalikan, menambah, dan mengurangi ukuran dengan aman menggunakan tipe size_t.
    • Saat membangun kernel, flag “-Warray-bounds” dan “-Wzero-length-bounds” diaktifkan, yang menampilkan peringatan ketika indeks melampaui batas array dan ketika array dengan panjang nol digunakan.
    • Perangkat virtio-crypto telah menambahkan dukungan untuk enkripsi menggunakan algoritma RSA.
  • Subsistem jaringan
    • Dalam implementasi jembatan jaringan, dukungan untuk mode pengikatan port (mode terkunci) telah ditambahkan, di mana pengguna dapat mengirimkan lalu lintas melalui port hanya dari alamat MAC yang resmi. Kemampuan untuk menggunakan beberapa struktur untuk mengevaluasi keadaan protokol STP (Spanning Tree Protocol) juga telah ditambahkan. Sebelumnya, VLAN hanya bisa dipetakan langsung ke STP (1:1), dengan masing-masing VLAN dikelola secara independen. Versi baru menambahkan parameter mst_enable, ketika diaktifkan, status VLAN dikontrol oleh modul MST (Multiple Spanning Trees) dan pengikatan VLAN dapat sesuai dengan model M:N.
    • Pekerjaan dilanjutkan pada pengintegrasian alat ke dalam tumpukan jaringan untuk melacak alasan hilangnya paket (kode alasan). Kode alasan dikirim ketika memori yang terkait dengan paket dibebaskan dan memungkinkan situasi seperti pembuangan paket karena kesalahan header, deteksi spoofing rp_filter, checksum tidak valid, kehabisan memori, aturan IPSec XFRM dipicu, nomor urut TCP tidak valid, dll.
    • Dimungkinkan untuk mentransfer paket jaringan dari program BPF yang diluncurkan dari ruang pengguna dalam mode BPF_PROG_RUN, di mana program BPF dijalankan di kernel, tetapi mengembalikan hasilnya ke ruang pengguna. Paket ditransmisikan menggunakan subsistem XDP (eXpress Data Path). Mode pemrosesan paket langsung didukung, di mana prosesor XDP dapat mengarahkan paket jaringan dengan cepat ke tumpukan jaringan atau ke perangkat lain. Dimungkinkan juga untuk membuat generator perangkat lunak lalu lintas eksternal atau mengganti bingkai jaringan ke dalam tumpukan jaringan.
    • Untuk program BPF yang melekat pada cgroup jaringan, fungsi pembantu telah diusulkan untuk secara eksplisit mengatur nilai kembalian panggilan sistem, yang memungkinkan penyampaian informasi lebih lengkap tentang alasan pemblokiran panggilan sistem.
    • Subsistem XDP (eXpress Data Path) telah menambahkan dukungan untuk paket terfragmentasi yang ditempatkan di beberapa buffer, yang memungkinkan Anda memproses frame Jumbo di XDP dan menggunakan TSO/GRO (TCP Segmentation Offload/Generic Accept Offload) untuk XDP_REDIRECT.
    • Proses penghapusan namespace jaringan telah dipercepat secara signifikan, yang diperlukan pada beberapa sistem besar dengan volume lalu lintas yang besar.
  • Оборудование
    • Driver amdgpu secara default menyertakan teknologi sinkronisasi adaptif FreeSync, yang memungkinkan Anda menyesuaikan kecepatan refresh informasi di layar, memastikan gambar halus dan bebas robekan saat bermain game dan menonton video. Dukungan GPU Aldebaran diumumkan stabil.
    • Driver i915 menambahkan dukungan untuk chip Intel Alderlake N dan kartu grafis diskrit Intel DG2-G12 (Arc Alchemist).
    • Driver nouveau memberikan dukungan untuk bitrate yang lebih tinggi untuk antarmuka DP/eDP dan dukungan untuk ekstender kabel lttprs (Link-Training Tunable PHY Repeaters).
    • Pada subsistem drm (Direct Rendering Manager) pada driver armada, exynos, gma500, hyperv, imx, ingenic, mcde, mediatek, msm, omap, rcar-du, rockchip, sprd, sti, tegra, tilcdc, xen dan vc4 parameter support telah ditambahkan nomodeset, yang memungkinkan Anda menonaktifkan peralihan mode video di tingkat kernel dan penggunaan alat akselerasi rendering perangkat keras, hanya menyisakan fungsionalitas yang terkait dengan framebuffer sistem.
    • Menambahkan dukungan untuk ARM SoС Qualcomm Snapdragon 625/632 (digunakan pada smartphone LG Nexus 5X dan Fairphone FP3), Samsung Exynos 850, Samsung Exynos 7885 (digunakan pada Samsung Galaxy A8), Airoha (Mediatek/EcoNet) EN7523, Mediatek mt6582 (Prestigio PMT5008 tablet 3G), Microchip Lan966, Renesas RZ/G2LC, RZ/V2L, Tesla FSD, TI K3/AM62 dan i.MXRTxxxx.
    • Menambahkan dukungan untuk perangkat dan papan ARM dari Broadcom (Raspberry Pi Zero 2 W), Qualcomm (Google Herobrine R1 Chromebook, SHIFT6mq, Samsung Galaxy Book2), Rockchip (Pine64 PineNote, Bananapi-R2-Pro, STM32 Emtrion emSBS, Samsung Galaxy Tab S , tablet Prestigio PMT5008 3G), Allwinner (A20-Marsboard), Amlogic (Amediatek X96-AIR, CYX A95XF3-AIR, Haochuangy H96-Max, Amlogic AQ222 dan OSMC Vero 4K+), Aspeed (Quanta S6Q, ASRock ROMED8HM3), Marvell MVEBU / Armada (Ctera C200 V1 dan V2 NAS), Mstar (DongShanPiOne, Miyoo Mini), NXP i.MX (Protonic PRT8MM, emCON-MX8M Mini, Toradex Verdin, Gateworks GW7903).
    • Menambahkan dukungan untuk sistem suara dan codec AMD PDM, Atmel PDMC, Awinic AW8738, i.MX TLV320AIC31xx, Intel CS35L41, ESSX8336, Mediatek MT8181, nVidia Tegra234, Qualcomm SC7280, Renesas RZ/V2L, Texas Instruments TAS585M. Menambahkan implementasi awal driver suara untuk chip Intel AVS DSP. Memperbarui dukungan driver untuk Intel ADL dan Tegra234, dan melakukan perubahan untuk meningkatkan dukungan audio pada perangkat Dell, HP, Lenovo, ASUS, Samsung dan Clevo.

    Pada saat yang sama, Yayasan Perangkat Lunak Bebas Amerika Latin membentuk versi kernel 5.18 yang sepenuhnya gratis - Linux-libre 5.18-gnu, dibersihkan dari elemen firmware dan driver yang berisi komponen tidak bebas atau bagian kode, yang cakupannya terbatas oleh pabrikan. Rilis baru ini membersihkan driver untuk panel MIPI DBI, VPU Amphion, WiFi MediaTek MT7986 WMAC, Mediatek MT7921U (USB) dan Realtek 8852a/8852c, chip suara Intel AVS dan Texas Instruments TAS5805M. File DTS juga dibersihkan untuk berbagai SoC Qualcomm dengan prosesor berdasarkan arsitektur AArch64. Kode pembersihan gumpalan yang diperbarui di driver dan subsistem GPU AMD, MediaTek MT7915, Silicon Labs WF200+ WiFi, Mellanox Spectru Ethernet, Realtek rtw8852c, Qualcomm Q6V5, Wolfson ADSP, MediaTek HCI UART.

Sumber: opennet.ru

Tambah komentar