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
Kirill Smelkov
linux
Commits
881b3747
Commit
881b3747
authored
Aug 14, 2008
by
Ingo Molnar
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'x86/apic' into x86/core
parents
c83d1280
d4c63ec0
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
61 additions
and
35 deletions
+61
-35
arch/x86/kernel/apic_32.c
arch/x86/kernel/apic_32.c
+12
-4
arch/x86/kernel/apic_64.c
arch/x86/kernel/apic_64.c
+11
-3
arch/x86/kernel/io_apic_32.c
arch/x86/kernel/io_apic_32.c
+19
-10
arch/x86/kernel/io_apic_64.c
arch/x86/kernel/io_apic_64.c
+19
-12
arch/x86/pci/acpi.c
arch/x86/pci/acpi.c
+0
-5
include/asm-x86/hw_irq.h
include/asm-x86/hw_irq.h
+0
-1
No files found.
arch/x86/kernel/apic_32.c
View file @
881b3747
...
@@ -205,11 +205,15 @@ EXPORT_SYMBOL_GPL(apic_ops);
...
@@ -205,11 +205,15 @@ EXPORT_SYMBOL_GPL(apic_ops);
*/
*/
void
__cpuinit
enable_NMI_through_LVT0
(
void
)
void
__cpuinit
enable_NMI_through_LVT0
(
void
)
{
{
unsigned
int
v
=
APIC_DM_NMI
;
unsigned
int
v
;
/* unmask and set to NMI */
v
=
APIC_DM_NMI
;
/* Level triggered for 82489DX */
/* Level triggered for 82489DX
(32bit mode)
*/
if
(
!
lapic_is_integrated
())
if
(
!
lapic_is_integrated
())
v
|=
APIC_LVT_LEVEL_TRIGGER
;
v
|=
APIC_LVT_LEVEL_TRIGGER
;
apic_write
(
APIC_LVT0
,
v
);
apic_write
(
APIC_LVT0
,
v
);
}
}
...
@@ -226,9 +230,13 @@ int get_physical_broadcast(void)
...
@@ -226,9 +230,13 @@ int get_physical_broadcast(void)
*/
*/
int
lapic_get_maxlvt
(
void
)
int
lapic_get_maxlvt
(
void
)
{
{
unsigned
int
v
=
apic_read
(
APIC_LVR
)
;
unsigned
int
v
;
/* 82489DXs do not report # of LVT entries. */
v
=
apic_read
(
APIC_LVR
);
/*
* - we always have APIC integrated on 64bit mode
* - 82489DXs do not report # of LVT entries
*/
return
APIC_INTEGRATED
(
GET_APIC_VERSION
(
v
))
?
GET_APIC_MAXLVT
(
v
)
:
2
;
return
APIC_INTEGRATED
(
GET_APIC_VERSION
(
v
))
?
GET_APIC_MAXLVT
(
v
)
:
2
;
}
}
...
...
arch/x86/kernel/apic_64.c
View file @
881b3747
...
@@ -220,6 +220,11 @@ void __cpuinit enable_NMI_through_LVT0(void)
...
@@ -220,6 +220,11 @@ void __cpuinit enable_NMI_through_LVT0(void)
/* unmask and set to NMI */
/* unmask and set to NMI */
v
=
APIC_DM_NMI
;
v
=
APIC_DM_NMI
;
/* Level triggered for 82489DX (32bit mode) */
if
(
!
lapic_is_integrated
())
v
|=
APIC_LVT_LEVEL_TRIGGER
;
apic_write
(
APIC_LVT0
,
v
);
apic_write
(
APIC_LVT0
,
v
);
}
}
...
@@ -228,11 +233,14 @@ void __cpuinit enable_NMI_through_LVT0(void)
...
@@ -228,11 +233,14 @@ void __cpuinit enable_NMI_through_LVT0(void)
*/
*/
int
lapic_get_maxlvt
(
void
)
int
lapic_get_maxlvt
(
void
)
{
{
unsigned
int
v
,
maxlvt
;
unsigned
int
v
;
v
=
apic_read
(
APIC_LVR
);
v
=
apic_read
(
APIC_LVR
);
maxlvt
=
GET_APIC_MAXLVT
(
v
);
/*
return
maxlvt
;
* - we always have APIC integrated on 64bit mode
* - 82489DXs do not report # of LVT entries
*/
return
APIC_INTEGRATED
(
GET_APIC_VERSION
(
v
))
?
GET_APIC_MAXLVT
(
v
)
:
2
;
}
}
/*
/*
...
...
arch/x86/kernel/io_apic_32.c
View file @
881b3747
...
@@ -51,6 +51,8 @@
...
@@ -51,6 +51,8 @@
#include <mach_apic.h>
#include <mach_apic.h>
#include <mach_apicdef.h>
#include <mach_apicdef.h>
#define __apicdebuginit(type) static type __init
int
(
*
ioapic_renumber_irq
)(
int
ioapic
,
int
irq
);
int
(
*
ioapic_renumber_irq
)(
int
ioapic
,
int
irq
);
atomic_t
irq_mis_count
;
atomic_t
irq_mis_count
;
...
@@ -1342,7 +1344,8 @@ static void __init setup_timer_IRQ0_pin(unsigned int apic, unsigned int pin,
...
@@ -1342,7 +1344,8 @@ static void __init setup_timer_IRQ0_pin(unsigned int apic, unsigned int pin,
ioapic_write_entry
(
apic
,
pin
,
entry
);
ioapic_write_entry
(
apic
,
pin
,
entry
);
}
}
void
__init
print_IO_APIC
(
void
)
__apicdebuginit
(
void
)
print_IO_APIC
(
void
)
{
{
int
apic
,
i
;
int
apic
,
i
;
union
IO_APIC_reg_00
reg_00
;
union
IO_APIC_reg_00
reg_00
;
...
@@ -1457,9 +1460,7 @@ void __init print_IO_APIC(void)
...
@@ -1457,9 +1460,7 @@ void __init print_IO_APIC(void)
return
;
return
;
}
}
#if 0
__apicdebuginit
(
void
)
print_APIC_bitfield
(
int
base
)
static void print_APIC_bitfield(int base)
{
{
unsigned
int
v
;
unsigned
int
v
;
int
i
,
j
;
int
i
,
j
;
...
@@ -1480,7 +1481,7 @@ static void print_APIC_bitfield(int base)
...
@@ -1480,7 +1481,7 @@ static void print_APIC_bitfield(int base)
}
}
}
}
void /*__init*/
print_local_APIC(void *dummy)
__apicdebuginit
(
void
)
print_local_APIC
(
void
*
dummy
)
{
{
unsigned
int
v
,
ver
,
maxlvt
;
unsigned
int
v
,
ver
,
maxlvt
;
u64
icr
;
u64
icr
;
...
@@ -1564,12 +1565,12 @@ void /*__init*/ print_local_APIC(void *dummy)
...
@@ -1564,12 +1565,12 @@ void /*__init*/ print_local_APIC(void *dummy)
printk
(
"
\n
"
);
printk
(
"
\n
"
);
}
}
void
print_all_local_APICs(void)
__apicdebuginit
(
void
)
print_all_local_APICs
(
void
)
{
{
on_each_cpu
(
print_local_APIC
,
NULL
,
1
);
on_each_cpu
(
print_local_APIC
,
NULL
,
1
);
}
}
void /*__init*/
print_PIC(void)
__apicdebuginit
(
void
)
print_PIC
(
void
)
{
{
unsigned
int
v
;
unsigned
int
v
;
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -1601,7 +1602,17 @@ void /*__init*/ print_PIC(void)
...
@@ -1601,7 +1602,17 @@ void /*__init*/ print_PIC(void)
printk
(
KERN_DEBUG
"... PIC ELCR: %04x
\n
"
,
v
);
printk
(
KERN_DEBUG
"... PIC ELCR: %04x
\n
"
,
v
);
}
}
#endif /* 0 */
__apicdebuginit
(
int
)
print_all_ICs
(
void
)
{
print_PIC
();
print_all_local_APICs
();
print_IO_APIC
();
return
0
;
}
fs_initcall
(
print_all_ICs
);
static
void
__init
enable_IO_APIC
(
void
)
static
void
__init
enable_IO_APIC
(
void
)
{
{
...
@@ -2327,8 +2338,6 @@ void __init setup_IO_APIC(void)
...
@@ -2327,8 +2338,6 @@ void __init setup_IO_APIC(void)
setup_IO_APIC_irqs
();
setup_IO_APIC_irqs
();
init_IO_APIC_traps
();
init_IO_APIC_traps
();
check_timer
();
check_timer
();
if
(
!
acpi_ioapic
)
print_IO_APIC
();
}
}
/*
/*
...
...
arch/x86/kernel/io_apic_64.c
View file @
881b3747
...
@@ -55,6 +55,8 @@
...
@@ -55,6 +55,8 @@
#include <mach_ipi.h>
#include <mach_ipi.h>
#include <mach_apic.h>
#include <mach_apic.h>
#define __apicdebuginit(type) static type __init
struct
irq_cfg
{
struct
irq_cfg
{
cpumask_t
domain
;
cpumask_t
domain
;
cpumask_t
old_domain
;
cpumask_t
old_domain
;
...
@@ -89,8 +91,6 @@ int first_system_vector = 0xfe;
...
@@ -89,8 +91,6 @@ int first_system_vector = 0xfe;
char
system_vectors
[
NR_VECTORS
]
=
{
[
0
...
NR_VECTORS
-
1
]
=
SYS_VECTOR_FREE
};
char
system_vectors
[
NR_VECTORS
]
=
{
[
0
...
NR_VECTORS
-
1
]
=
SYS_VECTOR_FREE
};
#define __apicdebuginit __init
int
sis_apic_bug
;
/* not actually supported, dummy for compile */
int
sis_apic_bug
;
/* not actually supported, dummy for compile */
static
int
no_timer_check
;
static
int
no_timer_check
;
...
@@ -1117,7 +1117,8 @@ static void __init setup_timer_IRQ0_pin(unsigned int apic, unsigned int pin,
...
@@ -1117,7 +1117,8 @@ static void __init setup_timer_IRQ0_pin(unsigned int apic, unsigned int pin,
ioapic_write_entry
(
apic
,
pin
,
entry
);
ioapic_write_entry
(
apic
,
pin
,
entry
);
}
}
void
__apicdebuginit
print_IO_APIC
(
void
)
__apicdebuginit
(
void
)
print_IO_APIC
(
void
)
{
{
int
apic
,
i
;
int
apic
,
i
;
union
IO_APIC_reg_00
reg_00
;
union
IO_APIC_reg_00
reg_00
;
...
@@ -1211,9 +1212,7 @@ void __apicdebuginit print_IO_APIC(void)
...
@@ -1211,9 +1212,7 @@ void __apicdebuginit print_IO_APIC(void)
return
;
return
;
}
}
#if 0
__apicdebuginit
(
void
)
print_APIC_bitfield
(
int
base
)
static __apicdebuginit void print_APIC_bitfield (int base)
{
{
unsigned
int
v
;
unsigned
int
v
;
int
i
,
j
;
int
i
,
j
;
...
@@ -1234,7 +1233,7 @@ static __apicdebuginit void print_APIC_bitfield (int base)
...
@@ -1234,7 +1233,7 @@ static __apicdebuginit void print_APIC_bitfield (int base)
}
}
}
}
void __apicdebuginit print_local_APIC(void *
dummy)
__apicdebuginit
(
void
)
print_local_APIC
(
void
*
dummy
)
{
{
unsigned
int
v
,
ver
,
maxlvt
;
unsigned
int
v
,
ver
,
maxlvt
;
unsigned
long
icr
;
unsigned
long
icr
;
...
@@ -1311,12 +1310,12 @@ void __apicdebuginit print_local_APIC(void * dummy)
...
@@ -1311,12 +1310,12 @@ void __apicdebuginit print_local_APIC(void * dummy)
printk
(
"
\n
"
);
printk
(
"
\n
"
);
}
}
void print_all_local_APICs
(void)
__apicdebuginit
(
void
)
print_all_local_APICs
(
void
)
{
{
on_each_cpu
(
print_local_APIC
,
NULL
,
1
);
on_each_cpu
(
print_local_APIC
,
NULL
,
1
);
}
}
void __apicdebuginit
print_PIC(void)
__apicdebuginit
(
void
)
print_PIC
(
void
)
{
{
unsigned
int
v
;
unsigned
int
v
;
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -1348,7 +1347,17 @@ void __apicdebuginit print_PIC(void)
...
@@ -1348,7 +1347,17 @@ void __apicdebuginit print_PIC(void)
printk
(
KERN_DEBUG
"... PIC ELCR: %04x
\n
"
,
v
);
printk
(
KERN_DEBUG
"... PIC ELCR: %04x
\n
"
,
v
);
}
}
#endif /* 0 */
__apicdebuginit
(
int
)
print_all_ICs
(
void
)
{
print_PIC
();
print_all_local_APICs
();
print_IO_APIC
();
return
0
;
}
fs_initcall
(
print_all_ICs
);
void
__init
enable_IO_APIC
(
void
)
void
__init
enable_IO_APIC
(
void
)
{
{
...
@@ -2172,8 +2181,6 @@ void __init setup_IO_APIC(void)
...
@@ -2172,8 +2181,6 @@ void __init setup_IO_APIC(void)
setup_IO_APIC_irqs
();
setup_IO_APIC_irqs
();
init_IO_APIC_traps
();
init_IO_APIC_traps
();
check_timer
();
check_timer
();
if
(
!
acpi_ioapic
)
print_IO_APIC
();
}
}
struct
sysfs_ioapic_data
{
struct
sysfs_ioapic_data
{
...
...
arch/x86/pci/acpi.c
View file @
881b3747
...
@@ -250,10 +250,5 @@ int __init pci_acpi_init(void)
...
@@ -250,10 +250,5 @@ int __init pci_acpi_init(void)
acpi_pci_irq_enable
(
dev
);
acpi_pci_irq_enable
(
dev
);
}
}
#ifdef CONFIG_X86_IO_APIC
if
(
acpi_ioapic
)
print_IO_APIC
();
#endif
return
0
;
return
0
;
}
}
include/asm-x86/hw_irq.h
View file @
881b3747
...
@@ -64,7 +64,6 @@ extern unsigned long io_apic_irqs;
...
@@ -64,7 +64,6 @@ extern unsigned long io_apic_irqs;
extern
void
init_VISWS_APIC_irqs
(
void
);
extern
void
init_VISWS_APIC_irqs
(
void
);
extern
void
setup_IO_APIC
(
void
);
extern
void
setup_IO_APIC
(
void
);
extern
void
disable_IO_APIC
(
void
);
extern
void
disable_IO_APIC
(
void
);
extern
void
print_IO_APIC
(
void
);
extern
int
IO_APIC_get_PCI_irq_vector
(
int
bus
,
int
slot
,
int
fn
);
extern
int
IO_APIC_get_PCI_irq_vector
(
int
bus
,
int
slot
,
int
fn
);
extern
void
setup_ioapic_dest
(
void
);
extern
void
setup_ioapic_dest
(
void
);
...
...
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