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

Commit 9145bcf6 authored by David S. Miller's avatar David S. Miller
Browse files

[SPARC64]: Set appropriate max_cache_size.

parent 1f4d4a7e
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -1287,6 +1287,40 @@ int setup_profiling_timer(unsigned int multiplier)
	return 0;
}

static void __init smp_tune_scheduling(void)
{
	int instance, node;
	unsigned int def, smallest = ~0U;

	def = ((tlb_type == hypervisor) ?
	       (3 * 1024 * 1024) :
	       (4 * 1024 * 1024));

	instance = 0;
	while (!cpu_find_by_instance(instance, &node, NULL)) {
		unsigned int val;

		val = prom_getintdefault(node, "ecache-size", def);
		if (val < smallest)
			smallest = val;

		instance++;
	}

	/* Any value less than 256K is nonsense.  */
	if (smallest < (256U * 1024U))
		smallest = 256 * 1024;

	max_cache_size = smallest;

	if (smallest < 1U * 1024U * 1024U)
		printk(KERN_INFO "Using max_cache_size of %uKB\n",
		       smallest / 1024U);
	else
		printk(KERN_INFO "Using max_cache_size of %uMB\n",
		       smallest / 1024U / 1024U);
}

/* Constrain the number of cpus to max_cpus.  */
void __init smp_prepare_cpus(unsigned int max_cpus)
{
@@ -1322,6 +1356,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
	}

	smp_store_cpu_info(boot_cpu_id);
	smp_tune_scheduling();
}

/* Set this up early so that things like the scheduler can init