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

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

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

呀呀呀 创作于 2024/08/27

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

内核动态

RISC-V 架构支持

v1: riscv: Report error when repeatedly recording CPU hardware ID

In the of_parse_and_init_cpus() function, when the __cpuid_to_hartid_map[] array records the CPU hardware ID, if the same CPU hardware attribute has been recorded, an error report is issued, thereby ensuring the uniqueness of the CPU hardware ID recorded in the __cpuid_to_hartid_map[] array.

v8: Tracepoints and static branch in Rust

This series includes a patch that adds a user of tracepoits to the rust_print sample.

v1: usb drivers use devm_clk_get_enabled() helpers

This simplifies the code and avoids calls to clk_disable_unprepare().

GIT PULL: RISC-V T-HEAD Devicetrees for v6.12

Please pull these thead dts changes. I’ve run W=1 dtbs_check and they have been in linux-next since August 9th.

v9: RISC-V: Detect and report speed of unaligned vector accesses

Adds support for detecting and reporting the speed of unaligned vector accesses on RISC-V CPUs.

v2: riscv: hwprobe: export Zicntr and Zihpm extensions

Export Zicntr and Zihpm ISA extensions through the hwprobe syscall.

v3: irqchip/sifive-plic: Probe plic driver early for Allwinner D1 platform

The latest Linux RISC-V no longer boots on the Allwinner D1 platform because the sun4i_timer driver fails to get an interrupt from PLIC.

v5: Zacas/Zabha support and qspinlocks

This implements [cmp]xchgXX() macros using Zacas and Zabha extensions and finally uses those newly introduced macros to add support for qspinlocks: note that this implementation of qspinlocks satisfies the forward progress guarantee.

LoongArch 架构支持

v11: Loongarch-avec support

This series of patches introduces support for advanced extended interrupt controllers (AVECINTC), and this hardware feature will be supported on 3C6000 for the first time.

[v2: Added Interrupt controller emulation for loongarch kvm

In order to reduce the loss caused by frequent switching of the virtual machine monitor from kernel mode to user mode when the guest accesses the interrupt controller, we add the interrupt controller simulation in kvm.

v7: Add extioi virt extension support

KVM_FEATURE_VIRT_EXTIOI is paravirt feature defined with EXTIOI interrupt controller, it can route interrupt to 256 vCPUs and CPU interrupt pin IP0-IP7.

v1: of_reserved_mem: Save region name string into struct reserved_mem

Previously only a pointer to fdt string pool is saved to struct reserved_mem as region name.

v1: LoongArch: Migrate arch_numa

This series migrated LoongArch NUMA implementation to common arch_numa logic to enable devicetree based numa.

v1: irqchip/loongson-eiointc: Add multiple interrupt pin routing support

There are four times about EIOINTC_REG_ISR register group access in eiointc irq handler, in order to get all irq status about 256 interrupt vectors.

v1: Add EDAC driver for loongson memory controller

These patchs are based on 6.10.4. Add a simple EDAC driver which report single bit errors (CE) only on loongson platform.

ARM 架构支持

v3: arm64: Implement prctl(PR_{G,S}ET_TSC)

This is needed for a correct implementation of non-instrumenting record-replay debugging on arm64 (i.e. rr; https://rr-project.org/).

v13: Add Tegra241 (Grace) CMDQV Support (part 1/2)

NVIDIA’s Tegra241 (Grace) SoC has a CMDQ-Virtualization (CMDQV) hardware that extends standard ARM SMMUv3 to support multiple command queues with virtualization capabilities.

v2: iommu/arm-smmu-qcom: Work around SDM845 Adreno SMMU w/ 16K pages

SDM845’s Adreno SMMU is unique in that it actually advertizes support for 16K (and 32M) pages, which doesn’t hold for newer SoCs.

v2: irqchip/gic-v3: init SRE before poking sysregs

The GICv3 driver pokes GICv3 system registers in gic_prio_init() before gic_cpu_sys_reg_init() ensures that GICv3 system registers have been enabled by writing to ICC_SRE_EL1.SRE.

v3: ARM: bcm2835: Implement initial S2Idle for Raspberry Pi

This series implement the initial S2Idle support for the Raspberry Pi, which was a long time on my TODO list .

v4: arm64: Support for Arm CCA in KVM

This series adds support for running protected VMs using KVM under the Arm Confidential Compute Architecture (CCA).

v1: Microchip OTPC driver on SAM9X60 exposing UIDxR as additional nvmem device

There is a driver for the OTPC of the SAMA7G5 and after comparing register layouts it seems that one is almost identical to the one used by SAM9X60.

X86 架构支持

v1: arm64: Trace the memory abort exception

Introduce an event to trace the occurrence of memory abort exceptions.

[RFC/PATCH] perf/x86: Relax privilege filter restriction on AMD IBS

While IBS is available for per-thread profiling, still regular users cannot open an event due to the default paranoid setting (2) which doesn’t allow unprivileged users to get kernel samples.

v1: platform/x86: wmi: Pass event data directly to legacy notify handlers

The current legacy WMI handlers are susceptible to picking up wrong WMI event data on systems where different WMI devices share some notification IDs.

v1: platform/x86: lenovo-ymc: Ignore the 0x0 state

Add 0x0 YMC state to the sparse keymap to ignore.

v4: Introduce initial AMD I3C HCI driver support

The AMD SoC includes an I3C IP block as part of the Fusion Controller Hub (FCH). This series introduces the initial driver support to enable the I3C IP block on AMD’s latest processors.

v1: platform/x86: Add support for Intel uncore ELC feature

This series adds ELC (Efficiency Latency Control) support to Intel uncore driver.

GIT PULL: platform-drivers-x86 for v6.11-4

Here is a platform-drivers-x86 fixes PR for v6.11.

v1: x86/platform/geode: switch GPIO buttons and LEDs to software properties

Convert GPIO-connected buttons and LEDs in Geode boards to software nodes/properties, so that support for platform data can be removed from gpio-keys driver (which will rely purely on generic device properties for configuration).

v5: perf auxtrace: Support multiple AUX events

This series is to support multiple events with the same type in Perf AUX trace.

v1: platform/x86: system76: Reducing redundant conditional judgments in system76_add()

Since the conditions for most goto statements have already been satisfied by if (data->has_open_ec),the code has been modified to improve execution speed.

v2: KVM: x86: Include host suspended time in steal time.

This series makes it so that the time that the host is suspended is included in guests’ steal time.

v3: Enable PMU for ArrowLake-H

No code changes comparing v2, just add back the missed reviewed-by.

进程调度

v1: sched: NUMA-aware concurrency IDs

The issue addressed by this series is the non-locality of NUMA accesses to data structures indexed by concurrency IDs.

v2: perf sched timehist: Add –show-prio & –prio option

This patch set adds –show-prio and –prio to show and filter task priorities.

内存管理

v1: Integrating Namespaces and Cgroups for Enhanced Resource Management

We are a system security research team from multiple organizations.

v4: mm: count the number of anonymous THPs per size

Knowing the number of transparent anon THPs in the system is crucial for performance analysis.

v1: memcg: add charging of already allocated slab objects

At the moment, the slab objects are charged to the memcg at the allocation time.

v1: riscv: use gp to save percpu offset

Compared to directly fetching the per-CPU offset from memory (or cache), using the global pointer (gp) to store the per-CPU offset can save one memory access.

v8: mm: store zero pages to be swapped out in a bitmap

The original series was almost merged, but was dropped due to a last minute bug.

v1: tmpfs: Add case-insesitive support for tmpfs

This patchset adds support for case-insesitive file names lookups in tmpfs.

v1: codetag: debug: mark codetags for poisoned page as empty

The PG_hwpoison page will be caught and isolated on the entrance to the free buddy page pool.

v3: slab: Introduce kmalloc_obj() and family

Introduce type-aware kmalloc-family helpers to replace the common idioms for single, array, and flexible object allocations.

v3: mm: collect the number of anon mTHP

Knowing the number of anon mTHPs in the system is crucial for performance analysis.

v5: Permission Overlay Extension

This series implements the Permission Overlay Extension introduced in 2022 VMSA enhancements.

v13: enable bs > ps in XFS

This is the 13th version of the series that enables block size > page size (Large Block Size) experimental support in XFS. Please consider this for the inclusion in 6.12.

v2: introduce pte_offset_map_{ro/rw}_nolock()

v2: Wire up getrandom() vDSO implementation on powerpc

This series wires up getrandom() vDSO implementation on powerpc.

v2: implement async block discards/etc. via io_uring

There is an interest in having asynchronous block operations like discard and write zeroes.

v1: codetag: debug: mark codetags for pages which transitioned from being poison to unpoison as empty

The PG_hwpoison page will be caught and isolated on the entrance to the free buddy page pool. so,when we clear this flag and return it to the buddy system,mark codetags for pages as empty.

v1: mm:slab:use kmem_cache_free() to free

The kmem_cache_alloc() is typically used to free memory allocated through the kernel memory cache (slab allocator).

文件系统

v2: bcachefs: support idmap mounts

We enable idmapped mounts for bcachefs.

网络设备

v22: net-next: Device Memory TCP

v1: net-next: net: ag71xx: support probe defferal for getting MAC address

Currently, of_get_ethdev_address() return is checked for any return error code which means that trying to get the MAC from NVMEM cells that is backed by MTD will fail if it was not probed before ag71xx.

v1: net-next: net: phy: aquantia: enable firmware loading for aqr105 on PCIe cards

This patch series adds support for firmware loading from the filesystem for Aquantia PHYs in a non-device-tree environment and activates firmware loading for the AQR105 PHY.

v10: ipsec-next: Add IP-TFS mode to xfrm

This patchset adds a new xfrm mode implementing on-demand IP-TFS.

v7: net-next: net: phy: add Applied Micro QT2025 PHY driver

This patchset adds a PHY driver for Applied Micro Circuits Corporation QT2025.

v1: net-next: Expand statistics reported in ethtool

The following patches expand the statistics reported in ethtool for the enic driver

v5: net-next: net: dsa: microchip: Add KSZ8895/KSZ8864 switch support

This series of patches is to add KSZ8895/KSZ8864 switch support to the KSZ DSA driver.

v1: Adding SO_PEEK_OFF for TCPv6

Adding SO_PEEK_OFF for TCPv6 and selftest for both TCPv4 and TCPv6.

v4: net-next: flow_dissector: Dissect UDP encapsulation protocols

Add support in flow_dissector for dissecting into UDP encapsulations like VXLAN. __skb_flow_dissect_udp is called for IPPROTO_UDP.

v2: nf-next: netfilter: Make IP_NF_IPTABLES_LEGACY selectable

These two patches make IP_NF_IPTABLES_LEGACY and IP6_NF_IPTABLES_LEGACY Kconfigs user selectable, avoiding creating an extra dependency by enabling some other config that would select IP{6}_NF_IPTABLES_LEGACY.

v1: net-next: Suspend IRQs during application busy periods

This series introduces a new mechanism, IRQ suspension, which allows network applications using epoll to mask IRQs during periods of high traffic while also reducing tail latency (compared to existing mechanisms, see below) during periods of low traffic.

v3: Add GMAC support for rk3576

Add the necessary constants and functions to support the GMAC devices on the rk3576.

安全增强

v2: -next: lib/string_choices: Add str_true_false()/str_false_true() helper

Add str_true_false()/str_false_true() helper to return “true” or “false” string literal.

v8: Add support for aw96103/aw96105 proximity sensor

Add drivers that support Awinic aw96103/aw96105 proximity sensors.

v1: -next: Add str_true_false()/str_false_true() helper

Add str_true_false()/str_false_true() helper to “true” or “false” string literal.

v3: arm64: smp: smp_send_stop() and crash_smp_send_stop() should try non-NMI first

When testing hard lockup handling on my sc7180-trogdor-lazor device with pseudo-NMI enabled, with serial console enabled and with kgdb disabled, I found that the stack crawls printed to the serial console ended up as a jumbled mess.

v1: output a valid shell script when running ‘make -n’

This patch series lets ‘make -n’ output a shell script that can be used to build the kernel without any further use of make.

v1: pstore: replace spinlock_t by raw_spinlock_t

Replace the spinlock_t with raw_spinlock_t to avoid sleeping in atomic context.

异步 IO

v1: btrfs: add io_uring for encoded reads

This patch series adds io_uring support for btrfs encoded reads, complementing the ioctl we already have.

v2: RFC: Add support for incremental buffer consumption

The recommended way to use io_uring for networking workloads is to use ring provided buffers. The application sets up a ring (or several) for buffers, and puts buffers for receiving data into them.

v3: Read/Write with meta/integrity

This adds a new io_uring interface to exchange meta along with read/write.

v1: io_uring/kbuf: sanitize peek buffer setup

Harden the buffer peeking a bit, by adding a sanity check for it having a valid size.

v2: io_uring/fdinfo: add timeout_list to fdinfo

However, there is currently a lack of timeout-related information, and this patch adds timeout_list information.

Rust For Linux

v1: rust: experiment with #[derive(SmartPointer)]

I am sending this RFC patch to share my experience with using the new #[derive(SmartPointer)] feature [1] with our custom smart pointers.

v1: rust: kernel: add support for bits/genmask macros

These macros were converted from their C equivalent.

v7: drm/panic: Add a QR code panic screen

This series adds a new panic screen, with the kmsg data embedded in a QR code.

v4: Rust KASAN Support

Right now, if we turn on KASAN, Rust code will cause violations because it’s not enabled properly.

v2: rust: add module_params macro

This patch includes changes required for Rust kernel modules to utilize module parameters.

v1: v2b: rust: cfi: add support for CFI_CLANG with Rust

Make it possible to use the Control Flow Integrity (CFI) sanitizer when Rust is enabled.

v1: rust: enable rustdoc’s --generate-link-to-definition

In Rust 1.56.0 [1], rustdoc introduced the “jump to definition” feature [2], i.e. the unstable flag --generate-link-to-definition. It adds links to the source view of the documentation.

v2: kbuild: rust: auto generate rust helper exports

This removes the need for explicit exporting all symbols.

BPF

v1: bpf-next: netkit: Disable netpoll support

Follow-up to 45160cebd6ac (“net: veth: Disable netpoll support”) to also disable netpoll for netkit interfaces.

v1: bpf: add check for invalid name in btf_name_valid_section()

If the length of the name string is 1 and the value of name[0] is NULL byte, an OOB vulnerability occurs in btf_name_valid_section() and the return value is true, so the invalid name passes the check.

v1: bpf-next: follow up for __jited test tag

This patch-set is a collection of follow-ups for “__jited test tag to check disassembly after jit” series (see [1]).

v3: bpf-next: support bpf_fastcall patterns for calls to kfuncs

As an extension of [1], allow bpf_fastcall patterns for kfuncs:

  • pattern rules are the same as for helpers;
  • spill/fill removal is allowed only for kfuncs listed in the is_fastcall_kfunc_call (under assumption that such kfuncs would always be members of special_kfunc_list).

v2: bpf-next: bpf: Add gen_epilogue and allow kfunc call in pro/epilogue

This set allows the subsystem to patch codes before BPF_EXIT. The verifier ops, .gen_epilogue, is added for this purpose.

v1: bpf-next: bpf/bpf_lru_list: make bpf_common_lru_pop_free safe in NMI

This function is used by htab_lru_map_update_elem() which can be called from an NMI.

v1: bpftool: check for NULL ptr of btf in codegen_subskel_datasecs

bpf_object__btf() can return NULL value. If bpf_object__btf returns null, do not progress through codegen_subskel_datasecs(). This avoids a null ptr dereference.

v1: net-next: Unmask upper DSCP bits - part 1

The TOS field in the IPv4 flow key (‘flowi4_tos’) is used during FIB lookup to match against the TOS selector in FIB rules and routes.

v2: libbpf: Initialize st_ops->tname with strdup()

tname is returned by btf__name_by_offset() as well as var_name, and these addresses point to strings in the btf. Since their locations may change while loading the bpf program, using strdup() ensures tname is safely stored.

v4: net: bpf, net: Check cgroup_bpf_enabled() only once in do_sock_getsockopt()

v21: net-next: net: refactor ->ndo_bpf calls into dev_xdp_propagate

When net devices propagate xdp configurations to slave devices, or when core propagates xdp configuration to a device, we will need to perform a memory provider check to ensure we’re not binding xdp to a device using unreadable netmem.

v3: bpf-next: __jited test tag to check disassembly after jit

This patch set adds a macro __jited() that could be used for test_loader based tests in a following manner.

v3: net/socket: Check cgroup_bpf_enabled() only once in do_sock_getsockopt()

v1: kbuild: bpf: Do not run pahole with -j on 32bit userspace

This is only a PoC. There are deficiencies like CROSS_COMPILE or LLVM are completely unhandled.

v1: net-next: virtio-net: support AF_XDP zero copy (tx)

The zero copy feature of xsk (XDP socket) needs to be supported by the driver. The performance of zero copy is very good. mlx5 and intel ixgbe already support this feature, This patch set allows virtio-net to support xsk’s zerocopy xmit feature.

v21: net-next: Device Memory TCP

v6: bpf-next: bpf: enable some functions in cgroup programs

Enable some BPF kfuncs and the helper bpf_current_task_under_cgroup() for program types BPF_CGROUP_*.

v1: bpf: Refactoring btf_name_valid_identifier() and btf_name_valid_section()

Currently, btf_name_valid_identifier() and btf_name_valid_section() are written in a while loop and use pointer operations, so it takes a long time to understand the operation of the code.

v1: net/socket: Acquire cgroup_lock in do_sock_getsockopt

周边技术动态

Qemu

v3: bsd-user: Comprehensive RISCV Support

Key Changes Compared to Version 2.

v8: riscv support for control flow integrity extensions

v8 for riscv zicfilp and zicfiss extensions support in qemu.

v1: target: riscv: Enable Bit Manip for OpenTitan Ibex CPU

The OpenTitan Ibex CPU now supports the the Zba, Zbb, Zbc and Zbs bit-manipulation sub-extensions ratified in v.1.0.0 of the RISC-V Bit- Manipulation ISA Extension, so let’s enable them in QEMU as well.

v2: 01/11: target/riscv: Add CLIC CSR mintstatus

CSR mintstatus holds the active interrupt level for each supported privilege mode. sintstatus, and user, uintstatus, provide restricted views of mintstatus.

v2: 00/11: RISC-V: support CLIC v0.9 specification

This patch set gives an implementation of “RISC-V Core-Local Interrupt Controller(CLIC) Version 0.9-draft-20210217”.

v1: boot: optee-os: enable RISC-V (64-bit) architecture

OP-TEE OS and TAs can run on RISC-V (64-bit) machines, so allow optee-os to be compiled for the new architecture.

U-Boot

v2: Risc-V cache operations

This patchset adds support for using the CBO instructions to perform the dcache flush/inval operations for the qemu-riscv board when those are enabled.

v3: Make LMB memory map global and persistent

This is a follow-up from an earlier RFC series for making the LMB and EFI memory allocations work together.

v1: riscv: Add AST2700 platform support

AST2700 is the 7th generation of Aspeed BMC SoCs.



Read Album:

Read Related:

Read Latest: