Commit f89d416a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull powerpc fixes from Michael Ellerman:
 "One fix for a regression introduced by our recent rework of cache
  flushing on memory hotunplug.

  Like several other arches, our VDSO clock_getres() needed a fix to
  match the semantics of posix_get_hrtimer_res().

  A fix for a boot crash on Power9 LPARs using PCI LSI interrupts.

  A commit disabling use of the trace_imc PMU (not the core PMU) on
  Power9 systems, because it can lead to checkstops, until a workaround
  is developed.

  A handful of other minor fixes.

  Thanks to: Aneesh Kumar K.V, Anju T Sudhakar, Ard Biesheuvel,
  Christophe Leroy, Cédric Le Goater, Madhavan Srinivasan, Vincenzo
  Frascino"

* tag 'powerpc-5.5-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
  powerpc/perf: Disable trace_imc pmu
  powerpc/powernv: Avoid re-registration of imc debugfs directory
  powerpc/pmem: Convert to EXPORT_SYMBOL_GPL
  powerpc/archrandom: fix arch_get_random_seed_int()
  powerpc: Fix vDSO clock_getres()
  powerpc/pmem: Fix kernel crash due to wrong range value usage in flush_dcache_range
  powerpc/xive: Skip ioremap() of ESB pages for LSI interrupts
  powerpc/kasan: Fix boot failure with RELOCATABLE && FSL_BOOKE
parents 3cf2890f 249fad73
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ static inline int arch_get_random_seed_int(unsigned int *v)
	unsigned long val;
	int rc;

	rc = arch_get_random_long(&val);
	rc = arch_get_random_seed_long(&val);
	if (rc)
		*v = val;

+2 −0
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ struct vdso_data {
	__s64 wtom_clock_sec;			/* Wall to monotonic clock sec */
	__s64 stamp_xtime_sec;			/* xtime secs as at tb_orig_stamp */
	__s64 stamp_xtime_nsec;			/* xtime nsecs as at tb_orig_stamp */
	__u32 hrtimer_res;			/* hrtimer resolution */
   	__u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls  */
   	__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
};
@@ -105,6 +106,7 @@ struct vdso_data {
	__s32 stamp_xtime_sec;		/* xtime seconds as at tb_orig_stamp */
	__s32 stamp_xtime_nsec;		/* xtime nsecs as at tb_orig_stamp */
	__u32 stamp_sec_fraction;	/* fractional seconds of stamp_xtime */
	__u32 hrtimer_res;		/* hrtimer resolution */
   	__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
	__u32 dcache_block_size;	/* L1 d-cache block size     */
	__u32 icache_block_size;	/* L1 i-cache block size     */
+1 −1
Original line number Diff line number Diff line
@@ -388,6 +388,7 @@ int main(void)
	OFFSET(STAMP_XTIME_SEC, vdso_data, stamp_xtime_sec);
	OFFSET(STAMP_XTIME_NSEC, vdso_data, stamp_xtime_nsec);
	OFFSET(STAMP_SEC_FRAC, vdso_data, stamp_sec_fraction);
	OFFSET(CLOCK_HRTIMER_RES, vdso_data, hrtimer_res);
	OFFSET(CFG_ICACHE_BLOCKSZ, vdso_data, icache_block_size);
	OFFSET(CFG_DCACHE_BLOCKSZ, vdso_data, dcache_block_size);
	OFFSET(CFG_ICACHE_LOGBLOCKSZ, vdso_data, icache_log_block_size);
@@ -413,7 +414,6 @@ int main(void)
	DEFINE(CLOCK_REALTIME_COARSE, CLOCK_REALTIME_COARSE);
	DEFINE(CLOCK_MONOTONIC_COARSE, CLOCK_MONOTONIC_COARSE);
	DEFINE(NSEC_PER_SEC, NSEC_PER_SEC);
	DEFINE(CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC);

#ifdef CONFIG_BUG
	DEFINE(BUG_ENTRY_SIZE, sizeof(struct bug_entry));
+3 −3
Original line number Diff line number Diff line
@@ -240,6 +240,9 @@ set_ivor:

	bl	early_init

#ifdef CONFIG_KASAN
	bl	kasan_early_init
#endif
#ifdef CONFIG_RELOCATABLE
	mr	r3,r30
	mr	r4,r31
@@ -266,9 +269,6 @@ set_ivor:
/*
 * Decide what sort of machine this is and initialize the MMU.
 */
#ifdef CONFIG_KASAN
	bl	kasan_early_init
#endif
	mr	r3,r30
	mr	r4,r31
	bl	machine_init
+1 −0
Original line number Diff line number Diff line
@@ -960,6 +960,7 @@ void update_vsyscall(struct timekeeper *tk)
	vdso_data->stamp_xtime_sec = xt.tv_sec;
	vdso_data->stamp_xtime_nsec = xt.tv_nsec;
	vdso_data->stamp_sec_fraction = frac_sec;
	vdso_data->hrtimer_res = hrtimer_resolution;
	smp_wmb();
	++(vdso_data->tb_update_count);
}
Loading