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

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

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

呀呀呀 创作于 2024/04/15

时间:20240414
编辑:晓怡
仓库:RISC-V Linux 内核技术调研活动
赞助:PLCT Lab, ISCAS

内核动态

RISC-V 架构支持

v2: of: property: Add fw_devlink support for interrupt-map property

Some of the PCI controllers (such as generic PCI host controller) use “interrupt-map” DT property to describe the mapping between PCI endpoints and PCI interrupt pins. This the only case where the interrupts are not described in DT.

v10: Add timer driver for StarFive JH7110 RISC-V SoC

This patch serises are to add timer driver for the StarFive JH7110 RISC-V SoC. The first patch adds documentation to describe device tree bindings. The subsequent patch adds timer driver and support JH7110 SoC. The last patch adds device node about timer in JH7110 dts.

v8: riscv: sophgo: add dmamux support for Sophgo CV1800/SG2000 SoCs

Add dma multiplexer support for the Sophgo CV1800/SG2000 SoCs.

As the syscon device of CV1800 have a usb phy subdevices. The binding of the syscon can not be complete without the usb phy is finished. As a result, the binding of syscon is removed and will be evolved in its original series after the usb phy binding is fully explored.

v4: Support Zve32[xf] and Zve64[xfd] Vector subextensions

The series composes of two parts. The first part provides a quick fix for the issue on a recent thread[1]. The issue happens when a platform has ununified vector register length across multiple cores. Specifically, patch 1 adds a comment at a callsite of riscv_setup_vsize to clarify how vlenb is observed by the system. Patch 2 fixes the issue by failing the boot process of a secondary core if vlenb mismatches.

v4: mm: jit/text allocator

Since v3 I looked into making execmem more of an utility toolbox, as we discussed at LPC with Mark Rutland, but it was getting more hairier than having a struct describing architecture constraints and a type identifying the consumer of execmem.

v6: RISC-V SBI v2.0 PMU improvements and Perf sampling in KVM guest

This series implements SBI PMU improvements done in SBI v2.0[1] i.e. PMU snapshot and fw_read_hi() functions.

SBI v2.0 introduced PMU snapshot feature which allows the SBI implementation to provide counter information (i.e. values/overflow status) via a shared memory between the SBI implementation and supervisor OS. This allows to minimize the number of traps in when perf being used inside a kvm guest as it relies on SBI PMU + trap/emulation of the counters.

v5: riscv: hwprobe: export highest virtual userspace address

Some userspace applications (OpenJDK for instance) uses the free MSBs in pointers to insert additional information for their own logic and need to get this information from somewhere. Currently they rely on parsing /proc/cpuinfo “mmu=svxx” string to obtain the current value of virtual address usable bits [1].

v3: riscv: improve nommu and timer-clint

As is known, the sophgo CV1800B contains so called little core, which is C906 w/o MMU, so I want to run nommu linux on it. This series is the result of the bring up. After this series, w/ proper dts, we can run nommu linux on milkv duo’s little core.

v3: add initial Milk-V Duo S board support

This adds an initial device tree for the Milk-V Duo S board. Last tested on linux-next as a May 9, 2024.

v4: Add notifier for PLL0 clock and set it 1.5GHz on

This patch is to add the notifier for PLL0 clock and set the PLL0 rate to 1.5GHz to fix the lower rate of CPUfreq on the JH7110 SoC.

v3: RISC-V: enable rust

I’ve intentionally not turned on the gcc support, as discussed on v1. I’ve also switched over to using the target, but it is a bit heavier than the one arm64 seems to be using. RISC-V has fewer targets available and this was the closest. I preserved the redzone disabling, just moved into the Makefile.

v3: RISC-V: Test th.sxstatus.MAEE bit before enabling MAEE

Currently, the Linux kernel suffers from a boot regression when running on the c906 QEMU emulation. Details have been reported here by Björn Töpel:https://lists.gnu.org/archive/html/qemu-devel/2024-01/msg04766.html

v8: RESEND: riscv: add initial support for Canaan Kendryte K230

K230 is an ideal chip for RISC-V Vector 1.0 evaluation now. Add initial support for it to allow more people to participate in building drivers to mainline for it.

进程调度

v2: sched/topology: Optimize topology_span_sane()

A soft lockup is being detected in build_sched_domains() on 32 socket Sapphire Rapids systems with 3840 processors.

v2: net-next: net: sched: cake: Optimize the number of function calls and branches in heap construction

When constructing a heap, heapify operations are required on all non-leaf nodes. Thus, determining the index of the first non-leaf node is crucial.

内存管理

v2: mm/shrinker: add SHRINKER_NO_DIRECT_RECLAIM

In the case of insufficient memory, threads will be in direct_reclaim to reclaim memory, direct_reclaim will call shrink_slab to run sequentially each shrinker callback.

v6: IOMMU memory observability

Description IOMMU subsystem may contain state that is in gigabytes. Majority of that state is iommu page tables. Yet, there is currently, no way to observe how much memory is actually used by the iommu subsystem.

v6: mm/madvise: enhance lazyfreeing with mTHP in madvise_free

This patchset adds support for lazyfreeing multi-size THP (mTHP) without needing to first split the large folio via split_folio(). However, we still need to split a large folio that is not fully mapped within the target range.

v6: mm: add per-order mTHP alloc and swpout counters

The patchset introduces a framework to facilitate mTHP counters, starting with the allocation and swap-out counters. Currently, only four new nodes are appended to the stats directory for each mTHP size.

v2: slub: Clear __GFP_COMP flag when allocating 0 order page

We encounter warning messages when failing to create a new slab like this:

page allocation failure: order:0, mode:0x1004000(GFP_NOWAIT|__GFP_COMP), nodemask=(null)

v3: mm: batch mm counter updating in filemap_map_pages()

Let’s batch mm counter updating to accelerate filemap_map_pages().

v2: tracing: Add sched_prepare_exec tracepoint

Add “sched_prepare_exec” tracepoint, which is run right after the point of no return but before the current task assumes its new exec identity.

v14: mm/gup: Introduce memfd_pin_folios() for pinning memfd folios

Currently, some drivers (e.g, Udmabuf) that want to longterm-pin the pages/folios associated with a memfd, do so by simply taking a reference on them. This is not desirable because the pages/folios may reside in Movable zone or CMA block.

v5: transfer page to folio in KSM

This is the first part of page to folio transfer on KSM. Since only single page could be stored in KSM, we could safely transfer stable tree pages to folios. This patchset could reduce ksm.o 57kbytes from 2541776 bytes on latest akpm/mm-stable branch with CONFIG_DEBUG_VM enabled. It pass the KSM testing in LTP and kernel selftest.

文件系统

v2: ext4: support adding multi-delalloc blocks

This patch series is the part 2 prepartory changes of the buffered IO iomap conversion, I picked them out from my buffered IO iomap conversion RFC series v3[1], add a fix for an issue found in current ext4 code,and also add bigalloc feature support. Please look the following patches for details.

v2: exfat: move extend valid_size into ->page_mkwrite()

It is not a good way to extend valid_size to the end of the mmap area by writing zeros in mmap. Because after calling mmap, no data may be written, or only a small amount of data may be written to the head of the mmap area.

网络设备

v2: net-next: Read PHY address of switch from device tree on MT7530 DSA subdriver

This patch series makes the driver read the PHY address the switch listens on from the device tree which, in result, brings support for MT7530 switches listening on a different PHY address than 31. And the patch series simplifies the core operations.

v6: net-next: net/smc: SMC intra-OS shortcut with loopback-ism

This patch set acts as the second part of the new version of [1] (The first part can be referred from [2]), the updated things of this version are listed at the end.

v7: net-next: virtio_net: Support RX hash XDP hint

The RSS hash report is a feature that’s part of the virtio specification. Currently, virtio backends like qemu, vdpa (mlx5), and potentially vhost (still a work in progress as per [1]) support this feature. While the capability to obtain the RSS hash has been enabled in the normal path, it’s currently missing in the XDP path. Therefore, we are introducing XDP hints through kfuncs to allow XDP programs to access the RSS hash.

v2: net-next: af_unix: Try not to hold unix_gc_lock during accept().

Commit dcf70df2048d (“af_unix: Fix up unix_edge.successor for embryo socket.”) added spin_lock(&unix_gc_lock) in accept() path, and it caused regression in a stress test as reported by kernel test robot.

v3: udp: Avoid call to compute_score on multiple sites

We’ve observed a 7-12% performance regression in iperf3 UDP ipv4 and ipv6 tests with multiple sockets on Zen3 cpus, which we traced back to commit f0ea27e7bfe1 (“udp: re-score reuseport groups when connected sockets are present”). The failing tests were those that would spawn UDP sockets per-cpu on systems that have a high number of cpus.

v3: bpf-next: Replace mono_delivery_time with tstamp_type

Patch 1 :- This patch takes care of only renaming the mono delivery timestamp to tstamp_type with no change in functionality of existing available code in kernel also Starts assigning tstamp_type with either mono or real and introduces a new enum in the skbuff.h, again no change in functionality of the existing available code in kernel , just making the code scalable.

v2: bpf-next: selftests/bpf: Add sockaddr tests for kernel networking

This patch series adds test coverage for BPF sockaddr hooks and their interactions with kernel socket functions (i.e. kernel_bind(), kernel_connect(), kernel_sendmsg(), sock_sendmsg(), kernel_getpeername(), and kernel_getsockname()) while also rounding out IPv4 and IPv6 sockaddr hook coverage in prog_tests/sock_addr.c.

v7: net-next: net: gro: move p->{flush/flush_id} calculations to L4

This patch series depends on commits in the series submitted to net. (https://lore.kernel.org/netdev/20240412152120.115067-1-richardbgobert@gmail.com/)

v9: net-next: Add minimal XDP support to TI AM65 CPSW Ethernet driver

This patch adds XDP support to TI AM65 CPSW Ethernet driver.

v2: net-next: selftests: net: exercise page pool reporting via netlink

Add a basic test for page pool netlink reporting.

v8: iwl-next: Introduce ETH56G PHY model for E825C products

E825C products have a different PHY model than E822, E823 and E810 products. This PHY is ETH56G and its support is necessary to have functional PTP stack for E825C products.

v10: GenieZone hypervisor drivers

This series is based on linux-next, tag: next-20240411.

安全增强

v2: xfs: replace deprecated strncpy with memtostr_pad

strncpy() is deprecated for use on NUL-terminated destination strings [1] and as such we should prefer more robust and less ambiguous string interfaces.

异步 IO

v2: liburing: improve sendzc tests

There is enough of special handling for DEFER_TASKRUN, so we want to test sendzc with DEFER_TASKRUN as well. Apart from that, probe zc support at the beginning and do some more cleanups.

v2: io_uring: return void from io_put_kbuf_comp()

The only caller doesn’t handle the return value of io_put_kbuf_comp(), so change its return type into void.

Rust For Linux

BPF

v2: bpf-next: Enable BPF programs to declare arrays of kptr, bpf_rb_root, and bpf_list_head.

The arrays of kptr, bpf_rb_root, and bpf_list_head didn’t work as global variables. This was due to these types being initialized and verified in a special manner in the kernel. This patchset allows BPF programs to declare arrays of kptr, bpf_rb_root, and bpf_list_head in the global namespace.

v6: Combine perf and bpf for fast eval of hw breakpoint conditions

rr, a userspace record and replay debugger[0], replays asynchronous events such as signals and context switches by essentially[1] setting a breakpoint at the address where the asynchronous event was delivered during recording with a condition that the program state matches the state when the event was delivered.

v2: bpf-next: net: Add additional bit to support userspace timestamp type

tstamp_type can be real, mono or userspace timestamp.

This commit adds userspace timestamp and sets it if there is valid transmit_time available in socket coming from userspace.

v6: net-next: allocate dummy device dynamically

struct net_device shouldn’t be embedded into any structure, instead, the owner should use the private space to embed their state into net_device.

v6: bpf-next: bpf: Add a generic bits iterator

Three new kfuncs, namely bpf_iter_bits_{new,next,destroy}, have been added for the new bpf_iter_bits functionality. These kfuncs enable the iteration of the bits from a given address and a given number of bits.

v3: bpf-next: Add check for bpf lsm return value

A bpf prog returning positive number attached to file_alloc_security hook will make kernel panic.

v16: net-next: Introducing P4TC (series 1)

This is the first patchset of two. In this patch we are submitting 15 which cover the minimal viable P4 PNA architecture. Please, if you want to discuss a slightly tangential subject like offload or even your politics then start another thread with a different subject line.

周边技术动态

Buildroot

package/uclibc: bump to 1.0.47

commit: https://git.buildroot.net/buildroot/commit/?id=3b7f8f8d226c8f5b08edb5a7a8ad746ba04c34c5 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

toolchain/toolchain-external/toolchain-external-bootlin: bump to 2024.02

commit: https://git.buildroot.net/buildroot/commit/?id=345ccb523e412b390d42073cd976a3288b0733c1 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

U-Boot

v4: cmd: bootm: add ELF file support

Some operating systems (e.g. seL4) and embedded applications are ELF images. It is convenient to use FIT-images to implement trusted boot. Added “elf” image type for booting using bootm command.

GIT PULL: xilinx patches for v2024.07-rc1

please apply these patches to your tree. Gitlab CI is not showing any issue and buildman for our platforms is also not showing any issue.



Read Album:

Read Related:

Read Latest: