RISC-V Fixes for 5.9
I have two fixes for this week: * The addition of a symbol export for clint_time_val, which has been inlined into some timex functions and can be used by drivers. * A fix to avoid calling get_cycles() before the timers have been probed. These both only effect !MMU systems. -----BEGIN PGP SIGNATURE----- iQJHBAABCgAxFiEEKzw3R0RoQ7JKlDp6LhMZ81+7GIkFAl93T4MTHHBhbG1lckBk YWJiZWx0LmNvbQAKCRAuExnzX7sYiYjFEACV2VwRp2Poy26NlVnGnk2dJRcsgSyo XFusL/nDUh1lp6UKHfxXt6DZYNZKit8MlEwbqCKBk76IaXJe8PG4e4nUxQ4MeTUU nHuIfzUN2OOUnubevF/P5cQB7/8IO6kdCTNksFaOcHDoARbufJiCvSnOX2onAnuD 7FHgo3MjQURi9iAlaGez8ma1IcpyApVBs35WeThPNXZAu2xwRTOJEliQDOmWrGQL W+lQumiupuwnMVrOd2SFB0+2/O+GU8jv1tourV72B5uTDKl7P3MiwKdjR/GjqvN6 Aopk7NxXLw1kW1PhuwFGDTs45r1VOrWQBwKOxGDfLHytVhWCq2B6u1DkC3pDc7KK nppcQgWF0VI2D24ZC39OgT/42V6lHgY9PQcP0ILA3XSNWEwW3zMVFJ3vDRble7an pTZ6cN74AMb0GoHPNTTwRWwpTF66EsHZz5Hrgde6E6MjEGHr7FTKPTuI1dJGMxFn mJj91daTRb9P8bYhdn4DSStz8qxP+ctv/KOjNtnvgOFgGQAnxddtYVEOGoLi3j1e 3qJauIXdgnRBw8SegkbcbBukF8uyOXqUEfA62O/BXtiRcz+KNLf3/B1VbdM6xMvQ nVIb/OjFhty9dwWYLjyEyw4tM3X+UiKFeSnRxfELjHpe4xdrFVMAAGBVjPcmIq+O 82F8bQxoFsZ7Ug== =C3QV -----END PGP SIGNATURE----- Merge tag 'riscv-for-linus-5.9-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux Pull RISC-V fixes from Palmer Dabbelt: "Two fixes for this week: - The addition of a symbol export for clint_time_val, which has been inlined into some timex functions and can be used by drivers. - A fix to avoid calling get_cycles() before the timers have been probed. These both only effect !MMU systems" * tag 'riscv-for-linus-5.9-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: RISC-V: Check clint_time_val before use clocksource: clint: Export clint_time_val for modules
This commit is contained in:
commit
db23baa28e
@ -5,7 +5,6 @@
|
||||
|
||||
#include <linux/random.h>
|
||||
#include <linux/version.h>
|
||||
#include <asm/timex.h>
|
||||
|
||||
extern unsigned long __stack_chk_guard;
|
||||
|
||||
@ -18,12 +17,9 @@ extern unsigned long __stack_chk_guard;
|
||||
static __always_inline void boot_init_stack_canary(void)
|
||||
{
|
||||
unsigned long canary;
|
||||
unsigned long tsc;
|
||||
|
||||
/* Try to get a semi random initial value. */
|
||||
get_random_bytes(&canary, sizeof(canary));
|
||||
tsc = get_cycles();
|
||||
canary += tsc + (tsc << BITS_PER_LONG/2);
|
||||
canary ^= LINUX_VERSION_CODE;
|
||||
canary &= CANARY_MASK;
|
||||
|
||||
|
@ -33,6 +33,19 @@ static inline u32 get_cycles_hi(void)
|
||||
#define get_cycles_hi get_cycles_hi
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
/*
|
||||
* Much like MIPS, we may not have a viable counter to use at an early point
|
||||
* in the boot process. Unfortunately we don't have a fallback, so instead
|
||||
* we just return 0.
|
||||
*/
|
||||
static inline unsigned long random_get_entropy(void)
|
||||
{
|
||||
if (unlikely(clint_time_val == NULL))
|
||||
return 0;
|
||||
return get_cycles();
|
||||
}
|
||||
#define random_get_entropy() random_get_entropy()
|
||||
|
||||
#else /* CONFIG_RISCV_M_MODE */
|
||||
|
||||
static inline cycles_t get_cycles(void)
|
||||
|
@ -38,6 +38,7 @@ static unsigned int clint_timer_irq;
|
||||
|
||||
#ifdef CONFIG_RISCV_M_MODE
|
||||
u64 __iomem *clint_time_val;
|
||||
EXPORT_SYMBOL(clint_time_val);
|
||||
#endif
|
||||
|
||||
static void clint_send_ipi(const struct cpumask *target)
|
||||
|
Loading…
x
Reference in New Issue
Block a user