xref: /qemu/docs/specs/riscv-aia.rst (revision 60a07d4a6e65f51916a417adb5e56b3f7b38ed22)
1*fc560153SDaniel Henrique Barboza.. _riscv-aia:
2*fc560153SDaniel Henrique Barboza
3*fc560153SDaniel Henrique BarbozaRISC-V AIA support for RISC-V machines
4*fc560153SDaniel Henrique Barboza======================================
5*fc560153SDaniel Henrique Barboza
6*fc560153SDaniel Henrique BarbozaAIA (Advanced Interrupt Architecture) support is implemented in the ``virt``
7*fc560153SDaniel Henrique BarbozaRISC-V machine for TCG and KVM accelerators.
8*fc560153SDaniel Henrique Barboza
9*fc560153SDaniel Henrique BarbozaThe support consists of two main modes:
10*fc560153SDaniel Henrique Barboza
11*fc560153SDaniel Henrique Barboza- "aia=aplic": adds one or more APLIC (Advanced Platform Level Interrupt Controller)
12*fc560153SDaniel Henrique Barboza  devices
13*fc560153SDaniel Henrique Barboza- "aia=aplic-imsic": adds one or more APLIC device and an IMSIC (Incoming MSI
14*fc560153SDaniel Henrique Barboza   Controller) device for each CPU
15*fc560153SDaniel Henrique Barboza
16*fc560153SDaniel Henrique BarbozaFrom an user standpoint, these modes will behave the same regardless of the accelerator
17*fc560153SDaniel Henrique Barbozaused.  From a developer standpoint the accelerator settings will change what it being
18*fc560153SDaniel Henrique Barbozaemulated in userspace versus what is being emulated by an in-kernel irqchip.
19*fc560153SDaniel Henrique Barboza
20*fc560153SDaniel Henrique BarbozaWhen running TCG, all controllers are emulated in userspace, including machine mode
21*fc560153SDaniel Henrique Barboza(m-mode) APLIC and IMSIC (when applicable).
22*fc560153SDaniel Henrique Barboza
23*fc560153SDaniel Henrique BarbozaWhen running KVM:
24*fc560153SDaniel Henrique Barboza
25*fc560153SDaniel Henrique Barboza- no m-mode is provided, so there is no m-mode APLIC or IMSIC emulation regardless of
26*fc560153SDaniel Henrique Barboza  the AIA mode chosen
27*fc560153SDaniel Henrique Barboza- with "aia=aplic", s-mode APLIC will be emulated by userspace
28*fc560153SDaniel Henrique Barboza- with "aia=aplic-imsic" there are two possibilities.  If no additional KVM option
29*fc560153SDaniel Henrique Barboza  is provided there will be no APLIC or IMSIC emulation in userspace, and the virtual
30*fc560153SDaniel Henrique Barboza  machine will use the provided in-kernel APLIC and IMSIC controllers.  If the user
31*fc560153SDaniel Henrique Barboza  chooses to use the irqchip in split mode via "-accel kvm,kernel-irqchip=split",
32*fc560153SDaniel Henrique Barboza  s-mode APLIC will be emulated while using the s-mode IMSIC from the irqchip
33*fc560153SDaniel Henrique Barboza
34*fc560153SDaniel Henrique BarbozaThe following table summarizes how the AIA and accelerator options defines what
35*fc560153SDaniel Henrique Barbozawe will emulate in userspace:
36*fc560153SDaniel Henrique Barboza
37*fc560153SDaniel Henrique Barboza
38*fc560153SDaniel Henrique Barboza.. list-table:: How AIA and accel options changes controller emulation
39*fc560153SDaniel Henrique Barboza   :widths: 25 25 25 25 25 25 25
40*fc560153SDaniel Henrique Barboza   :header-rows: 1
41*fc560153SDaniel Henrique Barboza
42*fc560153SDaniel Henrique Barboza   * - Accel
43*fc560153SDaniel Henrique Barboza     - Accel props
44*fc560153SDaniel Henrique Barboza     - AIA type
45*fc560153SDaniel Henrique Barboza     - APLIC m-mode
46*fc560153SDaniel Henrique Barboza     - IMSIC m-mode
47*fc560153SDaniel Henrique Barboza     - APLIC s-mode
48*fc560153SDaniel Henrique Barboza     - IMSIC s-mode
49*fc560153SDaniel Henrique Barboza   * - tcg
50*fc560153SDaniel Henrique Barboza     - ---
51*fc560153SDaniel Henrique Barboza     - aplic
52*fc560153SDaniel Henrique Barboza     - emul
53*fc560153SDaniel Henrique Barboza     - n/a
54*fc560153SDaniel Henrique Barboza     - emul
55*fc560153SDaniel Henrique Barboza     - n/a
56*fc560153SDaniel Henrique Barboza   * - tcg
57*fc560153SDaniel Henrique Barboza     - ---
58*fc560153SDaniel Henrique Barboza     - aplic-imsic
59*fc560153SDaniel Henrique Barboza     - emul
60*fc560153SDaniel Henrique Barboza     - emul
61*fc560153SDaniel Henrique Barboza     - emul
62*fc560153SDaniel Henrique Barboza     - emul
63*fc560153SDaniel Henrique Barboza   * - kvm
64*fc560153SDaniel Henrique Barboza     - ---
65*fc560153SDaniel Henrique Barboza     - aplic
66*fc560153SDaniel Henrique Barboza     - n/a
67*fc560153SDaniel Henrique Barboza     - n/a
68*fc560153SDaniel Henrique Barboza     - emul
69*fc560153SDaniel Henrique Barboza     - n/a
70*fc560153SDaniel Henrique Barboza   * - kvm
71*fc560153SDaniel Henrique Barboza     - none
72*fc560153SDaniel Henrique Barboza     - aplic-imsic
73*fc560153SDaniel Henrique Barboza     - n/a
74*fc560153SDaniel Henrique Barboza     - n/a
75*fc560153SDaniel Henrique Barboza     - in-kernel
76*fc560153SDaniel Henrique Barboza     - in-kernel
77*fc560153SDaniel Henrique Barboza   * - kvm
78*fc560153SDaniel Henrique Barboza     - irqchip=split
79*fc560153SDaniel Henrique Barboza     - aplic-imsic
80*fc560153SDaniel Henrique Barboza     - n/a
81*fc560153SDaniel Henrique Barboza     - n/a
82*fc560153SDaniel Henrique Barboza     - emul
83*fc560153SDaniel Henrique Barboza     - in-kernel
84