Skip to content
  • Sinan Kaya's avatar
    ACPI,PCI,IRQ: factor in PCI possible · 4a6e68bf
    Sinan Kaya authored
    The change introduced in commit 103544d8 (ACPI,PCI,IRQ: reduce
    resource requirements) omitted the initially applied PCI_POSSIBLE
    penalty when the IRQ is active.
    
    Incorrect calculation of the penalty leads the ACPI code to assigning
    a wrong interrupt number to a PCI INTx interrupt.
    
    This would not be as bad as it sounds in theory.  It would just cause
    the interrupts to be shared and result in performance penalty.
    
    However, some drivers (like the parallel port driver) don't like
    interrupt sharing and in the above case they will causes all of
    the PCI drivers wanting to share the interrupt to be unable to
    request it.
    
    The issue has not been caught in testing because the behavior is
    platform-specific and depends on the peripherals ending up sharing
    the IRQ and their drivers.
    
    Before the above commit the code would add the PCI_POSSIBLE value
    divided by the number of possible IRQ users to the IRQ penalty
    during initialization.
    
    Later in that code path, if the IRQ is chosen as the active IRQ or
    if it is used by ISA; additional penalties are added.
    
    Fixes: 103544d8
    
     (ACPI,PCI,IRQ: reduce resource requirements)
    Signed-off-by: default avatarSinan Kaya <okaya@codeaurora.org>
    Tested-by: default avatarWim Osterholt <wim@djo.tudelft.nl>
    [ rjw: Changelog ]
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    4a6e68bf