• Shanker Donthineni's avatar
    irqchip/gicv3-its: Implement two-level(indirect) device table support · 3faf24ea
    Shanker Donthineni authored
    Since device IDs are extremely sparse, the single, a.k.a flat table is
    not sufficient for the following two reasons.
    
    1) According to ARM-GIC spec, ITS hw can access maximum of 256(pages)*
       64K(pageszie) bytes. In the best case, it supports upto DEVid=21
       sparse with minimum device table entry size 8bytes.
    
    2) The maximum memory size that is possible without memblock depends on
       MAX_ORDER. 4MB on 4K page size kernel with default MAX_ORDER, so it
       supports DEVid range 19bits.
    
    The two-level device table feature brings us two advantages, the first
    is a very high possibility of supporting upto 32bit sparse, and the
    second one is the best utilization of memory allocation.
    
    The feature is enabled automatically during driver probe if the memory
    requirement is more than 2*ITS-pages and the hardware is capable of
    two-level table walk.
    Signed-off-by: default avatarShanker Donthineni <shankerd@codeaurora.org>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    3faf24ea
irq-gic-v3-its.c 43.2 KB