泰晓科技 -- 聚焦 Linux - 追本溯源,见微知著!
网站地址:https://tinylab.org

泰晓RISC-V实验箱,转战RISC-V,开箱即用
请稍侯

RISC-V Linux 内核及周边技术动态第 115 期

呀呀呀 创作于 2024/10/29

时间: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.

v2: Add Microchip IPC mailbox

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.

v1: AMD NB and SMN rework

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 support ethtool -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.

v4: rust: Add IO polling

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.

v1: send[msg] refactoring

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.



Read Album:

Read Related:

Read Latest: