--- /dev/null
+--- a/include/linux/irq.h
++++ b/include/linux/irq.h
+@@ -1267,6 +1267,9 @@ static inline u32 irq_reg_readl(struct i
+ return readl(gc->reg_base + reg_offset);
+ }
+
++int get_c0_perfcount_int(void);
++unsigned int get_c0_compare_int(void);
++
+ struct irq_matrix;
+ struct irq_matrix *irq_alloc_matrix(unsigned int matrix_bits,
+ unsigned int alloc_start,
+--- a/arch/mips/include/asm/switch_to.h
++++ b/arch/mips/include/asm/switch_to.h
+@@ -111,7 +111,7 @@ do { \
+ __mips_mt_fpaff_switch_to(prev); \
+ lose_fpu_inatomic(1, prev); \
+ if (tsk_used_math(next)) \
+- __sanitize_fcr31(next); \
++ { __sanitize_fcr31(next); } \
+ if (cpu_has_dsp) { \
+ __save_dsp(prev); \
+ __restore_dsp(next); \
+--- a/include/linux/cpumask.h
++++ b/include/linux/cpumask.h
+@@ -836,7 +836,7 @@ void cpumask_shift_left(struct cpumask *
+ static __always_inline
+ void cpumask_copy(struct cpumask *dstp, const struct cpumask *srcp)
+ {
+- bitmap_copy(cpumask_bits(dstp), cpumask_bits(srcp), large_cpumask_bits);
++ bitmap_copy(cpumask_bits(dstp), cpumask_bits(srcp), MIN(large_cpumask_bits, sizeof(cpumask_var_t) * BITS_PER_BYTE));
+ }
+
+ /**