Print this page
10246 fix apic_allocate_irq() indentation
*** 20,30 ****
*/
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2016 Nexenta Systems, Inc.
* Copyright (c) 2017 by Delphix. All rights reserved.
! * Copyright (c) 2018, Joyent, Inc.
*/
/*
* Copyright (c) 2010, Intel Corporation.
* All rights reserved.
*/
--- 20,30 ----
*/
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2016 Nexenta Systems, Inc.
* Copyright (c) 2017 by Delphix. All rights reserved.
! * Copyright (c) 2019, Joyent, Inc.
*/
/*
* Copyright (c) 2010, Intel Corporation.
* All rights reserved.
*/
*** 1602,1612 ****
int
apic_allocate_irq(int irq)
{
int freeirq, i;
! if ((freeirq = apic_find_free_irq(irq, (APIC_RESV_IRQ - 1))) == -1)
if ((freeirq = apic_find_free_irq(APIC_FIRST_FREE_IRQ,
(irq - 1))) == -1) {
/*
* if BIOS really defines every single irq in the mps
* table, then don't worry about conflicting with
--- 1602,1612 ----
int
apic_allocate_irq(int irq)
{
int freeirq, i;
! if ((freeirq = apic_find_free_irq(irq, (APIC_RESV_IRQ - 1))) == -1) {
if ((freeirq = apic_find_free_irq(APIC_FIRST_FREE_IRQ,
(irq - 1))) == -1) {
/*
* if BIOS really defines every single irq in the mps
* table, then don't worry about conflicting with
*** 1618,1633 ****
--- 1618,1636 ----
FREE_INDEX) {
freeirq = i;
break;
}
}
+
if (freeirq == -1) {
/* This shouldn't happen, but just in case */
cmn_err(CE_WARN, "%s: NO available IRQ", psm_name);
return (-1);
}
}
+ }
+
if (apic_irq_table[freeirq] == NULL) {
apic_irq_table[freeirq] =
kmem_zalloc(sizeof (apic_irq_t), KM_NOSLEEP);
if (apic_irq_table[freeirq] == NULL) {
cmn_err(CE_WARN, "%s: NO memory to allocate IRQ",