Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
4c60261b
Commit
4c60261b
authored
Mar 22, 2004
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge intel.com:/home/lenb/src/linux-acpi-test-2.6.4
into intel.com:/home/lenb/src/linux-acpi-test-2.6.5
parents
dd2bdb63
e1981aa9
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
113 additions
and
110 deletions
+113
-110
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+2
-4
arch/i386/kernel/acpi/boot.c
arch/i386/kernel/acpi/boot.c
+67
-33
arch/i386/kernel/mpparse.c
arch/i386/kernel/mpparse.c
+0
-63
arch/i386/kernel/setup.c
arch/i386/kernel/setup.c
+13
-0
drivers/acpi/bus.c
drivers/acpi/bus.c
+18
-2
drivers/acpi/pci_irq.c
drivers/acpi/pci_irq.c
+13
-1
include/asm-i386/mpspec.h
include/asm-i386/mpspec.h
+0
-7
No files found.
Documentation/kernel-parameters.txt
View file @
4c60261b
...
@@ -103,10 +103,8 @@ running once the system is up.
...
@@ -103,10 +103,8 @@ running once the system is up.
Format: { s3_bios, s3_mode }
Format: { s3_bios, s3_mode }
See Documentation/power/video.txt
See Documentation/power/video.txt
acpi_pic_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode
acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode
Format: { level | edge }
Format: { level | edge | high | low }
level Force PIC-mode SCI to Level Trigger (default)
edge Force PIC-mode SCI to Edge Trigge
acpi_irq_balance [HW,ACPI] ACPI will balance active IRQs
acpi_irq_balance [HW,ACPI] ACPI will balance active IRQs
default in APIC mode
default in APIC mode
...
...
arch/i386/kernel/acpi/boot.c
View file @
4c60261b
...
@@ -50,6 +50,9 @@ int acpi_lapic;
...
@@ -50,6 +50,9 @@ int acpi_lapic;
int
acpi_ioapic
;
int
acpi_ioapic
;
int
acpi_strict
;
int
acpi_strict
;
acpi_interrupt_flags
acpi_sci_flags
__initdata
;
int
acpi_sci_override_gsi
__initdata
;
#ifdef CONFIG_X86_LOCAL_APIC
#ifdef CONFIG_X86_LOCAL_APIC
static
u64
acpi_lapic_addr
__initdata
=
APIC_DEFAULT_PHYS_BASE
;
static
u64
acpi_lapic_addr
__initdata
=
APIC_DEFAULT_PHYS_BASE
;
#endif
#endif
...
@@ -244,6 +247,34 @@ acpi_parse_ioapic (
...
@@ -244,6 +247,34 @@ acpi_parse_ioapic (
return
0
;
return
0
;
}
}
/*
* Parse Interrupt Source Override for the ACPI SCI
*/
static
void
acpi_parse_sci_int_src_ovr
(
u8
bus_irq
,
u16
polarity
,
u16
trigger
,
u32
global_irq
)
{
if
(
trigger
==
0
)
/* compatible SCI trigger is level */
trigger
=
3
;
if
(
polarity
==
0
)
/* compatible SCI polarity is low */
polarity
=
3
;
/* Command-line over-ride via acpi_sci= */
if
(
acpi_sci_flags
.
trigger
)
trigger
=
acpi_sci_flags
.
trigger
;
if
(
acpi_sci_flags
.
polarity
)
polarity
=
acpi_sci_flags
.
polarity
;
mp_override_legacy_irq
(
bus_irq
,
polarity
,
trigger
,
global_irq
);
/*
* stash over-ride to indicate we've been here
* and for later update of acpi_fadt
*/
acpi_sci_override_gsi
=
global_irq
;
return
;
}
static
int
__init
static
int
__init
acpi_parse_int_src_ovr
(
acpi_parse_int_src_ovr
(
...
@@ -257,6 +288,13 @@ acpi_parse_int_src_ovr (
...
@@ -257,6 +288,13 @@ acpi_parse_int_src_ovr (
acpi_table_print_madt_entry
(
header
);
acpi_table_print_madt_entry
(
header
);
if
(
intsrc
->
bus_irq
==
acpi_fadt
.
sci_int
)
{
acpi_parse_sci_int_src_ovr
(
intsrc
->
bus_irq
,
intsrc
->
flags
.
polarity
,
intsrc
->
flags
.
trigger
,
intsrc
->
global_irq
);
return
0
;
}
mp_override_legacy_irq
(
mp_override_legacy_irq
(
intsrc
->
bus_irq
,
intsrc
->
bus_irq
,
intsrc
->
flags
.
polarity
,
intsrc
->
flags
.
polarity
,
...
@@ -287,14 +325,14 @@ acpi_parse_nmi_src (
...
@@ -287,14 +325,14 @@ acpi_parse_nmi_src (
#endif
/* CONFIG_X86_IO_APIC */
#endif
/* CONFIG_X86_IO_APIC */
#ifdef CONFIG_ACPI_BUS
#ifdef CONFIG_ACPI_BUS
/*
/*
*
"acpi_pic_sci=level" (current default
)
*
acpi_pic_sci_set_trigger(
)
*
programs the PIC-mode SCI to Level Trigger.
*
*
(NO-OP if the BIOS set Level Trigger already)
*
use ELCR to set PIC-mode trigger type for SCI
*
*
* If a PIC-mode SCI is not recognized or gives spurious IRQ7's
* If a PIC-mode SCI is not recognized or gives spurious IRQ7's
* it may require Edge Trigger -- use "acpi_pic_sci=edge"
* it may require Edge Trigger -- use "acpi_sci=edge"
* (NO-OP if the BIOS set Edge Trigger already)
*
*
* Port 0x4d0-4d1 are ECLR1 and ECLR2, the Edge/Level Control Registers
* Port 0x4d0-4d1 are ECLR1 and ECLR2, the Edge/Level Control Registers
* for the 8259 PIC. bit[n] = 1 means irq[n] is Level, otherwise Edge.
* for the 8259 PIC. bit[n] = 1 means irq[n] is Level, otherwise Edge.
...
@@ -302,10 +340,8 @@ acpi_parse_nmi_src (
...
@@ -302,10 +340,8 @@ acpi_parse_nmi_src (
* ECLR2 is IRQ's 8-15 (IRQ 8, 13 must be 0)
* ECLR2 is IRQ's 8-15 (IRQ 8, 13 must be 0)
*/
*/
static
int
__initdata
acpi_pic_sci_trigger
;
/* 0: level, 1: edge */
void
__init
void
__init
acpi_pic_sci_set_trigger
(
unsigned
int
irq
)
acpi_pic_sci_set_trigger
(
unsigned
int
irq
,
u16
trigger
)
{
{
unsigned
char
mask
=
1
<<
(
irq
&
7
);
unsigned
char
mask
=
1
<<
(
irq
&
7
);
unsigned
int
port
=
0x4d0
+
(
irq
>>
3
);
unsigned
int
port
=
0x4d0
+
(
irq
>>
3
);
...
@@ -316,37 +352,21 @@ acpi_pic_sci_set_trigger(unsigned int irq)
...
@@ -316,37 +352,21 @@ acpi_pic_sci_set_trigger(unsigned int irq)
if
(
!
(
val
&
mask
))
{
if
(
!
(
val
&
mask
))
{
printk
(
" Edge"
);
printk
(
" Edge"
);
if
(
!
acpi_pic_sci_trigger
)
{
if
(
trigger
==
3
)
{
printk
(
" set to Level"
);
printk
(
" set to Level"
);
outb
(
val
|
mask
,
port
);
outb
(
val
|
mask
,
port
);
}
}
}
else
{
}
else
{
printk
(
" Level"
);
printk
(
" Level"
);
if
(
acpi_pic_sci_trigger
)
{
if
(
trigger
==
1
)
{
printk
(
" set to Edge"
);
printk
(
" set to Edge"
);
outb
(
val
|
mask
,
port
);
outb
(
val
&
~
mask
,
port
);
}
}
}
}
printk
(
" Trigger.
\n
"
);
printk
(
" Trigger.
\n
"
);
}
}
int
__init
acpi_pic_sci_setup
(
char
*
str
)
{
while
(
str
&&
*
str
)
{
if
(
strncmp
(
str
,
"level"
,
5
)
==
0
)
acpi_pic_sci_trigger
=
0
;
/* force level trigger */
if
(
strncmp
(
str
,
"edge"
,
4
)
==
0
)
acpi_pic_sci_trigger
=
1
;
/* force edge trigger */
str
=
strchr
(
str
,
','
);
if
(
str
)
str
+=
strspn
(
str
,
",
\t
"
);
}
return
1
;
}
__setup
(
"acpi_pic_sci="
,
acpi_pic_sci_setup
);
#endif
/* CONFIG_ACPI_BUS */
#endif
/* CONFIG_ACPI_BUS */
...
@@ -442,8 +462,6 @@ static int __init acpi_parse_hpet(unsigned long phys, unsigned long size)
...
@@ -442,8 +462,6 @@ static int __init acpi_parse_hpet(unsigned long phys, unsigned long size)
#define acpi_parse_hpet NULL
#define acpi_parse_hpet NULL
#endif
#endif
/* detect the location of the ACPI PM Timer */
#ifdef CONFIG_X86_PM_TIMER
extern
u32
pmtmr_ioport
;
extern
u32
pmtmr_ioport
;
static
int
__init
acpi_parse_fadt
(
unsigned
long
phys
,
unsigned
long
size
)
static
int
__init
acpi_parse_fadt
(
unsigned
long
phys
,
unsigned
long
size
)
...
@@ -456,6 +474,13 @@ static int __init acpi_parse_fadt(unsigned long phys, unsigned long size)
...
@@ -456,6 +474,13 @@ static int __init acpi_parse_fadt(unsigned long phys, unsigned long size)
return
0
;
return
0
;
}
}
#ifdef CONFIG_ACPI_INTERPRETER
/* initialize sci_int early for INT_SRC_OVR MADT parsing */
acpi_fadt
.
sci_int
=
fadt
->
sci_int
;
#endif
#ifdef CONFIG_X86_PM_TIMER
/* detect the location of the ACPI PM Timer */
if
(
fadt
->
revision
>=
FADT2_REVISION_ID
)
{
if
(
fadt
->
revision
>=
FADT2_REVISION_ID
)
{
/* FADT rev. 2 */
/* FADT rev. 2 */
if
(
fadt
->
xpm_tmr_blk
.
address_space_id
!=
ACPI_ADR_SPACE_SYSTEM_IO
)
if
(
fadt
->
xpm_tmr_blk
.
address_space_id
!=
ACPI_ADR_SPACE_SYSTEM_IO
)
...
@@ -468,11 +493,9 @@ static int __init acpi_parse_fadt(unsigned long phys, unsigned long size)
...
@@ -468,11 +493,9 @@ static int __init acpi_parse_fadt(unsigned long phys, unsigned long size)
}
}
if
(
pmtmr_ioport
)
if
(
pmtmr_ioport
)
printk
(
KERN_INFO
PREFIX
"PM-Timer IO Port: %#x
\n
"
,
pmtmr_ioport
);
printk
(
KERN_INFO
PREFIX
"PM-Timer IO Port: %#x
\n
"
,
pmtmr_ioport
);
#endif
return
0
;
return
0
;
}
}
#else
#define acpi_parse_fadt NULL
#endif
unsigned
long
__init
unsigned
long
__init
...
@@ -592,6 +615,13 @@ acpi_parse_madt_ioapic_entries(void)
...
@@ -592,6 +615,13 @@ acpi_parse_madt_ioapic_entries(void)
return
count
;
return
count
;
}
}
/*
* If BIOS did not supply an INT_SRC_OVR for the SCI
* pretend we got one so we can set the SCI flags.
*/
if
(
!
acpi_sci_override_gsi
)
acpi_parse_sci_int_src_ovr
(
acpi_fadt
.
sci_int
,
0
,
0
,
acpi_fadt
.
sci_int
);
count
=
acpi_table_parse_madt
(
ACPI_MADT_NMI_SRC
,
acpi_parse_nmi_src
,
NR_IRQ_VECTORS
);
count
=
acpi_table_parse_madt
(
ACPI_MADT_NMI_SRC
,
acpi_parse_nmi_src
,
NR_IRQ_VECTORS
);
if
(
count
<
0
)
{
if
(
count
<
0
)
{
printk
(
KERN_ERR
PREFIX
"Error parsing NMI SRC entry
\n
"
);
printk
(
KERN_ERR
PREFIX
"Error parsing NMI SRC entry
\n
"
);
...
@@ -696,12 +726,16 @@ acpi_boot_init (void)
...
@@ -696,12 +726,16 @@ acpi_boot_init (void)
return
error
;
return
error
;
}
}
/*
* set sci_int and PM timer address
*/
acpi_table_parse
(
ACPI_FADT
,
acpi_parse_fadt
);
/*
/*
* Process the Multiple APIC Description Table (MADT), if present
* Process the Multiple APIC Description Table (MADT), if present
*/
*/
acpi_process_madt
();
acpi_process_madt
();
acpi_table_parse
(
ACPI_FADT
,
acpi_parse_fadt
);
acpi_table_parse
(
ACPI_HPET
,
acpi_parse_hpet
);
acpi_table_parse
(
ACPI_HPET
,
acpi_parse_hpet
);
acpi_table_parse
(
ACPI_MCFG
,
acpi_parse_mcfg
);
acpi_table_parse
(
ACPI_MCFG
,
acpi_parse_mcfg
);
...
...
arch/i386/kernel/mpparse.c
View file @
4c60261b
...
@@ -1036,69 +1036,6 @@ void __init mp_config_acpi_legacy_irqs (void)
...
@@ -1036,69 +1036,6 @@ void __init mp_config_acpi_legacy_irqs (void)
extern
FADT_DESCRIPTOR
acpi_fadt
;
extern
FADT_DESCRIPTOR
acpi_fadt
;
void
__init
mp_config_ioapic_for_sci
(
u32
gsi
)
{
int
ioapic
;
int
ioapic_pin
;
struct
acpi_table_madt
*
madt
;
struct
acpi_table_int_src_ovr
*
entry
=
NULL
;
acpi_interrupt_flags
flags
;
void
*
madt_end
;
acpi_status
status
;
/*
* Ensure that if there is an interrupt source override entry
* for the ACPI SCI, we leave it as is. Unfortunately this involves
* walking the MADT again.
*/
status
=
acpi_get_firmware_table
(
"APIC"
,
1
,
ACPI_LOGICAL_ADDRESSING
,
(
struct
acpi_table_header
**
)
&
madt
);
if
(
ACPI_SUCCESS
(
status
))
{
madt_end
=
(
void
*
)
(
unsigned
long
)
madt
+
madt
->
header
.
length
;
entry
=
(
struct
acpi_table_int_src_ovr
*
)
((
unsigned
long
)
madt
+
sizeof
(
struct
acpi_table_madt
));
while
((
void
*
)
entry
<
madt_end
)
{
if
(
entry
->
header
.
type
==
ACPI_MADT_INT_SRC_OVR
&&
acpi_fadt
.
sci_int
==
entry
->
bus_irq
)
goto
found
;
entry
=
(
struct
acpi_table_int_src_ovr
*
)
((
unsigned
long
)
entry
+
entry
->
header
.
length
);
}
}
/*
* Although the ACPI spec says that the SCI should be level/low
* don't reprogram it unless there is an explicit MADT OVR entry
* instructing us to do so -- otherwise we break Tyan boards which
* have the SCI wired edge/high but no MADT OVR.
*/
return
;
found:
/*
* See the note at the end of ACPI 2.0b section
* 5.2.10.8 for what this is about.
*/
flags
=
entry
->
flags
;
acpi_fadt
.
sci_int
=
entry
->
global_irq
;
gsi
=
entry
->
global_irq
;
ioapic
=
mp_find_ioapic
(
gsi
);
ioapic_pin
=
gsi
-
mp_ioapic_routing
[
ioapic
].
gsi_base
;
/*
* MPS INTI flags:
* trigger: 0=default, 1=edge, 3=level
* polarity: 0=default, 1=high, 3=low
* Per ACPI spec, default for SCI means level/low.
*/
io_apic_set_pci_routing
(
ioapic
,
ioapic_pin
,
gsi
,
(
flags
.
trigger
==
1
?
0
:
1
),
(
flags
.
polarity
==
1
?
0
:
1
));
}
#ifdef CONFIG_ACPI_PCI
#ifdef CONFIG_ACPI_PCI
void
__init
mp_parse_prt
(
void
)
void
__init
mp_parse_prt
(
void
)
...
...
arch/i386/kernel/setup.c
View file @
4c60261b
...
@@ -84,6 +84,7 @@ EXPORT_SYMBOL(acpi_disabled);
...
@@ -84,6 +84,7 @@ EXPORT_SYMBOL(acpi_disabled);
#ifdef CONFIG_ACPI_BOOT
#ifdef CONFIG_ACPI_BOOT
int
__initdata
acpi_force
=
0
;
int
__initdata
acpi_force
=
0
;
extern
acpi_interrupt_flags
acpi_sci_flags
;
#endif
#endif
int
MCA_bus
;
int
MCA_bus
;
...
@@ -601,6 +602,18 @@ static void __init parse_cmdline_early (char ** cmdline_p)
...
@@ -601,6 +602,18 @@ static void __init parse_cmdline_early (char ** cmdline_p)
acpi_noirq_set
();
acpi_noirq_set
();
}
}
else
if
(
!
memcmp
(
from
,
"acpi_sci=edge"
,
13
))
acpi_sci_flags
.
trigger
=
1
;
else
if
(
!
memcmp
(
from
,
"acpi_sci=level"
,
14
))
acpi_sci_flags
.
trigger
=
3
;
else
if
(
!
memcmp
(
from
,
"acpi_sci=high"
,
13
))
acpi_sci_flags
.
polarity
=
1
;
else
if
(
!
memcmp
(
from
,
"acpi_sci=low"
,
12
))
acpi_sci_flags
.
polarity
=
3
;
#ifdef CONFIG_X86_LOCAL_APIC
#ifdef CONFIG_X86_LOCAL_APIC
/* disable IO-APIC */
/* disable IO-APIC */
else
if
(
!
memcmp
(
from
,
"noapic"
,
6
))
else
if
(
!
memcmp
(
from
,
"noapic"
,
6
))
...
...
drivers/acpi/bus.c
View file @
4c60261b
...
@@ -39,7 +39,11 @@
...
@@ -39,7 +39,11 @@
#define _COMPONENT ACPI_BUS_COMPONENT
#define _COMPONENT ACPI_BUS_COMPONENT
ACPI_MODULE_NAME
(
"acpi_bus"
)
ACPI_MODULE_NAME
(
"acpi_bus"
)
#ifdef CONFIG_X86_64
extern
void
__init
acpi_pic_sci_set_trigger
(
unsigned
int
irq
);
extern
void
__init
acpi_pic_sci_set_trigger
(
unsigned
int
irq
);
#elif defined(CONFIG_X86)
extern
void
__init
acpi_pic_sci_set_trigger
(
unsigned
int
irq
,
u16
trigger
);
#endif
FADT_DESCRIPTOR
acpi_fadt
;
FADT_DESCRIPTOR
acpi_fadt
;
struct
acpi_device
*
acpi_root
;
struct
acpi_device
*
acpi_root
;
...
@@ -609,13 +613,25 @@ acpi_bus_init (void)
...
@@ -609,13 +613,25 @@ acpi_bus_init (void)
printk
(
KERN_ERR
PREFIX
"Unable to get the FADT
\n
"
);
printk
(
KERN_ERR
PREFIX
"Unable to get the FADT
\n
"
);
goto
error1
;
goto
error1
;
}
}
#ifdef CONFIG_X86_64
#ifdef CONFIG_X86
/* Ensure the SCI is set to level-triggered, active-low */
/* Ensure the SCI is set to level-triggered, active-low */
if
(
acpi_ioapic
)
if
(
acpi_ioapic
)
mp_config_ioapic_for_sci
(
acpi_fadt
.
sci_int
);
mp_config_ioapic_for_sci
(
acpi_fadt
.
sci_int
);
else
else
acpi_pic_sci_set_trigger
(
acpi_fadt
.
sci_int
);
acpi_pic_sci_set_trigger
(
acpi_fadt
.
sci_int
);
#elif defined(CONFIG_X86)
if
(
!
acpi_ioapic
)
{
extern
acpi_interrupt_flags
acpi_sci_flags
;
/* Set PIC-mode SCI trigger type */
acpi_pic_sci_set_trigger
(
acpi_fadt
.
sci_int
,
acpi_sci_flags
.
trigger
);
}
else
{
extern
int
acpi_sci_override_gsi
;
/*
* now that acpi_fadt is initialized,
* update it with result from INT_SRC_OVR parsing
*/
acpi_fadt
.
sci_int
=
acpi_sci_override_gsi
;
}
#endif
#endif
status
=
acpi_enable_subsystem
(
ACPI_FULL_INITIALIZATION
);
status
=
acpi_enable_subsystem
(
ACPI_FULL_INITIALIZATION
);
...
...
drivers/acpi/pci_irq.c
View file @
4c60261b
...
@@ -273,6 +273,10 @@ acpi_pci_irq_lookup (struct pci_bus *bus, int device, int pin)
...
@@ -273,6 +273,10 @@ acpi_pci_irq_lookup (struct pci_bus *bus, int device, int pin)
return_VALUE
(
entry
->
irq
);
return_VALUE
(
entry
->
irq
);
}
}
/*
* current thinking is that acpi_pci_irq_derive() adds no value
* and should be deleted, so warn if it actually does something.
*/
static
int
static
int
acpi_pci_irq_derive
(
acpi_pci_irq_derive
(
...
@@ -303,7 +307,8 @@ acpi_pci_irq_derive (
...
@@ -303,7 +307,8 @@ acpi_pci_irq_derive (
return_VALUE
(
0
);
return_VALUE
(
0
);
}
}
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Derived IRQ %d
\n
"
,
irq
));
ACPI_DEBUG_PRINT
((
ACPI_DB_WARN
,
"Derive IRQ %d for device %s from %s
\n
"
,
irq
,
pci_name
(
dev
),
pci_name
(
bridge
)));
return_VALUE
(
irq
);
return_VALUE
(
irq
);
}
}
...
@@ -339,6 +344,13 @@ acpi_pci_irq_enable (
...
@@ -339,6 +344,13 @@ acpi_pci_irq_enable (
*/
*/
irq
=
acpi_pci_irq_lookup
(
dev
->
bus
,
PCI_SLOT
(
dev
->
devfn
),
pin
);
irq
=
acpi_pci_irq_lookup
(
dev
->
bus
,
PCI_SLOT
(
dev
->
devfn
),
pin
);
/*
* Check if the device has an IRQ,
* Hotplug devices may get IRQs by scanning
*/
if
(
!
irq
&&
dev
->
irq
)
irq
=
dev
->
irq
;
/*
/*
* If no PRT entry was found, we'll try to derive an IRQ from the
* If no PRT entry was found, we'll try to derive an IRQ from the
* device's parent bridge.
* device's parent bridge.
...
...
include/asm-i386/mpspec.h
View file @
4c60261b
...
@@ -34,13 +34,6 @@ extern void mp_register_ioapic (u8 id, u32 address, u32 gsi_base);
...
@@ -34,13 +34,6 @@ extern void mp_register_ioapic (u8 id, u32 address, u32 gsi_base);
extern
void
mp_override_legacy_irq
(
u8
bus_irq
,
u8
polarity
,
u8
trigger
,
u32
gsi
);
extern
void
mp_override_legacy_irq
(
u8
bus_irq
,
u8
polarity
,
u8
trigger
,
u32
gsi
);
extern
void
mp_config_acpi_legacy_irqs
(
void
);
extern
void
mp_config_acpi_legacy_irqs
(
void
);
extern
void
mp_parse_prt
(
void
);
extern
void
mp_parse_prt
(
void
);
#ifdef CONFIG_X86_IO_APIC
extern
void
mp_config_ioapic_for_sci
(
u32
gsi
);
#else
static
inline
void
mp_config_ioapic_for_sci
(
u32
gsi
)
{
}
#endif
#endif
/*CONFIG_ACPI_BOOT*/
#endif
/*CONFIG_ACPI_BOOT*/
#define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS)
#define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment