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

Commit cb9805ab authored by Andreas Herrmann's avatar Andreas Herrmann Committed by H. Peter Anvin
Browse files

x86, mcheck: Use correct cpumask for shared bank4



This fixes threshold_bank4 support on multi-node processors.

The correct mask to use is llc_shared_map, representing an internal
node on Magny-Cours.

We need to create 2 sets of symlinks for sibling shared banks -- one
set for each internal node, symlinks of each set should target the
first core on same internal node.

Currently only one set is created where all symlinks are targeting
the first core of the entire socket.

Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann3@amd.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
parent a326e948
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -489,12 +489,14 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank)
	int i, err = 0;
	struct threshold_bank *b = NULL;
	char name[32];
	struct cpuinfo_x86 *c = &cpu_data(cpu);


	sprintf(name, "threshold_bank%i", bank);

#ifdef CONFIG_SMP
	if (cpu_data(cpu).cpu_core_id && shared_bank[bank]) {	/* symlink */
		i = cpumask_first(cpu_core_mask(cpu));
		i = cpumask_first(c->llc_shared_map);

		/* first core not up yet */
		if (cpu_data(i).cpu_core_id)
@@ -514,7 +516,7 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank)
		if (err)
			goto out;

		cpumask_copy(b->cpus, cpu_core_mask(cpu));
		cpumask_copy(b->cpus, c->llc_shared_map);
		per_cpu(threshold_banks, cpu)[bank] = b;

		goto out;
@@ -539,7 +541,7 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank)
#ifndef CONFIG_SMP
	cpumask_setall(b->cpus);
#else
	cpumask_copy(b->cpus, cpu_core_mask(cpu));
	cpumask_copy(b->cpus, c->llc_shared_map);
#endif

	per_cpu(threshold_banks, cpu)[bank] = b;