Skip to content

Commit 5c5087a

Browse files
Sinan Kayarafaeljw
authored andcommitted
ACPI,PCI,IRQ: reduce static IRQ array size to 16
Now that the supported number of PCI IRQs are no longer capped with 256, renaming the static array to support ISA IRQs only and removing the MAX_IRQS constant. Signed-off-by: Sinan Kaya <[email protected]> Acked-by: Bjorn Helgaas <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent 103544d commit 5c5087a

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

drivers/acpi/pci_link.c

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -438,16 +438,15 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
438438
* enabled system.
439439
*/
440440

441-
#define ACPI_MAX_IRQS 256
442-
#define ACPI_MAX_ISA_IRQ 16
441+
#define ACPI_MAX_ISA_IRQS 16
443442

444443
#define PIRQ_PENALTY_PCI_POSSIBLE (16*16)
445444
#define PIRQ_PENALTY_PCI_USING (16*16*16)
446445
#define PIRQ_PENALTY_ISA_TYPICAL (16*16*16*16)
447446
#define PIRQ_PENALTY_ISA_USED (16*16*16*16*16)
448447
#define PIRQ_PENALTY_ISA_ALWAYS (16*16*16*16*16*16)
449448

450-
static int acpi_irq_penalty[ACPI_MAX_IRQS] = {
449+
static int acpi_isa_irq_penalty[ACPI_MAX_ISA_IRQS] = {
451450
PIRQ_PENALTY_ISA_ALWAYS, /* IRQ0 timer */
452451
PIRQ_PENALTY_ISA_ALWAYS, /* IRQ1 keyboard */
453452
PIRQ_PENALTY_ISA_ALWAYS, /* IRQ2 cascade */
@@ -500,8 +499,8 @@ static int acpi_irq_get_penalty(int irq)
500499
{
501500
int penalty = 0;
502501

503-
if (irq < ACPI_MAX_ISA_IRQ)
504-
penalty += acpi_irq_penalty[irq];
502+
if (irq < ACPI_MAX_ISA_IRQS)
503+
penalty += acpi_isa_irq_penalty[irq];
505504

506505
/*
507506
* Penalize IRQ used by ACPI SCI. If ACPI SCI pin attributes conflict
@@ -541,14 +540,15 @@ int __init acpi_irq_penalty_init(void)
541540
link->irq.possible_count;
542541

543542
for (i = 0; i < link->irq.possible_count; i++) {
544-
if (link->irq.possible[i] < ACPI_MAX_ISA_IRQ)
545-
acpi_irq_penalty[link->irq.
543+
if (link->irq.possible[i] < ACPI_MAX_ISA_IRQS)
544+
acpi_isa_irq_penalty[link->irq.
546545
possible[i]] +=
547546
penalty;
548547
}
549548

550-
} else if (link->irq.active) {
551-
acpi_irq_penalty[link->irq.active] +=
549+
} else if (link->irq.active &&
550+
(link->irq.active < ACPI_MAX_ISA_IRQS)) {
551+
acpi_isa_irq_penalty[link->irq.active] +=
552552
PIRQ_PENALTY_PCI_POSSIBLE;
553553
}
554554
}
@@ -831,7 +831,7 @@ static void acpi_pci_link_remove(struct acpi_device *device)
831831
}
832832

833833
/*
834-
* modify acpi_irq_penalty[] from cmdline
834+
* modify acpi_isa_irq_penalty[] from cmdline
835835
*/
836836
static int __init acpi_irq_penalty_update(char *str, int used)
837837
{
@@ -840,24 +840,24 @@ static int __init acpi_irq_penalty_update(char *str, int used)
840840
for (i = 0; i < 16; i++) {
841841
int retval;
842842
int irq;
843+
int new_penalty;
843844

844845
retval = get_option(&str, &irq);
845846

846847
if (!retval)
847848
break; /* no number found */
848849

849-
if (irq < 0)
850-
continue;
851-
852-
if (irq >= ARRAY_SIZE(acpi_irq_penalty))
850+
/* see if this is a ISA IRQ */
851+
if ((irq < 0) || (irq >= ACPI_MAX_ISA_IRQS))
853852
continue;
854853

855854
if (used)
856-
acpi_irq_penalty[irq] = acpi_irq_get_penalty(irq) +
857-
PIRQ_PENALTY_ISA_USED;
855+
new_penalty = acpi_irq_get_penalty(irq) +
856+
PIRQ_PENALTY_ISA_USED;
858857
else
859-
acpi_irq_penalty[irq] = 0;
858+
new_penalty = 0;
860859

860+
acpi_isa_irq_penalty[irq] = new_penalty;
861861
if (retval != 2) /* no next number */
862862
break;
863863
}
@@ -873,14 +873,14 @@ static int __init acpi_irq_penalty_update(char *str, int used)
873873
*/
874874
void acpi_penalize_isa_irq(int irq, int active)
875875
{
876-
if (irq >= 0 && irq < ARRAY_SIZE(acpi_irq_penalty))
877-
acpi_irq_penalty[irq] = acpi_irq_get_penalty(irq) +
876+
if ((irq >= 0) && (irq < ARRAY_SIZE(acpi_isa_irq_penalty)))
877+
acpi_isa_irq_penalty[irq] = acpi_irq_get_penalty(irq) +
878878
active ? PIRQ_PENALTY_ISA_USED : PIRQ_PENALTY_PCI_USING;
879879
}
880880

881881
bool acpi_isa_irq_available(int irq)
882882
{
883-
return irq >= 0 && (irq >= ARRAY_SIZE(acpi_irq_penalty) ||
883+
return irq >= 0 && (irq >= ARRAY_SIZE(acpi_isa_irq_penalty) ||
884884
acpi_irq_get_penalty(irq) < PIRQ_PENALTY_ISA_ALWAYS);
885885
}
886886

0 commit comments

Comments
 (0)