mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 01:41:39 +00:00
x86/apic: Remove verify_local_APIC()
__verify_local_APIC() is detritus from the early APIC days. Its return value isn't used anywhere and the information it prints when debug is enabled is already part of APIC initialization messages printed to syslog. Off with it! Signed-off-by: Bandan Das <bsd@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/jpgy4mcsxsq.fsf@redhat.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
e42391cd04
commit
4399c03c67
3 changed files with 0 additions and 65 deletions
|
@ -204,7 +204,6 @@ extern void clear_local_APIC(void);
|
|||
extern void disconnect_bsp_APIC(int virt_wire_setup);
|
||||
extern void disable_local_APIC(void);
|
||||
extern void lapic_shutdown(void);
|
||||
extern int verify_local_APIC(void);
|
||||
extern void sync_Arb_IDs(void);
|
||||
extern void init_bsp_APIC(void);
|
||||
extern void setup_local_APIC(void);
|
||||
|
|
|
@ -1084,67 +1084,6 @@ void lapic_shutdown(void)
|
|||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/*
|
||||
* This is to verify that we're looking at a real local APIC.
|
||||
* Check these against your board if the CPUs aren't getting
|
||||
* started for no apparent reason.
|
||||
*/
|
||||
int __init verify_local_APIC(void)
|
||||
{
|
||||
unsigned int reg0, reg1;
|
||||
|
||||
/*
|
||||
* The version register is read-only in a real APIC.
|
||||
*/
|
||||
reg0 = apic_read(APIC_LVR);
|
||||
apic_printk(APIC_DEBUG, "Getting VERSION: %x\n", reg0);
|
||||
apic_write(APIC_LVR, reg0 ^ APIC_LVR_MASK);
|
||||
reg1 = apic_read(APIC_LVR);
|
||||
apic_printk(APIC_DEBUG, "Getting VERSION: %x\n", reg1);
|
||||
|
||||
/*
|
||||
* The two version reads above should print the same
|
||||
* numbers. If the second one is different, then we
|
||||
* poke at a non-APIC.
|
||||
*/
|
||||
if (reg1 != reg0)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Check if the version looks reasonably.
|
||||
*/
|
||||
reg1 = GET_APIC_VERSION(reg0);
|
||||
if (reg1 == 0x00 || reg1 == 0xff)
|
||||
return 0;
|
||||
reg1 = lapic_get_maxlvt();
|
||||
if (reg1 < 0x02 || reg1 == 0xff)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The ID register is read/write in a real APIC.
|
||||
*/
|
||||
reg0 = apic_read(APIC_ID);
|
||||
apic_printk(APIC_DEBUG, "Getting ID: %x\n", reg0);
|
||||
apic_write(APIC_ID, reg0 ^ apic->apic_id_mask);
|
||||
reg1 = apic_read(APIC_ID);
|
||||
apic_printk(APIC_DEBUG, "Getting ID: %x\n", reg1);
|
||||
apic_write(APIC_ID, reg0);
|
||||
if (reg1 != (reg0 ^ apic->apic_id_mask))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The next two are just to see if we have sane values.
|
||||
* They're only really relevant if we're in Virtual Wire
|
||||
* compatibility mode, but most boxes are anymore.
|
||||
*/
|
||||
reg0 = apic_read(APIC_LVT0);
|
||||
apic_printk(APIC_DEBUG, "Getting LVT0: %x\n", reg0);
|
||||
reg1 = apic_read(APIC_LVT1);
|
||||
apic_printk(APIC_DEBUG, "Getting LVT1: %x\n", reg1);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* sync_Arb_IDs - synchronize APIC bus arbitration IDs
|
||||
*/
|
||||
|
@ -2283,7 +2222,6 @@ int __init APIC_init_uniprocessor(void)
|
|||
disable_ioapic_support();
|
||||
|
||||
default_setup_apic_routing();
|
||||
verify_local_APIC();
|
||||
apic_bsp_setup(true);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1086,8 +1086,6 @@ static int __init smp_sanity_check(unsigned max_cpus)
|
|||
return SMP_NO_APIC;
|
||||
}
|
||||
|
||||
verify_local_APIC();
|
||||
|
||||
/*
|
||||
* If SMP should be disabled, then really disable it!
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue