[PATCH] irqchip: gic-v3-its: Don't assume GICv3 hardware supports 16bit INTID
shankerd at codeaurora.org
Mon Mar 20 02:52:29 PDT 2017
On 03/17/2017 10:49 AM, Marc Zyngier wrote:
> On 15/03/17 05:46, Shanker Donthineni wrote:
>> The current ITS driver is assuming every ITS hardware implementation
>> supports minimum of 16bit INTID. But this is not true, as per GICv3
>> specification, INTID field is IMPLEMENTATION DEFINED in the range of
>> 14-24 bits. We might see an unpredictable system behavior on systems
>> where hardware support less than 16bits and software tries to use
>> 64K LPI interrupts.
>> On Qualcomm Datacenter Technologies QDF2400 platform, boot log shows
>> confusing information about number of LPI chunks as shown below. The
>> QDF2400 ITS hardware supports 24bit INTID.
>> This patch allocates the memory resources for PEND/PROP tables based
>> on discoverable value which is specified in GITS_TYPER.IDbits. Also
>> taking this opportunity to increase number of LPI/MSI(x) to 128K if
>> the hardware is capable, and show log message that reflects the
>> correct number of LPI chunks.
> As much as I like the idea of fixing the obvious bug that assuming 16bit
> of ID space is, what is the rational of capping the support to another
> arbitrary value?
I believe 128K LPIs are sufficient so capped to 17 bits.
> Why can't we (just like other tables) try and allocate the full amount
> required (with a possible back-off if allocations fail)?
Qualcomm ITS hardware supports 24bit LPI, it requires lot of memory to handle 2^24 entry property and pending table.
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
More information about the linux-arm-kernel