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