Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes and cleanups from Thomas Gleixner: "This set of updates contains: - Robustification for the logical package managment. Cures the AMD and virtualization issues. - Put the correct start_cpu() return address on the stack of the idle task. - Fixups for the fallout of the nodeid <-> cpuid persistent mapping modifciations - Move the x86/MPX specific mm_struct member to the arch specific mm_context where it belongs - Cleanups for C89 struct initializers and useless function arguments" * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/floppy: Use designated initializers x86/mpx: Move bd_addr to mm_context_t x86/mm: Drop unused argument 'removed' from sync_global_pgds() ACPI/NUMA: Do not map pxm to node when NUMA is turned off x86/acpi: Use proper macro for invalid node x86/smpboot: Prevent false positive out of bounds cpumask access warning x86/boot/64: Push correct start_cpu() return address x86/boot/64: Use 'push' instead of 'call' in start_cpu() x86/smpboot: Make logical package management more robust
Este cometimento está contido em:
@@ -979,29 +979,21 @@ static void x86_init_cache_qos(struct cpuinfo_x86 *c)
|
||||
}
|
||||
|
||||
/*
|
||||
* The physical to logical package id mapping is initialized from the
|
||||
* acpi/mptables information. Make sure that CPUID actually agrees with
|
||||
* that.
|
||||
* Validate that ACPI/mptables have the same information about the
|
||||
* effective APIC id and update the package map.
|
||||
*/
|
||||
static void sanitize_package_id(struct cpuinfo_x86 *c)
|
||||
static void validate_apic_and_package_id(struct cpuinfo_x86 *c)
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
unsigned int pkg, apicid, cpu = smp_processor_id();
|
||||
unsigned int apicid, cpu = smp_processor_id();
|
||||
|
||||
apicid = apic->cpu_present_to_apicid(cpu);
|
||||
pkg = apicid >> boot_cpu_data.x86_coreid_bits;
|
||||
|
||||
if (apicid != c->initial_apicid) {
|
||||
pr_err(FW_BUG "CPU%u: APIC id mismatch. Firmware: %x CPUID: %x\n",
|
||||
if (apicid != c->apicid) {
|
||||
pr_err(FW_BUG "CPU%u: APIC id mismatch. Firmware: %x APIC: %x\n",
|
||||
cpu, apicid, c->initial_apicid);
|
||||
c->initial_apicid = apicid;
|
||||
}
|
||||
if (pkg != c->phys_proc_id) {
|
||||
pr_err(FW_BUG "CPU%u: Using firmware package id %u instead of %u\n",
|
||||
cpu, pkg, c->phys_proc_id);
|
||||
c->phys_proc_id = pkg;
|
||||
}
|
||||
c->logical_proc_id = topology_phys_to_logical_pkg(pkg);
|
||||
BUG_ON(topology_update_package_map(c->phys_proc_id, cpu));
|
||||
#else
|
||||
c->logical_proc_id = 0;
|
||||
#endif
|
||||
@@ -1132,7 +1124,6 @@ static void identify_cpu(struct cpuinfo_x86 *c)
|
||||
#ifdef CONFIG_NUMA
|
||||
numa_add_cpu(smp_processor_id());
|
||||
#endif
|
||||
sanitize_package_id(c);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1187,6 +1178,7 @@ void identify_secondary_cpu(struct cpuinfo_x86 *c)
|
||||
enable_sep_cpu();
|
||||
#endif
|
||||
mtrr_ap_init();
|
||||
validate_apic_and_package_id(c);
|
||||
}
|
||||
|
||||
static __init int setup_noclflush(char *arg)
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador