mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-27 14:14:24 +08:00
d8dd9f113e
The writes to setipnum_le/be register for APLIC in MSI-mode have special
consideration for level-triggered interrupts as-per the section "4.9.2
Special consideration for level-sensitive interrupt sources" of the RISC-V
AIA specification.
Particularly, the below text from the RISC-V AIA specification defines
the behaviour of writes to setipnum_le/be register for level-triggered
interrupts:
"A second option is for the interrupt service routine to write the
APLIC’s source identity number for the interrupt to the domain’s
setipnum register just before exiting. This will cause the interrupt’s
pending bit to be set to one again if the source is still asserting
an interrupt, but not if the source is not asserting an interrupt."
Fix setipnum_le/be write emulation for in-kernel APLIC by implementing
the above behaviour in aplic_write_pending() function.
Cc: stable@vger.kernel.org
Fixes:
|
||
---|---|---|
.. | ||
aia_aplic.c | ||
aia_device.c | ||
aia_imsic.c | ||
aia.c | ||
Kconfig | ||
main.c | ||
Makefile | ||
mmu.c | ||
tlb.c | ||
vcpu_exit.c | ||
vcpu_fp.c | ||
vcpu_insn.c | ||
vcpu_onereg.c | ||
vcpu_pmu.c | ||
vcpu_sbi_base.c | ||
vcpu_sbi_hsm.c | ||
vcpu_sbi_pmu.c | ||
vcpu_sbi_replace.c | ||
vcpu_sbi_sta.c | ||
vcpu_sbi_v01.c | ||
vcpu_sbi.c | ||
vcpu_switch.S | ||
vcpu_timer.c | ||
vcpu_vector.c | ||
vcpu.c | ||
vm.c | ||
vmid.c |