• Anup Patel's avatar
    RISC-V: KVM: Fix APLIC setipnum_le/be write emulation · d8dd9f11
    Anup Patel authored
    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: 74967aa2 ("RISC-V: KVM: Add in-kernel emulation of AIA APLIC")
    Signed-off-by: default avatarAnup Patel <apatel@ventanamicro.com>
    Signed-off-by: default avatarAnup Patel <anup@brainfault.org>
    Link: https://lore.kernel.org/r/20240321085041.1955293-2-apatel@ventanamicro.com
    d8dd9f11
aia_aplic.c 15.3 KB