[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
RISC-V Linux 内核及周边技术动态第 106 期
时间: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 架构支持
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.
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.
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.
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 bybtf__name_by_offset()
as well asvar_name
, and these addresses point to strings in the btf. Since their locations may change while loading the bpf program, usingstrdup()
ensurestname
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
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.
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 泰晓资讯:汇总一周技术趣闻与文章,查看「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 介绍(一):交叉编译及使用