From fc278b176e773090372de27ffebb7650a09cb469 Mon Sep 17 00:00:00 2001 From: Bill Nguyen Date: Thu, 12 Mar 2026 13:34:40 +1100 Subject: [PATCH 1/2] manual: memory region fixes for capdl Signed-off-by: Bill Nguyen --- docs/manual.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/manual.md b/docs/manual.md index 3b4dbb5b..3942c2d2 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -210,10 +210,18 @@ protection domain can only ever manage a single virtual machine. ## Memory Regions {#mr} -A *memory region* is a contiguous range of physical memory. -A memory region may have a *fixed* physical address. -For memory regions without a fixed physical address, the physical address is allocated as part of the build process. -Typically, memory regions with a fixed physical address represent memory-mapped device registers. +A *memory region* is a range of memory. + +A memory region has a *fixed* physical address if it: +1. has an explicitly defined physical address, or +2. is a subject of a `setvar` element with a `region_paddr` attribute +(See [System Description File](#sysdesc)). In this case +the tool will automatically choose a suitable physical address. + +For memory regions without a fixed physical address, it is not guaranteed for +it to be contiguous in physical memory. + +Typically, memory regions with a fixed physical address represent memory-mapped device registers or DMA regions. Memory regions that are within main memory are zero-initialised. From dc701298ba6aee66eadc730557cfea44f7488638 Mon Sep 17 00:00:00 2001 From: Ivan Velickovic Date: Thu, 12 Mar 2026 14:04:35 +1100 Subject: [PATCH 2/2] manual: various fixes Signed-off-by: Ivan Velickovic --- docs/manual.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/manual.md b/docs/manual.md index 3942c2d2..3cc6d855 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -212,7 +212,8 @@ protection domain can only ever manage a single virtual machine. A *memory region* is a range of memory. -A memory region has a *fixed* physical address if it: +A memory region has a *fixed* physical address if it either: + 1. has an explicitly defined physical address, or 2. is a subject of a `setvar` element with a `region_paddr` attribute (See [System Description File](#sysdesc)). In this case @@ -1025,17 +1026,17 @@ The `irq` element has the following attributes on ARM and RISC-V: * `trigger`: (optional) Whether the IRQ is edge triggered ("edge") or level triggered ("level"). Defaults to "level". * `setvar_id`: (optional) Specifies a symbol in the program image. This symbol will be rewritten with the channel identifier of the IRQ. -The `irq` element has the following attributes when registering X86_64 IOAPIC interrupts: +The `irq` element has the following attributes when registering x86-64 IOAPIC interrupts: * `id`: The channel identifier. Must be at least 0 and less than 63. * `pin`: IOAPIC pin that generates the interrupt. * `vector`: CPU vector to deliver the interrupt to. * `ioapic`: (optional) Zero based index of the IOAPIC to get the interrupt from. Defaults to 0. -* `level`: (optional) Whether the IRQ is level triggered (1) or edge triggered (0). Defaults to level (1). -* `polarity`: (optional) Whether the line polarity is high (1) or low (0). Defaults to high (1). +* `trigger`: (optional) Whether the IRQ is edge triggered ("edge") or level triggered ("level"). Defaults to "level". +* `polarity`: (optional) Whether the line polarity is high ("high") or low ("low"). Defaults to "high". * `setvar_id`: (optional) Specifies a symbol in the program image. This symbol will be rewritten with the channel identifier of the IRQ. -The `irq` element has the following attributes when registering X86_64 MSI interrupts: +The `irq` element has the following attributes when registering x86-64 MSI interrupts: * `id`: The channel identifier. Must be at least 0 and less than 63. * `pcidev`: The PCI device address of the device that will generate the interrupt, in BUS:DEV:FUNC notation (e.g. 01:1f:2).