lkml.org 
[lkml]   [2009]   [Feb]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[Patch 5/10] Use wrapper routines around debug registers in processor related functions

    This patch enables the use of wrapper routines to access the debug/breakpoint
    registers.

    Signed-off-by: K.Prasad <prasad@linux.vnet.ibm.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    ---
    arch/x86/kernel/smpboot.c | 3 +++
    arch/x86/power/cpu_32.c | 16 +++-------------
    arch/x86/power/cpu_64.c | 15 +++------------
    3 files changed, 9 insertions(+), 25 deletions(-)

    Index: mmotm/arch/x86/power/cpu_32.c
    ===================================================================
    --- mmotm.orig/arch/x86/power/cpu_32.c
    +++ mmotm/arch/x86/power/cpu_32.c
    @@ -12,6 +12,7 @@
    #include <asm/mtrr.h>
    #include <asm/mce.h>
    #include <asm/xcr.h>
    +#include <asm/debugreg.h>

    static struct saved_context saved_context;

    @@ -47,6 +48,7 @@ static void __save_processor_state(struc
    ctxt->cr2 = read_cr2();
    ctxt->cr3 = read_cr3();
    ctxt->cr4 = read_cr4_safe();
    + disable_debug_registers();
    }

    /* Needed by apm.c */
    @@ -79,19 +81,7 @@ static void fix_processor_context(void)
    load_TR_desc(); /* This does ltr */
    load_LDT(&current->active_mm->context); /* This does lldt */

    - /*
    - * Now maybe reload the debug registers
    - */
    - if (current->thread.debugreg7) {
    - set_debugreg(current->thread.debugreg0, 0);
    - set_debugreg(current->thread.debugreg1, 1);
    - set_debugreg(current->thread.debugreg2, 2);
    - set_debugreg(current->thread.debugreg3, 3);
    - /* no 4 and 5 */
    - set_debugreg(current->thread.debugreg6, 6);
    - set_debugreg(current->thread.debugreg7, 7);
    - }
    -
    + load_debug_registers();
    }

    static void __restore_processor_state(struct saved_context *ctxt)
    Index: mmotm/arch/x86/power/cpu_64.c
    ===================================================================
    --- mmotm.orig/arch/x86/power/cpu_64.c
    +++ mmotm/arch/x86/power/cpu_64.c
    @@ -15,6 +15,7 @@
    #include <asm/pgtable.h>
    #include <asm/mtrr.h>
    #include <asm/xcr.h>
    +#include <asm/debugreg.h>

    static void fix_processor_context(void);

    @@ -70,6 +71,7 @@ static void __save_processor_state(struc
    ctxt->cr3 = read_cr3();
    ctxt->cr4 = read_cr4();
    ctxt->cr8 = read_cr8();
    + disable_debug_registers();
    }

    void save_processor_state(void)
    @@ -158,16 +160,5 @@ static void fix_processor_context(void)
    load_TR_desc(); /* This does ltr */
    load_LDT(&current->active_mm->context); /* This does lldt */

    - /*
    - * Now maybe reload the debug registers
    - */
    - if (current->thread.debugreg7){
    - loaddebug(&current->thread, 0);
    - loaddebug(&current->thread, 1);
    - loaddebug(&current->thread, 2);
    - loaddebug(&current->thread, 3);
    - /* no 4 and 5 */
    - loaddebug(&current->thread, 6);
    - loaddebug(&current->thread, 7);
    - }
    + load_debug_registers();
    }
    Index: mmotm/arch/x86/kernel/smpboot.c
    ===================================================================
    --- mmotm.orig/arch/x86/kernel/smpboot.c
    +++ mmotm/arch/x86/kernel/smpboot.c
    @@ -63,6 +63,7 @@
    #include <asm/genapic.h>
    #include <asm/setup.h>
    #include <asm/uv/uv.h>
    +#include <asm/debugreg.h>
    #include <linux/mc146818rtc.h>

    #include <mach_apic.h>
    @@ -337,6 +338,7 @@ notrace static void __cpuinit start_seco
    setup_secondary_clock();

    wmb();
    + load_debug_registers();
    cpu_idle();
    }

    @@ -1315,6 +1317,7 @@ void cpu_disable_common(void)
    remove_cpu_from_maps(cpu);
    unlock_vector_lock();
    fixup_irqs();
    + disable_debug_registers();
    }

    int native_cpu_disable(void)

    \
     
     \ /
      Last update: 2009-02-10 13:45    [W:0.028 / U:0.076 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site