[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
RISC-V Linux 内核及周边技术动态第 115 期
时间:20241027
编辑:晓瑜
仓库:RISC-V Linux 内核技术调研活动
赞助:PLCT Lab, ISCAS
内核动态
RISC-V 架构支持
v1: riscv: Relocatable NOMMU kernels
Currently, RISC-V NOMMU kernels are linked at CONFIG_PAGE_OFFSET, and since they are not relocatable, must be loaded at this address as well.
v3: bpf-next: Optimize bpf_csum_diff() and homogenize for all archs
v1: Prefer sysfs/JSON events also when no PMU is provided
At the RISC-V summit the topic of avoiding event data being in the RISC-V PMU kernel driver came up. There is a preference for sysfs/JSON events being the priority when no PMU is provided so that legacy events maybe supported via json.
v2: Wire up CRC32 library functions to arch-optimized code
This patchset fixes that so that the CRC32 library functions use the optimized code. This allows users to just use the library instead of the crypto API.
v5: net-next: Add the dwmac driver support for T-HEAD TH1520 SoC
This series adds support for dwmac gigabit ethernet in the T-Head TH1520 RISC-V SoC used on boards like BeagleV Ahead and the LicheePi 4A.
This series adds support for the Microchip Inter-Processor Communication (IPC) mailbox driver.
v1: RISC-V: Enable Zicbom in usermode
Like Zicboz, by enabling the corresponding bits of senvcfg, the instructions cbo.clean, cbo.flush, and cbo.inval can be executed normally in user mode.
v5: pwm: Add pwm driver for Sophgo SG2042
Add driver for pwm controller of Sophgo SG2042 SoC.
v2: riscv: sophgo: Add ethernet support for SG2044
The ethernet controller of SG2044 is Synopsys DesignWare IP with custom clock. Add glue layer for it.
v1: perf, riscv: Wire up perf trace support for RISC-V
RISC-V does not currently support perf trace, since the system call table is not generated.
v2: Add some validation for vector, vector crypto and fp stuff
This series is partly leveraging Clement’s work adding a validate callback in the extension detection code so that things like checking for whether a vector crypto extension is usable can be done like:has_extension(
) rather thanhas_vector() && has_extension( ) which Eric pointed out was a poor design some months ago.
v1: riscv: sophgo: Add pinctrl support for SG2042
Add support for SG2042 pinctrl device.
v2: of/fdt: add dt_phys arg to early_init_dt_scan and early_init_dt_verify
Hence save the physical address when it is known at boot time when calling early_init_dt_scan for arm64 and use it at kexec time instead of converting the virtual address using __pa().
v4: riscv: interrupt-controller: Add T-HEAD C900 ACLINT SSWI
New version of T-HEAD C920 implement a fully featured ACLINT[1] device (This core is used by Sophgo SG2044). This ACLINT device provides a SSWI field to support fast S-mode IPI. Add full support for T-HEAD C900 SSWI device.
v2: kasan: RISC-V support for KASAN_SW_TAGS using pointer masking
This series implements support for software tag-based KASAN using the RISC-V pointer masking extension[1], which supports 7 and/or 16-bit tags.
v2: serial: 8250_dw: Introduce SG2044 uart support.
SG2044 relys on an internal divisor when calculating bitrate, which means a wrong clock for the most common bitrates.
v2: Accelerate KVM RISC-V when running as a guest
The KVM RISC-V hypervisor might be running as a guest under some other host hypervisor in which case the complete H-extension functionality will be trap-n-emulated by the host hypervisor.
GIT PULL: RISC-V T-HEAD Devicetrees for v6.13
v1: mmc: dw_mmc: take SWIOTLB memory size limitation into account
The Synopsys DesignWare mmc controller on the JH7110 SoC (dw_mmc-starfive.c driver) is using a 32-bit IDMAC address bus width, and thus requires the use of SWIOTLB.
v5: Add DeepComputing FML13V01 board dts
This series updates Device Tree related files to introduce the FML13V10 board from DeepComputing, which incorporates a StarFive JH7110 SoC. This board is designed for use on the Framework Laptop 13 Chassis, which has (Framework) SKU FRANHQ0001.
LoongArch 架构支持
v10: Replace fallback for IO memcpy and IO memset
I have updated the patchset, and placed the functions directly in asm-generic/io.h.
ARM 架构支持
v3: Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F)
This series adds initial SoC support for the Samsung Exynos 9810 SoC and initial board support for Samsung Galaxy S9 phone (SM-G960F), codenamed starlte.
v1: arm_pmuv3: Add support for Samsung Mongoose PMU
This series adds support to performance monitoring unit of the Samsung Mongoose CPU cores. They were released between such as Exynos 8890, 8895, 9810, 9820 and 990 (9830).
v5: iommufd: Add vIOMMU infrastructure (Part-2: vDEVICE)
Following the previous vIOMMU series, this adds another vDEVICE structure, representing the association from an iommufd_device to an iommufd_viommu.
v5: iommufd: Add vIOMMU infrastructure (Part-1)
This series introduces a new vIOMMU infrastructure and related ioctls.
v1: KVM: arm64: Mark the VM as dead for failed initializations
Syzbot hit the following WARN_ON() in kvm_timer_update_irq():
v1: perf arm-spe: Allow synthesizing of branch
v1: Add device tree for MT8188-based Chromebook “Ciri”
This series introduces the device trees for Ciri, a MT8188-based Chromebook, commercially known as the Lenovo Chromebook Duet (11”, 9).
v1: clk: sunxi-ng: h616: Reparent CPU clock during frequency changes
The H616 user manual recommends to re-parent the CPU clock during frequency changes of the PLL, and recommends PLL_PERI0(1X), which runs at 600 MHz.
v2: KVM: arm64: Errata management for VM Live migration
This is another attempt on this based on the feedback received for RFC v1. Thanks for all the discussions and suggestions.
v1: Add MediaTek APU SMC call Definition
This patch introduces the SMC calls for MediaTek APU.
v4: source filtering for multi-port output
In our hardware design, by combining a funnel and a replicator, it implement a hardware device with one-to-one correspondence between output ports and input ports.
v2: net-next: net: sparx5: add support for lan969x switch device
This series is the second of a multi-part series, that prepares and adds support for the new lan969x switch driver.
X86 架构支持
GIT PULL: platform-drivers-x86 for 6.12-3
Here is the second round of fixes for platform-drivers-x86 for 6.12.
v1: perf cap: Add __NR_capget to arch/x86 unistd
As there are duplicated kernel headers in tools/include libc can pick up the wrong definitions. This was causing the wrong system call for capget in perf.
v1: Mypy and pylint build support
Support building perf checking the python code with mypy and/or pylint. Currently there are too many errors to make this a default.
v4: x86 Heterogeneous design identification
This series adds topology identification for Intel and AMD processors and uses this identification in the AMD CPPC code to identify the boost numerator.
v9: Dell AWCC platform_profile support
This patch adds platform_profile support for Dell devices which implement WMAX thermal interface, that are meant to be controlled by Alienware Command Center (AWCC).
v1: net-next: Mitigate the two-reallocations issue for iptunnels
The same pattern is found in ioam6, rpl6, and seg6. Basically, it first makes sure there is enough room for inserting a new header.
v6: Add RAPL core energy counter support for AMD CPUs
This patchset adds a new “power_core” PMU alongside the existing “power” PMU, which will be responsible for collecting the new “energy-core” event.
v1: mfd: intel_soc_pmic_crc: Add support for non ACPI instantiated i2c_client
Add an i2c_device_id table so that the driver can match on manually instantiated i2c_client-s (which lack an ACPI fwnode to match on).
v5: Add AutoFDO and Propeller support for Clang build
This patch series is to integrate AutoFDO and Propeller support into the Linux kernel.
v4: Provide support for RMPREAD and a segmented RMP
This series adds SEV-SNP support for a new instruction to read an RMP entry and for a segmented RMP table.
The theme of this set is decoupling the “AMD node” concept from the legacy northbridge support.
v2: drm-dp: Add dp module in hibmc driver
Realizing the basic display function of DP cable for DP connector displaying. Add DP module in hibmc drm driver, which is for Hisilicon Hibmc SoC which used for Out-of-band management.
进程调度
v1: sched/topology: Enable topology_span_sane check only for debug builds
On a x86 system under test with 1780 CPUs, topology_span_sane() takes around 8 seconds cumulatively for all the iterations. It is an expensive operation which does the sanity of non-NUMA topology masks.
GIT PULL: sched/urgent for v6.12-rc4
内存管理
v1: mm: count zeromap read and set for swapout and swapin
When the proportion of folios from the zero map is small, missing their accounting may not significantly impact profiling. This patch adopts option 2. I’m curious if others have different opinions, so I’m marking it as RFC.
v1: mm: mitigate large folios usage and swap thrashing for nearly full memcg
The issue arises from an edge case where the memory cgroup remains nearly full most of the time.
v2: mm: shmem: fallback to page size splice if large folio has poisoned pages
Thus adding a fallback to the PAGE_SIZE splice() still allows reading normal pages if the large folio has hwpoisoned pages.
v1: -next: memcg: factor out mem_cgroup_stat_aggregate()
Currently mem_cgroup_css_rstat_flush() is used to flush the per-CPU statistics from a specified CPU into the global statistics of the memcg.
v1: mm: add per-order mTHP swpin counters
This helps profile the sizes of folios being swapped in. Currently, only mTHP swap-out is being counted.
v6: introduce PIDFD_SELF* sentinels
This series introduces sentinels for this purposes which can be passed as the pidfd in this instance rather than having to establish a dummy fd for this purpose.
v2: mm-unstable: mm/page_alloc: keep track of free highatomic
And the third line shows there were no free pages in any MIGRATE_HIGHATOMIC pageblocks, which otherwise would show up as type ‘H’.
v2: 0/2: memcg: tracepoint for flushing stats
This tracepoint gives visibility on how often the flushing of memcg stats occurs and contains info on whether it was forced, skipped, and the value of stats updated.
v2: netfs: Read performance improvements and “single-blob” support
This set of patches is primarily about two things: improving read performance and supporting monolithic single-blob objects that have to be read/written as such (e.g. AFS directory contents). The implementation of the two parts is interwoven as each makes the other possible.
v14: EDAC: Scrub: introduce generic EDAC RAS control feature driver + CXL/ACPI-RAS2 drivers
Previously known as “ras: scrub: introduce subsystem + CXL/ACPI-RAS2 drivers”.
v1: fs/proc/vmcore: kdump support for virtio-mem on s390
This is based on “v3: virtio-mem: s390 support” [1], which adds virtio-mem support on s390.
v5: introduce PIDFD_SELF* sentinels
This series introduces sentinels for this purposes which can be passed as the pidfd in this instance rather than having to establish a dummy fd for this purpose.
v1: futex: The remaining futex2 bits
By popular demand a repost of the remaining futex2 bits.
v1: mm: shmem: fallback to page size splice if large folio has poisoned subpages
The tmpfs has already supported the PMD-sized large folios, and splice() can not read any subpages if the large folio has a poisoned subpage, which is not good as we discussed in previous mail[1].
v1: mm/vma: miss to restore vmi.index on expansion failure
This serial starts on spotting on miss to restore vmi.index in vma_merge_new_range() when expansion is failed.
v1: memcg-v1: fully deprecate charge moving
This warning has been backported to all stable kernel and there have not been any report of the warning or the request to support this feature anymore.
v1: memcg: tracepoint for flushing stats
This tracepoint gives visibility on how often the flushing of memcg stats occurs, along with the reason for the flush.
v2: mm/vma: the pgoff is correct if can_merge_right
By this point can_vma_merge_right() must have returned true, which implies can_vma_merge_before() also returned true, which already asserts that the pgoff is as expected for a merge with the following VMA, thus this assignment is redundant.
文件系统
v6: introduce PIDFD_SELF* sentinels
This series introduces sentinels for this purposes which can be passed as the pidfd in this instance rather than having to establish a dummy fd for this purpose.
v1: xfs: Do not fallback to buffered-io for DIO atomic write
iomap can return -ENOTBLK if pagecache invalidation fails. Let’s make sure if -ENOTBLK is ever returned for atomic writes than we fail the write request (-EIO) instead of fallback to buffered-io.
v5: introduce PIDFD_SELF* sentinels
This series introduces sentinels for this purposes which can be passed as the pidfd in this instance rather than having to establish a dummy fd for this purpose.
v1: netfs: Add a check for NULL folioq in netfs_writeback_unlock_folios
syzkaller reported a null-pointer dereference bug (https://syzkaller.appspot.com/bug?extid=af5c06208fa71bf31b16) in netfs_writeback_unlock_folios caused by passing a NULL folioq to folioq_folio. Fix by adding a check before entering the loop.
v1: ext4: Add atomic write support for DIO
This series adds the base feature support to enable atomic writes in direct-io path for ext4. We advertise the minimum and the maximum atomic write unit sizes via statx on a regular file.
v1: virtio-fs: Query rootmode during mount
During mount, receive the root inode’s mode (e.g. whether it is a directory or a regular file) via GETATTR.
v1: nilfs2: Finish folio conversion
This series converts all remaining page structure references in nilfs2 to folio-based, except for nilfs_copy_buffer function, which was converted to use folios in advance for cross-fs page flags cleanup.
v2: sysctl: Reduce dput(child) calls in proc_sys_fill_cache()
v1: iomap: elide zero range flush from partial eof zeroing
iomap zero range performs a pagecache flush upon seeing unwritten extents with dirty pagecache in order to determine accurate subranges that require direct zeroing. This is to support an optimization where clean, unwritten ranges are skipped as they are already zero on-disk.
v1: mm/page-writeback: Raise wb_thresh to prevent write blocking with strictlimit
With the strictlimit flag, wb_thresh acts as a hard limit in balance_dirty_pages() and wb_position_ratio().
网络设备
v1: net-next: net: dlink: add get_ethtool_stats in ethtool
This patch implement
get_ethtool_stats
to supportethtool -S
.
v2: net-next: net: Use str_yes_no() helper function
Remove hard-coded strings by using the str_yes_no() helper function.
v2: net-next: Support some features for the HIBMCGE driver
In this patch series, The HIBMCGE driver implements some functions such as statistics query, dump register, unicast MAC address filtering, debugfs and reset.
v1: net-next: net: Use str_yes_no() and str_no_yes() helper functions
Remove hard-coded strings by using the str_yes_no() and str_no_yes() helper functions.
v1: bpf-next: net: tcp: replace the document for “lsndtime” in tcp_sock
The document for “lsndtime” in struct tcp_sock is placed in the wrong place, so let’s replace it in the proper place.
v1: net-next: Side MDIO Support for LAN937x Switches
This patch set introduces support for an internal MDIO bus in LAN937x switches, enabling the use of a side MDIO channel for PHY management while keeping SPI as the main interface for switch configuration.
v2: net-next: lib: packing: introduce and use (un)pack_fields
This series improves the packing library with a new API for packing or unpacking a large number of fields at once with minimal code footprint.
v1: Add LAN78XX OTP_ACCESS flag support
With this flag we can now use ethtool to access the OTP: ethtool –set-priv-flags eth0 OTP_ACCESS on ethtool -e eth0 # this will read OTP if OTP_ACCESS is on, else EEPROM
v3: net-next: eth: fbnic: Add support to write TCE TCAM entries
Add support for writing to the tce tcam to enable host to bmc traffic.
v1: iproute: bridge: dump mcast querier state
Kernel support for dumping the multicast querier state was added in this commit.
v1: net-next: net: netpoll: Improve SKB pool management
The netpoll subsystem pre-allocates 32 SKBs in a pool for emergency use during out-of-memory conditions.
v10: net-next: Introducing OpenVPN Data Channel Offload
Please note that patches previously reviewed by Andrew Lunn have retained the Reviewed-by tag as they have been simply rebased without major modifications.
v1: net-next: tcp: only release congestion control if it has been initialized
In this case, tcp_cdg calls kfree(NULL) in release without causing an exception, but for some customized ca, this could lead to unexpected exceptions.
v5: net-next: binder: report txn errors via generic netlink (genl)
It’s a known issue that neither the frozen processes nor the system administration process of the OS can correctly deal with failed binder transactions.
v1: net-next: net/smc: increase SMC_WR_BUF_CNT
The current value of SMC_WR_BUF_CNT is 16 which leads to heavy contention on the wr_tx_wait workqueue of the SMC-R linkgroup and its spinlock when many connections are competing for the buffer.
v8: Add NSS clock controller support for IPQ9574
Add bindings, driver and devicetree node for networking sub system clock controller on IPQ9574. Also add support for gpll0_out_aux clock which serves as the parent for some nss clocks.
polls periodically until a condition is met or a timeout is reached. By using the function, the 7th patch fixes QT2025 PHY driver to sleep until the hardware becomes ready.
v2: next: uapi: socket: Introduce struct sockaddr_legacy
We are currently working on enabling the -Wflex-array-member-not-at-end compiler option.
v1: net-next: r8169: add support for RTL8125D
This adds support for new chip version RTL8125D, which can be found on boards like Gigabyte X870E AORUS ELITE WIFI7. Firmware rtl8125d-1.fw for this chip version is available in linux-firmware already.
v2: net-next: socket: Print pf->create() when it does not clear sock->sk on failure.
I suggested to put DEBUG_NET_WARN_ON_ONCE() in __sock_create() to catch possible use-after-free.
安全增强
v3: Add Nothing Phone (1) support
This series of patches adds support for the Nothing Phone (1), identified as nothing,spacewar. The Nothing Phone (1) is built on the Qualcomm Snapdragon 778G+ (SM7325-AE, also known as yupik).
异步 IO
v1: Rewrite rsrc node handling
This series handles the resource nodes separately, so a request pins just the resources it needs, and only for the duration of that request.
v8: io_uring: support sqe group and leased group kbuf
The 1st 3 patches are cleanup, and prepare for adding sqe group.
The 4th patch supports generic sqe group which is like link chain, but allows each sqe in group to be issued in parallel and the group shares same IO_LINK & IO_DRAIN boundary, so N:M dependency can be supported with sqe group & io link together.
The 5th & 6th patches supports to lease other subsystem’s kbuf to io_uring for use in sqe group wide.
The 7th patch supports ublk zero copy based on io_uring sqe group & leased kbuf.
v1: Add support for provided registered buffers
This patchset adds support for using a mix of provided and registered buffers, where the provided buffers merely provide an index into which registered buffers to use.
v1: implement vectored registered buffers for sendzc
Allow registered buffers to be used with zerocopy sendmsg, where the passed iovec becomes a scatter list into the registered buffer specified by sqe->buf_index. See patches 3 and 4 for more details.
v1: Add support for registered waits
While doing testing on zero-copy tx/rx with io_uring, I noticed that a LOT of time is being spent copying in data structures related to waiting on events.
v4: btrfs: io_uring interface for encoded reads
This is version 4 of a patch series to add an io_uring interface for encoded reads. The principal use case for this is to eventually allow btrfs send and receive to operate asynchronously, the lack of io_uring encoded I/O being one of the main blockers for this.
Clean up the send[msg] setup path. The pathes should be good enough by themselves, but more can be done on top. It’s also needed as a dependency for supporting vectored fixed buffers for sendmsg zc.
v1: Add support for ring resizing
Something that’s come up several times over the years is how to deal with ring sizing.
Rust For Linux
v1: Initial rust bindings for device property reads
This series adds rust bindings for the device property API which is a firmware agnostic interface for reading firmware properties.
v1: rust: list: make the cursor point between elements
The root cause of these signatures is that the cursor points at an element, rather than between two elements.
v2: kbuild: simplify rustfmt target
There is no need to prune the rust/alloc directory because it was removed by commit 9d0441bab775 (“rust: alloc: remove our fork of the
alloc
crate”).
v1: rust: platform: add Io support
The IoMem is backed by ioremap_resource()
v7: Extended MODVERSIONS Support
This patch series is intended for use alongside the Implement DWARF modversions series [1] to enable RUST and MODVERSIONS at the same time.
v3: Device / Driver PCI / Platform Rust abstractions
This patch series implements the necessary Rust abstractions to implement device drivers in Rust.
v1: rust: miscdevice: add missing safety comments
Note that these warnings are currently not enabled in the build, but rust-next contains a commit that will enable them, so we should fix them.
BPF
v3: PCI: add enabe(disable)_device() hook for bridge
Add enable(disable)_device() hook for bridge can return error when not enough resource, and PCI device can’t enabled.
v3: tip/perf/core: SRCU-protected uretprobes hot path
This patch set adds return uprobe (uretprobe) side of this, this time utilizing SRCU for the same reasons.
v1: bpf-next: net/smc: Introduce smc_bpf_ops
This patches attempt to introduce BPF injection capability for SMC, and add selftest to ensure code stability.
v3: bpf: Add the missing BPF_LINK_TYPE invocation for sockmap
The tiny patch set fixes the out-of-bound read problem when reading the fdinfo of sock map link fd.
v6: bpf-next: Share user memory to BPF program through task storage map
It is the v6 of this series. Starting from v5, it is a continuation work of the RFC v4.
v1: bpf: Extend the size of scratched_stack_slots to 128 bits
This additional stack space is reserved for spilling and filling of caller saved registers.
v3: bpf: Preserve param->string when parsing mount options
In bpf_parse_param(), keep the value of param->string intact so it can be freed later.
v4: uprobes: Improve scalability by reducing the contention on siglock
The profiling result of BPF selftest on ARM64 platform reveals the significant contention on the current->sighand->siglock is the scalability bottleneck.
v4: net-next: AccECN protocol preparation patch series
This updated patch series is grouped in preparation for the AccECN protocol, and is part of the full AccECN patch series.
v1: bpf-next: bpf, x64: Introduce two tailcall enhancements
This patch set introduces two enhancements aimed at improving tailcall handling in the x64 JIT.
周边技术动态
Qemu
v7: tcg/riscv: Add support for vector
Introduce support for the RISC-V vector extension in the TCG backend.
U-Boot
v2: PolarFire SoC clock devicetree rework
There’s been no complaints about the only part that impacts U-Boot, so I figured it was time to send patches here.
v1: riscv: mbv: Align DT with QEMU
Align U-Boot with QEMU amd-microblaze-v-virt platform to be able to wire it with CI.
v1: CI: Add a test for building without CMDLINE
Something this breaks, so add a test to keep it working. Since sandbox enables a lot of options, it is a good board to use.
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 泰晓资讯:汇总一周技术趣闻与文章,查看「Linux 资讯」
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |
Read Album:
- TinyBPT 和面向 buildroot 的二进制包管理服务(1):设计简介与框架
- RISC-V Linux 内核及周边技术动态第 118 期
- RISC-V Linux 内核及周边技术动态第 117 期
- 实时分析工具 rtla timerlat 介绍(二):延迟测试原理
- 实时分析工具 rtla timerlat 介绍(一):交叉编译及使用