lkml.org 
[lkml]   [2007]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] trim memory not covered by WB MTRRs
    On Wed, 6 Jun 2007 12:29:23 -0700
    Jesse Barnes <jesse.barnes@intel.com> wrote:

    > --- a/arch/i386/kernel/cpu/mtrr/if.c
    > +++ b/arch/i386/kernel/cpu/mtrr/if.c
    > @@ -12,7 +12,7 @@
    > #include "mtrr.h"
    >
    > /* RED-PEN: this is accessed without any locking */
    > -extern unsigned int *usage_table;
    > +extern unsigned int usage_table[];
    >
    >
    > --- a/arch/i386/kernel/cpu/mtrr/main.c
    > +++ b/arch/i386/kernel/cpu/mtrr/main.c
    > @@ -47,7 +47,7 @@
    >
    > u32 num_var_ranges = 0;
    >
    > -unsigned int *usage_table;
    > +unsigned int usage_table[NUM_VAR_RANGES];
    > static DEFINE_MUTEX(mtrr_mutex);

    didn't it feel all dirty when you had to do that?



    From: Andrew Morton <akpm@linux-foundation.org>

    - Move the declaration into a header file

    - "usage_table" is a dumb name for an mtrr-specific kernel-wide identifier.

    There appear to beseveral other poorly-chosen identifiers in mtrr.

    Cc: Andi Kleen <ak@suse.de>
    Cc: Jesse Barnes <jesse.barnes@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    ---

    arch/i386/kernel/cpu/mtrr/if.c | 8 ++------
    arch/i386/kernel/cpu/mtrr/main.c | 17 +++++++++--------
    arch/i386/kernel/cpu/mtrr/mtrr.h | 2 ++
    3 files changed, 13 insertions(+), 14 deletions(-)

    diff -puN arch/i386/kernel/cpu/mtrr/if.c~i386-x86_64-trim-memory-not-covered-by-wb-mtrrs-fix arch/i386/kernel/cpu/mtrr/if.c
    --- a/arch/i386/kernel/cpu/mtrr/if.c~i386-x86_64-trim-memory-not-covered-by-wb-mtrrs-fix
    +++ a/arch/i386/kernel/cpu/mtrr/if.c
    @@ -11,10 +11,6 @@
    #include <asm/mtrr.h>
    #include "mtrr.h"

    -/* RED-PEN: this is accessed without any locking */
    -extern unsigned int usage_table[];
    -
    -
    #define FILE_FCOUNT(f) (((struct seq_file *)((f)->private_data))->private)

    static const char *const mtrr_strings[MTRR_NUM_TYPES] =
    @@ -396,7 +392,7 @@ static int mtrr_seq_show(struct seq_file
    for (i = 0; i < max; i++) {
    mtrr_if->get(i, &base, &size, &type);
    if (size == 0)
    - usage_table[i] = 0;
    + mtrr_usage_table[i] = 0;
    else {
    if (size < (0x100000 >> PAGE_SHIFT)) {
    /* less than 1MB */
    @@ -410,7 +406,7 @@ static int mtrr_seq_show(struct seq_file
    len += seq_printf(seq,
    "reg%02i: base=0x%05lx000 (%4luMB), size=%4lu%cB: %s, count=%d\n",
    i, base, base >> (20 - PAGE_SHIFT), size, factor,
    - mtrr_attrib_to_str(type), usage_table[i]);
    + mtrr_attrib_to_str(type), mtrr_usage_table[i]);
    }
    }
    return 0;
    diff -puN arch/i386/kernel/cpu/mtrr/main.c~i386-x86_64-trim-memory-not-covered-by-wb-mtrrs-fix arch/i386/kernel/cpu/mtrr/main.c
    --- a/arch/i386/kernel/cpu/mtrr/main.c~i386-x86_64-trim-memory-not-covered-by-wb-mtrrs-fix
    +++ a/arch/i386/kernel/cpu/mtrr/main.c
    @@ -47,7 +47,7 @@

    u32 num_var_ranges = 0;

    -unsigned int usage_table[NUM_VAR_RANGES];
    +unsigned int mtrr_usage_table[NUM_VAR_RANGES];
    static DEFINE_MUTEX(mtrr_mutex);

    u64 size_or_mask, size_and_mask;
    @@ -127,7 +127,7 @@ static void __init init_table(void)

    max = num_var_ranges;
    for (i = 0; i < max; i++)
    - usage_table[i] = 1;
    + mtrr_usage_table[i] = 1;
    }

    struct set_mtrr_data {
    @@ -381,7 +381,7 @@ int mtrr_add_page(unsigned long base, un
    goto out;
    }
    if (increment)
    - ++usage_table[i];
    + ++mtrr_usage_table[i];
    error = i;
    goto out;
    }
    @@ -390,12 +390,13 @@ int mtrr_add_page(unsigned long base, un
    if (i >= 0) {
    set_mtrr(i, base, size, type);
    if (likely(replace < 0))
    - usage_table[i] = 1;
    + mtrr_usage_table[i] = 1;
    else {
    - usage_table[i] = usage_table[replace] + !!increment;
    + mtrr_usage_table[i] = mtrr_usage_table[replace] +
    + !!increment;
    if (unlikely(replace != i)) {
    set_mtrr(replace, 0, 0, 0);
    - usage_table[replace] = 0;
    + mtrr_usage_table[replace] = 0;
    }
    }
    } else
    @@ -525,11 +526,11 @@ int mtrr_del_page(int reg, unsigned long
    printk(KERN_WARNING "mtrr: MTRR %d not used\n", reg);
    goto out;
    }
    - if (usage_table[reg] < 1) {
    + if (mtrr_usage_table[reg] < 1) {
    printk(KERN_WARNING "mtrr: reg: %d has count=0\n", reg);
    goto out;
    }
    - if (--usage_table[reg] < 1)
    + if (--mtrr_usage_table[reg] < 1)
    set_mtrr(reg, 0, 0, 0);
    error = reg;
    out:
    diff -puN arch/i386/kernel/cpu/mtrr/mtrr.h~i386-x86_64-trim-memory-not-covered-by-wb-mtrrs-fix arch/i386/kernel/cpu/mtrr/mtrr.h
    --- a/arch/i386/kernel/cpu/mtrr/mtrr.h~i386-x86_64-trim-memory-not-covered-by-wb-mtrrs-fix
    +++ a/arch/i386/kernel/cpu/mtrr/mtrr.h
    @@ -97,3 +97,5 @@ void mtrr_state_warn(void);
    const char *mtrr_attrib_to_str(int x);
    void mtrr_wrmsr(unsigned, unsigned, unsigned);

    +/* RED-PEN: this is accessed without any locking */
    +extern unsigned int mtrr_usage_table[];
    _
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-06-08 02:23    [W:2.795 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site