lkml.org 
[lkml]   [2010]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/5] x86, cacheinfo: Add cache index disable sysfs attrs only to L3 caches
    Date
    From: Borislav Petkov <borislav.petkov@amd.com>

    The cache_disable_[01] attribute in

    /sys/devices/system/cpu/cpu?/cache/index[0-3]/

    is enabled on all cache levels although only L3 supports it. Add it only
    to the cache level that actually supports it.

    Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
    ---
    arch/x86/kernel/cpu/intel_cacheinfo.c | 35 ++++++++++++++++++++++++--------
    1 files changed, 26 insertions(+), 9 deletions(-)

    diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c
    index 08c91ab..3976ce9 100644
    --- a/arch/x86/kernel/cpu/intel_cacheinfo.c
    +++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
    @@ -814,16 +814,24 @@ static struct _cache_attr cache_disable_0 = __ATTR(cache_disable_0, 0644,
    static struct _cache_attr cache_disable_1 = __ATTR(cache_disable_1, 0644,
    show_cache_disable_1, store_cache_disable_1);

    +#define DEFAULT_SYSFS_CACHE_ATTRS \
    + &type.attr, \
    + &level.attr, \
    + &coherency_line_size.attr, \
    + &physical_line_partition.attr, \
    + &ways_of_associativity.attr, \
    + &number_of_sets.attr, \
    + &size.attr, \
    + &shared_cpu_map.attr, \
    + &shared_cpu_list.attr
    +
    static struct attribute *default_attrs[] = {
    - &type.attr,
    - &level.attr,
    - &coherency_line_size.attr,
    - &physical_line_partition.attr,
    - &ways_of_associativity.attr,
    - &number_of_sets.attr,
    - &size.attr,
    - &shared_cpu_map.attr,
    - &shared_cpu_list.attr,
    + DEFAULT_SYSFS_CACHE_ATTRS,
    + NULL
    +};
    +
    +static struct attribute *default_l3_attrs[] = {
    + DEFAULT_SYSFS_CACHE_ATTRS,
    &cache_disable_0.attr,
    &cache_disable_1.attr,
    NULL
    @@ -916,6 +924,7 @@ static int __cpuinit cache_add_dev(struct sys_device * sys_dev)
    unsigned int cpu = sys_dev->id;
    unsigned long i, j;
    struct _index_kobject *this_object;
    + struct _cpuid4_info *this_leaf;
    int retval;

    retval = cpuid4_cache_sysfs_init(cpu);
    @@ -934,6 +943,14 @@ static int __cpuinit cache_add_dev(struct sys_device * sys_dev)
    this_object = INDEX_KOBJECT_PTR(cpu, i);
    this_object->cpu = cpu;
    this_object->index = i;
    +
    + this_leaf = CPUID4_INFO_IDX(cpu, i);
    +
    + if (this_leaf->can_disable)
    + ktype_cache.default_attrs = default_l3_attrs;
    + else
    + ktype_cache.default_attrs = default_attrs;
    +
    retval = kobject_init_and_add(&(this_object->kobj),
    &ktype_cache,
    per_cpu(ici_cache_kobject, cpu),
    --
    1.6.6


    \
     
     \ /
      Last update: 2010-01-22 16:05    [W:2.557 / U:0.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site