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

Commit 685f7e4f authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull powerpc updates from Michael Ellerman:
 "Notable changes:

   - A large series to rewrite our SLB miss handling, replacing a lot of
     fairly complicated asm with much fewer lines of C.

   - Following on from that, we now maintain a cache of SLB entries for
     each process and preload them on context switch. Leading to a 27%
     speedup for our context switch benchmark on Power9.

   - Improvements to our handling of SLB multi-hit errors. We now print
     more debug information when they occur, and try to continue running
     by flushing the SLB and reloading, rather than treating them as
     fatal.

   - Enable THP migration on 64-bit Book3S machines (eg. Power7/8/9).

   - Add support for physical memory up to 2PB in the linear mapping on
     64-bit Book3S. We only support up to 512TB as regular system
     memory, otherwise the percpu allocator runs out of vmalloc space.

   - Add stack protector support for 32 and 64-bit, with a per-task
     canary.

   - Add support for PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP.

   - Support recognising "big cores" on Power9, where two SMT4 cores are
     presented to us as a single SMT8 core.

   - A large series to cleanup some of our ioremap handling and PTE
     flags.

   - Add a driver for the PAPR SCM (storage class memory) interface,
     allowing guests to operate on SCM devices (acked by Dan).

   - Changes to our ftrace code to handle very large kernels, where we
     need to use a trampoline to get to ftrace_caller().

  And many other smaller enhancements and cleanups.

  Thanks to: Alan Modra, Alistair Popple, Aneesh Kumar K.V, Anton
  Blanchard, Aravinda Prasad, Bartlomiej Zolnierkiewicz, Benjamin
  Herrenschmidt, Breno Leitao, Cédric Le Goater, Christophe Leroy,
  Christophe Lombard, Dan Carpenter, Daniel Axtens, Finn Thain, Gautham
  R. Shenoy, Gustavo Romero, Haren Myneni, Hari Bathini, Jia Hongtao,
  Joel Stanley, John Allen, Laurent Dufour, Madhavan Srinivasan, Mahesh
  Salgaonkar, Mark Hairgrove, Masahiro Yamada, Michael Bringmann,
  Michael Neuling, Michal Suchanek, Murilo Opsfelder Araujo, Nathan
  Fontenot, Naveen N. Rao, Nicholas Piggin, Nick Desaulniers, Oliver
  O'Halloran, Paul Mackerras, Petr Vorel, Rashmica Gupta, Reza Arbab,
  Rob Herring, Sam Bobroff, Samuel Mendoza-Jonas, Scott Wood, Stan
  Johnson, Stephen Rothwell, Stewart Smith, Suraj Jitindar Singh, Tyrel
  Datwyler, Vaibhav Jain, Vasant Hegde, YueHaibing, zhong jiang"

* tag 'powerpc-4.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (221 commits)
  Revert "selftests/powerpc: Fix out-of-tree build errors"
  powerpc/msi: Fix compile error on mpc83xx
  powerpc: Fix stack protector crashes on CPU hotplug
  powerpc/traps: restore recoverability of machine_check interrupts
  powerpc/64/module: REL32 relocation range check
  powerpc/64s/radix: Fix radix__flush_tlb_collapsed_pmd double flushing pmd
  selftests/powerpc: Add a test of wild bctr
  powerpc/mm: Fix page table dump to work on Radix
  powerpc/mm/radix: Display if mappings are exec or not
  powerpc/mm/radix: Simplify split mapping logic
  powerpc/mm/radix: Remove the retry in the split mapping logic
  powerpc/mm/radix: Fix small page at boundary when splitting
  powerpc/mm/radix: Fix overuse of small pages in splitting logic
  powerpc/mm/radix: Fix off-by-one in split mapping logic
  powerpc/ftrace: Handle large kernel configs
  powerpc/mm: Fix WARN_ON with THP NUMA migration
  selftests/powerpc: Fix out-of-tree build errors
  powerpc/time: no steal_time when CONFIG_PPC_SPLPAR is not selected
  powerpc/time: Only set CONFIG_ARCH_HAS_SCALED_CPUTIME on PPC64
  powerpc/time: isolate scaled cputime accounting in dedicated functions.
  ...
parents c7a2c49e 58cfbac2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2428,7 +2428,7 @@
			seconds.  Use this parameter to check at some
			other rate.  0 disables periodic checking.

	memtest=	[KNL,X86,ARM] Enable memtest
	memtest=	[KNL,X86,ARM,PPC] Enable memtest
			Format: <integer>
			default : 0 <disable>
			Specifies the number of memtest passes to be
+10 −65
Original line number Diff line number Diff line
@@ -37,35 +37,6 @@
static void (*rom_reset)(void);

#ifdef CONFIG_ADB_CUDA
static time64_t cuda_read_time(void)
{
	struct adb_request req;
	time64_t time;

	if (cuda_request(&req, NULL, 2, CUDA_PACKET, CUDA_GET_TIME) < 0)
		return 0;
	while (!req.complete)
		cuda_poll();

	time = (u32)((req.reply[3] << 24) | (req.reply[4] << 16) |
		     (req.reply[5] << 8) | req.reply[6]);

	return time - RTC_OFFSET;
}

static void cuda_write_time(time64_t time)
{
	struct adb_request req;
	u32 data = lower_32_bits(time + RTC_OFFSET);

	if (cuda_request(&req, NULL, 6, CUDA_PACKET, CUDA_SET_TIME,
			 (data >> 24) & 0xFF, (data >> 16) & 0xFF,
			 (data >> 8) & 0xFF, data & 0xFF) < 0)
		return;
	while (!req.complete)
		cuda_poll();
}

static __u8 cuda_read_pram(int offset)
{
	struct adb_request req;
@@ -91,33 +62,6 @@ static void cuda_write_pram(int offset, __u8 data)
#endif /* CONFIG_ADB_CUDA */

#ifdef CONFIG_ADB_PMU
static time64_t pmu_read_time(void)
{
	struct adb_request req;
	time64_t time;

	if (pmu_request(&req, NULL, 1, PMU_READ_RTC) < 0)
		return 0;
	pmu_wait_complete(&req);

	time = (u32)((req.reply[0] << 24) | (req.reply[1] << 16) |
		     (req.reply[2] << 8) | req.reply[3]);

	return time - RTC_OFFSET;
}

static void pmu_write_time(time64_t time)
{
	struct adb_request req;
	u32 data = lower_32_bits(time + RTC_OFFSET);

	if (pmu_request(&req, NULL, 5, PMU_SET_RTC,
			(data >> 24) & 0xFF, (data >> 16) & 0xFF,
			(data >> 8) & 0xFF, data & 0xFF) < 0)
		return;
	pmu_wait_complete(&req);
}

static __u8 pmu_read_pram(int offset)
{
	struct adb_request req;
@@ -295,13 +239,17 @@ static time64_t via_read_time(void)
 * is basically any machine with Mac II-style ADB.
 */

static void via_write_time(time64_t time)
static void via_set_rtc_time(struct rtc_time *tm)
{
	union {
		__u8 cdata[4];
		__u32 idata;
	} data;
	__u8 temp;
	time64_t time;

	time = mktime64(tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
	                tm->tm_hour, tm->tm_min, tm->tm_sec);

	/* Clear the write protect bit */

@@ -641,12 +589,12 @@ int mac_hwclk(int op, struct rtc_time *t)
#ifdef CONFIG_ADB_CUDA
		case MAC_ADB_EGRET:
		case MAC_ADB_CUDA:
			now = cuda_read_time();
			now = cuda_get_time();
			break;
#endif
#ifdef CONFIG_ADB_PMU
		case MAC_ADB_PB2:
			now = pmu_read_time();
			now = pmu_get_time();
			break;
#endif
		default:
@@ -665,24 +613,21 @@ int mac_hwclk(int op, struct rtc_time *t)
		         __func__, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,
		         t->tm_hour, t->tm_min, t->tm_sec);

		now = mktime64(t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,
			       t->tm_hour, t->tm_min, t->tm_sec);

		switch (macintosh_config->adb_type) {
		case MAC_ADB_IOP:
		case MAC_ADB_II:
		case MAC_ADB_PB1:
			via_write_time(now);
			via_set_rtc_time(t);
			break;
#ifdef CONFIG_ADB_CUDA
		case MAC_ADB_EGRET:
		case MAC_ADB_CUDA:
			cuda_write_time(now);
			cuda_set_rtc_time(t);
			break;
#endif
#ifdef CONFIG_ADB_PMU
		case MAC_ADB_PB2:
			pmu_write_time(now);
			pmu_set_rtc_time(t);
			break;
#endif
		default:

arch/powerpc/Kbuild

0 → 100644
+16 −0
Original line number Diff line number Diff line
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror

obj-y += kernel/
obj-y += mm/
obj-y += lib/
obj-y += sysdev/
obj-y += platforms/
obj-y += math-emu/
obj-y += crypto/
obj-y += net/

obj-$(CONFIG_XMON) += xmon/
obj-$(CONFIG_KVM)  += kvm/

obj-$(CONFIG_PERF_EVENTS) += perf/
obj-$(CONFIG_KEXEC_FILE)  += purgatory/
+4 −15
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ config PPC
	select ARCH_HAS_PMEM_API                if PPC64
	select ARCH_HAS_PTE_SPECIAL
	select ARCH_HAS_MEMBARRIER_CALLBACKS
	select ARCH_HAS_SCALED_CPUTIME		if VIRT_CPU_ACCOUNTING_NATIVE
	select ARCH_HAS_SCALED_CPUTIME		if VIRT_CPU_ACCOUNTING_NATIVE && PPC64
	select ARCH_HAS_SG_CHAIN
	select ARCH_HAS_STRICT_KERNEL_RWX	if ((PPC_BOOK3S_64 || PPC32) && !RELOCATABLE && !HIBERNATION)
	select ARCH_HAS_TICK_BROADCAST		if GENERIC_CLOCKEVENTS_BROADCAST
@@ -180,6 +180,8 @@ config PPC
	select HAVE_ARCH_SECCOMP_FILTER
	select HAVE_ARCH_TRACEHOOK
	select HAVE_CBPF_JIT			if !PPC64
	select HAVE_STACKPROTECTOR		if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13)
	select HAVE_STACKPROTECTOR		if PPC32 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r2)
	select HAVE_CONTEXT_TRACKING		if PPC64
	select HAVE_DEBUG_KMEMLEAK
	select HAVE_DEBUG_STACKOVERFLOW
@@ -188,6 +190,7 @@ config PPC
	select HAVE_EBPF_JIT			if PPC64
	select HAVE_EFFICIENT_UNALIGNED_ACCESS	if !(CPU_LITTLE_ENDIAN && POWER7_CPU)
	select HAVE_FTRACE_MCOUNT_RECORD
	select HAVE_FUNCTION_ERROR_INJECTION
	select HAVE_FUNCTION_GRAPH_TRACER
	select HAVE_FUNCTION_TRACER
	select HAVE_GCC_PLUGINS			if GCC_VERSION >= 50200   # plugin support on gcc <= 5.1 is buggy on PPC
@@ -285,12 +288,10 @@ config ARCH_MAY_HAVE_PC_FDC

config PPC_UDBG_16550
	bool
	default n

config GENERIC_TBSYNC
	bool
	default y if PPC32 && SMP
	default n

config AUDIT_ARCH
	bool
@@ -309,13 +310,11 @@ config EPAPR_BOOT
	bool
	help
	  Used to allow a board to specify it wants an ePAPR compliant wrapper.
	default n

config DEFAULT_UIMAGE
	bool
	help
	  Used to allow a board to specify it wants a uImage built by default
	default n

config ARCH_HIBERNATION_POSSIBLE
	bool
@@ -329,11 +328,9 @@ config ARCH_SUSPEND_POSSIBLE

config PPC_DCR_NATIVE
	bool
	default n

config PPC_DCR_MMIO
	bool
	default n

config PPC_DCR
	bool
@@ -344,7 +341,6 @@ config PPC_OF_PLATFORM_PCI
	bool
	depends on PCI
	depends on PPC64 # not supported on 32 bits yet
	default n

config ARCH_SUPPORTS_DEBUG_PAGEALLOC
	depends on PPC32 || PPC_BOOK3S_64
@@ -447,14 +443,12 @@ config PPC_TRANSACTIONAL_MEM
       depends on SMP
       select ALTIVEC
       select VSX
       default n
       ---help---
         Support user-mode Transactional Memory on POWERPC.

config LD_HEAD_STUB_CATCH
	bool "Reserve 256 bytes to cope with linker stubs in HEAD text" if EXPERT
	depends on PPC64
	default n
	help
	  Very large kernels can cause linker branch stubs to be generated by
	  code in head_64.S, which moves the head text sections out of their
@@ -557,7 +551,6 @@ config RELOCATABLE
config RELOCATABLE_TEST
	bool "Test relocatable kernel"
	depends on (PPC64 && RELOCATABLE)
	default n
	help
	  This runs the relocatable kernel at the address it was initially
	  loaded at, which tends to be non-zero and therefore test the
@@ -769,7 +762,6 @@ config PPC_SUBPAGE_PROT

config PPC_COPRO_BASE
	bool
	default n

config SCHED_SMT
	bool "SMT (Hyperthreading) scheduler support"
@@ -892,7 +884,6 @@ config PPC_INDIRECT_PCI
	bool
	depends on PCI
	default y if 40x || 44x
	default n

config EISA
	bool
@@ -989,7 +980,6 @@ source "drivers/pcmcia/Kconfig"

config HAS_RAPIDIO
	bool
	default n

config RAPIDIO
	tristate "RapidIO support"
@@ -1012,7 +1002,6 @@ endmenu

config NONSTATIC_KERNEL
	bool
	default n

menu "Advanced setup"
	depends on PPC32
+0 −6
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@

config PPC_DISABLE_WERROR
	bool "Don't build arch/powerpc code with -Werror"
	default n
	help
	  This option tells the compiler NOT to build the code under
	  arch/powerpc with the -Werror flag (which means warnings
@@ -56,7 +55,6 @@ config PPC_EMULATED_STATS
config CODE_PATCHING_SELFTEST
	bool "Run self-tests of the code-patching code"
	depends on DEBUG_KERNEL
	default n

config JUMP_LABEL_FEATURE_CHECKS
	bool "Enable use of jump label for cpu/mmu_has_feature()"
@@ -70,7 +68,6 @@ config JUMP_LABEL_FEATURE_CHECKS
config JUMP_LABEL_FEATURE_CHECK_DEBUG
	bool "Do extra check on feature fixup calls"
	depends on DEBUG_KERNEL && JUMP_LABEL_FEATURE_CHECKS
	default n
	help
	  This tries to catch incorrect usage of cpu_has_feature() and
	  mmu_has_feature() in the code.
@@ -80,16 +77,13 @@ config JUMP_LABEL_FEATURE_CHECK_DEBUG
config FTR_FIXUP_SELFTEST
	bool "Run self-tests of the feature-fixup code"
	depends on DEBUG_KERNEL
	default n

config MSI_BITMAP_SELFTEST
	bool "Run self-tests of the MSI bitmap code"
	depends on DEBUG_KERNEL
	default n

config PPC_IRQ_SOFT_MASK_DEBUG
	bool "Include extra checks for powerpc irq soft masking"
	default n

config XMON
	bool "Include xmon kernel debugger"
Loading