Also add a new page, docs/specs/riscv-aia.rst, where we're documenting
the state of AIA support in QEMU w.r.t the controllers being emulated or
not depending on the AIA and accelerator settings.
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
---
docs/specs/index.rst | 1 +
docs/specs/riscv-aia.rst | 83 ++++++++++++++++++++++++++++++++++++++
docs/system/riscv/virt.rst | 7 ++++
3 files changed, 91 insertions(+)
create mode 100644 docs/specs/riscv-aia.rst
diff --git a/docs/specs/index.rst b/docs/specs/index.rst
index 6495ed5ed9..9a7d61161f 100644
--- a/docs/specs/index.rst
+++ b/docs/specs/index.rst
@@ -36,3 +36,4 @@ guest hardware that is specific to QEMU.
vmgenid
rapl-msr
rocker
+ riscv-aia
diff --git a/docs/specs/riscv-aia.rst b/docs/specs/riscv-aia.rst
new file mode 100644
index 0000000000..8097e2f897
--- /dev/null
+++ b/docs/specs/riscv-aia.rst
@@ -0,0 +1,83 @@
+.. _riscv-aia:
+
+RISC-V AIA support for RISC-V machines
+======================================
+
+AIA (Advanced Interrupt Architecture) support is implemented in the ``virt``
+RISC-V machine for TCG and KVM accelerators.
+
+The support consists of two main modes:
+
+- "aia=aplic": adds one or more APLIC (Advanced Platform Level Interrupt Controller)
+ devices
+- "aia=aplic-imsic": adds one or more APLIC device and an IMSIC (Incoming MSI
+ Controller) device for each CPU
+
+From an user standpoint, these modes will behave the same regardless of the accelerator
+used. From a developer standpoint the accelerator settings will change what it being
+emulated in userspace versus what is being emulated by an in-kernel irqchip.
+
+When running TCG, all controllers are emulated in userspace, including machine mode
+(m-mode) APLIC and IMSIC (when applicable).
+
+When running KVM:
+
+- no m-mode is provided, so there is no m-mode APLIC or IMSIC emulation regardless of
+ the AIA mode chosen
+- with "aia=aplic", s-mode APLIC will be emulated by userspace
+- with "aia=aplic-imsic" there are two possibilities. If no additional KVM option
+ is provided there will be no APLIC or IMSIC emulation in userspace, and the virtual
+ machine will use the provided in-kernel APLIC and IMSIC controllers. If the user
+ chooses to use the irqchip in split mode via "-accel kvm,kernel-irqchip=split",
+ s-mode APLIC will be emulated while using the s-mode IMSIC from the irqchip
+
+The following table summarizes how the AIA and accelerator options defines what
+we will emulate in userspace:
+
+
+.. list-table:: How AIA and accel options changes controller emulation
+ :widths: 25 25 25 25 25 25 25
+ :header-rows: 1
+
+ * - Accel
+ - Accel props
+ - AIA type
+ - APLIC m-mode
+ - IMSIC m-mode
+ - APLIC s-mode
+ - IMSIC s-mode
+ * - tcg
+ - ---
+ - aplic
+ - emul
+ - n/a
+ - emul
+ - n/a
+ * - tcg
+ - ---
+ - aplic-imsic
+ - emul
+ - emul
+ - emul
+ - emul
+ * - kvm
+ - ---
+ - aplic
+ - n/a
+ - n/a
+ - emul
+ - n/a
+ * - kvm
+ - none
+ - aplic-imsic
+ - n/a
+ - n/a
+ - in-kernel
+ - in-kernel
+ * - kvm
+ - irqchip=split
+ - aplic-imsic
+ - n/a
+ - n/a
+ - emul
+ - in-kernel
diff --git a/docs/system/riscv/virt.rst b/docs/system/riscv/virt.rst
index 9a06f95a34..8cbedf73ef 100644
--- a/docs/system/riscv/virt.rst
+++ b/docs/system/riscv/virt.rst
@@ -110,6 +110,13 @@ The following machine-specific options are supported:
MSIs. When not specified, this option is assumed to be "none" which selects
SiFive PLIC to handle wired interrupts.
+ This option also interacts with '-accel kvm'. When using "aia=aplic-imsic"
+ with KVM, it is possible to set the use of the kernel irqchip in split mode
+ by using "-accel kvm,kernel-irqchip=split". In this case the ``virt`` machine
+ will emulate the APLIC controller instead of using the APLIC controller from
+ the irqchip. See :ref:`riscv-aia` for more details on all available AIA
+ modes.
+
- aia-guests=nnn
The number of per-HART VS-level AIA IMSIC pages to be emulated for a guest
--
2.45.2
On Fri, Oct 11, 2024 at 5:05 AM Daniel Henrique Barboza <dbarboza@ventanamicro.com> wrote: > > Also add a new page, docs/specs/riscv-aia.rst, where we're documenting > the state of AIA support in QEMU w.r.t the controllers being emulated or > not depending on the AIA and accelerator settings. > > Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > docs/specs/index.rst | 1 + > docs/specs/riscv-aia.rst | 83 ++++++++++++++++++++++++++++++++++++++ > docs/system/riscv/virt.rst | 7 ++++ > 3 files changed, 91 insertions(+) > create mode 100644 docs/specs/riscv-aia.rst > > diff --git a/docs/specs/index.rst b/docs/specs/index.rst > index 6495ed5ed9..9a7d61161f 100644 > --- a/docs/specs/index.rst > +++ b/docs/specs/index.rst > @@ -36,3 +36,4 @@ guest hardware that is specific to QEMU. > vmgenid > rapl-msr > rocker > + riscv-aia > diff --git a/docs/specs/riscv-aia.rst b/docs/specs/riscv-aia.rst > new file mode 100644 > index 0000000000..8097e2f897 > --- /dev/null > +++ b/docs/specs/riscv-aia.rst > @@ -0,0 +1,83 @@ > +.. _riscv-aia: > + > +RISC-V AIA support for RISC-V machines > +====================================== > + > +AIA (Advanced Interrupt Architecture) support is implemented in the ``virt`` > +RISC-V machine for TCG and KVM accelerators. > + > +The support consists of two main modes: > + > +- "aia=aplic": adds one or more APLIC (Advanced Platform Level Interrupt Controller) > + devices > +- "aia=aplic-imsic": adds one or more APLIC device and an IMSIC (Incoming MSI > + Controller) device for each CPU > + > +From an user standpoint, these modes will behave the same regardless of the accelerator > +used. From a developer standpoint the accelerator settings will change what it being > +emulated in userspace versus what is being emulated by an in-kernel irqchip. > + > +When running TCG, all controllers are emulated in userspace, including machine mode > +(m-mode) APLIC and IMSIC (when applicable). > + > +When running KVM: > + > +- no m-mode is provided, so there is no m-mode APLIC or IMSIC emulation regardless of > + the AIA mode chosen > +- with "aia=aplic", s-mode APLIC will be emulated by userspace > +- with "aia=aplic-imsic" there are two possibilities. If no additional KVM option > + is provided there will be no APLIC or IMSIC emulation in userspace, and the virtual > + machine will use the provided in-kernel APLIC and IMSIC controllers. If the user > + chooses to use the irqchip in split mode via "-accel kvm,kernel-irqchip=split", > + s-mode APLIC will be emulated while using the s-mode IMSIC from the irqchip > + > +The following table summarizes how the AIA and accelerator options defines what > +we will emulate in userspace: > + > + > +.. list-table:: How AIA and accel options changes controller emulation > + :widths: 25 25 25 25 25 25 25 > + :header-rows: 1 > + > + * - Accel > + - Accel props > + - AIA type > + - APLIC m-mode > + - IMSIC m-mode > + - APLIC s-mode > + - IMSIC s-mode > + * - tcg > + - --- > + - aplic > + - emul > + - n/a > + - emul > + - n/a > + * - tcg > + - --- > + - aplic-imsic > + - emul > + - emul > + - emul > + - emul > + * - kvm > + - --- > + - aplic > + - n/a > + - n/a > + - emul > + - n/a > + * - kvm > + - none > + - aplic-imsic > + - n/a > + - n/a > + - in-kernel > + - in-kernel > + * - kvm > + - irqchip=split > + - aplic-imsic > + - n/a > + - n/a > + - emul > + - in-kernel > diff --git a/docs/system/riscv/virt.rst b/docs/system/riscv/virt.rst > index 9a06f95a34..8cbedf73ef 100644 > --- a/docs/system/riscv/virt.rst > +++ b/docs/system/riscv/virt.rst > @@ -110,6 +110,13 @@ The following machine-specific options are supported: > MSIs. When not specified, this option is assumed to be "none" which selects > SiFive PLIC to handle wired interrupts. > > + This option also interacts with '-accel kvm'. When using "aia=aplic-imsic" > + with KVM, it is possible to set the use of the kernel irqchip in split mode > + by using "-accel kvm,kernel-irqchip=split". In this case the ``virt`` machine > + will emulate the APLIC controller instead of using the APLIC controller from > + the irqchip. See :ref:`riscv-aia` for more details on all available AIA > + modes. > + > - aia-guests=nnn > > The number of per-HART VS-level AIA IMSIC pages to be emulated for a guest > -- > 2.45.2 > >
© 2016 - 2024 Red Hat, Inc.