lkml.org 
[lkml]   [2008]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH -tip] x86: apic LVTT - use APIC_DIVISOR on 64bit mode
    We use APIC_TDR_DIV_16 while setting APIC_TDCR (divisor)
    it happened this moment is hidden from __setup_APIC_LVTT
    caller. So we better increment caller 'clocks' value to
    not change current behaviour and use APIC_DIVISOR
    (as already done in 32bit version).

    The main benefit - unified procedure code for 32/64bit modes.

    Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
    CC: "Maciej W. Rozycki" <macro@linux-mips.org>
    ---

    Please review carefully. Any comments are welcome.
    I'm _not_ 100% sure if this patch is safe.

    Index: linux-2.6.git/arch/x86/kernel/apic_64.c
    ===================================================================
    --- linux-2.6.git.orig/arch/x86/kernel/apic_64.c 2008-07-08 22:52:24.000000000 +0400
    +++ linux-2.6.git/arch/x86/kernel/apic_64.c 2008-07-08 23:00:24.000000000 +0400
    @@ -165,6 +165,9 @@ int lapic_get_maxlvt(void)
    return maxlvt;
    }

    +/* Clock divisor is set to 16 */
    +#define APIC_DIVISOR 16
    +
    /*
    * This function sets up the local APIC timer, with a timeout of
    * 'clocks' APIC bus clock. During calibration we actually call
    @@ -197,7 +200,7 @@ static void __setup_APIC_LVTT(unsigned i
    | APIC_TDR_DIV_16);

    if (!oneshot)
    - apic_write(APIC_TMICT, clocks);
    + apic_write(APIC_TMICT, clocks/APIC_DIVISOR);
    }

    /*
    @@ -329,7 +332,7 @@ static void __init calibrate_APIC_clock(
    *
    * No interrupt enable !
    */
    - __setup_APIC_LVTT(250000000, 0, 0);
    + __setup_APIC_LVTT(4000000000, 0, 0);

    apic_start = apic_read(APIC_TMCCT);
    #ifdef CONFIG_X86_PM_TIMER

    \
     
     \ /
      Last update: 2008-07-09 21:05    [W:3.156 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site