Go to file
Lorenzo Bianconi 926f968742 net: page_pool: add the possibility to sync DMA memory for device
Introduce the following parameters in order to add the possibility to sync
DMA memory for device before putting allocated pages in the page_pool
caches:
- PP_FLAG_DMA_SYNC_DEV: if set in page_pool_params flags, all pages that
  the driver gets from page_pool will be DMA-synced-for-device according
  to the length provided by the device driver. Please note DMA-sync-for-CPU
  is still device driver responsibility
- offset: DMA address offset where the DMA engine starts copying rx data
- max_len: maximum DMA memory size page_pool is allowed to flush. This
  is currently used in __page_pool_alloc_pages_slow routine when pages
  are allocated from page allocator
These parameters are supposed to be set by device drivers.

This optimization reduces the length of the DMA-sync-for-device.
The optimization is valid because pages are initially
DMA-synced-for-device as defined via max_len. At RX time, the driver
will perform a DMA-sync-for-CPU on the memory for the packet length.
What is important is the memory occupied by packet payload, because
this is the area CPU is allowed to read and modify. As we don't track
cache-lines written into by the CPU, simply use the packet payload length
as dma_sync_size at page_pool recycle time. This also take into account
any tail-extend.

Tested-by: Matteo Croce <mcroce@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: hongrongxuan <hongrongxuan@huawei.com>
2024-06-12 13:16:51 +08:00
Documentation asm-generic: introduce io_stop_wc() and add implementation for ARM64 2024-06-12 13:16:50 +08:00
LICENSES LICENSES: Rename other to deprecated 2019-05-03 06:34:32 -06:00
arch asm-generic: introduce io_stop_wc() and add implementation for ARM64 2024-06-12 13:16:50 +08:00
block tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
certs tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
crypto tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
dist dist: provide kernel version info in kernel*core*.rpm 2024-06-12 13:16:35 +08:00
drivers drm: support virtualbox display 2024-06-12 13:16:49 +08:00
fs tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
include net: page_pool: add the possibility to sync DMA memory for device 2024-06-12 13:16:51 +08:00
init Kconfig: disable BT_SCHED and ZRAM_MEMCG 2024-06-12 13:16:36 +08:00
ipc tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
kernel tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
lib tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
mm mm/Makefile: fix make rpm-pkg fail 2024-06-12 13:16:36 +08:00
net net: page_pool: add the possibility to sync DMA memory for device 2024-06-12 13:16:51 +08:00
package tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
samples tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
scripts tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
security tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
sound tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
tools tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
usr tkernel: add base tlinux kernel interfaces 2024-06-11 20:09:33 +08:00
virt tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
.clang-format tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
.cocciconfig
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes ock: sync codes to ock 5.4.119-20.0009.21 2024-06-11 20:27:38 +08:00
.gitignore ock: sync codes to ock 5.4.119-20.0009.21 2024-06-11 20:27:38 +08:00
.mailmap tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
COPYING COPYING: use the new text with points to the license files 2018-03-23 12:41:45 -06:00
CREDITS MAINTAINERS: Remove Simon as Renesas SoC Co-Maintainer 2019-10-10 08:12:51 -07:00
Kbuild kbuild: do not descend to ./Kbuild when cleaning 2019-08-21 21:03:58 +09:00
Kconfig docs: kbuild: convert docs to ReST and rename to *.rst 2019-06-14 14:21:21 -06:00
MAINTAINERS tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
Makefile tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
README.md tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
backport_remove_lists.txt tkernel: add base tlinux kernel interfaces 2024-06-11 20:09:33 +08:00
tools_key.pub tkernel: add base tlinux kernel interfaces 2024-06-11 20:09:33 +08:00

README.md

Tencent Linux Kernel 4.0

一、项目介绍 README

wiki空间
TK (TencentOS kernel)是腾讯OS团队自研的TencentOS内核将最新的Linux创新推向市场
为企业各类软件提供了超强性能、高可伸缩性和可靠性。

生命周期

TK4基于社区5.4 longterm2020年发布2025年12月31日停止维护。
image.png

  • 开发阶段:内核发布前的内部构建、准备、开发阶段。
  • 全面支持会持续开发、回合新特性、定期对其上游Bug Fix。
  • 扩展支持主要对齐上游bug fix patch以稳定运行为主。
    TK4各版本changelog信息

二、快速上手 Getting Started

1、config

本地编译前需要按照服务器类型准备好对应config文件服务器编译可以跳过该部分

  • 标准 X86 config路径
package/default/config.default   
  • 标准 ARM config路径
package/arm/config.default   

2、构建&安装镜像

  • 本地编译
make -j[x] # 编译   
make modules_install install # 安装  
  • Tmanger编译
    tmanger 在下拉菜单中选择对应仓库等会自动进行编译成功后会生成对应rpm压缩包。 执行如下指令安装
rpm -ivh *.rpm

头文件rpm包最好使用-Uvh方式安装


三、常见问题

详细各模块问题: 常见问题总结

  • TK现网问题负责人
    tlinux_helperfrankjpliu, shookliusamuelliaoalexsshi。
  • 如何查看内核版本
uname -r

4、行为准则

1、合入准则

TK采用TKCI保证合入代码的初步检测。 TKCI 是tkernel 自动CI系统 它可以自动监测TKERNEL https://git.woa.com/tlinux/tkernel4 仓库任意push 并对pushed commit/branch, 自动启动13个蓝盾测试包括一个 commit 规范检查12个内核不同config build测试并支持TKCONFIG 内核准入测试711case未来还会支持更多。 TK4合入准则

2、MR请求

各领域Reviewer

  • 现网运营问题: samuelliao(廖生苗)
  • TK通用Bug kaixuxia(夏开旭)
  • 如意相关问题: herberthbli(李弘博)
  • 悟能相关问题: aurelianliu(刘诗)
  • TK规范问题: alexsshi(时奎亮)
  • BPF工具问题: haisuwang(王海粟)
    (或可联系内核研发组任意同学)

五、如何加入 How To Join

  • 专职开发
    企微联系jasperwang(王佳)
  • Bug提交
    可以MR方式提交并联系前文提到的同学

六、团队介绍 Members

1、总览

image.png

2、新特性

悟能

悟能wiki空间
悟能(简称ECO),目前基于x86 corec-state、uncore duf两部分硬件节能。例如x86 cpu c-state来做能效架构设计。以x86为例在操作系统层面通过电源管理、cpu idle子系统、调度器子系统、中断子系统等使cpu空闲并且使其进入深度睡眠c6 state从而达到节能的目的。悟能的当前目标是保证性能的前提下争取节能。二期也就是现在到明年的目标是提高性能的前提下争取节能。

如意

如意wiki空间
如意TencentOS RUE(Resource Utilization Enhancement)是TencentOS产品矩阵中一款专为云原生场景下服务器资源QoS设计提升资源利用率降低运营成本的产品。如意是统一调度分配云上机器的CPU、IO、网络、内存等资源相比传统的服务器资源管理方案如意更适用于云场景能够显著提升云上机器的资源使用效率降低云上客户的运营成本为公有云、混合云、私有云等客户提供资源增值服务。

七、版本规划及changelog

1、版本规划

版本规划详见: https://iwiki.woa.com/pages/viewpage.action?pageId=4007003111

2、changelog

changelog详见 https://iwiki.woa.com/pages/viewpage.action?pageId=4007003117