Commit 15f63e30 authored by Michael Ellerman's avatar Michael Ellerman
Browse files

Merge branch 'topic/cpu-smt' into next

Merge SMT changes we are sharing with the tip tree.
parents 7f965394 d1099e22
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -555,6 +555,7 @@ Description: Control Symmetric Multi Threading (SMT)
			 ================ =========================================
			 "on"		  SMT is enabled
			 "off"		  SMT is disabled
			 "<N>"		  SMT is enabled with N threads per core.
			 "forceoff"	  SMT is force disabled. Cannot be changed.
			 "notsupported"   SMT is not supported by the CPU
			 "notimplemented" SMT runtime toggling is not
+2 −2
Original line number Diff line number Diff line
@@ -3853,10 +3853,10 @@
	nosmp		[SMP] Tells an SMP kernel to act as a UP kernel,
			and disable the IO APIC.  legacy for "maxcpus=0".

	nosmt		[KNL,MIPS,S390] Disable symmetric multithreading (SMT).
	nosmt		[KNL,MIPS,PPC,S390] Disable symmetric multithreading (SMT).
			Equivalent to smt=1.

			[KNL,X86] Disable symmetric multithreading (SMT).
			[KNL,X86,PPC] Disable symmetric multithreading (SMT).
			nosmt=force: Force disable SMT, cannot be undone
				     via the sysfs control file.

+3 −0
Original line number Diff line number Diff line
@@ -34,6 +34,9 @@ config ARCH_HAS_SUBPAGE_FAULTS
config HOTPLUG_SMT
	bool

config SMT_NUM_THREADS_DYNAMIC
	bool

# Selected by HOTPLUG_CORE_SYNC_DEAD or HOTPLUG_CORE_SYNC_FULL
config HOTPLUG_CORE_SYNC
	bool
+2 −0
Original line number Diff line number Diff line
@@ -272,6 +272,8 @@ config PPC
	select HAVE_SYSCALL_TRACEPOINTS
	select HAVE_VIRT_CPU_ACCOUNTING
	select HAVE_VIRT_CPU_ACCOUNTING_GEN
	select HOTPLUG_SMT			if HOTPLUG_CPU
	select SMT_NUM_THREADS_DYNAMIC
	select HUGETLB_PAGE_SIZE_VARIABLE	if PPC_BOOK3S_64 && HUGETLB_PAGE
	select IOMMU_HELPER			if PPC64
	select IRQ_DOMAIN
+15 −0
Original line number Diff line number Diff line
@@ -143,5 +143,20 @@ static inline int cpu_to_coregroup_id(int cpu)
#endif
#endif

#ifdef CONFIG_HOTPLUG_SMT
#include <linux/cpu_smt.h>
#include <asm/cputhreads.h>

static inline bool topology_is_primary_thread(unsigned int cpu)
{
	return cpu == cpu_first_thread_sibling(cpu);
}

static inline bool topology_smt_thread_allowed(unsigned int cpu)
{
	return cpu_thread_in_core(cpu) < cpu_smt_num_threads;
}
#endif

#endif /* __KERNEL__ */
#endif	/* _ASM_POWERPC_TOPOLOGY_H */
Loading