Skip to content

Commit fd50e3d

Browse files
committed
Merge tag 'v3.16.55' into odroidc2-v3.16.y
This is the 3.16.55 stable release
2 parents 53a8f7a + 3e50cd9 commit fd50e3d

File tree

223 files changed

+2541
-1266
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

223 files changed

+2541
-1266
lines changed

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 3
22
PATCHLEVEL = 16
3-
SUBLEVEL = 54
3+
SUBLEVEL = 55
44
EXTRAVERSION =
55
NAME = Museum of Fishiegoodies
66

@@ -740,6 +740,9 @@ KBUILD_CFLAGS += $(call cc-disable-warning, pointer-sign)
740740
# disable invalid "can't wrap" optimizations for signed / pointers
741741
KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
742742

743+
# Make sure -fstack-check isn't enabled (like gentoo apparently did)
744+
KBUILD_CFLAGS += $(call cc-option,-fno-stack-check,)
745+
743746
# conserve stack if available
744747
KBUILD_CFLAGS += $(call cc-option,-fconserve-stack)
745748

arch/arm/boot/dts/kirkwood-openblocks_a7.dts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@
5353
};
5454

5555
pinctrl: pin-controller@10000 {
56-
pinctrl-0 = <&pmx_dip_switches &pmx_gpio_header>;
56+
pinctrl-0 = <&pmx_dip_switches &pmx_gpio_header
57+
&pmx_gpio_header_gpo>;
5758
pinctrl-names = "default";
5859

5960
pmx_uart0: pmx-uart0 {
@@ -85,11 +86,16 @@
8586
* ground.
8687
*/
8788
pmx_gpio_header: pmx-gpio-header {
88-
marvell,pins = "mpp17", "mpp7", "mpp29", "mpp28",
89+
marvell,pins = "mpp17", "mpp29", "mpp28",
8990
"mpp35", "mpp34", "mpp40";
9091
marvell,function = "gpio";
9192
};
9293

94+
pmx_gpio_header_gpo: pxm-gpio-header-gpo {
95+
marvell,pins = "mpp7";
96+
marvell,function = "gpo";
97+
};
98+
9399
pmx_gpio_init: pmx-init {
94100
marvell,pins = "mpp38";
95101
marvell,function = "gpio";

arch/arm/include/asm/kvm_arm.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,7 @@
161161
#else
162162
#define VTTBR_X (5 - KVM_T0SZ)
163163
#endif
164-
#define VTTBR_BADDR_SHIFT (VTTBR_X - 1)
165-
#define VTTBR_BADDR_MASK (((1LLU << (40 - VTTBR_X)) - 1) << VTTBR_BADDR_SHIFT)
164+
#define VTTBR_BADDR_MASK (((1LLU << (40 - VTTBR_X)) - 1) << VTTBR_X)
166165
#define VTTBR_VMID_SHIFT (48LLU)
167166
#define VTTBR_VMID_MASK (0xffLLU << VTTBR_VMID_SHIFT)
168167

arch/arm/kvm/mmu.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -345,17 +345,15 @@ void free_boot_hyp_pgd(void)
345345
*/
346346
void free_hyp_pgds(void)
347347
{
348-
unsigned long addr;
349-
350348
free_boot_hyp_pgd();
351349

352350
mutex_lock(&kvm_hyp_pgd_mutex);
353351

354352
if (hyp_pgd) {
355-
for (addr = PAGE_OFFSET; virt_addr_valid(addr); addr += PGDIR_SIZE)
356-
unmap_range(NULL, hyp_pgd, KERN_TO_HYP(addr), PGDIR_SIZE);
357-
for (addr = VMALLOC_START; is_vmalloc_addr((void*)addr); addr += PGDIR_SIZE)
358-
unmap_range(NULL, hyp_pgd, KERN_TO_HYP(addr), PGDIR_SIZE);
353+
unmap_range(NULL, hyp_pgd, KERN_TO_HYP(PAGE_OFFSET),
354+
(uintptr_t)high_memory - PAGE_OFFSET);
355+
unmap_range(NULL, hyp_pgd, KERN_TO_HYP(VMALLOC_START),
356+
VMALLOC_END - VMALLOC_START);
359357

360358
free_pages((unsigned long)hyp_pgd, pgd_order);
361359
hyp_pgd = NULL;

arch/arm64/include/asm/kvm_arm.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,7 @@
164164
#define VTTBR_X (37 - VTCR_EL2_T0SZ_40B)
165165
#endif
166166

167-
#define VTTBR_BADDR_SHIFT (VTTBR_X - 1)
168-
#define VTTBR_BADDR_MASK (((UL(1) << (PHYS_MASK_SHIFT - VTTBR_X)) - 1) << VTTBR_BADDR_SHIFT)
167+
#define VTTBR_BADDR_MASK (((UL(1) << (PHYS_MASK_SHIFT - VTTBR_X)) - 1) << VTTBR_X)
169168
#define VTTBR_VMID_SHIFT (UL(48))
170169
#define VTTBR_VMID_MASK (UL(0xFF) << VTTBR_VMID_SHIFT)
171170

arch/arm64/kernel/process.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,15 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start,
269269

270270
memset(&p->thread.cpu_context, 0, sizeof(struct cpu_context));
271271

272+
/*
273+
* In case p was allocated the same task_struct pointer as some
274+
* other recently-exited task, make sure p is disassociated from
275+
* any cpu that may have run that now-exited task recently.
276+
* Otherwise we could erroneously skip reloading the FPSIMD
277+
* registers for p.
278+
*/
279+
fpsimd_flush_task_state(p);
280+
272281
if (likely(!(p->flags & PF_KTHREAD))) {
273282
*childregs = *current_pt_regs();
274283
childregs->regs[0] = 0;

arch/arm64/kvm/handle_exit.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run)
3434

3535
ret = kvm_psci_call(vcpu);
3636
if (ret < 0) {
37-
kvm_inject_undefined(vcpu);
37+
*vcpu_reg(vcpu, 0) = ~0UL;
3838
return 1;
3939
}
4040

@@ -43,7 +43,7 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run)
4343

4444
static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run)
4545
{
46-
kvm_inject_undefined(vcpu);
46+
*vcpu_reg(vcpu, 0) = ~0UL;
4747
return 1;
4848
}
4949

arch/mips/include/asm/cpu-info.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ struct cpuinfo_mips {
4949
unsigned int udelay_val;
5050
unsigned int processor_id;
5151
unsigned int fpu_id;
52+
unsigned int fpu_csr31;
53+
unsigned int fpu_msk31;
5254
unsigned int msa_id;
5355
unsigned int cputype;
5456
int isa_level;

arch/mips/include/asm/elf.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
#define _ASM_ELF_H
1010

1111

12+
#include <asm/cpu-info.h>
13+
#include <asm/current.h>
14+
1215
/* ELF header e_flags defines. */
1316
/* MIPS architecture level. */
1417
#define EF_MIPS_ARCH_1 0x00000000 /* -mips1 code. */
@@ -273,6 +276,8 @@ do { \
273276
set_personality(PER_LINUX); \
274277
\
275278
current->thread.abi = &mips_abi; \
279+
\
280+
current->thread.fpu.fcr31 = boot_cpu_data.fpu_csr31; \
276281
} while (0)
277282

278283
#endif /* CONFIG_32BIT */
@@ -332,6 +337,8 @@ do { \
332337
else \
333338
current->thread.abi = &mips_abi; \
334339
\
340+
current->thread.fpu.fcr31 = boot_cpu_data.fpu_csr31; \
341+
\
335342
p = personality(current->personality); \
336343
if (p != PER_LINUX32 && p != PER_LINUX) \
337344
set_personality(PER_LINUX); \

arch/mips/include/asm/fpu.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
struct sigcontext;
3131
struct sigcontext32;
3232

33-
extern void _init_fpu(void);
33+
extern void _init_fpu(unsigned int);
3434
extern void _save_fp(struct task_struct *);
3535
extern void _restore_fp(struct task_struct *);
3636

@@ -150,6 +150,7 @@ static inline void lose_fpu(int save)
150150
}
151151
disable_msa();
152152
clear_thread_flag(TIF_USEDMSA);
153+
__disable_fpu();
153154
} else if (is_fpu_owner()) {
154155
if (save)
155156
_save_fp(current);
@@ -162,14 +163,15 @@ static inline void lose_fpu(int save)
162163

163164
static inline int init_fpu(void)
164165
{
166+
unsigned int fcr31 = current->thread.fpu.fcr31;
165167
int ret = 0;
166168

167169
preempt_disable();
168170

169171
if (cpu_has_fpu) {
170172
ret = __own_fpu();
171173
if (!ret)
172-
_init_fpu();
174+
_init_fpu(fcr31);
173175
} else
174176
fpu_emulator_init_fpu();
175177

0 commit comments

Comments
 (0)