[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] A few APIC cleanups. I hate '#if 0' code.
ChangeSet 1.1356, 2005/04/21 15:19:31+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx A few APIC cleanups. I hate '#if 0' code. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> apic.c | 120 ++++++++------------------------------------------------------ smpboot.c | 3 - 2 files changed, 16 insertions(+), 107 deletions(-) diff -Nru a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c --- a/xen/arch/x86/apic.c 2005-04-21 21:04:43 -04:00 +++ b/xen/arch/x86/apic.c 2005-04-21 21:04:43 -04:00 @@ -83,16 +83,6 @@ apic_write_around(APIC_LVTPC, v | APIC_LVT_MASKED); } -#if 0 -/* lets not touch this if we didn't frob it */ -#ifdef CONFIG_X86_MCE_P4THERMAL - if (maxlvt >= 5) { - v = apic_read(APIC_LVTTHMR); - apic_write_around(APIC_LVTTHMR, v | APIC_LVT_MASKED); - } -#endif -#endif - /* * Clean APIC state for other OSs: */ @@ -104,13 +94,6 @@ if (maxlvt >= 4) apic_write_around(APIC_LVTPC, APIC_LVT_MASKED); -#if 0 -#ifdef CONFIG_X86_MCE_P4THERMAL - if (maxlvt >= 5) - apic_write_around(APIC_LVTTHMR, APIC_LVT_MASKED); -#endif -#endif - v = GET_APIC_VERSION(apic_read(APIC_LVR)); if (APIC_INTEGRATED(v)) { /* !82489DX */ if (maxlvt > 3) /* Due to Pentium errata 3AP and 11AP. */ @@ -134,9 +117,6 @@ outb(0x70, 0x22); outb(0x01, 0x23); } -#if 0 - enable_apic_mode(); -#endif } void disconnect_bsp_APIC(void) @@ -406,9 +386,6 @@ if (nmi_watchdog == NMI_LOCAL_APIC) setup_apic_nmi_watchdog(); -#if 0 - apic_pm_activate(); -#endif } /* @@ -421,12 +398,6 @@ u32 h, l, features; extern void get_cpu_vendor(struct cpuinfo_x86*); -#if 0 - /* Disabled by kernel option? */ - if (enable_local_apic < 0) - return -1; -#endif - /* Workaround for us being called before identify_cpu(). */ get_cpu_vendor(&boot_cpu_data); @@ -447,17 +418,6 @@ if (!cpu_has_apic) { /* - * Over-ride BIOS and try to enable the local - * APIC only if "lapic" specified. - */ -#if 0 - if (enable_local_apic <= 0) { - printk("Local APIC disabled by BIOS -- " - "you can enable it with \"lapic\"\n"); - return -1; - } -#endif - /* * Some BIOSes disable the local APIC in the * APIC_BASE MSR. This can only be done in * software for Intel P6 or later and AMD K7 @@ -472,15 +432,14 @@ enabled_via_apicbase = 1; } } - /* - * The APIC feature bit should now be enabled - * in `cpuid' - */ + + /* The APIC feature bit should now be enabled in `cpuid' */ features = cpuid_edx(1); if (!(features & (1 << X86_FEATURE_APIC))) { printk("Could not enable APIC!\n"); return -1; } + set_bit(X86_FEATURE_APIC, boot_cpu_data.x86_capability); mp_lapic_addr = APIC_DEFAULT_PHYS_BASE; @@ -489,15 +448,11 @@ if (l & MSR_IA32_APICBASE_ENABLE) mp_lapic_addr = l & MSR_IA32_APICBASE_BASE; - if (nmi_watchdog != NMI_NONE) - nmi_watchdog = NMI_LOCAL_APIC; + if (nmi_watchdog != NMI_NONE) + nmi_watchdog = NMI_LOCAL_APIC; printk("Found and enabled local APIC!\n"); -#if 0 - apic_pm_activate(); -#endif - return 0; no_apic: @@ -616,11 +571,10 @@ delta = curr_count-prev_count; /* - * This limit for delta seems arbitrary, but it isn't, it's - * slightly above the level of error a buggy Mercury/Neptune - * chipset timer can cause. + * This limit for delta seems arbitrary, but it isn't, it's slightly + * above the level of error a buggy Mercury/Neptune chipset timer can + * cause. */ - } while (delta < 300); } @@ -649,21 +603,12 @@ unsigned int lvtt_value, tmp_value, ver; ver = GET_APIC_VERSION(apic_read(APIC_LVR)); - lvtt_value = APIC_LVT_TIMER_PERIODIC | LOCAL_TIMER_VECTOR; + /* NB. Xen uses local APIC timer in one-shot mode. */ + lvtt_value = /*APIC_LVT_TIMER_PERIODIC |*/ LOCAL_TIMER_VECTOR; if (!APIC_INTEGRATED(ver)) lvtt_value |= SET_APIC_TIMER_BASE(APIC_TIMER_BASE_DIV); apic_write_around(APIC_LVTT, lvtt_value); -#if 0 - /* - * Divide PICLK by 16 - */ - tmp_value = apic_read(APIC_TDCR); - apic_write_around(APIC_TDCR, (tmp_value - & ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE)) - | APIC_TDR_DIV_16); -#endif - tmp_value = apic_read(APIC_TDCR); apic_write_around(APIC_TDCR, (tmp_value | APIC_TDR_DIV_1)); @@ -704,9 +649,6 @@ int i; const int LOOPS = HZ/10; -#if 0 - apic_printk(APIC_VERBOSE, "calibrating APIC timer ...\n"); -#endif printk("Calibrating APIC timer for CPU%d...\n", smp_processor_id()); /* @@ -721,14 +663,13 @@ * for a wraparound to start exact measurement: * (the current tick might have been already half done) */ - wait_timer_tick(); /* * We wrapped around just now. Let's start: */ if (cpu_has_tsc) - rdtscll(t1); + rdtscll(t1); tt1 = apic_read(APIC_TMCCT); /* @@ -739,14 +680,13 @@ tt2 = apic_read(APIC_TMCCT); if (cpu_has_tsc) - rdtscll(t2); + rdtscll(t2); /* * The APIC bus clock counter is 32 bits only, it * might have overflown, but note that we use signed * longs, thus no extra care needed. - * - * underflown to be exact, as the timer counts down ;) + * [underflown to be exact, as the timer counts down ;)] */ result = (tt1-tt2)*APIC_DIVISOR/LOOPS; @@ -861,7 +801,6 @@ raise_softirq(AC_TIMER_SOFTIRQ); } - /* * This interrupt should _never_ happen with our APIC/SMP architecture */ @@ -869,9 +808,6 @@ { unsigned long v; -#if 0 - irq_enter(); -#endif /* * Check if this really is a spurious interrupt and ACK it * if it is a vectored one. Just in case... @@ -884,9 +820,6 @@ /* see sw-dev-man vol 3, chapter 7.4.13.5 */ printk("spurious APIC interrupt on CPU#%d, should never happen.\n", smp_processor_id()); -#if 0 - irq_exit(); -#endif } /* @@ -897,9 +830,6 @@ { unsigned long v, v1; -#if 0 - irq_enter(); -#endif /* First tickle the hardware, only then report what went on. -- REW */ v = apic_read(APIC_ESR); apic_write(APIC_ESR, 0); @@ -917,11 +847,8 @@ 6: Received illegal vector 7: Illegal register address */ - Dprintk("APIC error on CPU%d: %02lx(%02lx)\n", - smp_processor_id(), v , v1); -#if 0 - irq_exit(); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |