On 11/30/2015 3:38 PM, Bjorn Helgaas wrote: >> > Additional checks have been placed to return an error when ACPI_MAX_IRQS >> > is exceeded. >> > >> > Signed-off-by: Sinan Kaya <okaya@xxxxxxxxxxxxxx> > I don't think the description is quite accurate -- I think the > extended IRQ descriptor is required for IRQs of *16* and greater, not > IRQs greater than 256. Here's how I understand it: > > The ACPI IRQ Descriptor contains a 16-bit mask with a bit for each > IRQ, so it can describe interrupt numbers in the range [0-15]. > Interrupt numbers greater than 15 must be described with an Extended > IRQ Descriptor, which contains a table of 32-bit interrupt numbers > and can describe interrupt numbers in the range [0-(2^32-1)]. See > ACPI 5.0, sections 6.4.2.1 and 6.4.3.6. > You are right. I'm pasting from the spec. "6.4.2.1 IRQ Descriptor Type 0, Small Item Name 0x4, Length = 2 or 3 The IRQ data structure indicates that the device uses an interrupt level and supplies a mask with bits set indicating the levels implemented in this device. For standard PC-AT implementation there are 15 possible interrupts so a two-byte field is used. This structure is repeated for each separate interrupt required" "6.4.3.6 Extended Interrupt Descriptor Type 1, Large Item Name 0x9 The Extended Interrupt Descriptor is necessary to describe interrupt settings and possibilities for systems that support interrupts above 15." I'll reword correctly. This was a Linux implementation bug not a spec compliance issue. -- Sinan Kaya Qualcomm Technologies, Inc. on behalf of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html