* [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3
@ 2022-06-22 10:18 Binbin Zhou
2022-06-22 10:18 ` [PATCH 1/9] docs/zh_CN: core-api: Update the translation of cachetlb.rst " Binbin Zhou
` (9 more replies)
0 siblings, 10 replies; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:18 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
In this series of patches, I updated the translated file contents in the core-api
directory to 5.19-rc3.
The next step, I plan to translate the untranslated documents in the core-api
directory. For details, please see TODOLIST in the core-api/index.rst file.
Changes since V1:
- Update the code base to 5.19-rc3
- According to the suggestions of Xiangcheng and Yanteng, the translations of
corresponding documents are updated to make them more readable.
The modified documents are as follows:
cpu_hotplug.rst
irq/irq-domain.rst
printk-format.rst
If you like, please review the mailing list for details.
In addition, for the translation of the Rust part in "printk-format.rst", I will
reorganize it into a patch to the Rust tree.
Binbin Zhou (9):
docs/zh_CN: core-api: Update the translation of cachetlb.rst to
5.19-rc3
docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst to
5.19-rc3
docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst to
5.19-rc3
docs/zh_CN: core-api: Update the translation of kernel-api.rst to
5.19-rc3
docs/zh_CN: core-api: Update the translation of mm-api.rst to 5.19-rc3
docs/zh_CN: core-api: Update the translation of printk-basics.rst to
5.19-rc3
docs/zh_CN: core-api: Update the translation of printk-format.rst to
5.19-rc3
docs/zh_CN: core-api: Update the translation of workqueue.rst to
5.19-rc3
docs/zh_CN: core-api: Update the translation of xarray.rst to 5.19-rc3
.../translations/zh_CN/core-api/cachetlb.rst | 6 +
.../zh_CN/core-api/cpu_hotplug.rst | 435 +++++++++++++++---
.../zh_CN/core-api/irq/irq-domain.rst | 22 +-
.../zh_CN/core-api/kernel-api.rst | 3 +
.../translations/zh_CN/core-api/mm-api.rst | 23 +-
.../zh_CN/core-api/printk-basics.rst | 3 +-
.../zh_CN/core-api/printk-formats.rst | 3 +-
.../translations/zh_CN/core-api/workqueue.rst | 21 +-
.../translations/zh_CN/core-api/xarray.rst | 4 +-
9 files changed, 449 insertions(+), 71 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH 1/9] docs/zh_CN: core-api: Update the translation of cachetlb.rst to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
@ 2022-06-22 10:18 ` Binbin Zhou
2022-06-22 12:19 ` Wu XiangCheng
2022-06-22 10:18 ` [PATCH 2/9] docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst " Binbin Zhou
` (8 subsequent siblings)
9 siblings, 1 reply; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:18 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
Synchronous translation from upstream commit 08b0b0059bf1
("mm: Add flush_dcache_folio()")
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
Documentation/translations/zh_CN/core-api/cachetlb.rst | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/translations/zh_CN/core-api/cachetlb.rst b/Documentation/translations/zh_CN/core-api/cachetlb.rst
index 6fee45fe5e80..b4a76ec75daa 100644
--- a/Documentation/translations/zh_CN/core-api/cachetlb.rst
+++ b/Documentation/translations/zh_CN/core-api/cachetlb.rst
@@ -5,6 +5,7 @@
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
+ 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
:校译:
@@ -278,6 +279,11 @@ HyperSparc cpu就是这样一个具有这种属性的cpu。
CPU上,因为它将cpu存储到页面上,使其变脏。同样,请看
sparc64关于如何处理这个问题的例子。
+ ``void flush_dcache_folio(struct folio *folio)``
+
+ 该函数的调用情形与flush_dcache_page()相同。它允许架构针对刷新整个
+ folio页面进行优化,而不是一次刷新一页。
+
``void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
unsigned long user_vaddr, void *dst, void *src, int len)``
``void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
--
2.20.1
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [PATCH 2/9] docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
2022-06-22 10:18 ` [PATCH 1/9] docs/zh_CN: core-api: Update the translation of cachetlb.rst " Binbin Zhou
@ 2022-06-22 10:18 ` Binbin Zhou
2022-06-22 12:19 ` Wu XiangCheng
2022-06-23 13:10 ` YanTeng Si
2022-06-22 10:18 ` [PATCH 3/9] docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst " Binbin Zhou
` (7 subsequent siblings)
9 siblings, 2 replies; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:18 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
Synchronous translation from upstream commit c9871c800f65
("Documentation: core-api/cpuhotplug: Rewrite the API section")
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
.../zh_CN/core-api/cpu_hotplug.rst | 435 +++++++++++++++---
1 file changed, 377 insertions(+), 58 deletions(-)
diff --git a/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst b/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst
index 85a264287426..4772a900c37a 100644
--- a/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst
+++ b/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst
@@ -4,6 +4,7 @@
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
+ 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
:校译:
@@ -15,12 +16,13 @@
内核中的CPU热拔插
=================
-:时间: 2016年12月
+:时间: 2021年9月
:作者: Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
- Rusty Russell <rusty@rustcorp.com.au>,
- Srivatsa Vaddagiri <vatsa@in.ibm.com>,
- Ashok Raj <ashok.raj@intel.com>,
- Joel Schopp <jschopp@austin.ibm.com>
+ Rusty Russell <rusty@rustcorp.com.au>,
+ Srivatsa Vaddagiri <vatsa@in.ibm.com>,
+ Ashok Raj <ashok.raj@intel.com>,
+ Joel Schopp <jschopp@austin.ibm.com>,
+ Thomas Gleixner <tglx@linutronix.de>
简介
====
@@ -139,7 +141,7 @@ CPU的热拔插协作
下线情况
--------
-一旦CPU被逻辑关闭,注册的热插拔状态的清除回调将被调用,从 ``CPUHP_ONLINE`` 开始,在
+一旦CPU被逻辑关闭,注册的热插拔状态的清除回调将被调用,从 ``CPUHP_ONLINE`` 开始,到
``CPUHP_OFFLINE`` 状态结束。这包括:
* 如果任务因暂停操作而被冻结,那么 *cpuhp_tasks_frozen* 将被设置为true。
@@ -154,82 +156,399 @@ CPU的热拔插协作
* 一旦所有的服务被迁移,内核会调用一个特定的例程 ``__cpu_disable()`` 来进行特定的清
理。
-使用热插拔API
--------------
+CPU热插拔API
+============
+
+CPU热拔插状态机
+---------------
+
+CPU热插拔使用一个从CPUHP_OFFLINE到CPUHP_ONLINE的线性状态空间的普通状态机。每个状态都
+有一个startup和teardown的回调。
+
+当一个CPU上线时,将按顺序调用startup回调,直到达到CPUHP_ONLINE状态。当设置状态的回调
+或将实例添加到多实例状态时,也可以调用它们。
+
+当一个CPU下线时,将按相反的顺序依次调用teardown回调,直到达到CPUHP_OFFLINE状态。当删
+除状态的回调或从多实例状态中删除实例时,也可以调用它们。
+
+如果某个使用场景只需要一个方向的热插拔操作回调(CPU上线或CPU下线),则在设置状态时,
+可以将另一个不需要的回调设置为NULL。
+
+状态空间被划分成三个阶段:
+
+* PREPARE阶段
+
+ PREPARE阶段涵盖了从CPUHP_OFFLINE到CPUHP_BRINGUP_CPU之间的状态空间。
+
+ 在该阶段中,startup回调在CPU上线操作启动CPU之前被调用,teardown回调在CPU下线操作使
+ CPU功能失效之后被调用。
+
+ 这些回调是在控制CPU上调用的,因为它们显然不能在热插拔的CPU上运行,此时热插拔的CPU要
+ 么还没有启动,要么已经功能失效。
+
+ startup回调用于设置CPU成功上线所需要的资源。teardown回调用于释放资源或在热插拔的CPU
+ 功能失效后,将待处理的工作转移到在线的CPU上。
+
+ 允许startup回调失败。如果回调失败,CPU上线操作被中止,CPU将再次被降到之前的状态(通
+ 常是CPUHP_OFFLINE)。
+
+ 本阶段中的teardown回调不允许失败。
+
+* STARTING阶段
+
+ STARTING阶段涵盖了CPUHP_BRINGUP_CPU + 1到CPUHP_AP_ONLINE之间的状态空间。
+
+ 该阶段中的startup回调是在早期CPU设置代码中的CPU上线操作期间,禁用中断的情况下在热拔
+ 插的CPU上被调用。teardown回调是在CPU完全关闭前不久的CPU下线操作期间,禁用中断的情况
+ 下在热拔插的CPU上被调用。
+
+ 该阶段中的回调不允许失败。
+
+ 回调用于低级别的硬件初始化/关机和核心子系统。
+
+* ONLINE阶段
+
+ ONLINE阶段涵盖了CPUHP_AP_ONLINE + 1到CPUHP_ONLINE之间的状态空间。
+
+ 该阶段中的startup回调是在CPU上线时在热插拔的CPU上调用的。teardown回调是在CPU下线操
+ 作时在热插拔CPU上调用的。
+
+ 回调是在每个CPU热插拔线程的上下文中调用的,该线程绑定在热插拔的CPU上。回调是在启用
+ 中断和抢占的情况下调用的。
+
+ 允许回调失败。如果回调失败,CPU热插拔操作被中止,CPU将恢复到之前的状态。
+
+CPU 上线/下线操作
+-----------------
+
+一个成功的上线操作如下::
+
+ [CPUHP_OFFLINE]
+ [CPUHP_OFFLINE + 1]->startup() -> 成功
+ [CPUHP_OFFLINE + 2]->startup() -> 成功
+ [CPUHP_OFFLINE + 3] -> 略过,因为startup == NULL
+ ...
+ [CPUHP_BRINGUP_CPU]->startup() -> 成功
+ === PREPARE阶段结束
+ [CPUHP_BRINGUP_CPU + 1]->startup() -> 成功
+ ...
+ [CPUHP_AP_ONLINE]->startup() -> 成功
+ === STARTUP阶段结束
+ [CPUHP_AP_ONLINE + 1]->startup() -> 成功
+ ...
+ [CPUHP_ONLINE - 1]->startup() -> 成功
+ [CPUHP_ONLINE]
+
+一个成功的下线操作如下::
+
+ [CPUHP_ONLINE]
+ [CPUHP_ONLINE - 1]->teardown() -> 成功
+ ...
+ [CPUHP_AP_ONLINE + 1]->teardown() -> 成功
+ === STARTUP阶段开始
+ [CPUHP_AP_ONLINE]->teardown() -> 成功
+ ...
+ [CPUHP_BRINGUP_ONLINE - 1]->teardown()
+ ...
+ === PREPARE阶段开始
+ [CPUHP_BRINGUP_CPU]->teardown()
+ [CPUHP_OFFLINE + 3]->teardown()
+ [CPUHP_OFFLINE + 2] -> 略过,因为teardown == NULL
+ [CPUHP_OFFLINE + 1]->teardown()
+ [CPUHP_OFFLINE]
+
+一个失败的上线操作如下::
+
+ [CPUHP_OFFLINE]
+ [CPUHP_OFFLINE + 1]->startup() -> 成功
+ [CPUHP_OFFLINE + 2]->startup() -> 成功
+ [CPUHP_OFFLINE + 3] -> 略过,因为startup == NULL
+ ...
+ [CPUHP_BRINGUP_CPU]->startup() -> 成功
+ === PREPARE阶段结束
+ [CPUHP_BRINGUP_CPU + 1]->startup() -> 成功
+ ...
+ [CPUHP_AP_ONLINE]->startup() -> 成功
+ === STARTUP阶段结束
+ [CPUHP_AP_ONLINE + 1]->startup() -> 成功
+ ---
+ [CPUHP_AP_ONLINE + N]->startup() -> 失败
+ [CPUHP_AP_ONLINE + (N - 1)]->teardown()
+ ...
+ [CPUHP_AP_ONLINE + 1]->teardown()
+ === STARTUP阶段开始
+ [CPUHP_AP_ONLINE]->teardown()
+ ...
+ [CPUHP_BRINGUP_ONLINE - 1]->teardown()
+ ...
+ === PREPARE阶段开始
+ [CPUHP_BRINGUP_CPU]->teardown()
+ [CPUHP_OFFLINE + 3]->teardown()
+ [CPUHP_OFFLINE + 2] -> 略过,因为teardown == NULL
+ [CPUHP_OFFLINE + 1]->teardown()
+ [CPUHP_OFFLINE]
+
+一个失败的下线操作如下::
+
+ [CPUHP_ONLINE]
+ [CPUHP_ONLINE - 1]->teardown() -> 成功
+ ...
+ [CPUHP_ONLINE - N]->teardown() -> 失败
+ [CPUHP_ONLINE - (N - 1)]->startup()
+ ...
+ [CPUHP_ONLINE - 1]->startup()
+ [CPUHP_ONLINE]
+
+递归失败不能被合理地处理。
+请看下面的例子,由于下线操作失败而导致的递归失败::
+
+ [CPUHP_ONLINE]
+ [CPUHP_ONLINE - 1]->teardown() -> 成功
+ ...
+ [CPUHP_ONLINE - N]->teardown() -> 失败
+ [CPUHP_ONLINE - (N - 1)]->startup() -> 成功
+ [CPUHP_ONLINE - (N - 2)]->startup() -> 失败
+
+CPU热插拔状态机在此停止,且不再尝试回滚,因为这可能会导致死循环::
+
+ [CPUHP_ONLINE - (N - 1)]->teardown() -> 成功
+ [CPUHP_ONLINE - N]->teardown() -> 失败
+ [CPUHP_ONLINE - (N - 1)]->startup() -> 成功
+ [CPUHP_ONLINE - (N - 2)]->startup() -> 失败
+ [CPUHP_ONLINE - (N - 1)]->teardown() -> 成功
+ [CPUHP_ONLINE - N]->teardown() -> 失败
+
+周而复始,不断重复。在这种情况下,CPU留在该状态中::
+
+ [CPUHP_ONLINE - (N - 1)]
+
+这至少可以让系统取得进展,让用户有机会进行调试,甚至解决这个问题。
+
+分配一个状态
+------------
+
+有两种方式分配一个CPU热插拔状态:
+
+* 静态分配
+
+ 当子系统或驱动程序有相对于其他CPU热插拔状态的排序要求时,必须使用静态分配。例如,
+ 在CPU上线操作期间,PERF核心startup回调必须在PERF驱动startup回调之前被调用。在CPU
+ 下线操作中,驱动teardown回调必须在核心teardown回调之前调用。静态分配的状态由
+ cpuhp_state枚举中的常量描述,可以在include/linux/cpuhotplug.h中找到。
+
+ 在适当的位置将状态插入枚举中,这样就满足了排序要求。状态常量必须被用于状态的设置
+ 和移除。
+
+ 当状态回调不是在运行时设置的,并且是kernel/cpu.c中CPU热插拔状态数组初始化的一部分
+ 时,也需要静态分配。
+
+* 动态分配
+
+ 当对状态回调没有排序要求时,动态分配是首选方法。状态编号由setup函数分配,并在成功
+ 后返回给调用者。
+
+ 只有PREPARE和ONLINE阶段提供了一个动态分配范围。STARTING阶段则没有,因为该部分的大多
+ 数回调都有明确的排序要求。
+
+CPU热插拔状态的设置
+-------------------
+
+核心代码提供了以下函数用来设置状态:
+
+* cpuhp_setup_state(state, name, startup, teardown)
+* cpuhp_setup_state_nocalls(state, name, startup, teardown)
+* cpuhp_setup_state_cpuslocked(state, name, startup, teardown)
+* cpuhp_setup_state_nocalls_cpuslocked(state, name, startup, teardown)
+
+对于一个驱动程序或子系统有多个实例,并且每个实例都需要调用相同的CPU hotplug状态回
+调的情况,CPU hotplug核心提供多实例支持。与驱动程序特定的实例列表相比,其优势在于
+与实例相关的函数完全针对CPU hotplug操作进行序列化,并在添加和删除时提供状态回调的
+自动调用。要设置这样一个多实例状态,可以使用以下函数:
+
+* cpuhp_setup_state_multi(state, name, startup, teardown)
+
+@state参数要么是静态分配的状态,要么是动态分配状态(PUHP_PREPARE_DYN,CPUHP_ONLINE_DYN)
+的常量之一, 具体取决于应该分配动态状态的状态阶段(PREPARE,ONLINE)。
+
+@name参数用于sysfs输出和检测。命名惯例是"subsys:mode"或"subsys/driver:mode",
+例如 "perf:mode"或"perf/x86:mode"。常见的mode名称有:
+
+======== ============================================
+prepare 对应PREPARE阶段中的状态
+
+dead 对应PREPARE阶段中不提供startup回调的状态
+
+starting 对应STARTING阶段中的状态
+
+dying 对应STARTING阶段中不提供startup回调的状态
+
+online 对应ONLINE阶段中的状态
+
+offline 对应ONLINE阶段中不提供startup回调的状态
+======== ============================================
+
+由于@name参数只用于sysfs和检测,如果其他mode描述符比常见的描述符更好地描述状态的性质,
+也可以使用。
+
+@name参数的示例:"perf/online", "perf/x86:prepare", "RCU/tree:dying", "sched/waitempty"
+
+@startup参数是一个指向回调的函数指针,在CPU上线操作时被调用。若应用不需要startup
+回调,则将该指针设为NULL。
+
+@teardown参数是一个指向回调的函数指针,在CPU下线操作时调用。若应用不需要teardown
+回调,则将该指针设为NULL。
+
+这些函数在处理已注册回调的方式上有所不同:
+
+ * cpuhp_setup_state_nocalls(), cpuhp_setup_state_nocalls_cpuslocked()和
+ cpuhp_setup_state_multi()只注册回调。
+
+ * cpuhp_setup_state()和cpuhp_setup_state_cpuslocked()注册回调,并对当前状态大于新
+ 安装状态的所有在线CPU调用@startup回调(如果不是NULL)。根据状态阶段,回调要么在
+ 当前的CPU上调用(PREPARE阶段),要么在CPU的热插拔线程中调用每个在线CPU(ONLINE阶段)。
+
+ 如果CPU N的回调失败,那么CPU 0...N-1的teardown回调被调用以回滚操作。状态设置失败,
+ 状态的回调没有被注册,在动态分配的情况下,分配的状态被释放。
+
+状态设置和回调调用是针对CPU热拔插操作进行序列化的。如果设置函数必须从CPU热插拔的读
+锁定区域调用,那么必须使用_cpuslocked()变体。这些函数不能在CPU热拔插回调中使用。
+
+函数返回值:
+ ======== ==========================================================
+ 0 静态分配的状态设置成功
+
+ >0 动态分配的状态设置成功
+
+ 返回的数值是被分配的状态编号。如果状态回调后来必须被移除,
+ 例如模块移除,那么这个数值必须由调用者保存,并作为状态移
+ 除函数的@state参数。对于多实例状态,动态分配的状态编号也
+ 需要作为实例添加/删除操作的@state参数。
+
+ <0 操作失败
+ ======== ==========================================================
+
+移除CPU热拔插状态
+-----------------
+
+为了移除一个之前设置好的状态,提供了如下函数:
+
+* cpuhp_remove_state(state)
+* cpuhp_remove_state_nocalls(state)
+* cpuhp_remove_state_nocalls_cpuslocked(state)
+* cpuhp_remove_multi_state(state)
+
+@state参数要么是静态分配的状态,要么是由cpuhp_setup_state*()在动态范围内分配
+的状态编号。如果状态在动态范围内,则状态编号被释放,可再次进行动态分配。
+
+这些函数在处理已注册回调的方式上有所不同:
+
+ * cpuhp_remove_state_nocalls(), cpuhp_remove_state_nocalls_cpuslocked()
+ 和 cpuhp_remove_multi_state()只删除回调。
+
+ * cpuhp_remove_state()删除回调,并调用所有当前状态大于被删除状态的在线CPU的
+ teardown回调(如果不是NULL)。根据状态阶段,回调要么在当前的CPU上调用
+ (PREPARE阶段),要么在CPU的热插拔线程中调用每个在线CPU(ONLINE阶段)。
+
+ 为了完成移除工作,teardown回调不能失败。
+
+状态移除和回调调用是针对CPU热拔插操作进行序列化的。如果移除函数必须从CPU hotplug
+读取锁定区域调用,那么必须使用_cpuslocked()变体。这些函数不能从CPU热插拔的回调中使用。
+
+如果一个多实例的状态被移除,那么调用者必须先移除所有的实例。
+
+多实例状态实例管理
+------------------
+
+一旦多实例状态被建立,实例就可以被添加到状态中:
-一旦一个CPU下线或上线,就有可能收到通知。这对某些需要根据可用CPU数量执行某种设置或清
-理功能的驱动程序来说可能很重要::
+ * cpuhp_state_add_instance(state, node)
+ * cpuhp_state_add_instance_nocalls(state, node)
- #include <linux/cpuhotplug.h>
+@state参数是一个静态分配的状态或由cpuhp_setup_state_multi()在动态范围内分配的状
+态编号。
- ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "X/Y:online",
- Y_online, Y_prepare_down);
+@node参数是一个指向hlist_node的指针,它被嵌入到实例的数据结构中。这个指针被交给
+多实例状态的回调,可以被回调用来通过container_of()检索到实例。
-*X* 是子系统, *Y* 是特定的驱动程序。 *Y_online* 回调将在所有在线CPU的注册过程中被调用。
-如果在线回调期间发生错误, *Y_prepare_down* 回调将在所有之前调用过在线回调的CPU上调
-用。注册完成后,一旦有CPU上线, *Y_online* 回调将被调用,当CPU关闭时, *Y_prepare_down*
-将被调用。所有之前在 *Y_online* 中分配的资源都应该在 *Y_prepare_down* 中释放。如果在
-注册过程中发生错误,返回值 *ret* 为负值。否则会返回一个正值,其中包含动态分配状态
-( *CPUHP_AP_ONLINE_DYN* )的分配热拔插。对于预定义的状态,它将返回0。
+这些函数在处理已注册回调的方式上有所不同:
-该回调可以通过调用 ``cpuhp_remove_state()`` 来删除。如果是动态分配的状态
-( *CPUHP_AP_ONLINE_DYN* ),则使用返回的状态。在移除热插拔状态的过程中,将调用拆解回调。
+ * cpuhp_state_add_instance_nocalls()只将实例添加到多实例状态的节点列表中。
-多个实例
-~~~~~~~~
+ * cpuhp_state_add_instance()为所有当前状态大于@state的在线CPU添加实例并调用与
+ @state相关的startup回调(如果不是NULL)。该回调只对将要添加的实例进行调用。
+ 根据状态阶段,回调要么在当前的CPU上调用(PREPARE阶段),要么在CPU的热插拔线
+ 程中调用每个在线CPU(ONLINE阶段)。
-如果一个驱动程序有多个实例,并且每个实例都需要独立执行回调,那么很可能应该使用
-``multi-state`` 。首先需要注册一个多状态的状态::
+ 如果CPU N的回调失败,那么CPU 0 ... N-1的teardown回调被调用以回滚操作,该函数
+ 失败,实例不会被添加到多实例状态的节点列表中。
- ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, "X/Y:online,
- Y_online, Y_prepare_down);
- Y_hp_online = ret;
+要从状态的节点列表中删除一个实例,可以使用这些函数:
-``cpuhp_setup_state_multi()`` 的行为与 ``cpuhp_setup_state()`` 类似,只是它
-为多状态准备了回调,但不调用回调。这是一个一次性的设置。
-一旦分配了一个新的实例,你需要注册这个新实例::
+ * cpuhp_state_remove_instance(state, node)
+ * cpuhp_state_remove_instance_nocalls(state, node)
- ret = cpuhp_state_add_instance(Y_hp_online, &d->node);
+参数与上述cpuhp_state_add_instance*()变体相同。
-这个函数将把这个实例添加到你先前分配的 ``Y_hp_online`` 状态,并在所有在线的
-CPU上调用先前注册的回调( ``Y_online`` )。 *node* 元素是你的每个实例数据结构
-中的一个 ``struct hlist_node`` 成员。
+这些函数在处理已注册回调的方式上有所不同:
-在移除该实例时::
+ * cpuhp_state_remove_instance_nocalls()只从状态的节点列表中删除实例。
- cpuhp_state_remove_instance(Y_hp_online, &d->node)
+ * cpuhp_state_remove_instance()删除实例并调用与@state相关的回调(如果不是NULL),
+ 用于所有当前状态大于@state的在线CPU。 该回调只对将要被移除的实例进行调用。
+ 根据状态阶段,回调要么在当前的CPU上调用(PREPARE阶段),要么在CPU的热插拔
+ 线程中调用每个在线CPU(ONLINE阶段)。
-应该被调用,这将在所有在线CPU上调用拆分回调。
+ 为了完成移除工作,teardown回调不能失败。
-手动设置
-~~~~~~~~
+节点列表的添加/删除操作和回调调用是针对CPU热拔插操作进行序列化。这些函数不能在
+CPU hotplug回调和CPU hotplug读取锁定区域内使用。
-通常情况下,在注册或移除状态时调用setup和teamdown回调是很方便的,因为通常在CPU上线
-(下线)和驱动的初始设置(关闭)时需要执行该操作。然而,每个注册和删除功能也有一个
-_nocalls的后缀,如果不希望调用回调,则不调用所提供的回调。在手动设置(或关闭)期间,
-应该使用 ``get_online_cpus()`` 和 ``put_online_cpus()`` 函数来抑制CPU热插拔操作。
+样例
+----
+在STARTING阶段设置和取消静态分配的状态,以获取上线和下线操作的通知::
-事件的顺序
-----------
+ ret = cpuhp_setup_state(CPUHP_SUBSYS_STARTING, "subsys:starting", subsys_cpu_starting, subsys_cpu_dying);
+ if (ret < 0)
+ return ret;
+ ....
+ cpuhp_remove_state(CPUHP_SUBSYS_STARTING);
-热插拔状态被定义在 ``include/linux/cpuhotplug.h``:
+在ONLINE阶段设置和取消动态分配的状态,以获取下线操作的通知::
-* ``CPUHP_OFFLINE`` ... ``CPUHP_AP_OFFLINE`` 状态是在CPU启动前调用的。
+ state = cpuhp_setup_state(CPUHP_ONLINE_DYN, "subsys:offline", NULL, subsys_cpu_offline);
+ if (state < 0)
+ return state;
+ ....
+ cpuhp_remove_state(state);
-* ``CPUHP_AP_OFFLINE`` ... ``CPUHP_AP_ONLINE`` 状态是在CPU被启动后被调用的。
- 中断是关闭的,调度程序还没有在这个CPU上活动。从 ``CPUHP_AP_OFFLINE`` 开始,
- 回调被调用到目标CPU上。
+在ONLINE阶段设置和取消动态分配的状态,以获取有关上线操作的通知,而无需调用回调::
-* ``CPUHP_AP_ONLINE_DYN`` 和 ``CPUHP_AP_ONLINE_DYN_END`` 之间的状态被保留
- 给动态分配。
+ state = cpuhp_setup_state_nocalls(CPUHP_ONLINE_DYN, "subsys:online", subsys_cpu_online, NULL);
+ if (state < 0)
+ return state;
+ ....
+ cpuhp_remove_state_nocalls(state);
-* 这些状态在CPU关闭时以相反的顺序调用,从 ``CPUHP_ONLINE`` 开始,在 ``CPUHP_OFFLINE``
- 停止。这里的回调是在将被关闭的CPU上调用的,直到 ``CPUHP_AP_OFFLINE`` 。
+在ONLINE阶段设置、使用和取消动态分配的多实例状态,以获得上线和下线操作的通知::
-通过 ``CPUHP_AP_ONLINE_DYN`` 动态分配的状态通常已经足够了。然而,如果在启动或关闭
-期间需要更早的调用,那么应该获得一个显式状态。如果热拔插事件需要相对于另一个热拔插事
-件的特定排序,也可能需要一个显式状态。
+ state = cpuhp_setup_state_multi(CPUHP_ONLINE_DYN, "subsys:online", subsys_cpu_online, subsys_cpu_offline);
+ if (state < 0)
+ return state;
+ ....
+ ret = cpuhp_state_add_instance(state, &inst1->node);
+ if (ret)
+ return ret;
+ ....
+ ret = cpuhp_state_add_instance(state, &inst2->node);
+ if (ret)
+ return ret;
+ ....
+ cpuhp_remove_instance(state, &inst1->node);
+ ....
+ cpuhp_remove_instance(state, &inst2->node);
+ ....
+ remove_multi_state(state);
测试热拔插状态
==============
--
2.20.1
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [PATCH 3/9] docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
2022-06-22 10:18 ` [PATCH 1/9] docs/zh_CN: core-api: Update the translation of cachetlb.rst " Binbin Zhou
2022-06-22 10:18 ` [PATCH 2/9] docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst " Binbin Zhou
@ 2022-06-22 10:18 ` Binbin Zhou
2022-06-22 12:19 ` Wu XiangCheng
2022-06-23 13:11 ` YanTeng Si
2022-06-22 10:18 ` [PATCH 4/9] docs/zh_CN: core-api: Update the translation of kernel-api.rst " Binbin Zhou
` (6 subsequent siblings)
9 siblings, 2 replies; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:18 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
Synchronous translation from the following commits(Latest in front):
[1]: commit 0953fb263714("irq: remove handle_domain_{irq,nmi}()")
[2]: commit 0ddc5e55e6f1("Documentation: Fix irq-domain.rst build warning")
[3]: commit 991007ba6cca("Documentation: Update
irq_domain.rst with new lookup APIs")
[4]: commit 405e94e9aed2("irqdomain: Kill irq_domain_add_legacy_isa")
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
.../zh_CN/core-api/irq/irq-domain.rst | 22 +++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
index 7d077742f758..9174fce12c1b 100644
--- a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
+++ b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
@@ -5,6 +5,7 @@
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
+ 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
.. _cn_irq-domain.rst:
@@ -52,8 +53,18 @@ irq_domain和一个hwirq号作为参数。 如果hwirq的映射还不存在,
一个新的Linux irq_desc,将其与hwirq关联起来,并调用.map()回调,这样驱动
程序就可以执行任何必要的硬件设置。
-当接收到一个中断时,应该使用irq_find_mapping()函数从hwirq号中找到
-Linux IRQ号。
+一旦建立了映射,可以通过多种方法检索或使用它:
+
+- irq_resolve_mapping()返回一个指向给定域和hwirq号的irq_desc结构指针,
+ 如果没有映射则返回NULL。
+
+- irq_find_mapping()返回给定域和hwirq的Linux IRQ号,如果没有映射则返回0。
+
+- irq_linear_revmap()现与irq_find_mapping()相同,已被废弃。
+
+- generic_handle_domain_irq()处理一个由域和hwirq号描述的中断。
+
+请注意,irq域的查找必须发生在与RCU读临界区兼容的上下文中。
在调用irq_find_mapping()之前,至少要调用一次irq_create_mapping()函数,
以免描述符不能被分配。
@@ -119,7 +130,8 @@ irq_domain_add_tree()和irq_domain_create_tree()在功能上是等价的,除
Linux IRQ号编入硬件本身,这样就不需要映射了。 调用irq_create_direct_mapping()
会分配一个Linux IRQ号,并调用.map()回调,这样驱动就可以将Linux IRQ号编入硬件中。
-大多数驱动程序不能使用这个映射。
+大多数驱动程序无法使用此映射,现在它由CONFIG_IRQ_DOMAIN_NOMAP选项控制。
+请不要引入此API的新用户。
传统映射类型
------------
@@ -128,7 +140,6 @@ Linux IRQ号编入硬件本身,这样就不需要映射了。 调用irq_create
irq_domain_add_simple()
irq_domain_add_legacy()
- irq_domain_add_legacy_isa()
irq_domain_create_simple()
irq_domain_create_legacy()
@@ -137,6 +148,9 @@ Linux IRQ号编入硬件本身,这样就不需要映射了。 调用irq_create
一组用于IRQ号的定义(#define),这些定义被传递给struct设备注册。 在这种情况下,
不能动态分配Linux IRQ号,应该使用传统映射。
+顾名思义,\*_legacy()系列函数已被废弃,只是为了方便对古老平台的支持而存在。
+不应该增加新的用户。当\*_simple()系列函数的使用导致遗留行为时,他们也是如此。
+
传统映射假设已经为控制器分配了一个连续的IRQ号范围,并且可以通过向hwirq号添加一
个固定的偏移来计算IRQ号,反之亦然。 缺点是需要中断控制器管理IRQ分配,并且需要为每
个hwirq分配一个irq_desc,即使它没有被使用。
--
2.20.1
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [PATCH 4/9] docs/zh_CN: core-api: Update the translation of kernel-api.rst to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
` (2 preceding siblings ...)
2022-06-22 10:18 ` [PATCH 3/9] docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst " Binbin Zhou
@ 2022-06-22 10:18 ` Binbin Zhou
2022-06-23 13:12 ` YanTeng Si
2022-06-23 16:10 ` Wu XiangCheng
2022-06-22 10:18 ` [PATCH 5/9] docs/zh_CN: core-api: Update the translation of mm-api.rst " Binbin Zhou
` (5 subsequent siblings)
9 siblings, 2 replies; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:18 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
Synchronous translation from upstream commit 640d1930bef4
("block: Add bio_for_each_folio_all()")
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
Documentation/translations/zh_CN/core-api/kernel-api.rst | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/translations/zh_CN/core-api/kernel-api.rst b/Documentation/translations/zh_CN/core-api/kernel-api.rst
index e45fe80d1cd8..120c051f6fcb 100644
--- a/Documentation/translations/zh_CN/core-api/kernel-api.rst
+++ b/Documentation/translations/zh_CN/core-api/kernel-api.rst
@@ -5,6 +5,7 @@
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
+ 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
.. _cn_kernel-api.rst:
@@ -282,6 +283,8 @@ kernel/acct.c
该API在以下内核代码中:
+include/linux/bio.h
+
block/blk-core.c
block/blk-core.c
--
2.20.1
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [PATCH 5/9] docs/zh_CN: core-api: Update the translation of mm-api.rst to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
` (3 preceding siblings ...)
2022-06-22 10:18 ` [PATCH 4/9] docs/zh_CN: core-api: Update the translation of kernel-api.rst " Binbin Zhou
@ 2022-06-22 10:18 ` Binbin Zhou
2022-06-22 16:11 ` Wu XiangCheng
2022-06-23 13:13 ` YanTeng Si
2022-06-22 10:18 ` [PATCH 6/9] docs/zh_CN: core-api: Update the translation of printk-basics.rst " Binbin Zhou
` (4 subsequent siblings)
9 siblings, 2 replies; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:18 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
Synchronous translation from the following commits(Latest in front):
[1]: commit 84dacdbd5352("mm: document and polish read-ahead code")
[2]: commit 2f52578f9c64("mm/util: Add folio_mapping() and
folio_file_mapping()")
[3]: commit 889a3747b3b7("mm/lru: Add folio LRU functions")
[4]: commit c24016ac3a62("mm: Add folio reference count functions")
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
.../translations/zh_CN/core-api/mm-api.rst | 23 ++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/Documentation/translations/zh_CN/core-api/mm-api.rst b/Documentation/translations/zh_CN/core-api/mm-api.rst
index 0ea43dc67953..a732b0eebf16 100644
--- a/Documentation/translations/zh_CN/core-api/mm-api.rst
+++ b/Documentation/translations/zh_CN/core-api/mm-api.rst
@@ -5,6 +5,7 @@
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
+ 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
:校译:
@@ -66,12 +67,24 @@ mm/vmalloc.c
该API在以下内核代码中:
-mm/readahead.c
+文件映射
+--------
mm/filemap.c
+预读
+----
+
+mm/readahead.c
+
+回写
+----
+
mm/page-writeback.c
+截断
+----
+
mm/truncate.c
include/linux/pagemap.h
@@ -105,6 +118,14 @@ mm/mempolicy.c
include/linux/mm_types.h
+include/linux/mm_inline.h
+
+include/linux/page-flags.h
+
include/linux/mm.h
+include/linux/page_ref.h
+
include/linux/mmzone.h
+
+mm/util.c
--
2.20.1
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [PATCH 6/9] docs/zh_CN: core-api: Update the translation of printk-basics.rst to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
` (4 preceding siblings ...)
2022-06-22 10:18 ` [PATCH 5/9] docs/zh_CN: core-api: Update the translation of mm-api.rst " Binbin Zhou
@ 2022-06-22 10:18 ` Binbin Zhou
2022-06-22 16:11 ` Wu XiangCheng
2022-06-23 13:14 ` YanTeng Si
2022-06-22 10:18 ` [PATCH 7/9] docs/zh_CN: core-api: Update the translation of printk-format.rst " Binbin Zhou
` (3 subsequent siblings)
9 siblings, 2 replies; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:18 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
Synchronous translation from upstream commit 7d9e2661f268
("printk: Move the printk() kerneldoc comment to its new home")
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
Documentation/translations/zh_CN/core-api/printk-basics.rst | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/Documentation/translations/zh_CN/core-api/printk-basics.rst b/Documentation/translations/zh_CN/core-api/printk-basics.rst
index d574de3167c8..59c6efb3fc41 100644
--- a/Documentation/translations/zh_CN/core-api/printk-basics.rst
+++ b/Documentation/translations/zh_CN/core-api/printk-basics.rst
@@ -6,6 +6,7 @@
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
+ 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
.. _cn_printk-basics.rst:
@@ -107,6 +108,4 @@ pr_debug()和pr_devel(),除非定义了 ``DEBUG`` (或者在pr_debug()的情
该API在以下内核代码中:
-kernel/printk/printk.c
-
include/linux/printk.h
--
2.20.1
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [PATCH 7/9] docs/zh_CN: core-api: Update the translation of printk-format.rst to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
` (5 preceding siblings ...)
2022-06-22 10:18 ` [PATCH 6/9] docs/zh_CN: core-api: Update the translation of printk-basics.rst " Binbin Zhou
@ 2022-06-22 10:18 ` Binbin Zhou
2022-06-22 16:11 ` Wu XiangCheng
2022-06-23 13:15 ` YanTeng Si
2022-06-22 10:19 ` [PATCH 8/9] docs/zh_CN: core-api: Update the translation of workqueue.rst " Binbin Zhou
` (2 subsequent siblings)
9 siblings, 2 replies; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:18 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
Synchronous translation from upstream commit 6a7ca80f4033
("vsprintf: Update %pGp documentation about that it prints hex value")
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
Documentation/translations/zh_CN/core-api/printk-formats.rst | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Documentation/translations/zh_CN/core-api/printk-formats.rst b/Documentation/translations/zh_CN/core-api/printk-formats.rst
index ce39c788cf5a..bd36d35eba4e 100644
--- a/Documentation/translations/zh_CN/core-api/printk-formats.rst
+++ b/Documentation/translations/zh_CN/core-api/printk-formats.rst
@@ -5,6 +5,7 @@
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
+ 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
.. _cn_printk-formats.rst:
@@ -548,7 +549,7 @@ nodemask_pr_args()来方便打印cpumask和nodemask。
::
- %pGp referenced|uptodate|lru|active|private|node=0|zone=2|lastcpupid=0x1fffff
+ %pGp 0x17ffffc0002036(referenced|uptodate|lru|active|private|node=0|zone=2|lastcpupid=0x1fffff)
%pGg GFP_USER|GFP_DMA32|GFP_NOWARN
%pGv read|exec|mayread|maywrite|mayexec|denywrite
--
2.20.1
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [PATCH 8/9] docs/zh_CN: core-api: Update the translation of workqueue.rst to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
` (6 preceding siblings ...)
2022-06-22 10:18 ` [PATCH 7/9] docs/zh_CN: core-api: Update the translation of printk-format.rst " Binbin Zhou
@ 2022-06-22 10:19 ` Binbin Zhou
2022-06-23 13:14 ` YanTeng Si
2022-06-23 16:10 ` Wu XiangCheng
2022-06-22 10:19 ` [PATCH 9/9] docs/zh_CN: core-api: Update the translation of xarray.rst " Binbin Zhou
2022-06-24 19:16 ` [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation " Jonathan Corbet
9 siblings, 2 replies; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:19 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
Synchronous translation from upstream commit f9eaaa82b474
("workqueue: doc: Call out the non-reentrance conditions")
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
.../translations/zh_CN/core-api/workqueue.rst | 21 +++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/Documentation/translations/zh_CN/core-api/workqueue.rst b/Documentation/translations/zh_CN/core-api/workqueue.rst
index e372fa5cf101..f6567cf9d3fb 100644
--- a/Documentation/translations/zh_CN/core-api/workqueue.rst
+++ b/Documentation/translations/zh_CN/core-api/workqueue.rst
@@ -6,6 +6,7 @@
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
+ 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
.. _cn_workqueue.rst:
@@ -178,10 +179,6 @@ workqueue将自动创建与属性相匹配的后备工作者池。调节并发
这个标志对于未绑定的wq来说是没有意义的。
-请注意,标志 ``WQ_NON_REENTRANT`` 不再存在,因为现在所有的工作
-队列都是不可逆的——任何工作项都保证在任何时间内最多被整个系统的一
-个工作者执行。
-
``max_active``
--------------
@@ -328,6 +325,22 @@ And with cmwq with ``@max_active`` >= 3, ::
工作项函数在堆栈追踪中应该是微不足道的。
+不可重入条件
+============
+
+工作队列保证,如果在工作项排队后满足以下条件,则工作项不能重入:
+
+
+ 1. 工作函数没有被改变。
+ 2. 没有人将该工作项排到另一个工作队列中。
+ 3. 该工作项尚未被重新启动。
+
+换言之,如果上述条件成立,则保证在任何给定时间最多由一个系统范围内的工作程序执行
+该工作项。
+
+请注意,在self函数中将工作项重新排队(到同一队列)不会破坏这些条件,因此可以安全
+地执行此操作。否则在破坏工作函数内部的条件时需要小心。
+
内核内联文档参考
================
--
2.20.1
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [PATCH 9/9] docs/zh_CN: core-api: Update the translation of xarray.rst to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
` (7 preceding siblings ...)
2022-06-22 10:19 ` [PATCH 8/9] docs/zh_CN: core-api: Update the translation of workqueue.rst " Binbin Zhou
@ 2022-06-22 10:19 ` Binbin Zhou
2022-06-23 13:13 ` YanTeng Si
2022-06-23 16:10 ` Wu XiangCheng
2022-06-24 19:16 ` [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation " Jonathan Corbet
9 siblings, 2 replies; 29+ messages in thread
From: Binbin Zhou @ 2022-06-22 10:19 UTC (permalink / raw)
To: alexs, siyanteng; +Cc: corbet, chenhuacai, bobwxc, linux-doc, Binbin Zhou
Synchronous translation from upstream commit ac23d1a96460
("XArray: Document the locking requirement for the xa_state")
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
Documentation/translations/zh_CN/core-api/xarray.rst | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/Documentation/translations/zh_CN/core-api/xarray.rst b/Documentation/translations/zh_CN/core-api/xarray.rst
index ff2d9bcb7c34..fb19324966ce 100644
--- a/Documentation/translations/zh_CN/core-api/xarray.rst
+++ b/Documentation/translations/zh_CN/core-api/xarray.rst
@@ -6,6 +6,7 @@
:翻译:
司延腾 Yanteng Si <siyanteng@loongson.cn>
+ 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
:校译:
@@ -254,7 +255,8 @@ __xa_set_mark() 和 __xa_clear_mark() 函数也适用于你查找一个条目并
高级API是基于xa_state的。这是一个不透明的数据结构,你使用XA_STATE()宏在堆栈中声明。这个宏初始化了
xa_state,准备开始在XArray上移动。它被用作一个游标来保持在XArray中的位置,并让你把各种操作组合在一
-起,而不必每次都从头开始。
+起,而不必每次都从头开始。xa_state的内容受rcu_read_lock()或xas_lock()的保护。如果需要删除保护状态
+和树的这些锁中的任何一个,你必须调用xas_pause()以便将来的调用不会依赖于状态中未受保护的部分。
xa_state也被用来存储错误(store errors)。你可以调用xas_error()来检索错误。所有的操作在进行之前都
会检查xa_state是否处于错误状态,所以你没有必要在每次调用之后检查错误;你可以连续进行多次调用,只在
--
2.20.1
^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH 1/9] docs/zh_CN: core-api: Update the translation of cachetlb.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 1/9] docs/zh_CN: core-api: Update the translation of cachetlb.rst " Binbin Zhou
@ 2022-06-22 12:19 ` Wu XiangCheng
2022-06-23 13:08 ` YanTeng Si
0 siblings, 1 reply; 29+ messages in thread
From: Wu XiangCheng @ 2022-06-22 12:19 UTC (permalink / raw)
To: Binbin Zhou; +Cc: alexs, siyanteng, corbet, chenhuacai, linux-doc
On Wed, Jun 22, 2022 at 06:18:47PM +0800, Binbin Zhou wrote:
> Synchronous translation from upstream commit 08b0b0059bf1
> ("mm: Add flush_dcache_folio()")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> Documentation/translations/zh_CN/core-api/cachetlb.rst | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/Documentation/translations/zh_CN/core-api/cachetlb.rst b/Documentation/translations/zh_CN/core-api/cachetlb.rst
> index 6fee45fe5e80..b4a76ec75daa 100644
> --- a/Documentation/translations/zh_CN/core-api/cachetlb.rst
> +++ b/Documentation/translations/zh_CN/core-api/cachetlb.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 2/9] docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 2/9] docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst " Binbin Zhou
@ 2022-06-22 12:19 ` Wu XiangCheng
2022-06-23 13:10 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: Wu XiangCheng @ 2022-06-22 12:19 UTC (permalink / raw)
To: Binbin Zhou; +Cc: alexs, siyanteng, corbet, chenhuacai, linux-doc
On Wed, Jun 22, 2022 at 06:18:48PM +0800, Binbin Zhou wrote:
> Synchronous translation from upstream commit c9871c800f65
> ("Documentation: core-api/cpuhotplug: Rewrite the API section")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> .../zh_CN/core-api/cpu_hotplug.rst | 435 +++++++++++++++---
> 1 file changed, 377 insertions(+), 58 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst b/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst
> index 85a264287426..4772a900c37a 100644
> --- a/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst
> +++ b/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 3/9] docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 3/9] docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst " Binbin Zhou
@ 2022-06-22 12:19 ` Wu XiangCheng
2022-06-23 13:11 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: Wu XiangCheng @ 2022-06-22 12:19 UTC (permalink / raw)
To: Binbin Zhou; +Cc: alexs, siyanteng, corbet, chenhuacai, linux-doc
On Wed, Jun 22, 2022 at 06:18:49PM +0800, Binbin Zhou wrote:
> Synchronous translation from the following commits(Latest in front):
>
> [1]: commit 0953fb263714("irq: remove handle_domain_{irq,nmi}()")
>
> [2]: commit 0ddc5e55e6f1("Documentation: Fix irq-domain.rst build warning")
>
> [3]: commit 991007ba6cca("Documentation: Update
> irq_domain.rst with new lookup APIs")
>
> [4]: commit 405e94e9aed2("irqdomain: Kill irq_domain_add_legacy_isa")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> .../zh_CN/core-api/irq/irq-domain.rst | 22 +++++++++++++++----
> 1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
> index 7d077742f758..9174fce12c1b 100644
> --- a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
> +++ b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 5/9] docs/zh_CN: core-api: Update the translation of mm-api.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 5/9] docs/zh_CN: core-api: Update the translation of mm-api.rst " Binbin Zhou
@ 2022-06-22 16:11 ` Wu XiangCheng
2022-06-23 13:13 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: Wu XiangCheng @ 2022-06-22 16:11 UTC (permalink / raw)
To: Binbin Zhou; +Cc: alexs, siyanteng, corbet, chenhuacai, linux-doc
On Wed, Jun 22, 2022 at 06:18:51PM +0800, Binbin Zhou wrote:
> Synchronous translation from the following commits(Latest in front):
>
> [1]: commit 84dacdbd5352("mm: document and polish read-ahead code")
>
> [2]: commit 2f52578f9c64("mm/util: Add folio_mapping() and
> folio_file_mapping()")
>
> [3]: commit 889a3747b3b7("mm/lru: Add folio LRU functions")
>
> [4]: commit c24016ac3a62("mm: Add folio reference count functions")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> ---
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> .../translations/zh_CN/core-api/mm-api.rst | 23 ++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/mm-api.rst b/Documentation/translations/zh_CN/core-api/mm-api.rst
> index 0ea43dc67953..a732b0eebf16 100644
> --- a/Documentation/translations/zh_CN/core-api/mm-api.rst
> +++ b/Documentation/translations/zh_CN/core-api/mm-api.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 6/9] docs/zh_CN: core-api: Update the translation of printk-basics.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 6/9] docs/zh_CN: core-api: Update the translation of printk-basics.rst " Binbin Zhou
@ 2022-06-22 16:11 ` Wu XiangCheng
2022-06-23 13:14 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: Wu XiangCheng @ 2022-06-22 16:11 UTC (permalink / raw)
To: Binbin Zhou; +Cc: alexs, siyanteng, corbet, chenhuacai, linux-doc
On Wed, Jun 22, 2022 at 06:18:52PM +0800, Binbin Zhou wrote:
> Synchronous translation from upstream commit 7d9e2661f268
> ("printk: Move the printk() kerneldoc comment to its new home")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> Documentation/translations/zh_CN/core-api/printk-basics.rst | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/printk-basics.rst b/Documentation/translations/zh_CN/core-api/printk-basics.rst
> index d574de3167c8..59c6efb3fc41 100644
> --- a/Documentation/translations/zh_CN/core-api/printk-basics.rst
> +++ b/Documentation/translations/zh_CN/core-api/printk-basics.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 7/9] docs/zh_CN: core-api: Update the translation of printk-format.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 7/9] docs/zh_CN: core-api: Update the translation of printk-format.rst " Binbin Zhou
@ 2022-06-22 16:11 ` Wu XiangCheng
2022-06-23 13:15 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: Wu XiangCheng @ 2022-06-22 16:11 UTC (permalink / raw)
To: Binbin Zhou; +Cc: alexs, siyanteng, corbet, chenhuacai, linux-doc
On Wed, Jun 22, 2022 at 06:18:53PM +0800, Binbin Zhou wrote:
> Synchronous translation from upstream commit 6a7ca80f4033
> ("vsprintf: Update %pGp documentation about that it prints hex value")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> Documentation/translations/zh_CN/core-api/printk-formats.rst | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/printk-formats.rst b/Documentation/translations/zh_CN/core-api/printk-formats.rst
> index ce39c788cf5a..bd36d35eba4e 100644
> --- a/Documentation/translations/zh_CN/core-api/printk-formats.rst
> +++ b/Documentation/translations/zh_CN/core-api/printk-formats.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 1/9] docs/zh_CN: core-api: Update the translation of cachetlb.rst to 5.19-rc3
2022-06-22 12:19 ` Wu XiangCheng
@ 2022-06-23 13:08 ` YanTeng Si
0 siblings, 0 replies; 29+ messages in thread
From: YanTeng Si @ 2022-06-23 13:08 UTC (permalink / raw)
To: Wu XiangCheng, Binbin Zhou; +Cc: alexs, corbet, chenhuacai, linux-doc
在 2022/6/22 20:19, Wu XiangCheng 写道:
> On Wed, Jun 22, 2022 at 06:18:47PM +0800, Binbin Zhou wrote:
>> Synchronous translation from upstream commit 08b0b0059bf1
>> ("mm: Add flush_dcache_folio()")
>>
>> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
Reviewed-by: Yanteng Si<siyanteng@loongson.cn>
>
>> ---
>> Documentation/translations/zh_CN/core-api/cachetlb.rst | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/Documentation/translations/zh_CN/core-api/cachetlb.rst b/Documentation/translations/zh_CN/core-api/cachetlb.rst
>> index 6fee45fe5e80..b4a76ec75daa 100644
>> --- a/Documentation/translations/zh_CN/core-api/cachetlb.rst
>> +++ b/Documentation/translations/zh_CN/core-api/cachetlb.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 2/9] docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 2/9] docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst " Binbin Zhou
2022-06-22 12:19 ` Wu XiangCheng
@ 2022-06-23 13:10 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: YanTeng Si @ 2022-06-23 13:10 UTC (permalink / raw)
To: Binbin Zhou, alexs; +Cc: corbet, chenhuacai, bobwxc, linux-doc
在 2022/6/22 18:18, Binbin Zhou 写道:
> Synchronous translation from upstream commit c9871c800f65
> ("Documentation: core-api/cpuhotplug: Rewrite the API section")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Yanteng Si<siyanteng@loongson.cn>
Thanks,
Yanteng
> ---
> .../zh_CN/core-api/cpu_hotplug.rst | 435 +++++++++++++++---
> 1 file changed, 377 insertions(+), 58 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst b/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst
> index 85a264287426..4772a900c37a 100644
> --- a/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst
> +++ b/Documentation/translations/zh_CN/core-api/cpu_hotplug.rst
> @@ -4,6 +4,7 @@
> :翻译:
>
> 司延腾 Yanteng Si <siyanteng@loongson.cn>
> + 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
>
> :校译:
>
> @@ -15,12 +16,13 @@
> 内核中的CPU热拔插
> =================
>
> -:时间: 2016年12月
> +:时间: 2021年9月
> :作者: Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
> - Rusty Russell <rusty@rustcorp.com.au>,
> - Srivatsa Vaddagiri <vatsa@in.ibm.com>,
> - Ashok Raj <ashok.raj@intel.com>,
> - Joel Schopp <jschopp@austin.ibm.com>
> + Rusty Russell <rusty@rustcorp.com.au>,
> + Srivatsa Vaddagiri <vatsa@in.ibm.com>,
> + Ashok Raj <ashok.raj@intel.com>,
> + Joel Schopp <jschopp@austin.ibm.com>,
> + Thomas Gleixner <tglx@linutronix.de>
>
> 简介
> ====
> @@ -139,7 +141,7 @@ CPU的热拔插协作
> 下线情况
> --------
>
> -一旦CPU被逻辑关闭,注册的热插拔状态的清除回调将被调用,从 ``CPUHP_ONLINE`` 开始,在
> +一旦CPU被逻辑关闭,注册的热插拔状态的清除回调将被调用,从 ``CPUHP_ONLINE`` 开始,到
> ``CPUHP_OFFLINE`` 状态结束。这包括:
>
> * 如果任务因暂停操作而被冻结,那么 *cpuhp_tasks_frozen* 将被设置为true。
> @@ -154,82 +156,399 @@ CPU的热拔插协作
> * 一旦所有的服务被迁移,内核会调用一个特定的例程 ``__cpu_disable()`` 来进行特定的清
> 理。
>
> -使用热插拔API
> --------------
> +CPU热插拔API
> +============
> +
> +CPU热拔插状态机
> +---------------
> +
> +CPU热插拔使用一个从CPUHP_OFFLINE到CPUHP_ONLINE的线性状态空间的普通状态机。每个状态都
> +有一个startup和teardown的回调。
> +
> +当一个CPU上线时,将按顺序调用startup回调,直到达到CPUHP_ONLINE状态。当设置状态的回调
> +或将实例添加到多实例状态时,也可以调用它们。
> +
> +当一个CPU下线时,将按相反的顺序依次调用teardown回调,直到达到CPUHP_OFFLINE状态。当删
> +除状态的回调或从多实例状态中删除实例时,也可以调用它们。
> +
> +如果某个使用场景只需要一个方向的热插拔操作回调(CPU上线或CPU下线),则在设置状态时,
> +可以将另一个不需要的回调设置为NULL。
> +
> +状态空间被划分成三个阶段:
> +
> +* PREPARE阶段
> +
> + PREPARE阶段涵盖了从CPUHP_OFFLINE到CPUHP_BRINGUP_CPU之间的状态空间。
> +
> + 在该阶段中,startup回调在CPU上线操作启动CPU之前被调用,teardown回调在CPU下线操作使
> + CPU功能失效之后被调用。
> +
> + 这些回调是在控制CPU上调用的,因为它们显然不能在热插拔的CPU上运行,此时热插拔的CPU要
> + 么还没有启动,要么已经功能失效。
> +
> + startup回调用于设置CPU成功上线所需要的资源。teardown回调用于释放资源或在热插拔的CPU
> + 功能失效后,将待处理的工作转移到在线的CPU上。
> +
> + 允许startup回调失败。如果回调失败,CPU上线操作被中止,CPU将再次被降到之前的状态(通
> + 常是CPUHP_OFFLINE)。
> +
> + 本阶段中的teardown回调不允许失败。
> +
> +* STARTING阶段
> +
> + STARTING阶段涵盖了CPUHP_BRINGUP_CPU + 1到CPUHP_AP_ONLINE之间的状态空间。
> +
> + 该阶段中的startup回调是在早期CPU设置代码中的CPU上线操作期间,禁用中断的情况下在热拔
> + 插的CPU上被调用。teardown回调是在CPU完全关闭前不久的CPU下线操作期间,禁用中断的情况
> + 下在热拔插的CPU上被调用。
> +
> + 该阶段中的回调不允许失败。
> +
> + 回调用于低级别的硬件初始化/关机和核心子系统。
> +
> +* ONLINE阶段
> +
> + ONLINE阶段涵盖了CPUHP_AP_ONLINE + 1到CPUHP_ONLINE之间的状态空间。
> +
> + 该阶段中的startup回调是在CPU上线时在热插拔的CPU上调用的。teardown回调是在CPU下线操
> + 作时在热插拔CPU上调用的。
> +
> + 回调是在每个CPU热插拔线程的上下文中调用的,该线程绑定在热插拔的CPU上。回调是在启用
> + 中断和抢占的情况下调用的。
> +
> + 允许回调失败。如果回调失败,CPU热插拔操作被中止,CPU将恢复到之前的状态。
> +
> +CPU 上线/下线操作
> +-----------------
> +
> +一个成功的上线操作如下::
> +
> + [CPUHP_OFFLINE]
> + [CPUHP_OFFLINE + 1]->startup() -> 成功
> + [CPUHP_OFFLINE + 2]->startup() -> 成功
> + [CPUHP_OFFLINE + 3] -> 略过,因为startup == NULL
> + ...
> + [CPUHP_BRINGUP_CPU]->startup() -> 成功
> + === PREPARE阶段结束
> + [CPUHP_BRINGUP_CPU + 1]->startup() -> 成功
> + ...
> + [CPUHP_AP_ONLINE]->startup() -> 成功
> + === STARTUP阶段结束
> + [CPUHP_AP_ONLINE + 1]->startup() -> 成功
> + ...
> + [CPUHP_ONLINE - 1]->startup() -> 成功
> + [CPUHP_ONLINE]
> +
> +一个成功的下线操作如下::
> +
> + [CPUHP_ONLINE]
> + [CPUHP_ONLINE - 1]->teardown() -> 成功
> + ...
> + [CPUHP_AP_ONLINE + 1]->teardown() -> 成功
> + === STARTUP阶段开始
> + [CPUHP_AP_ONLINE]->teardown() -> 成功
> + ...
> + [CPUHP_BRINGUP_ONLINE - 1]->teardown()
> + ...
> + === PREPARE阶段开始
> + [CPUHP_BRINGUP_CPU]->teardown()
> + [CPUHP_OFFLINE + 3]->teardown()
> + [CPUHP_OFFLINE + 2] -> 略过,因为teardown == NULL
> + [CPUHP_OFFLINE + 1]->teardown()
> + [CPUHP_OFFLINE]
> +
> +一个失败的上线操作如下::
> +
> + [CPUHP_OFFLINE]
> + [CPUHP_OFFLINE + 1]->startup() -> 成功
> + [CPUHP_OFFLINE + 2]->startup() -> 成功
> + [CPUHP_OFFLINE + 3] -> 略过,因为startup == NULL
> + ...
> + [CPUHP_BRINGUP_CPU]->startup() -> 成功
> + === PREPARE阶段结束
> + [CPUHP_BRINGUP_CPU + 1]->startup() -> 成功
> + ...
> + [CPUHP_AP_ONLINE]->startup() -> 成功
> + === STARTUP阶段结束
> + [CPUHP_AP_ONLINE + 1]->startup() -> 成功
> + ---
> + [CPUHP_AP_ONLINE + N]->startup() -> 失败
> + [CPUHP_AP_ONLINE + (N - 1)]->teardown()
> + ...
> + [CPUHP_AP_ONLINE + 1]->teardown()
> + === STARTUP阶段开始
> + [CPUHP_AP_ONLINE]->teardown()
> + ...
> + [CPUHP_BRINGUP_ONLINE - 1]->teardown()
> + ...
> + === PREPARE阶段开始
> + [CPUHP_BRINGUP_CPU]->teardown()
> + [CPUHP_OFFLINE + 3]->teardown()
> + [CPUHP_OFFLINE + 2] -> 略过,因为teardown == NULL
> + [CPUHP_OFFLINE + 1]->teardown()
> + [CPUHP_OFFLINE]
> +
> +一个失败的下线操作如下::
> +
> + [CPUHP_ONLINE]
> + [CPUHP_ONLINE - 1]->teardown() -> 成功
> + ...
> + [CPUHP_ONLINE - N]->teardown() -> 失败
> + [CPUHP_ONLINE - (N - 1)]->startup()
> + ...
> + [CPUHP_ONLINE - 1]->startup()
> + [CPUHP_ONLINE]
> +
> +递归失败不能被合理地处理。
> +请看下面的例子,由于下线操作失败而导致的递归失败::
> +
> + [CPUHP_ONLINE]
> + [CPUHP_ONLINE - 1]->teardown() -> 成功
> + ...
> + [CPUHP_ONLINE - N]->teardown() -> 失败
> + [CPUHP_ONLINE - (N - 1)]->startup() -> 成功
> + [CPUHP_ONLINE - (N - 2)]->startup() -> 失败
> +
> +CPU热插拔状态机在此停止,且不再尝试回滚,因为这可能会导致死循环::
> +
> + [CPUHP_ONLINE - (N - 1)]->teardown() -> 成功
> + [CPUHP_ONLINE - N]->teardown() -> 失败
> + [CPUHP_ONLINE - (N - 1)]->startup() -> 成功
> + [CPUHP_ONLINE - (N - 2)]->startup() -> 失败
> + [CPUHP_ONLINE - (N - 1)]->teardown() -> 成功
> + [CPUHP_ONLINE - N]->teardown() -> 失败
> +
> +周而复始,不断重复。在这种情况下,CPU留在该状态中::
> +
> + [CPUHP_ONLINE - (N - 1)]
> +
> +这至少可以让系统取得进展,让用户有机会进行调试,甚至解决这个问题。
> +
> +分配一个状态
> +------------
> +
> +有两种方式分配一个CPU热插拔状态:
> +
> +* 静态分配
> +
> + 当子系统或驱动程序有相对于其他CPU热插拔状态的排序要求时,必须使用静态分配。例如,
> + 在CPU上线操作期间,PERF核心startup回调必须在PERF驱动startup回调之前被调用。在CPU
> + 下线操作中,驱动teardown回调必须在核心teardown回调之前调用。静态分配的状态由
> + cpuhp_state枚举中的常量描述,可以在include/linux/cpuhotplug.h中找到。
> +
> + 在适当的位置将状态插入枚举中,这样就满足了排序要求。状态常量必须被用于状态的设置
> + 和移除。
> +
> + 当状态回调不是在运行时设置的,并且是kernel/cpu.c中CPU热插拔状态数组初始化的一部分
> + 时,也需要静态分配。
> +
> +* 动态分配
> +
> + 当对状态回调没有排序要求时,动态分配是首选方法。状态编号由setup函数分配,并在成功
> + 后返回给调用者。
> +
> + 只有PREPARE和ONLINE阶段提供了一个动态分配范围。STARTING阶段则没有,因为该部分的大多
> + 数回调都有明确的排序要求。
> +
> +CPU热插拔状态的设置
> +-------------------
> +
> +核心代码提供了以下函数用来设置状态:
> +
> +* cpuhp_setup_state(state, name, startup, teardown)
> +* cpuhp_setup_state_nocalls(state, name, startup, teardown)
> +* cpuhp_setup_state_cpuslocked(state, name, startup, teardown)
> +* cpuhp_setup_state_nocalls_cpuslocked(state, name, startup, teardown)
> +
> +对于一个驱动程序或子系统有多个实例,并且每个实例都需要调用相同的CPU hotplug状态回
> +调的情况,CPU hotplug核心提供多实例支持。与驱动程序特定的实例列表相比,其优势在于
> +与实例相关的函数完全针对CPU hotplug操作进行序列化,并在添加和删除时提供状态回调的
> +自动调用。要设置这样一个多实例状态,可以使用以下函数:
> +
> +* cpuhp_setup_state_multi(state, name, startup, teardown)
> +
> +@state参数要么是静态分配的状态,要么是动态分配状态(PUHP_PREPARE_DYN,CPUHP_ONLINE_DYN)
> +的常量之一, 具体取决于应该分配动态状态的状态阶段(PREPARE,ONLINE)。
> +
> +@name参数用于sysfs输出和检测。命名惯例是"subsys:mode"或"subsys/driver:mode",
> +例如 "perf:mode"或"perf/x86:mode"。常见的mode名称有:
> +
> +======== ============================================
> +prepare 对应PREPARE阶段中的状态
> +
> +dead 对应PREPARE阶段中不提供startup回调的状态
> +
> +starting 对应STARTING阶段中的状态
> +
> +dying 对应STARTING阶段中不提供startup回调的状态
> +
> +online 对应ONLINE阶段中的状态
> +
> +offline 对应ONLINE阶段中不提供startup回调的状态
> +======== ============================================
> +
> +由于@name参数只用于sysfs和检测,如果其他mode描述符比常见的描述符更好地描述状态的性质,
> +也可以使用。
> +
> +@name参数的示例:"perf/online", "perf/x86:prepare", "RCU/tree:dying", "sched/waitempty"
> +
> +@startup参数是一个指向回调的函数指针,在CPU上线操作时被调用。若应用不需要startup
> +回调,则将该指针设为NULL。
> +
> +@teardown参数是一个指向回调的函数指针,在CPU下线操作时调用。若应用不需要teardown
> +回调,则将该指针设为NULL。
> +
> +这些函数在处理已注册回调的方式上有所不同:
> +
> + * cpuhp_setup_state_nocalls(), cpuhp_setup_state_nocalls_cpuslocked()和
> + cpuhp_setup_state_multi()只注册回调。
> +
> + * cpuhp_setup_state()和cpuhp_setup_state_cpuslocked()注册回调,并对当前状态大于新
> + 安装状态的所有在线CPU调用@startup回调(如果不是NULL)。根据状态阶段,回调要么在
> + 当前的CPU上调用(PREPARE阶段),要么在CPU的热插拔线程中调用每个在线CPU(ONLINE阶段)。
> +
> + 如果CPU N的回调失败,那么CPU 0...N-1的teardown回调被调用以回滚操作。状态设置失败,
> + 状态的回调没有被注册,在动态分配的情况下,分配的状态被释放。
> +
> +状态设置和回调调用是针对CPU热拔插操作进行序列化的。如果设置函数必须从CPU热插拔的读
> +锁定区域调用,那么必须使用_cpuslocked()变体。这些函数不能在CPU热拔插回调中使用。
> +
> +函数返回值:
> + ======== ==========================================================
> + 0 静态分配的状态设置成功
> +
> + >0 动态分配的状态设置成功
> +
> + 返回的数值是被分配的状态编号。如果状态回调后来必须被移除,
> + 例如模块移除,那么这个数值必须由调用者保存,并作为状态移
> + 除函数的@state参数。对于多实例状态,动态分配的状态编号也
> + 需要作为实例添加/删除操作的@state参数。
> +
> + <0 操作失败
> + ======== ==========================================================
> +
> +移除CPU热拔插状态
> +-----------------
> +
> +为了移除一个之前设置好的状态,提供了如下函数:
> +
> +* cpuhp_remove_state(state)
> +* cpuhp_remove_state_nocalls(state)
> +* cpuhp_remove_state_nocalls_cpuslocked(state)
> +* cpuhp_remove_multi_state(state)
> +
> +@state参数要么是静态分配的状态,要么是由cpuhp_setup_state*()在动态范围内分配
> +的状态编号。如果状态在动态范围内,则状态编号被释放,可再次进行动态分配。
> +
> +这些函数在处理已注册回调的方式上有所不同:
> +
> + * cpuhp_remove_state_nocalls(), cpuhp_remove_state_nocalls_cpuslocked()
> + 和 cpuhp_remove_multi_state()只删除回调。
> +
> + * cpuhp_remove_state()删除回调,并调用所有当前状态大于被删除状态的在线CPU的
> + teardown回调(如果不是NULL)。根据状态阶段,回调要么在当前的CPU上调用
> + (PREPARE阶段),要么在CPU的热插拔线程中调用每个在线CPU(ONLINE阶段)。
> +
> + 为了完成移除工作,teardown回调不能失败。
> +
> +状态移除和回调调用是针对CPU热拔插操作进行序列化的。如果移除函数必须从CPU hotplug
> +读取锁定区域调用,那么必须使用_cpuslocked()变体。这些函数不能从CPU热插拔的回调中使用。
> +
> +如果一个多实例的状态被移除,那么调用者必须先移除所有的实例。
> +
> +多实例状态实例管理
> +------------------
> +
> +一旦多实例状态被建立,实例就可以被添加到状态中:
>
> -一旦一个CPU下线或上线,就有可能收到通知。这对某些需要根据可用CPU数量执行某种设置或清
> -理功能的驱动程序来说可能很重要::
> + * cpuhp_state_add_instance(state, node)
> + * cpuhp_state_add_instance_nocalls(state, node)
>
> - #include <linux/cpuhotplug.h>
> +@state参数是一个静态分配的状态或由cpuhp_setup_state_multi()在动态范围内分配的状
> +态编号。
>
> - ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "X/Y:online",
> - Y_online, Y_prepare_down);
> +@node参数是一个指向hlist_node的指针,它被嵌入到实例的数据结构中。这个指针被交给
> +多实例状态的回调,可以被回调用来通过container_of()检索到实例。
>
> -*X* 是子系统, *Y* 是特定的驱动程序。 *Y_online* 回调将在所有在线CPU的注册过程中被调用。
> -如果在线回调期间发生错误, *Y_prepare_down* 回调将在所有之前调用过在线回调的CPU上调
> -用。注册完成后,一旦有CPU上线, *Y_online* 回调将被调用,当CPU关闭时, *Y_prepare_down*
> -将被调用。所有之前在 *Y_online* 中分配的资源都应该在 *Y_prepare_down* 中释放。如果在
> -注册过程中发生错误,返回值 *ret* 为负值。否则会返回一个正值,其中包含动态分配状态
> -( *CPUHP_AP_ONLINE_DYN* )的分配热拔插。对于预定义的状态,它将返回0。
> +这些函数在处理已注册回调的方式上有所不同:
>
> -该回调可以通过调用 ``cpuhp_remove_state()`` 来删除。如果是动态分配的状态
> -( *CPUHP_AP_ONLINE_DYN* ),则使用返回的状态。在移除热插拔状态的过程中,将调用拆解回调。
> + * cpuhp_state_add_instance_nocalls()只将实例添加到多实例状态的节点列表中。
>
> -多个实例
> -~~~~~~~~
> + * cpuhp_state_add_instance()为所有当前状态大于@state的在线CPU添加实例并调用与
> + @state相关的startup回调(如果不是NULL)。该回调只对将要添加的实例进行调用。
> + 根据状态阶段,回调要么在当前的CPU上调用(PREPARE阶段),要么在CPU的热插拔线
> + 程中调用每个在线CPU(ONLINE阶段)。
>
> -如果一个驱动程序有多个实例,并且每个实例都需要独立执行回调,那么很可能应该使用
> -``multi-state`` 。首先需要注册一个多状态的状态::
> + 如果CPU N的回调失败,那么CPU 0 ... N-1的teardown回调被调用以回滚操作,该函数
> + 失败,实例不会被添加到多实例状态的节点列表中。
>
> - ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, "X/Y:online,
> - Y_online, Y_prepare_down);
> - Y_hp_online = ret;
> +要从状态的节点列表中删除一个实例,可以使用这些函数:
>
> -``cpuhp_setup_state_multi()`` 的行为与 ``cpuhp_setup_state()`` 类似,只是它
> -为多状态准备了回调,但不调用回调。这是一个一次性的设置。
> -一旦分配了一个新的实例,你需要注册这个新实例::
> + * cpuhp_state_remove_instance(state, node)
> + * cpuhp_state_remove_instance_nocalls(state, node)
>
> - ret = cpuhp_state_add_instance(Y_hp_online, &d->node);
> +参数与上述cpuhp_state_add_instance*()变体相同。
>
> -这个函数将把这个实例添加到你先前分配的 ``Y_hp_online`` 状态,并在所有在线的
> -CPU上调用先前注册的回调( ``Y_online`` )。 *node* 元素是你的每个实例数据结构
> -中的一个 ``struct hlist_node`` 成员。
> +这些函数在处理已注册回调的方式上有所不同:
>
> -在移除该实例时::
> + * cpuhp_state_remove_instance_nocalls()只从状态的节点列表中删除实例。
>
> - cpuhp_state_remove_instance(Y_hp_online, &d->node)
> + * cpuhp_state_remove_instance()删除实例并调用与@state相关的回调(如果不是NULL),
> + 用于所有当前状态大于@state的在线CPU。 该回调只对将要被移除的实例进行调用。
> + 根据状态阶段,回调要么在当前的CPU上调用(PREPARE阶段),要么在CPU的热插拔
> + 线程中调用每个在线CPU(ONLINE阶段)。
>
> -应该被调用,这将在所有在线CPU上调用拆分回调。
> + 为了完成移除工作,teardown回调不能失败。
>
> -手动设置
> -~~~~~~~~
> +节点列表的添加/删除操作和回调调用是针对CPU热拔插操作进行序列化。这些函数不能在
> +CPU hotplug回调和CPU hotplug读取锁定区域内使用。
>
> -通常情况下,在注册或移除状态时调用setup和teamdown回调是很方便的,因为通常在CPU上线
> -(下线)和驱动的初始设置(关闭)时需要执行该操作。然而,每个注册和删除功能也有一个
> -_nocalls的后缀,如果不希望调用回调,则不调用所提供的回调。在手动设置(或关闭)期间,
> -应该使用 ``get_online_cpus()`` 和 ``put_online_cpus()`` 函数来抑制CPU热插拔操作。
> +样例
> +----
>
> +在STARTING阶段设置和取消静态分配的状态,以获取上线和下线操作的通知::
>
> -事件的顺序
> -----------
> + ret = cpuhp_setup_state(CPUHP_SUBSYS_STARTING, "subsys:starting", subsys_cpu_starting, subsys_cpu_dying);
> + if (ret < 0)
> + return ret;
> + ....
> + cpuhp_remove_state(CPUHP_SUBSYS_STARTING);
>
> -热插拔状态被定义在 ``include/linux/cpuhotplug.h``:
> +在ONLINE阶段设置和取消动态分配的状态,以获取下线操作的通知::
>
> -* ``CPUHP_OFFLINE`` ... ``CPUHP_AP_OFFLINE`` 状态是在CPU启动前调用的。
> + state = cpuhp_setup_state(CPUHP_ONLINE_DYN, "subsys:offline", NULL, subsys_cpu_offline);
> + if (state < 0)
> + return state;
> + ....
> + cpuhp_remove_state(state);
>
> -* ``CPUHP_AP_OFFLINE`` ... ``CPUHP_AP_ONLINE`` 状态是在CPU被启动后被调用的。
> - 中断是关闭的,调度程序还没有在这个CPU上活动。从 ``CPUHP_AP_OFFLINE`` 开始,
> - 回调被调用到目标CPU上。
> +在ONLINE阶段设置和取消动态分配的状态,以获取有关上线操作的通知,而无需调用回调::
>
> -* ``CPUHP_AP_ONLINE_DYN`` 和 ``CPUHP_AP_ONLINE_DYN_END`` 之间的状态被保留
> - 给动态分配。
> + state = cpuhp_setup_state_nocalls(CPUHP_ONLINE_DYN, "subsys:online", subsys_cpu_online, NULL);
> + if (state < 0)
> + return state;
> + ....
> + cpuhp_remove_state_nocalls(state);
>
> -* 这些状态在CPU关闭时以相反的顺序调用,从 ``CPUHP_ONLINE`` 开始,在 ``CPUHP_OFFLINE``
> - 停止。这里的回调是在将被关闭的CPU上调用的,直到 ``CPUHP_AP_OFFLINE`` 。
> +在ONLINE阶段设置、使用和取消动态分配的多实例状态,以获得上线和下线操作的通知::
>
> -通过 ``CPUHP_AP_ONLINE_DYN`` 动态分配的状态通常已经足够了。然而,如果在启动或关闭
> -期间需要更早的调用,那么应该获得一个显式状态。如果热拔插事件需要相对于另一个热拔插事
> -件的特定排序,也可能需要一个显式状态。
> + state = cpuhp_setup_state_multi(CPUHP_ONLINE_DYN, "subsys:online", subsys_cpu_online, subsys_cpu_offline);
> + if (state < 0)
> + return state;
> + ....
> + ret = cpuhp_state_add_instance(state, &inst1->node);
> + if (ret)
> + return ret;
> + ....
> + ret = cpuhp_state_add_instance(state, &inst2->node);
> + if (ret)
> + return ret;
> + ....
> + cpuhp_remove_instance(state, &inst1->node);
> + ....
> + cpuhp_remove_instance(state, &inst2->node);
> + ....
> + remove_multi_state(state);
>
> 测试热拔插状态
> ==============
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 3/9] docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 3/9] docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst " Binbin Zhou
2022-06-22 12:19 ` Wu XiangCheng
@ 2022-06-23 13:11 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: YanTeng Si @ 2022-06-23 13:11 UTC (permalink / raw)
To: Binbin Zhou, alexs; +Cc: corbet, chenhuacai, bobwxc, linux-doc
在 2022/6/22 18:18, Binbin Zhou 写道:
> Synchronous translation from the following commits(Latest in front):
>
> [1]: commit 0953fb263714("irq: remove handle_domain_{irq,nmi}()")
>
> [2]: commit 0ddc5e55e6f1("Documentation: Fix irq-domain.rst build warning")
>
> [3]: commit 991007ba6cca("Documentation: Update
> irq_domain.rst with new lookup APIs")
>
> [4]: commit 405e94e9aed2("irqdomain: Kill irq_domain_add_legacy_isa")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Yanteng Si<siyanteng@loongson.cn>
Thanks,
Yantneg
> ---
> .../zh_CN/core-api/irq/irq-domain.rst | 22 +++++++++++++++----
> 1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
> index 7d077742f758..9174fce12c1b 100644
> --- a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
> +++ b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
> @@ -5,6 +5,7 @@
> :翻译:
>
> 司延腾 Yanteng Si <siyanteng@loongson.cn>
> + 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
>
> .. _cn_irq-domain.rst:
>
> @@ -52,8 +53,18 @@ irq_domain和一个hwirq号作为参数。 如果hwirq的映射还不存在,
> 一个新的Linux irq_desc,将其与hwirq关联起来,并调用.map()回调,这样驱动
> 程序就可以执行任何必要的硬件设置。
>
> -当接收到一个中断时,应该使用irq_find_mapping()函数从hwirq号中找到
> -Linux IRQ号。
> +一旦建立了映射,可以通过多种方法检索或使用它:
> +
> +- irq_resolve_mapping()返回一个指向给定域和hwirq号的irq_desc结构指针,
> + 如果没有映射则返回NULL。
> +
> +- irq_find_mapping()返回给定域和hwirq的Linux IRQ号,如果没有映射则返回0。
> +
> +- irq_linear_revmap()现与irq_find_mapping()相同,已被废弃。
> +
> +- generic_handle_domain_irq()处理一个由域和hwirq号描述的中断。
> +
> +请注意,irq域的查找必须发生在与RCU读临界区兼容的上下文中。
>
> 在调用irq_find_mapping()之前,至少要调用一次irq_create_mapping()函数,
> 以免描述符不能被分配。
> @@ -119,7 +130,8 @@ irq_domain_add_tree()和irq_domain_create_tree()在功能上是等价的,除
> Linux IRQ号编入硬件本身,这样就不需要映射了。 调用irq_create_direct_mapping()
> 会分配一个Linux IRQ号,并调用.map()回调,这样驱动就可以将Linux IRQ号编入硬件中。
>
> -大多数驱动程序不能使用这个映射。
> +大多数驱动程序无法使用此映射,现在它由CONFIG_IRQ_DOMAIN_NOMAP选项控制。
> +请不要引入此API的新用户。
>
> 传统映射类型
> ------------
> @@ -128,7 +140,6 @@ Linux IRQ号编入硬件本身,这样就不需要映射了。 调用irq_create
>
> irq_domain_add_simple()
> irq_domain_add_legacy()
> - irq_domain_add_legacy_isa()
> irq_domain_create_simple()
> irq_domain_create_legacy()
>
> @@ -137,6 +148,9 @@ Linux IRQ号编入硬件本身,这样就不需要映射了。 调用irq_create
> 一组用于IRQ号的定义(#define),这些定义被传递给struct设备注册。 在这种情况下,
> 不能动态分配Linux IRQ号,应该使用传统映射。
>
> +顾名思义,\*_legacy()系列函数已被废弃,只是为了方便对古老平台的支持而存在。
> +不应该增加新的用户。当\*_simple()系列函数的使用导致遗留行为时,他们也是如此。
> +
> 传统映射假设已经为控制器分配了一个连续的IRQ号范围,并且可以通过向hwirq号添加一
> 个固定的偏移来计算IRQ号,反之亦然。 缺点是需要中断控制器管理IRQ分配,并且需要为每
> 个hwirq分配一个irq_desc,即使它没有被使用。
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 4/9] docs/zh_CN: core-api: Update the translation of kernel-api.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 4/9] docs/zh_CN: core-api: Update the translation of kernel-api.rst " Binbin Zhou
@ 2022-06-23 13:12 ` YanTeng Si
2022-06-23 16:10 ` Wu XiangCheng
1 sibling, 0 replies; 29+ messages in thread
From: YanTeng Si @ 2022-06-23 13:12 UTC (permalink / raw)
To: Binbin Zhou, alexs; +Cc: corbet, chenhuacai, bobwxc, linux-doc
在 2022/6/22 18:18, Binbin Zhou 写道:
> Synchronous translation from upstream commit 640d1930bef4
> ("block: Add bio_for_each_folio_all()")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Yanteng Si<siyanteng@loongson.cn>
> ---
> Documentation/translations/zh_CN/core-api/kernel-api.rst | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Documentation/translations/zh_CN/core-api/kernel-api.rst b/Documentation/translations/zh_CN/core-api/kernel-api.rst
> index e45fe80d1cd8..120c051f6fcb 100644
> --- a/Documentation/translations/zh_CN/core-api/kernel-api.rst
> +++ b/Documentation/translations/zh_CN/core-api/kernel-api.rst
> @@ -5,6 +5,7 @@
> :翻译:
>
> 司延腾 Yanteng Si <siyanteng@loongson.cn>
> + 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
>
> .. _cn_kernel-api.rst:
>
> @@ -282,6 +283,8 @@ kernel/acct.c
>
> 该API在以下内核代码中:
>
> +include/linux/bio.h
> +
> block/blk-core.c
>
> block/blk-core.c
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 5/9] docs/zh_CN: core-api: Update the translation of mm-api.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 5/9] docs/zh_CN: core-api: Update the translation of mm-api.rst " Binbin Zhou
2022-06-22 16:11 ` Wu XiangCheng
@ 2022-06-23 13:13 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: YanTeng Si @ 2022-06-23 13:13 UTC (permalink / raw)
To: Binbin Zhou, alexs; +Cc: corbet, chenhuacai, bobwxc, linux-doc
在 2022/6/22 18:18, Binbin Zhou 写道:
> Synchronous translation from the following commits(Latest in front):
>
> [1]: commit 84dacdbd5352("mm: document and polish read-ahead code")
>
> [2]: commit 2f52578f9c64("mm/util: Add folio_mapping() and
> folio_file_mapping()")
>
> [3]: commit 889a3747b3b7("mm/lru: Add folio LRU functions")
>
> [4]: commit c24016ac3a62("mm: Add folio reference count functions")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Yanteng Si<siyanteng@loongson.cn>
> ---
> .../translations/zh_CN/core-api/mm-api.rst | 23 ++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/mm-api.rst b/Documentation/translations/zh_CN/core-api/mm-api.rst
> index 0ea43dc67953..a732b0eebf16 100644
> --- a/Documentation/translations/zh_CN/core-api/mm-api.rst
> +++ b/Documentation/translations/zh_CN/core-api/mm-api.rst
> @@ -5,6 +5,7 @@
> :翻译:
>
> 司延腾 Yanteng Si <siyanteng@loongson.cn>
> + 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
>
> :校译:
>
> @@ -66,12 +67,24 @@ mm/vmalloc.c
>
> 该API在以下内核代码中:
>
> -mm/readahead.c
> +文件映射
> +--------
>
> mm/filemap.c
>
> +预读
> +----
> +
> +mm/readahead.c
> +
> +回写
> +----
> +
> mm/page-writeback.c
>
> +截断
> +----
> +
> mm/truncate.c
>
> include/linux/pagemap.h
> @@ -105,6 +118,14 @@ mm/mempolicy.c
>
> include/linux/mm_types.h
>
> +include/linux/mm_inline.h
> +
> +include/linux/page-flags.h
> +
> include/linux/mm.h
>
> +include/linux/page_ref.h
> +
> include/linux/mmzone.h
> +
> +mm/util.c
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 9/9] docs/zh_CN: core-api: Update the translation of xarray.rst to 5.19-rc3
2022-06-22 10:19 ` [PATCH 9/9] docs/zh_CN: core-api: Update the translation of xarray.rst " Binbin Zhou
@ 2022-06-23 13:13 ` YanTeng Si
2022-06-23 16:10 ` Wu XiangCheng
1 sibling, 0 replies; 29+ messages in thread
From: YanTeng Si @ 2022-06-23 13:13 UTC (permalink / raw)
To: Binbin Zhou, alexs; +Cc: corbet, chenhuacai, bobwxc, linux-doc
在 2022/6/22 18:19, Binbin Zhou 写道:
> Synchronous translation from upstream commit ac23d1a96460
> ("XArray: Document the locking requirement for the xa_state")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Yanteng Si<siyanteng@loongson.cn>
> ---
> Documentation/translations/zh_CN/core-api/xarray.rst | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/xarray.rst b/Documentation/translations/zh_CN/core-api/xarray.rst
> index ff2d9bcb7c34..fb19324966ce 100644
> --- a/Documentation/translations/zh_CN/core-api/xarray.rst
> +++ b/Documentation/translations/zh_CN/core-api/xarray.rst
> @@ -6,6 +6,7 @@
> :翻译:
>
> 司延腾 Yanteng Si <siyanteng@loongson.cn>
> + 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
>
> :校译:
>
> @@ -254,7 +255,8 @@ __xa_set_mark() 和 __xa_clear_mark() 函数也适用于你查找一个条目并
>
> 高级API是基于xa_state的。这是一个不透明的数据结构,你使用XA_STATE()宏在堆栈中声明。这个宏初始化了
> xa_state,准备开始在XArray上移动。它被用作一个游标来保持在XArray中的位置,并让你把各种操作组合在一
> -起,而不必每次都从头开始。
> +起,而不必每次都从头开始。xa_state的内容受rcu_read_lock()或xas_lock()的保护。如果需要删除保护状态
> +和树的这些锁中的任何一个,你必须调用xas_pause()以便将来的调用不会依赖于状态中未受保护的部分。
>
> xa_state也被用来存储错误(store errors)。你可以调用xas_error()来检索错误。所有的操作在进行之前都
> 会检查xa_state是否处于错误状态,所以你没有必要在每次调用之后检查错误;你可以连续进行多次调用,只在
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 8/9] docs/zh_CN: core-api: Update the translation of workqueue.rst to 5.19-rc3
2022-06-22 10:19 ` [PATCH 8/9] docs/zh_CN: core-api: Update the translation of workqueue.rst " Binbin Zhou
@ 2022-06-23 13:14 ` YanTeng Si
2022-06-23 16:10 ` Wu XiangCheng
1 sibling, 0 replies; 29+ messages in thread
From: YanTeng Si @ 2022-06-23 13:14 UTC (permalink / raw)
To: Binbin Zhou, alexs; +Cc: corbet, chenhuacai, bobwxc, linux-doc
在 2022/6/22 18:19, Binbin Zhou 写道:
> Synchronous translation from upstream commit f9eaaa82b474
> ("workqueue: doc: Call out the non-reentrance conditions")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Yanteng Si<siyanteng@loongson.cn>
> ---
> .../translations/zh_CN/core-api/workqueue.rst | 21 +++++++++++++++----
> 1 file changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/workqueue.rst b/Documentation/translations/zh_CN/core-api/workqueue.rst
> index e372fa5cf101..f6567cf9d3fb 100644
> --- a/Documentation/translations/zh_CN/core-api/workqueue.rst
> +++ b/Documentation/translations/zh_CN/core-api/workqueue.rst
> @@ -6,6 +6,7 @@
> :翻译:
>
> 司延腾 Yanteng Si <siyanteng@loongson.cn>
> + 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
>
> .. _cn_workqueue.rst:
>
> @@ -178,10 +179,6 @@ workqueue将自动创建与属性相匹配的后备工作者池。调节并发
>
> 这个标志对于未绑定的wq来说是没有意义的。
>
> -请注意,标志 ``WQ_NON_REENTRANT`` 不再存在,因为现在所有的工作
> -队列都是不可逆的——任何工作项都保证在任何时间内最多被整个系统的一
> -个工作者执行。
> -
>
> ``max_active``
> --------------
> @@ -328,6 +325,22 @@ And with cmwq with ``@max_active`` >= 3, ::
>
> 工作项函数在堆栈追踪中应该是微不足道的。
>
> +不可重入条件
> +============
> +
> +工作队列保证,如果在工作项排队后满足以下条件,则工作项不能重入:
> +
> +
> + 1. 工作函数没有被改变。
> + 2. 没有人将该工作项排到另一个工作队列中。
> + 3. 该工作项尚未被重新启动。
> +
> +换言之,如果上述条件成立,则保证在任何给定时间最多由一个系统范围内的工作程序执行
> +该工作项。
> +
> +请注意,在self函数中将工作项重新排队(到同一队列)不会破坏这些条件,因此可以安全
> +地执行此操作。否则在破坏工作函数内部的条件时需要小心。
> +
>
> 内核内联文档参考
> ================
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 6/9] docs/zh_CN: core-api: Update the translation of printk-basics.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 6/9] docs/zh_CN: core-api: Update the translation of printk-basics.rst " Binbin Zhou
2022-06-22 16:11 ` Wu XiangCheng
@ 2022-06-23 13:14 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: YanTeng Si @ 2022-06-23 13:14 UTC (permalink / raw)
To: Binbin Zhou, alexs; +Cc: corbet, chenhuacai, bobwxc, linux-doc
在 2022/6/22 18:18, Binbin Zhou 写道:
> Synchronous translation from upstream commit 7d9e2661f268
> ("printk: Move the printk() kerneldoc comment to its new home")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Yanteng Si<siyanteng@loongson.cn>
> ---
> Documentation/translations/zh_CN/core-api/printk-basics.rst | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/printk-basics.rst b/Documentation/translations/zh_CN/core-api/printk-basics.rst
> index d574de3167c8..59c6efb3fc41 100644
> --- a/Documentation/translations/zh_CN/core-api/printk-basics.rst
> +++ b/Documentation/translations/zh_CN/core-api/printk-basics.rst
> @@ -6,6 +6,7 @@
> :翻译:
>
> 司延腾 Yanteng Si <siyanteng@loongson.cn>
> + 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
>
> .. _cn_printk-basics.rst:
>
> @@ -107,6 +108,4 @@ pr_debug()和pr_devel(),除非定义了 ``DEBUG`` (或者在pr_debug()的情
>
> 该API在以下内核代码中:
>
> -kernel/printk/printk.c
> -
> include/linux/printk.h
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 7/9] docs/zh_CN: core-api: Update the translation of printk-format.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 7/9] docs/zh_CN: core-api: Update the translation of printk-format.rst " Binbin Zhou
2022-06-22 16:11 ` Wu XiangCheng
@ 2022-06-23 13:15 ` YanTeng Si
1 sibling, 0 replies; 29+ messages in thread
From: YanTeng Si @ 2022-06-23 13:15 UTC (permalink / raw)
To: Binbin Zhou, alexs; +Cc: corbet, chenhuacai, bobwxc, linux-doc
在 2022/6/22 18:18, Binbin Zhou 写道:
> Synchronous translation from upstream commit 6a7ca80f4033
> ("vsprintf: Update %pGp documentation about that it prints hex value")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Yanteng Si<siyanteng@loongson.cn>
> ---
> Documentation/translations/zh_CN/core-api/printk-formats.rst | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/printk-formats.rst b/Documentation/translations/zh_CN/core-api/printk-formats.rst
> index ce39c788cf5a..bd36d35eba4e 100644
> --- a/Documentation/translations/zh_CN/core-api/printk-formats.rst
> +++ b/Documentation/translations/zh_CN/core-api/printk-formats.rst
> @@ -5,6 +5,7 @@
> :翻译:
>
> 司延腾 Yanteng Si <siyanteng@loongson.cn>
> + 周彬彬 Binbin Zhou <zhoubinbin@loongson.cn>
>
> .. _cn_printk-formats.rst:
>
> @@ -548,7 +549,7 @@ nodemask_pr_args()来方便打印cpumask和nodemask。
>
> ::
>
> - %pGp referenced|uptodate|lru|active|private|node=0|zone=2|lastcpupid=0x1fffff
> + %pGp 0x17ffffc0002036(referenced|uptodate|lru|active|private|node=0|zone=2|lastcpupid=0x1fffff)
> %pGg GFP_USER|GFP_DMA32|GFP_NOWARN
> %pGv read|exec|mayread|maywrite|mayexec|denywrite
>
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 8/9] docs/zh_CN: core-api: Update the translation of workqueue.rst to 5.19-rc3
2022-06-22 10:19 ` [PATCH 8/9] docs/zh_CN: core-api: Update the translation of workqueue.rst " Binbin Zhou
2022-06-23 13:14 ` YanTeng Si
@ 2022-06-23 16:10 ` Wu XiangCheng
1 sibling, 0 replies; 29+ messages in thread
From: Wu XiangCheng @ 2022-06-23 16:10 UTC (permalink / raw)
To: Binbin Zhou; +Cc: alexs, siyanteng, corbet, chenhuacai, linux-doc
On Wed, Jun 22, 2022 at 06:19:42PM +0800, Binbin Zhou wrote:
> Synchronous translation from upstream commit f9eaaa82b474
> ("workqueue: doc: Call out the non-reentrance conditions")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> .../translations/zh_CN/core-api/workqueue.rst | 21 +++++++++++++++----
> 1 file changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/workqueue.rst b/Documentation/translations/zh_CN/core-api/workqueue.rst
> index e372fa5cf101..f6567cf9d3fb 100644
> --- a/Documentation/translations/zh_CN/core-api/workqueue.rst
> +++ b/Documentation/translations/zh_CN/core-api/workqueue.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 9/9] docs/zh_CN: core-api: Update the translation of xarray.rst to 5.19-rc3
2022-06-22 10:19 ` [PATCH 9/9] docs/zh_CN: core-api: Update the translation of xarray.rst " Binbin Zhou
2022-06-23 13:13 ` YanTeng Si
@ 2022-06-23 16:10 ` Wu XiangCheng
1 sibling, 0 replies; 29+ messages in thread
From: Wu XiangCheng @ 2022-06-23 16:10 UTC (permalink / raw)
To: Binbin Zhou; +Cc: alexs, siyanteng, corbet, chenhuacai, linux-doc
On Wed, Jun 22, 2022 at 06:19:49PM +0800, Binbin Zhou wrote:
> Synchronous translation from upstream commit ac23d1a96460
> ("XArray: Document the locking requirement for the xa_state")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
Thanks!
Wu
> ---
> Documentation/translations/zh_CN/core-api/xarray.rst | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/translations/zh_CN/core-api/xarray.rst b/Documentation/translations/zh_CN/core-api/xarray.rst
> index ff2d9bcb7c34..fb19324966ce 100644
> --- a/Documentation/translations/zh_CN/core-api/xarray.rst
> +++ b/Documentation/translations/zh_CN/core-api/xarray.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH 4/9] docs/zh_CN: core-api: Update the translation of kernel-api.rst to 5.19-rc3
2022-06-22 10:18 ` [PATCH 4/9] docs/zh_CN: core-api: Update the translation of kernel-api.rst " Binbin Zhou
2022-06-23 13:12 ` YanTeng Si
@ 2022-06-23 16:10 ` Wu XiangCheng
1 sibling, 0 replies; 29+ messages in thread
From: Wu XiangCheng @ 2022-06-23 16:10 UTC (permalink / raw)
To: Binbin Zhou; +Cc: alexs, siyanteng, corbet, chenhuacai, linux-doc
On Wed, Jun 22, 2022 at 06:18:50PM +0800, Binbin Zhou wrote:
> Synchronous translation from upstream commit 640d1930bef4
> ("block: Add bio_for_each_folio_all()")
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> Documentation/translations/zh_CN/core-api/kernel-api.rst | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Documentation/translations/zh_CN/core-api/kernel-api.rst b/Documentation/translations/zh_CN/core-api/kernel-api.rst
> index e45fe80d1cd8..120c051f6fcb 100644
> --- a/Documentation/translations/zh_CN/core-api/kernel-api.rst
> +++ b/Documentation/translations/zh_CN/core-api/kernel-api.rst
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
` (8 preceding siblings ...)
2022-06-22 10:19 ` [PATCH 9/9] docs/zh_CN: core-api: Update the translation of xarray.rst " Binbin Zhou
@ 2022-06-24 19:16 ` Jonathan Corbet
9 siblings, 0 replies; 29+ messages in thread
From: Jonathan Corbet @ 2022-06-24 19:16 UTC (permalink / raw)
To: Binbin Zhou, alexs, siyanteng; +Cc: chenhuacai, bobwxc, linux-doc, Binbin Zhou
Binbin Zhou <zhoubinbin@loongson.cn> writes:
> In this series of patches, I updated the translated file contents in the core-api
> directory to 5.19-rc3.
>
> The next step, I plan to translate the untranslated documents in the core-api
> directory. For details, please see TODOLIST in the core-api/index.rst file.
>
> Changes since V1:
> - Update the code base to 5.19-rc3
>
> - According to the suggestions of Xiangcheng and Yanteng, the translations of
> corresponding documents are updated to make them more readable.
>
> The modified documents are as follows:
> cpu_hotplug.rst
> irq/irq-domain.rst
> printk-format.rst
>
> If you like, please review the mailing list for details.
>
> In addition, for the translation of the Rust part in "printk-format.rst", I will
> reorganize it into a patch to the Rust tree.
>
> Binbin Zhou (9):
> docs/zh_CN: core-api: Update the translation of cachetlb.rst to
> 5.19-rc3
> docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst to
> 5.19-rc3
> docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst to
> 5.19-rc3
> docs/zh_CN: core-api: Update the translation of kernel-api.rst to
> 5.19-rc3
> docs/zh_CN: core-api: Update the translation of mm-api.rst to 5.19-rc3
> docs/zh_CN: core-api: Update the translation of printk-basics.rst to
> 5.19-rc3
> docs/zh_CN: core-api: Update the translation of printk-format.rst to
> 5.19-rc3
> docs/zh_CN: core-api: Update the translation of workqueue.rst to
> 5.19-rc3
> docs/zh_CN: core-api: Update the translation of xarray.rst to 5.19-rc3
>
> .../translations/zh_CN/core-api/cachetlb.rst | 6 +
> .../zh_CN/core-api/cpu_hotplug.rst | 435 +++++++++++++++---
> .../zh_CN/core-api/irq/irq-domain.rst | 22 +-
> .../zh_CN/core-api/kernel-api.rst | 3 +
> .../translations/zh_CN/core-api/mm-api.rst | 23 +-
> .../zh_CN/core-api/printk-basics.rst | 3 +-
> .../zh_CN/core-api/printk-formats.rst | 3 +-
> .../translations/zh_CN/core-api/workqueue.rst | 21 +-
> .../translations/zh_CN/core-api/xarray.rst | 4 +-
> 9 files changed, 449 insertions(+), 71 deletions(-)
Series applied, thanks.
jon
^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2022-06-24 19:16 UTC | newest]
Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-22 10:18 [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation to 5.19-rc3 Binbin Zhou
2022-06-22 10:18 ` [PATCH 1/9] docs/zh_CN: core-api: Update the translation of cachetlb.rst " Binbin Zhou
2022-06-22 12:19 ` Wu XiangCheng
2022-06-23 13:08 ` YanTeng Si
2022-06-22 10:18 ` [PATCH 2/9] docs/zh_CN: core-api: Update the translation of cpu_hotplug.rst " Binbin Zhou
2022-06-22 12:19 ` Wu XiangCheng
2022-06-23 13:10 ` YanTeng Si
2022-06-22 10:18 ` [PATCH 3/9] docs/zh_CN: core-api: Update the translation of irq/irq-domain.rst " Binbin Zhou
2022-06-22 12:19 ` Wu XiangCheng
2022-06-23 13:11 ` YanTeng Si
2022-06-22 10:18 ` [PATCH 4/9] docs/zh_CN: core-api: Update the translation of kernel-api.rst " Binbin Zhou
2022-06-23 13:12 ` YanTeng Si
2022-06-23 16:10 ` Wu XiangCheng
2022-06-22 10:18 ` [PATCH 5/9] docs/zh_CN: core-api: Update the translation of mm-api.rst " Binbin Zhou
2022-06-22 16:11 ` Wu XiangCheng
2022-06-23 13:13 ` YanTeng Si
2022-06-22 10:18 ` [PATCH 6/9] docs/zh_CN: core-api: Update the translation of printk-basics.rst " Binbin Zhou
2022-06-22 16:11 ` Wu XiangCheng
2022-06-23 13:14 ` YanTeng Si
2022-06-22 10:18 ` [PATCH 7/9] docs/zh_CN: core-api: Update the translation of printk-format.rst " Binbin Zhou
2022-06-22 16:11 ` Wu XiangCheng
2022-06-23 13:15 ` YanTeng Si
2022-06-22 10:19 ` [PATCH 8/9] docs/zh_CN: core-api: Update the translation of workqueue.rst " Binbin Zhou
2022-06-23 13:14 ` YanTeng Si
2022-06-23 16:10 ` Wu XiangCheng
2022-06-22 10:19 ` [PATCH 9/9] docs/zh_CN: core-api: Update the translation of xarray.rst " Binbin Zhou
2022-06-23 13:13 ` YanTeng Si
2022-06-23 16:10 ` Wu XiangCheng
2022-06-24 19:16 ` [PATCH V2 0/9] docs/zh_CN: core-api: Update the partial translation " Jonathan Corbet
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.