[PATCH 2/8] Documentation: kvx: Wrap diagrams in literal code block

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Wrap code path diagrams in literal code block, just like other diagrams
in the kernel documentation. This avoids confusion with other constructs
(tables, block quotes, and inline substitutions).

Signed-off-by: Bagas Sanjaya <bagasdotme@xxxxxxxxx>
---
 Documentation/kvx/kvx-exceptions.rst | 241 ++++++++++++++-------------
 Documentation/kvx/kvx-iommu.rst      |  64 +++----
 Documentation/kvx/kvx-mmu.rst        |  41 +++--
 Documentation/kvx/kvx.rst            |  96 +++++------
 4 files changed, 225 insertions(+), 217 deletions(-)

diff --git a/Documentation/kvx/kvx-exceptions.rst b/Documentation/kvx/kvx-exceptions.rst
index d3e52f30285223..bb9010efb14196 100644
--- a/Documentation/kvx/kvx-exceptions.rst
+++ b/Documentation/kvx/kvx-exceptions.rst
@@ -10,21 +10,21 @@ The offset depends on which exception vector the cpu wants to jump to:
 * $ev + 0x80 for interrupt
 * $ev + 0xc0 for syscall
 
-Then, handlers are laid in the following order:
+Then, handlers are laid in the following order::
 
-        +-------------+
-        |             |
-        |   Syscall   |
-        +-------------+
-        |             |
-        |  Interrupts |
-        +-------------+
-        |             |
-        |    Traps    |
-        +-------------+
-        |             | ^
-        |    Debug    | | Stride
-BASE -> +-------------+ v
+          +-------------+
+          |             |
+          |   Syscall   |
+          +-------------+
+          |             |
+          |  Interrupts |
+          +-------------+
+          |             |
+          |    Traps    |
+          +-------------+
+          |             | ^
+          |    Debug    | | Stride
+  BASE -> +-------------+ v
 
 
 Interrupts, and traps are serviced similarly, ie:
@@ -99,65 +99,66 @@ When handling a signal, the path is the following:
 7 - User application is restored at the exact point it was interrupted
     before.
 
+    ::
 
-        +----------+
-        |    1     |
-        | User app | @func
-        |  (user)  |
-        +---+------+
-            |
-            | it/trap/scall
-            |
-        +---v-------+
-        |    2      |
-        | exception |
-        | handling  |
-        | (kernel)  |
-        +---+-------+
-            |
-            | Check if signal are pending, if so, handle signals
-            |
-        +---v--------+
-        |    3       |
-        | do_signal  |
-        |  handling  |
-        |  (kernel)  |
-        +----+-------+
-             |
-             | Return to user signal handler
-             |
-        +----v------+
-        |    4      |
-        |  signal   |
-        |  handler  |
-        |  (user)   |
-        +----+------+
-             |
-             | Return to sigreturn trampoline
-             |
-        +----v-------+
-        |    5       |
-        |  syscall   |
-        |rt_sigreturn|
-        |  (user)    |
-        +----+-------+
-             |
-             | Syscall to rt_sigreturn
-             |
-        +----v-------+
-        |    6       |
-        |  sigreturn |
-        |  handler   |
-        |  (kernel)  |
-        +----+-------+
-             |
-             | Modify context to return to original func
-             |
-        +----v-----+
-        |    7     |
-        | User app | @func
-        |  (user)  |
-        +----------+
+            +----------+
+            |    1     |
+            | User app | @func
+            |  (user)  |
+            +---+------+
+                |
+                | it/trap/scall
+                |
+            +---v-------+
+            |    2      |
+            | exception |
+            | handling  |
+            | (kernel)  |
+            +---+-------+
+                |
+                | Check if signal are pending, if so, handle signals
+                |
+            +---v--------+
+            |    3       |
+            | do_signal  |
+            |  handling  |
+            |  (kernel)  |
+            +----+-------+
+                 |
+                 | Return to user signal handler
+                 |
+            +----v------+
+            |    4      |
+            |  signal   |
+            |  handler  |
+            |  (user)   |
+            +----+------+
+                 |
+                 | Return to sigreturn trampoline
+                 |
+            +----v-------+
+            |    5       |
+            |  syscall   |
+            |rt_sigreturn|
+            |  (user)    |
+            +----+-------+
+                 |
+                 | Syscall to rt_sigreturn
+                 |
+            +----v-------+
+            |    6       |
+            |  sigreturn |
+            |  handler   |
+            |  (kernel)  |
+            +----+-------+
+                 |
+                 | Modify context to return to original func
+                 |
+            +----v-----+
+            |    7     |
+            | User app | @func
+            |  (user)  |
+            +----------+
 
 Registers handling
 ==================
@@ -174,62 +175,62 @@ Interrupts and traps
 
 When interrupt and traps are triggered, we only save the caller-saved registers.
 Indeed, we rely on the fact that C code will save and restore callee-saved and
-hence, there is no need to save them. This path is the following:
+hence, there is no need to save them. This path is the following::
 
-     +------------+          +-----------+        +---------------+
-IT   | Save caller| C Call   | Execute C |  Ret   | Restore caller| Ret from IT
-+--->+   saved    +--------->+  handler  +------->+     saved     +----->
-     | registers  |          +-----------+        |   registers   |
-     +------------+                               +---------------+
+       +------------+          +-----------+        +---------------+
+  IT   | Save caller| C Call   | Execute C |  Ret   | Restore caller| Ret from IT
+  +--->+   saved    +--------->+  handler  +------->+     saved     +----->
+       | registers  |          +-----------+        |   registers   |
+       +------------+                               +---------------+
 
 However, when returning to user, we check if there is work_pending. If a signal
 is pending and there is a signal handler to be called, then we need all
 registers to be saved on the stack in the pt_regs before executing the signal
 handler and restored after that. Since we only saved caller-saved registers, we
 need to also save callee-saved registers to restore them correctly when
-returning to user. This path is the following (a bit more complicated !):
+returning to user. This path is the following (a bit more complicated !)::
 
-      +------------+
-      | Save caller|          +-----------+  Ret   +------------+
- IT   |   saved    | C Call   | Execute C | to asm | Check work |
- +--->+ registers  +--------->+  handler  +------->+   pending  |
-      | to pt_regs |          +-----------+        +--+---+-----+
-      +------------+                                  |   |
-                        Work pending                  |   | No work pending
-         +--------------------------------------------+   |
-         |                                                |
-         |                                   +------------+
-         v                                   |
-  +------+------+                            v
-  | Save callee |                    +-------+-------+
-  |   saved     |                    | Restore caller|  RFE from IT
-  | registers   |                    |     saved     +------->
-  | to pt_regs  |                    |   registers   |
-  +--+-------+--+                    | from pt_regs  |
-     |       |                       +-------+-------+
-     |       |         +---------+           ^
-     |       |         | Execute |           |
-     |       +-------->+ needed  +-----------+
-     |                 |  work   |
-     |                 +---------+
-     |Signal handler ?
-     v
-+----+----------+ RFE to user +-------------+       +--------------+
-|   Copy all    | handler     |  Execute    |  ret  | rt_sigreturn |
-|   registers   +------------>+ user signal +------>+ trampoline   |
-| from pt_regs  |             |  handler    |       |  to kernel   |
-| to user stack |             +-------------+       +------+-------+
-+---------------+                                          |
-                         syscall rt_sigreturn              |
-         +-------------------------------------------------+
-         |
-         v
-+--------+-------+                      +-------------+
-|   Recopy all   |                      | Restore all |  RFE
-| registers from +--------------------->+    saved    +------->
-|   user stack   |       Return         |  registers  |
-|   to pt_regs   |    from sigreturn    |from pt_regs |
-+----------------+  (via ret_from_fork) +-------------+
+        +------------+
+        | Save caller|          +-----------+  Ret   +------------+
+   IT   |   saved    | C Call   | Execute C | to asm | Check work |
+   +--->+ registers  +--------->+  handler  +------->+   pending  |
+        | to pt_regs |          +-----------+        +--+---+-----+
+        +------------+                                  |   |
+                          Work pending                  |   | No work pending
+           +--------------------------------------------+   |
+           |                                                |
+           |                                   +------------+
+           v                                   |
+    +------+------+                            v
+    | Save callee |                    +-------+-------+
+    |   saved     |                    | Restore caller|  RFE from IT
+    | registers   |                    |     saved     +------->
+    | to pt_regs  |                    |   registers   |
+    +--+-------+--+                    | from pt_regs  |
+       |       |                       +-------+-------+
+       |       |         +---------+           ^
+       |       |         | Execute |           |
+       |       +-------->+ needed  +-----------+
+       |                 |  work   |
+       |                 +---------+
+       |Signal handler ?
+       v
+  +----+----------+ RFE to user +-------------+       +--------------+
+  |   Copy all    | handler     |  Execute    |  ret  | rt_sigreturn |
+  |   registers   +------------>+ user signal +------>+ trampoline   |
+  | from pt_regs  |             |  handler    |       |  to kernel   |
+  | to user stack |             +-------------+       +------+-------+
+  +---------------+                                          |
+                           syscall rt_sigreturn              |
+           +-------------------------------------------------+
+           |
+           v
+  +--------+-------+                      +-------------+
+  |   Recopy all   |                      | Restore all |  RFE
+  | registers from +--------------------->+    saved    +------->
+  |   user stack   |       Return         |  registers  |
+  |   to pt_regs   |    from sigreturn    |from pt_regs |
+  +----------------+  (via ret_from_fork) +-------------+
 
 
 Syscalls
diff --git a/Documentation/kvx/kvx-iommu.rst b/Documentation/kvx/kvx-iommu.rst
index 96b74ce71acb3e..69eca8d1bc37a1 100644
--- a/Documentation/kvx/kvx-iommu.rst
+++ b/Documentation/kvx/kvx-iommu.rst
@@ -63,39 +63,39 @@ IOMMU implementation
 --------------------
 
 The kvx is providing several IOMMUs. Here is a simplified view of all IOMMUs
-and translations that occurs between memory and devices:
+and translations that occurs between memory and devices::
 
- +---------------------------------------------------------------------+
- | +------------+     +---------+                          | CLUSTER X |
- | | Cores 0-15 +---->+ Crypto  |                          +-----------|
- | +-----+------+     +----+----+                                      |
- |       |                 |                                           |
- |       v                 v                                           |
- |   +-------+        +------------------------------+                 |
- |   |  MMU  |   +----+ IOMMU x4 (secure + insecure) |                 |
- |   +---+---+   |    +------------------------------+                 |
- |       |       |                                                     |
- +--------------------+                                                |
-        |        |    |                                                |
-        v        v    |                                                |
-    +---+--------+-+  |                                                |
-    |    MEMORY    |  |     +----------+     +--------+     +-------+  |
-    |              +<-|-----+ IOMMU Rx |<----+ DMA Rx |<----+       |  |
-    |              |  |     +----------+     +--------+     |       |  |
-    |              |  |                                     |  NoC  |  |
-    |              |  |     +----------+     +--------+     |       |  |
-    |              +--|---->| IOMMU Tx +---->| DMA Tx +---->+       |  |
-    |              |  |     +----------+     +--------+     +-------+  |
-    |              |  +------------------------------------------------+
-    |              |
-    |              |     +--------------+     +------+
-    |              |<--->+ IOMMU Rx/Tx  +<--->+ PCIe +
-    |              |     +--------------+     +------+
-    |              |
-    |              |     +--------------+     +------------------------+
-    |              |<--->+ IOMMU Rx/Tx  +<--->+ master Soc Peripherals |
-    |              |     +--------------+     +------------------------+
-    +--------------+
+  +---------------------------------------------------------------------+
+  | +------------+     +---------+                          | CLUSTER X |
+  | | Cores 0-15 +---->+ Crypto  |                          +-----------|
+  | +-----+------+     +----+----+                                      |
+  |       |                 |                                           |
+  |       v                 v                                           |
+  |   +-------+        +------------------------------+                 |
+  |   |  MMU  |   +----+ IOMMU x4 (secure + insecure) |                 |
+  |   +---+---+   |    +------------------------------+                 |
+  |       |       |                                                     |
+  +--------------------+                                                |
+         |        |    |                                                |
+         v        v    |                                                |
+     +---+--------+-+  |                                                |
+     |    MEMORY    |  |     +----------+     +--------+     +-------+  |
+     |              +<-|-----+ IOMMU Rx |<----+ DMA Rx |<----+       |  |
+     |              |  |     +----------+     +--------+     |       |  |
+     |              |  |                                     |  NoC  |  |
+     |              |  |     +----------+     +--------+     |       |  |
+     |              +--|---->| IOMMU Tx +---->| DMA Tx +---->+       |  |
+     |              |  |     +----------+     +--------+     +-------+  |
+     |              |  +------------------------------------------------+
+     |              |
+     |              |     +--------------+     +------+
+     |              |<--->+ IOMMU Rx/Tx  +<--->+ PCIe +
+     |              |     +--------------+     +------+
+     |              |
+     |              |     +--------------+     +------------------------+
+     |              |<--->+ IOMMU Rx/Tx  +<--->+ master Soc Peripherals |
+     |              |     +--------------+     +------------------------+
+     +--------------+
 
 
 There is also an IOMMU dedicated to the crypto module but this module will not
diff --git a/Documentation/kvx/kvx-mmu.rst b/Documentation/kvx/kvx-mmu.rst
index 59bda2afc9abde..832fb7c41a49d8 100644
--- a/Documentation/kvx/kvx-mmu.rst
+++ b/Documentation/kvx/kvx-mmu.rst
@@ -157,14 +157,17 @@ We only support three levels for the page table and 4KB for page size.
 3 levels page table
 -------------------
 
-...-----+--------+--------+--------+--------+--------+
-      40|39    32|31    24|23    16|15     8|7      0|
-...-----++-------+--+-----+---+----+----+---+--------+
-         |          |         |         |
-         |          |         |         +--->  [11:0] Offset (12 bits)
-         |          |         +------------->  [20:12] PTE offset (9 bits)
-         |          +----------------------->  [29:21] PMD offset (9 bits)
-         +---------------------------------->  [39:30] PGD offset (10 bits)
+::
+
+  ...-----+--------+--------+--------+--------+--------+
+        40|39    32|31    24|23    16|15     8|7      0|
+  ...-----++-------+--+-----+---+----+----+---+--------+
+           |          |         |         |
+           |          |         |         +--->  [11:0] Offset (12 bits)
+           |          |         +------------->  [20:12] PTE offset (9 bits)
+           |          +----------------------->  [29:21] PMD offset (9 bits)
+           +---------------------------------->  [39:30] PGD offset (10 bits)
+
 Bits 40 to 64 are signed extended according to bit 39. If bit 39 is equal to 1
 we are in kernel space.
 
@@ -175,12 +178,14 @@ PTE format
 
 About the format of the PTE entry, as we are not forced by hardware for choices,
 we choose to follow the format described in the RiscV implementation as a
-starting point.
+starting point::
+
+  +---------+--------+----+--------+---+---+---+---+---+---+------+---+---+
+  | 63..23  | 22..13 | 12 | 11..10 | 9 | 8 | 7 | 6 | 5 | 4 | 3..2 | 1 | 0 |
+  +---------+--------+----+--------+---+---+---+---+---+---+------+---+---+
+      PFN     Unused   S    PageSZ   H   G   X   W   R   D    CP    A   P
+
 
- +---------+--------+----+--------+---+---+---+---+---+---+------+---+---+
- | 63..23  | 22..13 | 12 | 11..10 | 9 | 8 | 7 | 6 | 5 | 4 | 3..2 | 1 | 0 |
- +---------+--------+----+--------+---+---+---+---+---+---+------+---+---+
-     PFN     Unused   S    PageSZ   H   G   X   W   R   D    CP    A   P
        where:
         P: Present
         A: Accessed
@@ -231,10 +236,12 @@ kvx implementation to use them is based on other architectures (such as arc
 or xtensa) and uses a wrapping ASN counter containing both cycle/generation and
 asn.
 
-+---------+--------+
-|63     10|9      0|
-+---------+--------+
-  Cycle      ASN
+::
+
+  +---------+--------+
+  |63     10|9      0|
+  +---------+--------+
+    Cycle      ASN
 
 This ASN counter is incremented monotonously to allocate new ASNs. When the
 counter reaches 511 (9 bit), TLB is completely flushed and a new cycle is
diff --git a/Documentation/kvx/kvx.rst b/Documentation/kvx/kvx.rst
index 8ce0703de6813b..20c3666f445e26 100644
--- a/Documentation/kvx/kvx.rst
+++ b/Documentation/kvx/kvx.rst
@@ -15,17 +15,17 @@ On kvx, we have 4 levels of privilege level starting from 0 (most
 privileged one) to 3 (less privilege one). A system of owners allows
 to delegate ownership of resources by using specials system registers.
 
-The 2 main software stacks for Linux Kernel are the following:
+The 2 main software stacks for Linux Kernel are the following::
 
-+-------------+       +-------------+
-| PL0: Debug  |       | PL0: Debug  |
-+-------------+       +-------------+
-| PL1: Linux  |       | PL1: HyperV |
-+-------------+       +-------------+
-| PL2: User   |       | PL2: Linux  |
-+-------------+       +-------------+
-|             |       | PL3: User   |
-+-------------+       +-------------+
+  +-------------+       +-------------+
+  | PL0: Debug  |       | PL0: Debug  |
+  +-------------+       +-------------+
+  | PL1: Linux  |       | PL1: HyperV |
+  +-------------+       +-------------+
+  | PL2: User   |       | PL2: Linux  |
+  +-------------+       +-------------+
+  |             |       | PL3: User   |
+  +-------------+       +-------------+
 
 In both cases, the kvx support for privileges has been designed using
 only relative PL and thus should work on both configurations without
@@ -201,45 +201,45 @@ to it, the kernel sends an interrupt using a mailbox.
 If the L2$ node is not present in the device tree, then, the RM will directly go
 into sleeping.
 
-Boot diagram:
+Boot diagram::
 
-           RM                       PE 0
-                          +
-       +---------+        |
-       |  Boot   |        |
-       +----+----+        |
-            |             |
-            v             |
-      +-----+-----+       |
-      |  Prepare  |       |
-      | L2 shared |       |
-      |  memory   |       |
-      |(registers)|       |
-      +-----+-----+       |
-            |             |      +-----------+
-            +------------------->+   Boot    |
-            |             |      +-----+-----+
-            v             |            |
-   +--------+---------+   |            |
-   | L2 firmware      |   |            |
-   | parameters:      |   |            |
-   | r0 = registers   |   |            |
-   | r1 = DTB         |   |            |
-   +--------+---------+   |            |
-            |             |            |
-            v             |            |
-    +-------+--------+    |     +------+------+
-    |  L2 firmware   |    |     | Wait for L2 |
-    |   execution    |    |     | to be ready |
-    +-------+--------+    |     +------+------+
-            |             |            |
-     +------v-------+     |            v
-     | L2 requests  |     |     +------+------+
-+--->+   handling   |     |     |   Enable    |
-|    +-------+------+     |     | L2 caching  |
-|            |            |     +------+------+
-|            |            |            |
-+------------+            +            v
+             RM                       PE 0
+                            +
+         +---------+        |
+         |  Boot   |        |
+         +----+----+        |
+              |             |
+              v             |
+        +-----+-----+       |
+        |  Prepare  |       |
+        | L2 shared |       |
+        |  memory   |       |
+        |(registers)|       |
+        +-----+-----+       |
+              |             |      +-----------+
+              +------------------->+   Boot    |
+              |             |      +-----+-----+
+              v             |            |
+     +--------+---------+   |            |
+     | L2 firmware      |   |            |
+     | parameters:      |   |            |
+     | r0 = registers   |   |            |
+     | r1 = DTB         |   |            |
+     +--------+---------+   |            |
+              |             |            |
+              v             |            |
+      +-------+--------+    |     +------+------+
+      |  L2 firmware   |    |     | Wait for L2 |
+      |   execution    |    |     | to be ready |
+      +-------+--------+    |     +------+------+
+              |             |            |
+       +------v-------+     |            v
+       | L2 requests  |     |     +------+------+
+  +--->+   handling   |     |     |   Enable    |
+  |    +-------+------+     |     | L2 caching  |
+  |            |            |     +------+------+
+  |            |            |            |
+  +------------+            +            v
 
 
 Since this driver is started early (before SMP boot), A lot of drivers are not
-- 
An old man doll... just what I always wanted! - Clara




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux