~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/translations/zh_CN/virt/acrn/io-request.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 .. SPDX-License-Identifier: GPL-2.0
  2 .. include:: ../../disclaimer-zh_CN.rst
  3 
  4 :Original: Documentation/virt/acrn/io-request.rst
  5 
  6 :翻译:
  7 
  8  司延腾 Yanteng Si <siyanteng@loongson.cn>
  9 
 10 :校译:
 11 
 12  时奎亮 Alex Shi <alexs@kernel.org>
 13 
 14 .. _cn_virt_acrn_io-request:
 15 
 16 I/O请求处理
 17 ===========
 18 
 19 客户虚拟机的I/O请求由超级管理器构建,由ACRN超级管理器服务模块分发到与I/O请求的地址范
 20 围相对应的I/O客户端。I/O请求处理的细节将在以下章节描述。
 21 
 22 1. I/O请求
 23 ----------
 24 
 25 对于每个客户虚拟机,有一个共享的4KB字节的内存区域,用于超级管理器和服务虚拟机之间的
 26 I/O请求通信。一个I/O请求是一个256字节的结构体缓冲区,它是 "acrn_io_request" 结构
 27 体,当客户虚拟机中发生被困的I/O访问时,由超级管理器的I/O处理器填充。服务虚拟机中的
 28 ACRN用户空间首先分配一个4KB字节的页面,并将缓冲区的GPA(客户物理地址)传递给管理平
 29 台。缓冲区被用作16个I/O请求槽的数组,每个I/O请求槽为256字节。这个数组是按vCPU ID
 30 索引的。
 31 
 32 2. I/O客户端
 33 ------------
 34 
 35 一个I/O客户端负责处理客户虚拟机的I/O请求,其访问的GPA在一定范围内。每个客户虚拟机
 36 可以关联多个I/O客户端。每个客户虚拟机都有一个特殊的客户端,称为默认客户端,负责处理
 37 所有不在其他客户端范围内的I/O请求。ACRN用户空间充当每个客户虚拟机的默认客户端。
 38 
 39 下面的图示显示了I/O请求共享缓冲区、I/O请求和I/O客户端之间的关系。
 40 
 41 ::
 42 
 43      +------------------------------------------------------+
 44      |                                       服务VM         |
 45      |+--------------------------------------------------+  |
 46      ||      +----------------------------------------+  |  |
 47      ||      | 共享页                 ACRN用户空间    |  |  |
 48      ||      |    +-----------------+  +------------+ |  |  |
 49      ||   +----+->| acrn_io_request |<-+  默认      | |  |  |
 50      ||   |  | |  +-----------------+  | I/O客户端  | |  |  |
 51      ||   |  | |  |       ...       |  +------------+ |  |  |
 52      ||   |  | |  +-----------------+                 |  |  |
 53      ||   |  +-|--------------------------------------+  |  |
 54      ||---|----|-----------------------------------------|  |
 55      ||   |    |                             内核        |  |
 56      ||   |    |            +----------------------+     |  |
 57      ||   |    |            | +-------------+  HSM |     |  |
 58      ||   |    +--------------+             |      |     |  |
 59      ||   |                 | | I/O客户端   |      |     |  |
 60      ||   |                 | |             |      |     |  |
 61      ||   |                 | +-------------+      |     |  |
 62      ||   |                 +----------------------+     |  |
 63      |+---|----------------------------------------------+  |
 64      +----|-------------------------------------------------+
 65           |
 66      +----|-------------------------------------------------+
 67      |  +-+-----------+                                     |
 68      |  | I/O处理     |              ACRN超级管理器         |
 69      |  +-------------+                                     |
 70      +------------------------------------------------------+
 71 
 72 3. I/O请求状态转换
 73 ------------------
 74 
 75 一个ACRN I/O请求的状态转换如下。
 76 
 77 ::
 78 
 79    FREE -> PENDING -> PROCESSING -> COMPLETE -> FREE -> ...
 80 
 81 - FREE: 这个I/O请求槽是空的
 82 - PENDING: 在这个槽位上有一个有效的I/O请求正在等待
 83 - PROCESSING: 正在处理I/O请求
 84 - COMPLETE: 该I/O请求已被处理
 85 
 86 处于COMPLETE或FREE状态的I/O请求是由超级管理器拥有的。HSM和ACRN用户空间负责处理其
 87 他的。
 88 
 89 4. I/O请求的处理流程
 90 --------------------
 91 
 92 a. 当客户虚拟机中发生被陷入的I/O访问时,超级管理器的I/O处理程序将把I/O请求填充为
 93    PENDING状态。
 94 b. 超级管理器向服务虚拟机发出一个向上调用,这是一个通知中断。
 95 c. upcall处理程序会安排一个工作者来调度I/O请求。
 96 d. 工作者寻找PENDING I/O请求,根据I/O访问的地址将其分配给不同的注册客户,将其
 97    状态更新为PROCESSING,并通知相应的客户进行处理。
 98 e. 被通知的客户端处理指定的I/O请求。
 99 f. HSM将I/O请求状态更新为COMPLETE,并通过hypercalls通知超级管理器完成。

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php