• M
    irqchip: gicv3-its: Fix ITT allocation · c8481267
    Marc Zyngier 提交于
    When issuing a MAPD command, one of the parameters passed to the ITS
    is the number of EventID bits used to index the per-device Interrupt
    Translation Table (ITT). Crucially, this is the number of bits
    *minus one*.
    
    This has two consequences:
    - The size of the ITT has to be a strict power of two, no matter
      how many different events the device is actually going to generate.
    - It is impossible to express an ITT with a single entry, as you
      would have to tell the ITS to "use zero bit from the EventID",
      and that clashes with "minus one" above.
    
    Fix this by allocating the ITT with the number of vectors rounded up
    to the next power of two, with a minimum of two entries.
    Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Yun Wu (Abel) <wuyun.wu@huawei.com>
    Cc: Robert Richter <robert.richter@caviumnetworks.com>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    c8481267
irq-gic-v3-its.c 33.3 KB