|
@@ -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,
|
|
static struct _cache_attr cache_disable_1 = __ATTR(cache_disable_1, 0644,
|
|
show_cache_disable_1, store_cache_disable_1);
|
|
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[] = {
|
|
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_0.attr,
|
|
&cache_disable_1.attr,
|
|
&cache_disable_1.attr,
|
|
NULL
|
|
NULL
|
|
@@ -916,6 +924,7 @@ static int __cpuinit cache_add_dev(struct sys_device * sys_dev)
|
|
unsigned int cpu = sys_dev->id;
|
|
unsigned int cpu = sys_dev->id;
|
|
unsigned long i, j;
|
|
unsigned long i, j;
|
|
struct _index_kobject *this_object;
|
|
struct _index_kobject *this_object;
|
|
|
|
+ struct _cpuid4_info *this_leaf;
|
|
int retval;
|
|
int retval;
|
|
|
|
|
|
retval = cpuid4_cache_sysfs_init(cpu);
|
|
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 = INDEX_KOBJECT_PTR(cpu, i);
|
|
this_object->cpu = cpu;
|
|
this_object->cpu = cpu;
|
|
this_object->index = i;
|
|
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),
|
|
retval = kobject_init_and_add(&(this_object->kobj),
|
|
&ktype_cache,
|
|
&ktype_cache,
|
|
per_cpu(ici_cache_kobject, cpu),
|
|
per_cpu(ici_cache_kobject, cpu),
|