[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 8/8] docs: update riscv/virt.rst with kernel-irqchip=split su
From: |
Alistair Francis |
Subject: |
Re: [PATCH 8/8] docs: update riscv/virt.rst with kernel-irqchip=split support |
Date: |
Mon, 18 Nov 2024 12:00:55 +1000 |
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
>
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH 8/8] docs: update riscv/virt.rst with kernel-irqchip=split support,
Alistair Francis <=