1 .. SPDX-License-Identifier: GPL-2.0 2 3 I/O request handling 4 ==================== 5 6 An I/O request of a User VM, which is construc 7 distributed by the ACRN Hypervisor Service Mod 8 corresponding to the address range of the I/O 9 handling are described in the following sectio 10 11 1. I/O request 12 -------------- 13 14 For each User VM, there is a shared 4-KByte me 15 communication between the hypervisor and Servi 16 256-byte structure buffer, which is 'struct ac 17 an I/O handler of the hypervisor when a trappe 18 VM. ACRN userspace in the Service VM first all 19 the GPA (Guest Physical Address) of the buffer 20 used as an array of 16 I/O request slots with 21 bytes. This array is indexed by vCPU ID. 22 23 2. I/O clients 24 -------------- 25 26 An I/O client is responsible for handling User 27 GPA falls in a certain range. Multiple I/O cli 28 User VM. There is a special client associated 29 default client, that handles all I/O requests 30 any other clients. The ACRN userspace acts as 31 VM. 32 33 Below illustration shows the relationship betw 34 I/O requests and I/O clients. 35 36 :: 37 38 +---------------------------------------- 39 | S 40 |+--------------------------------------- 41 || +-------------------------------- 42 || | shared page ACRN use 43 || | +-----------------+ +------ 44 || +----+->| acrn_io_request |<-+ defa 45 || | | | +-----------------+ | I/O c 46 || | | | | ... | +------ 47 || | | | +-----------------+ 48 || | +-|------------------------------ 49 ||---|----|------------------------------ 50 || | | k 51 || | | +----------------- 52 || | | | +-------------+ 53 || | +--------------+ | 54 || | | | I/O clients | 55 || | | | | 56 || | | +-------------+ 57 || | +----------------- 58 |+---|----------------------------------- 59 +----|----------------------------------- 60 | 61 +----|----------------------------------- 62 | +-+-----------+ 63 | | I/O handler | ACRN Hype 64 | +-------------+ 65 +---------------------------------------- 66 67 3. I/O request state transition 68 ------------------------------- 69 70 The state transitions of an ACRN I/O request a 71 72 :: 73 74 FREE -> PENDING -> PROCESSING -> COMPLETE - 75 76 - FREE: this I/O request slot is empty 77 - PENDING: a valid I/O request is pending in t 78 - PROCESSING: the I/O request is being process 79 - COMPLETE: the I/O request has been processed 80 81 An I/O request in COMPLETE or FREE state is ow 82 ACRN userspace are in charge of processing the 83 84 4. Processing flow of I/O requests 85 ---------------------------------- 86 87 a. The I/O handler of the hypervisor will fill 88 state when a trapped I/O access happens in 89 b. The hypervisor makes an upcall, which is a 90 the Service VM. 91 c. The upcall handler schedules a worker to di 92 d. The worker looks for the PENDING I/O reques 93 registered clients based on the address of 94 their state to PROCESSING, and notifies the 95 e. The notified client handles the assigned I/ 96 f. The HSM updates I/O requests states to COMP 97 of the completion via hypercalls.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.