diff --git a/news/README.md b/news/README.md index eecdb1738b7178ce5a29c49bb3a91fa8e3b2958f..8f60f1851f86acf54f152b8eb11c32f31f76d289 100644 --- a/news/README.md +++ b/news/README.md @@ -1,5 +1,534 @@ # RISC-V Linux 内核及周边技术动态 +## 20230101:第 27 期 + +### 内核动态 + +#### RISC-V 架构支持 + + * v7: [RESEND: leds: Allwinner A100 LED controller support](http://lore.kernel.org/linux-riscv/20221231235541.13568-1-samuel@sholland.org/) + + This series adds bindings and a driver for the RGB LED controller found + in some Allwinner SoCs, starting with A100. The hardware in the R329 and + D1 SoCs appears to be identical. + +* [v4: riscv: Allwinner D1/D1s platform support](http://lore.kernel.org/linux-riscv/20221231233851.24923-1-samuel@sholland.org/) + + This series adds the Kconfig/defconfig plumbing and devicetrees for a + range of Allwinner D1 and D1s-based boards. Many features are already enabled, including USB, Ethernet, and WiFi. + +* [v2: clk: sunxi-ng: Allwinner R528/T113 clock support](http://lore.kernel.org/linux-riscv/20221231231429.18357-1-samuel@sholland.org/) + + R528 and T113 are SoCs based on the same design as D1/D1s, but with ARM + CPUs instead of RISC-V. They use the same CCU implementation, meaning + the CCU has gates/resets for all peripherals present on any SoC in this + family. I verified the CAN bus bits are also present on D1/D1s. + +* [v1: Allwinner D1 video engine support](http://lore.kernel.org/linux-riscv/20221231164628.19688-1-samuel@sholland.org/) + + This series finishes adding Cedrus support for Allwinner D1. I had + tested the hardware and documented the compatible string a while back, + but at the time I had a dummy SRAM section in the devicetree. Further + testing shows that there is no switchable SRAM section -- there is no + need for it, I was unable to guess the address, and the usual bits in + the SRAM controller register have no effect on the video engine. + +* [v3: arch: rename all internal names __xchg to __arch_xchg](http://lore.kernel.org/linux-riscv/20221230141552.128508-1-andrzej.hajda@intel.com/) + + __xchg will be used for non-atomic xchg macro. + +* [v1: riscv: dts: renesas: rzfive-smarc-som: Enable OSTM nodes](http://lore.kernel.org/linux-riscv/20221229230300.104524-1-prabhakar.mahadev-lad.rj@bp.renesas.com/) + + Enable OSTM{1,2} nodes on RZ/Five SMARC SoM. + + Note, OSTM{1,2} nodes are enabled in the RZ/G2UL SMARC SoM DTSI [v1: 0] hence + deleting the disabled nodes from RZ/Five SMARC SoM DTSI enables it here + too as we include [v1: 0] in RZ/Five SMARC SoM DTSI. + +* [v2: clocksource/drivers/riscv: Get rid of clocksource_arch_init() callback](http://lore.kernel.org/linux-riscv/20221229224601.103851-1-prabhakar.mahadev-lad.rj@bp.renesas.com/) + + Having a clocksource_arch_init() callback always sets vdso_clock_mode to + VDSO_CLOCKMODE_ARCHTIMER if GENERIC_GETTIMEOFDAY is enabled, this is + required for the riscv-timer. + + This works for platforms where just riscv-timer clocksource is present. + On platforms where other clock sources are available we want them to + register with vdso_clock_mode set to VDSO_CLOCKMODE_NONE. + +* [v1: riscv: sbi: Switch to the sys-off handler API](http://lore.kernel.org/linux-riscv/20221228161915.13194-1-samuel@sholland.org/) + + I want to convert the axp20x PMIC poweroff handler to use the sys-off + API, so it can be used as a fallback for if the SBI poweroff handler + is unavailable. But the SBI poweroff handler still uses pm_power_off, so + done alone, this would cause the axp20x callback to be called first, + before the SBI poweroff handler has a chance to run. + +* [v2: hwrng: starfive - Add driver for TRNG module](http://lore.kernel.org/linux-riscv/20221228071103.91797-1-jiajie.ho@starfivetech.com/) + + This patch series adds kernel support for StarFive hardware random + number generator. First 2 patches add bindings documentation and driver + for this module. Patch 3 adds devicetree entry for VisionFive v2 SoC. + +* [v1: clocksource/drivers/riscv: Increase the clock source rating](http://lore.kernel.org/linux-riscv/20221228004444.61568-1-samuel@sholland.org/) + + RISC-V provides an architectural clock source via the time CSR. This + clock source exposes a 64-bit counter synchronized across all CPUs. + Because it is accessed using a CSR, it is much more efficient to read + than MMIO clock sources. For example, on the Allwinner D1, reading the + sun4i timer in a loop takes 131 cycles/iteration, while reading the RISC-V time CSR takes only 5 cycles/iteration. + +* [v2: dt-bindings: riscv: add SBI PMU event mappings](http://lore.kernel.org/linux-riscv/20221227194056.3891216-1-conor@kernel.org/) + + The SBI PMU extension requires a firmware to be aware of the event to + counter/mhpmevent mappings supported by the hardware. OpenSBI may use + DeviceTree to describe the PMU mappings. This binding is currently + described in markdown in OpenSBI (since v1.0 in Dec 2021) & used by QEMU since v7.2.0. + +* [v2: StarFive's SDIO/eMMC driver support](http://lore.kernel.org/linux-riscv/20221227122227.460921-1-william.qiu@starfivetech.com/) + + This patchset adds initial rudimentary support for the StarFive + designware mobile storage host controller driver. And this driver will + be used in StarFive's VisionFive 2 board. The main purpose of adding + this driver is to accommodate the ultra-high speed mode of eMMC. + +* [v5: Add OPTPROBES feature on RISCV](http://lore.kernel.org/linux-riscv/20221224114315.850130-1-chenguokai17@mails.ucas.ac.cn/) + + Add jump optimization support for RISC-V. + + Replaces ebreak instructions used by normal kprobes with an + auipc+jalr instruction pair, at the aim of suppressing the probe-hit overhead. + + All known optprobe-capable RISC architectures have been using a single + jump or branch instructions while this patch chooses not. RISC-V has a + quite limited jump range (4KB or 2MB) for both its branch and jump instructions, which prevent optimizations from supporting probes that spread all over the kernel. + +#### 进程调度 + +* [v2: sched/fair: unlink misfit task from cpu overutilized](http://lore.kernel.org/lkml/20221228165415.3436-1-vincent.guittot@linaro.org/) + + By taking into account uclamp_min, the 1:1 relation between task misfit + and cpu overutilized is no more true as a task with a small util_avg of + may not may not fit a high capacity cpu because of uclamp_min constraint. + + Add a new state in util_fits_cpu() to reflect the case that task would fit + a CPU except for the uclamp_min hint which is a performance requirement. + +* [v1: sched: print parent comm in sched_show_task()](http://lore.kernel.org/lkml/20221227161400.GA7646@didi-ThinkCentre-M930t-N000/) + + Knowing who the parent is might be useful for debugging. + For example, we can sometimes resolve kernel hung tasks by stopping + the person who begins those hung tasks. + With the parent's name printed in sched_show_task(), it might be helpful to let people know which "service" should be operated. + +* [v1: sched/cputime: Make cputime_adjust() more accurate](http://lore.kernel.org/lkml/20221226031010.4079885-1-maxing.lan@bytedance.com/) + + In the current algorithm of cputime_adjust(), the accumulated stime and + utime are used to divide the accumulated rtime. When the value is very + large, it is easy for the stime or utime not to be updated. + +#### 内存管理 + +* [v1: Get rid of first tail page fields](http://lore.kernel.org/linux-mm/20221231214610.2800682-1-willy@infradead.org/) + + Continue the shrinkage of the struct page definition by getting rid of the + 'first tail page' fields. I originally did this patch set before Hugh's + rewrite of the subpages_mapcount, so it needed substantial updates; + hope I didn't miss anything. + +* [v2: scripts/gdb: add mm introspection utils](http://lore.kernel.org/linux-mm/20221231171258.7907-1-dmitrii.bundin.a@gmail.com/) + + This command provides a way to traverse the entire page hierarchy by a + given virtual address on x86. In addition to qemu's commands info + tlb/info mem it provides the complete information about the paging structure for an arbitrary virtual address. It supports 4KB/2MB/1GB and 5 level paging. + +* [v2: mm: huge_memory: convert split_huge_pages_all() to use a folio](http://lore.kernel.org/linux-mm/20221230093020.9664-1-wangkefeng.wang@huawei.com/) + + Straightforwardly convert split_huge_pages_all() to use a folio. + +* [v4: -next: mm: convert page_idle/damon to use folios](http://lore.kernel.org/linux-mm/20221230070849.63358-1-wangkefeng.wang@huawei.com/) + +* [v3: mm/page_reporting: replace rcu_access_pointer() with rcu_dereference_protected()](http://lore.kernel.org/linux-mm/20221228175942.149491-1-sj@kernel.org/) + + Page reporting fetches pr_dev_info using rcu_access_pointer(), which is + for safely fetching a pointer that will not be dereferenced but could + concurrently updated. The code indeed does not dereference pr_dev_info + after fetching it using rcu_access_pointer(), but it fetches the pointer + while concurrent updates to the pointer is avoided by holding the update + side lock, page_reporting_mutex. + +* [v1: mm, slab: periodically resched in drain_freelist()](http://lore.kernel.org/linux-mm/b1808b92-86df-9f53-bfb2-8862a9c554e9@google.com/) + + drain_freelist() can be called with a very large number of slabs to free, + such as for kmem_cache_shrink(), or depending on various settings of the + slab cache when doing periodic reaping. + + If there is a potentially long list of slabs to drain, periodically + schedule to ensure we aren't saturating the cpu for too long. + +* [v1: arm64/vmalloc: use module region only for module_alloc() if CONFIG_RANDOMIZE_BASE is set](http://lore.kernel.org/linux-mm/20221227092634.445212-1-liushixin2@huawei.com/) + + After I add a 10GB pmem device, I got the following error message when + insert module: + + insmod: vmalloc error: size 16384, vm_struct allocation failed, + mode:0xcc0(GFP_KERNEL), nodemask=(null),cpuset=/,mems_allowed=0 + + Skip module region if not calling from module_alloc(). + +* [v1: migrate_pages(): batch TLB flushing](http://lore.kernel.org/linux-mm/20221227002859.27740-1-ying.huang@intel.com/) + + If multiple folios are passed to migrate_pages(), there are + opportunities to batch the TLB flushing and copying. That is, we can + change the code to something as follows, + + The total number of TLB flushing IPI can be reduced considerably. And we may use some hardware accelerator such as DSA to accelerate the folio copying. + +#### 文件系统 + +* [v1: fs/ext4: Replace kmap_atomic() with kmap_local_page()](http://lore.kernel.org/linux-fsdevel/20221231174439.8557-1-fmdefrancesco@gmail.com/) + + However, the code within the mappings and un-mappings in ext4/inline.c + does not depend on the above-mentioned side effects. + + Therefore, a mere replacement of the old API with the new one is all it + is required (i.e., there is no need to explicitly add any calls to pagefault_disable() and/or preempt_disable()). + +* [v1: fs/ext2: Replace kmap_atomic() with kmap_local_page()](http://lore.kernel.org/linux-fsdevel/20221231174205.8492-1-fmdefrancesco@gmail.com/) + + However, the code within the mapping and un-mapping in ext2_make_empty() + does not depend on the above-mentioned side effects. + + Therefore, a mere replacement of the old API with the new one is all it + is required (i.e., there is no need to explicitly add any calls to + pagefault_disable() and/or preempt_disable()). + +* [v5: Turn iomap_page_ops into iomap_folio_ops](http://lore.kernel.org/linux-fsdevel/20221231150919.659533-1-agruenba@redhat.com/) + + The patches are split up into relatively small pieces. That may seem + unnecessary, but at least it makes reviewing the patches easier. + +* [v1: fs/sysv: Replace kmap() with kmap_local_page()](http://lore.kernel.org/linux-fsdevel/20221231075717.10258-1-fmdefrancesco@gmail.com/) + + kmap() is deprecated in favor of kmap_local_page(). + + There are two main problems with kmap(): (1) It comes with an overhead as + the mapping space is restricted and protected by a global lock for + synchronization and (2) it also requires global TLB invalidation when the + kmap’s pool wraps and it might block when the mapping space is fully + utilized until a slot becomes available. + +* [v4: -next: fs: coredump: using preprocessor directives for dump_emit_page](http://lore.kernel.org/linux-fsdevel/20221230022446.448179-1-xiehongyu1@kylinos.cn/) + + When CONFIG_COREDUMP is set and CONFIG_ELF_CORE is not, you'll get warnings + like: + fs/coredump.c:841:12: error: ‘dump_emit_page’ defined but not used + [v1: -Werror=unused-function] + 841 | static int dump_emit_page(struct coredump_params *cprm, struct + page *page) + + dump_emit_page only called in dump_user_range, since dump_user_range + using #ifdef preprocessor directives, use #ifdef for dump_emit_page too. + +* [v5: fs/ufs: Replace kmap() with kmap_local_page](http://lore.kernel.org/linux-fsdevel/20221229225100.22141-1-fmdefrancesco@gmail.com/) + + With kmap_local_page() the mappings are per thread, CPU local, can take + page faults, and can be called from any context (including interrupts). + It is faster than kmap() in kernels with HIGHMEM enabled. Furthermore, + the tasks can be preempted and, when they are scheduled to run again, the + kernel virtual addresses are restored and still valid. + +* [v2: Introduce provisioning primitives for thinly provisioned storage](http://lore.kernel.org/linux-fsdevel/20221229081252.452240-1-sarthakkukreti@chromium.org/) + + This patch series adds a mechanism to pass through provision requests on + stacked thinly provisioned storage devices/filesystems. + + The linux kernel provides several mechanisms to set up thinly provisioned + block storage abstractions (eg. dm-thin, loop devices over sparse files), + either directly as block devices or backing storage for filesystems. + +* [v1: Add new open(2) flag - O_EMPTY_PATH](http://lore.kernel.org/linux-fsdevel/20221228160249.428399-1-ahamza@ixsystems.com/) + + This patch adds a new flag O_EMPTY_PATH that allows openat and open + system calls to open a file referenced by fd if the path is empty, + and it is very similar to the FreeBSD O_EMPTY_PATH flag. + +* [v1: fs: nls: Simplification of ASCII and ISO-8859-1](http://lore.kernel.org/linux-fsdevel/20221226144301.16382-1-pali@kernel.org/) + + This is RFC patch series which simplify ASCII and ISO-8859-1 tables. + I'm not sure what is the direction of the nls code and duplicated + default/iso88591 tables, so I'm sending this series as RFC. + +* [v2: eventfd: use a generic helper instead of an open coded wait_event](http://lore.kernel.org/linux-fsdevel/tencent_1D2E4866B2223D9A19DF4FFB79AFAA955A05@qq.com/) + + Use wait_event_interruptible_locked_irq() in the eventfd_{write,read} to + avoid the longer, open coded equivalent. + +* [v1: blk: optimization for classic polling](http://lore.kernel.org/linux-fsdevel/3578876466-3733-1-git-send-email-nj.shetty@samsung.com/) + + This removes the dependency on interrupts to wake up task. Set task + state as TASK_RUNNING, if need_resched() returns true, + while polling for IO completion. + Earlier, polling task used to sleep, relying on interrupt to wake it up. + This made some IO take very long when interrupt-coalescing is enabled in NVMe. + +#### 网络设备 + +* [v1: net-next: net: ipa: simplify IPA interrupt handling](http://lore.kernel.org/netdev/20221230232230.2348757-1-elder@linaro.org/) + + One of the IPA's two IRQs fires when data on a suspended channel is + available (to request that the channel--or system--be resumed to + recieve the pending data). This interrupt also handles a few + conditions signaled by the embedded microcontroller. + + For this "IPA interrupt", the current code requires a handler to be + dynamically registered for each interrupt condition. Any condition + that has no registered handler is quietly ignored. This design is derived from the downstream IPA driver implementation. + +* [v1: net: ipa: use proper endpoint mask for suspend](http://lore.kernel.org/netdev/20221230223304.2137471-1-elder@linaro.org/) + + It is now possible for a system to have more than 32 endpoints. As + a result, registers related to endpoint suspend are parameterized, with 32 endpoints represented in one more registers. + +* [v2: net-next: r8169: disable ASPM in case of tx timeout](http://lore.kernel.org/netdev/06bab827-be4a-606e-7a01-52379b1e1a91@gmail.com/) + + There are still single reports of systems where ASPM incompatibilities + cause tx timeouts. It's not clear whom to blame, so let's disable + ASPM in case of a tx timeout. + +* [v1: igc: Mask replay rollover/timeout errors in I225_LMVP](http://lore.kernel.org/netdev/20221229122640.239859-1-rajat.khandelwal@linux.intel.com/) + + The CPU logs get flooded with replay rollover/timeout AER errors in + the system with i225_lmvp connected, usually inside thunderbolt devices. + + One of the prominent TBT4 docks we use is HP G4 Hook2, which incorporates + an Intel Foxville chipset, which uses the igc driver. + On connecting ethernet, CPU logs get inundated with these errors. + +* [v1: tcp/udp: add tracepoint for send recv length](http://lore.kernel.org/netdev/20221229080207.1029-1-cuiyunhui@bytedance.com/) + + Add a tracepoint for capturing TCP segments with + a send or receive length. This makes it easy to obtain + the packet sending and receiving information of each process in the user mode, such as the netatop tool. + +* [v1: wifi: ath9k: htc_hst: free skb in ath9k_htc_rx_msg() if there is no callback function](http://lore.kernel.org/netdev/20221228224047.146399-1-pchelkin@ispras.ru/) + + It is stated that ath9k_htc_rx_msg() either frees the provided skb or + passes its management to another callback function. However, the skb is + not freed in case there is no another callback function, and Syzkaller was + able to cause a memory leak. Also minor comment fix. + +* [v2: net: qed: allow sleep in qed_mcp_trace_dump()](http://lore.kernel.org/netdev/20221228220045.101647-1-csander@purestorage.com/) + + By default, qed_mcp_cmd_and_union() delays 10us at a time in a loop + that can run 500K times, so calls to qed_mcp_nvm_rd_cmd() + may block the current thread for over 5s. + We observed thread scheduling delays over 700ms in production, + with stacktraces pointing to this code as the culprit. + +* [v1: net: amd-xgbe: add missed tasklet_kill](http://lore.kernel.org/netdev/20221228081447.3400369-1-jiguang.xiao@windriver.com/) + + The driver does not call tasklet_kill in several places. + Add the calls to fix it. + +* [v2: net: hns3: refine the handling for VF heartbeat](http://lore.kernel.org/netdev/20221228062749.58809-1-lanhao@huawei.com/) + + Currently, the PF check the VF alive by the KEEP_ALVE + mailbox from VF. VF keep sending the mailbox per 2 + seconds. Once PF lost the mailbox for more than 8 + seconds, it will regards the VF is abnormal, and stop + notifying the state change to VF, include link state, + vf mac, reset, even though it receives the KEEP_ALIVE mailbox again. + +* [v1: rtw88: Add SDIO support](http://lore.kernel.org/netdev/20221227233020.284266-1-martin.blumenstingl@googlemail.com/) + + Recently the rtw88 driver has gained locking support for the "slow" bus + types (USB, SDIO) as part of USB support. Thanks to everyone who helped + make this happen! + + Based on the USB work (especially the locking part and various + bugfixes) this series adds support for SDIO based cards. It's the + result of a collaboration between Jernej and myself. Neither of us has + access to the rtw88 datasheets. All of our work is based on studying + the RTL8822BS and RTL8822CS vendor drivers and trial and error. + + Jernej and myself have tested this with RTL8822BS and RTL8822CS cards. + Other users have confirmed that RTL8821CS support is working as well. + RTL8723DS may also work (we tried our best to handle rtw_chip_wcpu_11n + where needed) but has not been tested at this point. + + Jernej's results with a RTL8822BS: + - Main functionality works + - Had a case where no traffic got across the link until he issued a + scan + + My results with a RTL8822CS: + - 2.4GHz and 5GHz bands are both working + - TX throughput on a 5GHz network is between 50 Mbit/s and 90 Mbit/s + - RX throughput on a 5GHz network is at 19 Mbit/s + - Sometimes there are frequent reconnects (once every 1-5 minutes) + after the link has been up for a long time (multiple hours). Today + I was unable to reproduce this though (I only had reconnect in 8 + hours). + + Why is this an RFC? + - It needs a through review especially by the rtw88 maintainers + - It's not clear to me how the "mmc: sdio" patch will be merged (will + Ulf take this or can we merge + +* [v1: net: dpaa2-mac: Get serdes only for backplane links](http://lore.kernel.org/netdev/20221227230918.2440351-1-sean.anderson@seco.com/) + + This implies that Linux only manages the SerDes when the link type is + backplane. From my testing, the link fails to come up when the link type is + phy, but does come up when it is backplane. Modify the condition in dpaa2_mac_connect to reflect this, moving the existing conditions to more appropriate places. + +* [v2: net-next: net: mdio: Start separating C22 and C45](http://lore.kernel.org/netdev/20221227-v6-2-rc1-c45-seperation-v2-0-ddb37710e5a7@walle.cc/) + + This patch set starts the separation of C22 and C45 MDIO bus + transactions at the API level to the MDIO Bus drivers. C45 read and + write ops are added to the MDIO bus driver structure, and the MDIO + core will try to use these ops if requested to perform a C45 + transfer. + +* [v1: ethtool-next: JSON output support for Netlink implementation of --show-ring option](http://lore.kernel.org/netdev/20221227175221.7762-1-glipus@gmail.com/) + + Add --json support for Netlink implementation of --show-ring option No changes for non-JSON output for this featire. + +* [v1: s390/qeth: convert sysfs snprintf to sysfs_emit](http://lore.kernel.org/netdev/20221227110352.1436120-1-zhangxuezhi3@gmail.com/) + + Follow the advice of the Documentation/filesystems/sysfs.rst + and show() should only use sysfs_emit() or sysfs_emit_at() + when formatting the value to be returned to user space. + +* [v1: iproute2: dcb: Do not leave ACKs in socket receive buffer](http://lore.kernel.org/netdev/20221227110318.2899056-1-idosch@nvidia.com/) + + Originally, the dcb utility only stopped receiving messages from a + socket when it found the attribute it was looking for. Cited commit + changed that, so that the utility will also stop when seeing an ACK + (NLMSG_ERROR message), by setting the NLM_F_ACK flag on requests. + + This is problematic because it means a successful request will leave an ACK in the socket receive buffer, causing the next request to bail before reading its response. + +* [v1: Introduce a vringh accessor for IO memory](http://lore.kernel.org/netdev/20221227022528.609839-1-mie@igel.co.jp/) + + Vringh is a host-side implementation of virtio rings, and supports the + vring located on three kinds of memories, userspace, kernel space and a + space translated iotlb. + + The goal of this patchset is to refactor vringh and introduce a new vringh + accessor for the vring located on the io memory region. + +* [v2: Add some USB hotspot IDs](http://lore.kernel.org/netdev/20221226234751.444917-1-mjg59@srcf.ucam.org/) + + Add a few additional IDs to support a couple of hotspots I had lying + around. V2 avoids reserving the PPP modem endpoint for the MDM9207 + devices. + +* [v2: net: net/ethtool/ioctl: split ethtool_get_phy_stats into multiple helpers](http://lore.kernel.org/netdev/20221226114825.1937189-1-d-tatianin@yandex-team.ru/) + + This series fixes a potential NULL dereference in ethtool_get_phy_stats + while also attempting to refactor/split said function into multiple + helpers so that it's easier to reason about what's going on. + +* [v2: wireless-next: wl18xx: use strscpy() to instead of strncpy()](http://lore.kernel.org/netdev/202212261914060599112@zte.com.cn/) + + The implementation of strscpy() is more robust and safer. + That's now the recommended way to copy NUL-terminated strings. + +* [v1: virtio-net: don't busy poll for cvq command](http://lore.kernel.org/netdev/20221226074908.8154-1-jasowang@redhat.com/) + + The code used to busy poll for cvq command which turns out to have + several side effects: + + 1) infinite poll for buggy devices + 2) bad interaction with scheduler + + So this series tries to use sleep + timeout instead of busy polling. + +* [v1: batman-adv: Check return value](http://lore.kernel.org/netdev/20221224233311.48678-1-artem.chernyshev@red-soft.ru/) + + Check, if rtnl_link_register() call in batadv_init() was successful + + Found by Linux Verification Center (linuxtesting.org) with SVACE. + +#### BPF + +* [v1: bpf-next: Support for BPF_ST instruction in LLVM C compiler](http://lore.kernel.org/bpf/20221231163122.1360813-1-eddyz87@gmail.com/) + + Currently LLVM BPF back-end does not emit BPF_ST instruction and does not allow one to be specified as inline assembly. + + Recently I've been exploring ways to port some of the verifier test + cases from tools/testing/selftests/bpf/verifier/*.c to use inline assembly + and machinery provided in tools/testing/selftests/bpf/test_loader.c + (which should hopefully simplify tests maintenance). + +* [v1: bpf-next: libbpf: Add LoongArch support to bpf_tracing.h](http://lore.kernel.org/bpf/20221231100757.3177034-1-hengqi.chen@gmail.com/) + + Add PT_REGS macros for LoongArch ([v1: 0]). + +* [v1: bpf-next: bpf: Handle reuse in bpf memory alloc](http://lore.kernel.org/bpf/20221230041151.1231169-1-houtao@huaweicloud.com/) + + Tndles element reuse in bpf memory allocator. The immediate reuse of + freed elements may lead to two problems in htab map: + reuse will reinitialize special fields (e.g., bpf_spin_lock) in htab map value and it may corrupt lookup procedure with BFP_F_LOCK flag which acquires bpf-spin-lock during value copying. The corruption of bpf-spin-lock may result in hard lock-up. + +* [bpf helpers freeze. Was: v2: bpf-next: Dynptr convenience helpers](http://lore.kernel.org/bpf/20221225215210.ekmfhyczgubx4rih@macbook-pro-6.dhcp.thefacebook.com/) + + uapi helpers vs kfuncs argument is not a black and white comparison. + It's not just stable vs unstable. + uapi has strict rules and helpers in uapi/bpf.h have to follow those rules. + While kfuncs in terms of stability are equivalent to EXPORT_SYMBOL_GPL. + +### 周边技术动态 + +#### Qemu + +* [v1: riscv: do not set the rounding mode via `gen_set_rm`](http://lore.kernel.org/qemu-devel/20221229172734.119600-1-abdulras@google.com/) + + Setting the rounding mode via the `gen_set_rm` call would alter the + state of the disassembler, resetting the `TransOp` in the assembler + context. When we subsequently set the rounding mode to the desired + value, we would trigger an assertion in `decode_save_opc`. + +* [v2: hw/riscv: Improve Spike HTIF emulation fidelity](http://lore.kernel.org/qemu-devel/20221229091828.1945072-1-bmeng@tinylab.org/) + + At present the 32-bit OpenSBI generic firmware image does not boot on + Spike, only 64-bit image can. This is due to the HTIF emulation does + not implement the proxy syscall interface which is required for the + 32-bit HTIF console output. + + An OpenSBI bug fix [v1: 1] is also needed when booting the plain binary image. + +#### Buildroot + +* [v2: package/qemu: refactor target emulator selection](http://lore.kernel.org/buildroot/20221227114842.2620182-1-unixmania@gmail.com/) + + Since CUSTOM_TARGETS does not select FDT, we can get build errors like + this: + + ../meson.build:2778:2: ERROR: Problem encountered: fdt not available but required by targets x86_64-softmmu + + We could select FDT when CUSTOM_TARGETS is set, but this would force an + unnecessary dependency on dtc, as BR2_PACKAGE_QEMU_SYSTEM does. + +#### U-Boot + +* [v1: Pull request for efi-2023-01-rc5-2](http://lore.kernel.org/u-boot/80393d33-8a51-2840-b5c5-112298e4c5aa@gmx.de/) + + Pull request for efi-2023-01-rc5-2 + + Documentation: + + * Reorganize existing TI docs and add K3 generation page + * Add texinfodocs and infodocs targets + * Update qemu-ppce500 documentation + * Use "changesets" not "csets" in statistics pages + + UEFI + + * Fix merging of preseeded non-volatile variables + * Fix a return value in the EFI_HII_DATABASE_PROTOCOL + * Set UEFI specification version to 2.10 + ## 20221225:第 26 期 ### 内核动态