mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-18 18:43:59 +08:00
x86: PIC, L-APIC and I/O APIC debug information
Dump all the PIC, local APIC and I/O APIC information at the fs_initcall() level, which is after ACPI (if used) has initialised PCI information, making the point of invocation consistent across MP-table and ACPI platforms. Remove explicit calls to print_IO_APIC() from elsewhere. Make the interface of all the functions involved consistent between 32-bit and 64-bit versions and make them all static by default by the means of a New-and-Improved(TM) __apicdebuginit() macro. Note that like print_IO_APIC() all these only output anything if "apic=debug" has been passed to the kernel through the command line. Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org> Cc: Chuck Ebbert <cebbert@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
338b9bb3ad
commit
32f71aff77
@ -50,6 +50,8 @@
|
||||
#include <mach_apic.h>
|
||||
#include <mach_apicdef.h>
|
||||
|
||||
#define __apicdebuginit(type) static type __init
|
||||
|
||||
int (*ioapic_renumber_irq)(int ioapic, int irq);
|
||||
atomic_t irq_mis_count;
|
||||
|
||||
@ -1345,7 +1347,8 @@ static void __init setup_timer_IRQ0_pin(unsigned int apic, unsigned int pin,
|
||||
ioapic_write_entry(apic, pin, entry);
|
||||
}
|
||||
|
||||
void __init print_IO_APIC(void)
|
||||
|
||||
__apicdebuginit(void) print_IO_APIC(void)
|
||||
{
|
||||
int apic, i;
|
||||
union IO_APIC_reg_00 reg_00;
|
||||
@ -1460,9 +1463,7 @@ void __init print_IO_APIC(void)
|
||||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
static void print_APIC_bitfield(int base)
|
||||
__apicdebuginit(void) print_APIC_bitfield(int base)
|
||||
{
|
||||
unsigned int v;
|
||||
int i, j;
|
||||
@ -1483,7 +1484,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;
|
||||
|
||||
@ -1567,12 +1568,12 @@ void /*__init*/ print_local_APIC(void *dummy)
|
||||
printk("\n");
|
||||
}
|
||||
|
||||
void print_all_local_APICs(void)
|
||||
__apicdebuginit(void) print_all_local_APICs(void)
|
||||
{
|
||||
on_each_cpu(print_local_APIC, NULL, 1);
|
||||
}
|
||||
|
||||
void /*__init*/ print_PIC(void)
|
||||
__apicdebuginit(void) print_PIC(void)
|
||||
{
|
||||
unsigned int v;
|
||||
unsigned long flags;
|
||||
@ -1604,7 +1605,17 @@ void /*__init*/ print_PIC(void)
|
||||
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)
|
||||
{
|
||||
@ -2333,8 +2344,6 @@ void __init setup_IO_APIC(void)
|
||||
setup_IO_APIC_irqs();
|
||||
init_IO_APIC_traps();
|
||||
check_timer();
|
||||
if (!acpi_ioapic)
|
||||
print_IO_APIC();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -53,6 +53,8 @@
|
||||
#include <mach_ipi.h>
|
||||
#include <mach_apic.h>
|
||||
|
||||
#define __apicdebuginit(type) static type __init
|
||||
|
||||
struct irq_cfg {
|
||||
cpumask_t domain;
|
||||
cpumask_t old_domain;
|
||||
@ -87,8 +89,6 @@ int first_system_vector = 0xfe;
|
||||
|
||||
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 */
|
||||
|
||||
static int no_timer_check;
|
||||
@ -965,7 +965,8 @@ static void __init setup_timer_IRQ0_pin(unsigned int apic, unsigned int pin,
|
||||
ioapic_write_entry(apic, pin, entry);
|
||||
}
|
||||
|
||||
void __apicdebuginit print_IO_APIC(void)
|
||||
|
||||
__apicdebuginit(void) print_IO_APIC(void)
|
||||
{
|
||||
int apic, i;
|
||||
union IO_APIC_reg_00 reg_00;
|
||||
@ -1059,9 +1060,7 @@ void __apicdebuginit print_IO_APIC(void)
|
||||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
static __apicdebuginit void print_APIC_bitfield (int base)
|
||||
__apicdebuginit(void) print_APIC_bitfield(int base)
|
||||
{
|
||||
unsigned int v;
|
||||
int i, j;
|
||||
@ -1082,7 +1081,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;
|
||||
|
||||
@ -1159,12 +1158,12 @@ void __apicdebuginit print_local_APIC(void * dummy)
|
||||
printk("\n");
|
||||
}
|
||||
|
||||
void print_all_local_APICs (void)
|
||||
__apicdebuginit(void) print_all_local_APICs(void)
|
||||
{
|
||||
on_each_cpu(print_local_APIC, NULL, 1);
|
||||
}
|
||||
|
||||
void __apicdebuginit print_PIC(void)
|
||||
__apicdebuginit(void) print_PIC(void)
|
||||
{
|
||||
unsigned int v;
|
||||
unsigned long flags;
|
||||
@ -1196,7 +1195,17 @@ void __apicdebuginit print_PIC(void)
|
||||
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)
|
||||
{
|
||||
@ -1849,8 +1858,6 @@ void __init setup_IO_APIC(void)
|
||||
setup_IO_APIC_irqs();
|
||||
init_IO_APIC_traps();
|
||||
check_timer();
|
||||
if (!acpi_ioapic)
|
||||
print_IO_APIC();
|
||||
}
|
||||
|
||||
struct sysfs_ioapic_data {
|
||||
|
@ -250,10 +250,5 @@ int __init pci_acpi_init(void)
|
||||
acpi_pci_irq_enable(dev);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
if (acpi_ioapic)
|
||||
print_IO_APIC();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -64,7 +64,6 @@ extern unsigned long io_apic_irqs;
|
||||
extern void init_VISWS_APIC_irqs(void);
|
||||
extern void setup_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 void setup_ioapic_dest(void);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user