mirror of https://github.com/torvalds/linux.git
Fix a CPU topology code regression that caused the mishandling
of certain boot command line options, and re-enable CONFIG_PTDUMP on i386 that was mistakenly turned off in the Kconfig. Signed-off-by: Ingo Molnar <mingo@kernel.org> -----BEGIN PGP SIGNATURE----- iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmjWnKoRHG1pbmdvQGtl cm5lbC5vcmcACgkQEnMQ0APhK1glpBAAwBCQL3tRDGDgitQJxB84dZZ69wT9Zl40 P/fjdeLg0CD3g0EOBLWeU52nkEWVXETPONv0iRNsiaxhEiQP6ALJXn4G1/8opADX Z1HyFKa5ISVn+kAtEZ7DHFW8iSRPw3BsI3jnYcUH9NDlb1Yp4tYqkimXO21+tkvF 48POy6yn5tONCUUA2sRyiL8EoWJzS0IJle8ENg0fxniXAaoE3/xgf8UUYUTknIuH HwNUA2rKME7HwpmT0mcmMvGpKLzNCEkatN9PoH/voCtbyK5Au7moEE70OvNbf/B+ W7UibqOe7oSuT6ZPv7BfIpY6QMl1k/fc5LetWZc8oUfxUPb0ZZq4/g1HFi7NNW8p a1D1M3dmECqqxYzUV5NYQdm7gI4jxjPGGEhxOohQpdcDdHao5ciZPzsBfqGRNQuC /RkMDPRcxgLArA7B6cI9aWunc5eyE6zDMkT2s07K6R/JlAiM4Z0StumnDS3nLVEG 5DT2gjICGTB1qOp+5XIp3O2q8tON2ou3AG/PybC8GlQ/XMwbLQ2FFY78j4uk144T 43TXs/H0ELcletr9Cc6gTGXnKmLYCyOymb8+qhgnlzaXxZWfJvkSG/CvKFMZ4lJB KhufsTT79UyRuLDALn9VhGCLXLCp91fv4zYSvVvifdAt/+dYB0tpDYNt5B0EudyR oPvxKOcoeLs= =qhdq -----END PGP SIGNATURE----- Merge tag 'x86-urgent-2025-09-26' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull x86 fixes from Ingo Molnar: "Fix a CPU topology code regression that caused the mishandling of certain boot command line options, and re-enable CONFIG_PTDUMP on i386 that was mistakenly turned off in the Kconfig" * tag 'x86-urgent-2025-09-26' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/topology: Implement topology_is_core_online() to address SMT regression x86/Kconfig: Reenable PTDUMP on i386
This commit is contained in:
commit
d4df17482e
|
|
@ -26,7 +26,6 @@ config X86_64
|
||||||
depends on 64BIT
|
depends on 64BIT
|
||||||
# Options that are inherently 64-bit kernel only:
|
# Options that are inherently 64-bit kernel only:
|
||||||
select ARCH_HAS_GIGANTIC_PAGE
|
select ARCH_HAS_GIGANTIC_PAGE
|
||||||
select ARCH_HAS_PTDUMP
|
|
||||||
select ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS
|
select ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS
|
||||||
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
|
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
|
||||||
select ARCH_SUPPORTS_PER_VMA_LOCK
|
select ARCH_SUPPORTS_PER_VMA_LOCK
|
||||||
|
|
@ -99,6 +98,7 @@ config X86
|
||||||
select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
|
select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
|
||||||
select ARCH_HAS_PMEM_API if X86_64
|
select ARCH_HAS_PMEM_API if X86_64
|
||||||
select ARCH_HAS_PREEMPT_LAZY
|
select ARCH_HAS_PREEMPT_LAZY
|
||||||
|
select ARCH_HAS_PTDUMP
|
||||||
select ARCH_HAS_PTE_SPECIAL
|
select ARCH_HAS_PTE_SPECIAL
|
||||||
select ARCH_HAS_HW_PTE_YOUNG
|
select ARCH_HAS_HW_PTE_YOUNG
|
||||||
select ARCH_HAS_NONLEAF_PMD_YOUNG if PGTABLE_LEVELS > 2
|
select ARCH_HAS_NONLEAF_PMD_YOUNG if PGTABLE_LEVELS > 2
|
||||||
|
|
|
||||||
|
|
@ -231,6 +231,16 @@ static inline bool topology_is_primary_thread(unsigned int cpu)
|
||||||
}
|
}
|
||||||
#define topology_is_primary_thread topology_is_primary_thread
|
#define topology_is_primary_thread topology_is_primary_thread
|
||||||
|
|
||||||
|
int topology_get_primary_thread(unsigned int cpu);
|
||||||
|
|
||||||
|
static inline bool topology_is_core_online(unsigned int cpu)
|
||||||
|
{
|
||||||
|
int pcpu = topology_get_primary_thread(cpu);
|
||||||
|
|
||||||
|
return pcpu >= 0 ? cpu_online(pcpu) : false;
|
||||||
|
}
|
||||||
|
#define topology_is_core_online topology_is_core_online
|
||||||
|
|
||||||
#else /* CONFIG_SMP */
|
#else /* CONFIG_SMP */
|
||||||
static inline int topology_phys_to_logical_pkg(unsigned int pkg) { return 0; }
|
static inline int topology_phys_to_logical_pkg(unsigned int pkg) { return 0; }
|
||||||
static inline int topology_max_smt_threads(void) { return 1; }
|
static inline int topology_max_smt_threads(void) { return 1; }
|
||||||
|
|
|
||||||
|
|
@ -372,6 +372,19 @@ unsigned int topology_unit_count(u32 apicid, enum x86_topology_domains which_uni
|
||||||
return topo_unit_count(lvlid, at_level, apic_maps[which_units].map);
|
return topo_unit_count(lvlid, at_level, apic_maps[which_units].map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
int topology_get_primary_thread(unsigned int cpu)
|
||||||
|
{
|
||||||
|
u32 apic_id = cpuid_to_apicid[cpu];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the core domain level APIC id, which is the primary thread
|
||||||
|
* and return the CPU number assigned to it.
|
||||||
|
*/
|
||||||
|
return topo_lookup_cpuid(topo_apicid(apic_id, TOPO_CORE_DOMAIN));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ACPI_HOTPLUG_CPU
|
#ifdef CONFIG_ACPI_HOTPLUG_CPU
|
||||||
/**
|
/**
|
||||||
* topology_hotplug_apic - Handle a physical hotplugged APIC after boot
|
* topology_hotplug_apic - Handle a physical hotplugged APIC after boot
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue