Skip to content

Commit 57789b2

Browse files
committed
Add more example diagrams for different models
1 parent 49abc3b commit 57789b2

7 files changed

+14
-3
lines changed

chapter2.adoc

+2-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ Let's consider a non-priority entry matching all bytes of a transaction. It is l
7575
Finally, if no such above entry exists, the transaction is illegal with error code = "not hit any rule" (0x05).
7676

7777

78-
.IOPMP Block Diagram.
78+
[caption="Figure {counter:image}: ", reftext="Figure {image}"]
79+
[title="an example block diagram of an IOPMP. It illustrates the checking flow of an IOPMP. This IOPMP takes three inputs: RRID, the transaction type (read/write), and the request address. It first looks up the SRCMD table according to the RRID carried by the incoming transaction to retrieve associated MD indexes and the corresponding permissions related to these MDs. By the MD indexes, the IOPMP looks up the MDCFG table to get the belonging entry indexes. The final step checks the access right according to the above entry indexes and corresponding permissions. An interrupt, an error response, and/or a record is generated once the transaction fails the permission check in the step.", id=iopmp-block-diagram]
7980
image::iopmp_unit_block_diagram.png[]
8081

8182
[#SECTION_2_7]

chapter3.adoc

+12
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,18 @@ This format is based on Format 1, except *HWCFG0.md_entry_num* is programmable.
5959
=== IOPMP Models
6060
For the sake of convenience of discussion, some highly used combinations of *HWCFG0* have an alias name, which are *srcmd_fmt*=0 and *mdcfg_fmt*=0 as the full model, *srcmd_fmt*=0 and *mdcfg_fmt*=1 as the rapid-_k_ model, where _k_ = (*md_entry_num* + 1), *srcmd_fmt*=0 and *mdcfg_fmt*=2 as the dynamic-_k_ model, where _k_ = (*md_entry_num* + 1), *srcmd_fmt*=1 and *mdcfg_fmt*=0 as the isolation model, and *srcmd_fmt*=1 and *mdcfg_fmt*=1 as the compact-_k_ model, where _k_ = (*md_entry_num* + 1).
6161

62+
[caption="Figure {counter:image}: ", reftext="Figure {image}"]
63+
[title="an example block diagram of the rapid-4 model. The flow is the same as in <<iopmp-block-diagram>>, except the MDCFG table is simplified to a constant mapping illustrated in the dashed box. In this example, every MD has exactly four entries."]
64+
image::iopmp_unit_block_diagram_rapid_4.png[]
65+
66+
[caption="Figure {counter:image}: ", reftext="Figure {image}"]
67+
[title="an example block diagram of the compact-4 model."]
68+
image::iopmp_unit_block_diagram_compact_4.png[]
69+
70+
[caption="Figure {counter:image}: ", reftext="Figure {image}"]
71+
[title="an example block diagram of the model implements SRCMD table format 2 and MDCFG table format 1 with HWCFG0.md_entry_num is 0. In this example, every MD has exactly single entry, i.e., the entry index is equal to the MD index."]
72+
image::iopmp_unit_block_diagram_srcmd_fmt2.png[]
73+
6274
[#SECTION_3_5]
6375
=== Configuration Protection
6476
The term 'lock' refers to a hardware feature that renders one or more fields or registers nonprogrammable until the IOPMP is reset. This feature serves to maintain the integrity of essential configurations in the event of a compromise of secure software. In cases where a lock bit is programmable, it is expected to be reset to '0' and sticky to '1' upon receiving a write of '1'.

images/iopmp_unit_block_diagram.png

100644100755
94.3 KB
Loading
114 KB
Loading
126 KB
Loading
120 KB
Loading

intro.adoc

-2
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,3 @@ Another hardware component in a bus matrix, the Input-Output Memory Management U
1010

1111
.Examplary Integration of IOPMP(s) in System.
1212
image::iopmp_system_position.png[]
13-
14-

0 commit comments

Comments
 (0)