Skip to content

Incorrect mixture of AIA interfaces #573

Description

@reosdev

RISC-V AIA specifies two interrupt delivery mechanisms:

  1. MSI for the cores that support AIA. In this case the core side shall implement IMSIC file(s) with associated CSR-based interface. This is not supported by ACLIC.
  2. Direct delivery to the cores that are not aware of AIA (incl. none RISC-V cores). There is no AIA functionality required at the core side except ability to handle single wired external interrupt. For such cores the APLIC provides IDC (interrupt delivery control) MMIO structure in addition to the domain configuration interface.

IDC MMIO structure is similar but not equal to the IMSIC CSR interface. ACLIC document describes mixture of AIA APLIC domain configuration, IDC and IMSIC interfaces. Short summary in the following table:

Reg name        IMSIC CSRs                  IDC MMIO structure      ACLIC  

topi            major id/prio               external id/prio        IMSIC-style  
topei           external eiid               n/a                     alias to IDC.topi, adds claim, wrong and confusing   
claimi          n/a                         ext claim               removed, reason not clear  
eithreshold     eiid/prio threshold         n/a                     alias to IDC ithreshold, wrong usage  
ithreshold      n/a                         id threshold            aliased, shall be used instead of eithreshold  
iedelivery      delivery on/off/mode        n/a                     IMSIC-style, wrong and confusing  
idelivery       n/a                         delivery on/off         removed, reason unclear  
eie             enable                      n/a                     IMSIC-style alias to APLIC domain configuration, index by ID (instead EIID) is wrong and confusing   
eip             pending                     n/a                     IMSIC-style alias to APLIC domain configuration, index by ID (instead of EIID) is wrong and confusing   

ACLIC specification mixes the IMSIC, APLIC IDC and domain configuration interfaces in part of registers names and functions. From one side it looks like APLIC IDC, from other side it mimics to IMSIC controller.

The suggestion is to either adopt APLIC domain configuration and IDC interface or switch to IMSIC-based core side controller.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions