• Heyi Guo's avatar
    drivers/gicv3: fix potential GICD context override with ESPI enabled · deb18901
    Heyi Guo authored
    
    
    RESTORE/SAVE_GICD_EREGS uses (int_id - (MIN_ESPI_ID - MIN_SPI_ID)) to
    get the context array index for ESPI, which will override the space of
    standard SPI starting from (MIN_SPI_ID + MIN_SPI_ID).
    
    However, using TOTAL_SPI_INTR_NUM to replace the above MIN_SPI_ID
    cannot totally fix the issue, for TOTAL_SPI_INTR_NUM is not well
    aligned and the array index will be rounded down by the shifting
    operation if being shifted more than 2 bits. It will cause buffer
    override again when the existing maximum SPI reaches 1019.
    
    So round up TOTAL_SPI_INTR_NUM with (1 << REG##R_SHIFT) for GICD
    context arrays.
    Signed-off-by: default avatarHeyi Guo <guoheyi@linux.alibaba.com>
    Change-Id: I5be2837c42f381a62f8d46a4ecd778009b1fe059
    deb18901
gicv3_main.c 45.7 KB