Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb0f330e authored by Mike Travis's avatar Mike Travis Committed by Ingo Molnar
Browse files

x86: modify show_shared_cpu_map in intel_cacheinfo



  * Removed kmalloc (or local array) in show_shared_cpu_map().

  * Added show_shared_cpu_list() function.

Signed-off-by: default avatarMike Travis <travis@sgi.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 9f0e8d04
Loading
Loading
Loading
Loading
+23 −7
Original line number Original line Diff line number Diff line
@@ -591,20 +591,34 @@ static ssize_t show_size(struct _cpuid4_info *this_leaf, char *buf)
	return sprintf (buf, "%luK\n", this_leaf->size / 1024);
	return sprintf (buf, "%luK\n", this_leaf->size / 1024);
}
}


static ssize_t show_shared_cpu_map(struct _cpuid4_info *this_leaf, char *buf)
static ssize_t show_shared_cpu_map_func(struct _cpuid4_info *this_leaf,
					int type, char *buf)
{
{
	ptrdiff_t len = PTR_ALIGN(buf + PAGE_SIZE - 1, PAGE_SIZE) - buf;
	int n = 0;
	int n = 0;
	int len = cpumask_scnprintf_len(nr_cpu_ids);
	char *mask_str = kmalloc(len, GFP_KERNEL);


	if (mask_str) {
	if (len > 1) {
		cpumask_scnprintf(mask_str, len, this_leaf->shared_cpu_map);
		cpumask_t *mask = &this_leaf->shared_cpu_map;
		n = sprintf(buf, "%s\n", mask_str);

		kfree(mask_str);
		n = type?
			cpulist_scnprintf(buf, len-2, *mask):
			cpumask_scnprintf(buf, len-2, *mask);
		buf[n++] = '\n';
		buf[n] = '\0';
	}
	}
	return n;
	return n;
}
}


static inline ssize_t show_shared_cpu_map(struct _cpuid4_info *leaf, char *buf)
{
	return show_shared_cpu_map_func(leaf, 0, buf);
}

static inline ssize_t show_shared_cpu_list(struct _cpuid4_info *leaf, char *buf)
{
	return show_shared_cpu_map_func(leaf, 1, buf);
}

static ssize_t show_type(struct _cpuid4_info *this_leaf, char *buf) {
static ssize_t show_type(struct _cpuid4_info *this_leaf, char *buf) {
	switch(this_leaf->eax.split.type) {
	switch(this_leaf->eax.split.type) {
	    case CACHE_TYPE_DATA:
	    case CACHE_TYPE_DATA:
@@ -640,6 +654,7 @@ define_one_ro(ways_of_associativity);
define_one_ro(number_of_sets);
define_one_ro(number_of_sets);
define_one_ro(size);
define_one_ro(size);
define_one_ro(shared_cpu_map);
define_one_ro(shared_cpu_map);
define_one_ro(shared_cpu_list);


static struct attribute * default_attrs[] = {
static struct attribute * default_attrs[] = {
	&type.attr,
	&type.attr,
@@ -650,6 +665,7 @@ static struct attribute * default_attrs[] = {
	&number_of_sets.attr,
	&number_of_sets.attr,
	&size.attr,
	&size.attr,
	&shared_cpu_map.attr,
	&shared_cpu_map.attr,
	&shared_cpu_list.attr,
	NULL
	NULL
};
};