@@ -14,6 +14,9 @@ Architecture:
14
14
| <<NLINV, _Non-leaf Invalidation Extension_>>
15
15
|_0.1_
16
16
|_Draft_
17
+ | <<ARINV, _Address Range Invalidation Extension_>>
18
+ |_0.1_
19
+ |_Draft_
17
20
|===
18
21
19
22
[[QOSID]]
@@ -167,3 +170,40 @@ applies to the address range determined by the `ADDR` and `S` operands.
167
170
the VM address spaces identified by the `GSCID` operand.
168
171
169
172
<<<
173
+
174
+ [[ARINV]]
175
+ === Address Range Invalidation Extension, Version 0.1
176
+
177
+ The address range invalidation extension enables specifying a range of addresses
178
+ in an IOMMU ATC invalidation command, reducing the number of commands queued to
179
+ the IOMMU. This facility is especially useful when superpages are employed in
180
+ page tables.
181
+
182
+ A range-size (`S`) operand is defined at bit 73 in the `IOTINVAL.VMA` and
183
+ `IOTINVAL.GVMA` commands. The ability to set this field to 1 is enumerated by
184
+ `capabilities.S` (bit 43) being 1.
185
+
186
+ When the `GV` operand is 0, the `S` operand is ignored by the `IOTINVAL.GVMA`
187
+ command. When the `AV` operand is not ignored and is 0, the `S` operand
188
+ is ignored by the `IOTINVAL.VMA` and the `IOTINVAL.GVMA` commands.
189
+
190
+ When the `S` operand is 1, the `ADDR` operand represents a NAPOT range encoded
191
+ in the `ADDR` operand itself. Starting from bit position 0 of the `ADDR`
192
+ operand, if the first bit set to 0 is at position `X`, the range size is
193
+ `2^(X+13)` KiB.
194
+
195
+ If the `S` operand is 1 and all bits of the `ADDR` operand are 1, the behavior
196
+ is UNSPECIFIED.
197
+
198
+ If the `S` operand is 1 and the most significant bit of the `ADDR` operand is 0
199
+ while all other bits are 1, the specified address range covers the entire
200
+ address space.
201
+
202
+ [NOTE]
203
+ ====
204
+ The NAPOT range encoding used by this extension follows the convention used by
205
+ PCIe ATS Invalidation Requests to denote address ranges.
206
+
207
+ Simpler implementations may invalidate all address-translation cache entries
208
+ when the `S` bit is set to 1.
209
+ ====
0 commit comments