mirror of https://gitee.com/openkylin/linux.git
powerpc fixes for 5.11 #2
Four commits fixing various things in the new C VDSO code. One fix for a 32-bit VMAP stack bug. Two minor build fixes. Thanks to: Cédric Le Goater, Christophe Leroy, Will Springer. -----BEGIN PGP SIGNATURE----- iQJHBAABCAAxFiEEJFGtCPCthwEv2Y/bUevqPMjhpYAFAl/j6NUTHG1wZUBlbGxl cm1hbi5pZC5hdQAKCRBR6+o8yOGlgF/KD/4nE3hEriOVTVZwf3L6E032j4wBA5LW LcoERcloazjYTovr9WRF2o1mlzNvbG6ziKhp2VYAUZceKu6Yf3fu92Rqag1/HAZy uyc3ny8A4qurm9ZYFrrbLYIgrN0stcmujT58+UhGwkA7VQjERWpQrO5vF5uD+04C GCWPFCPgslbNBJxRXGOT32l4IUCmgDxX0mRvmORxGDOicDyOpjTc4mxVk3fwhcb4 tfNHOcWLg3lYnJJX95LpHekb5ka73DslCZ7B8J684jEY+IgNcvklD/sbS7eGuAcG gxAE5XGp/o065reLl6FKBLNH9/iikB5xQ5+4EGIIJGuMFAgeUG8+nf7n/rw5d8vj Fn6KQykJphYE3BNHXrXMvQu2ZD5RWltCMN9+gWhXwfVciuhu8xk8Ev/whdrWfBh0 AOcUNPgspHTrwNgiRd6q3yBxPTy+cvB1kDr0Ts6O9h/pHSB32wBdXJTp3adx3l2I Rq150rAKoX1RXjEULcSuqzd/J86JmuoCarB+Z11knHdKxGCu6XCjEhMEagoQ7dek 1cF0HMQ5Sohl4bEQfdjz88hLgFsrvdQI99IzLq4dXNa01t1oxytmFW1uNYxXg9Zw iJ6/btvE+adrp6sYC8cvCBOi0U3KyIuaeZol7QgMXlkLQqpAxcpVW1lC0+UhQuY8 m0HCz4nGg+cL5Q== =p9PP -----END PGP SIGNATURE----- Merge tag 'powerpc-5.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux Pull powerpc fixes from Michael Ellerman: - Four commits fixing various things in the new C VDSO code - One fix for a 32-bit VMAP stack bug - Two minor build fixes Thanks to Cédric Le Goater, Christophe Leroy, and Will Springer. * tag 'powerpc-5.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: powerpc/32: Fix vmap stack - Properly set r1 before activating MMU on syscall too powerpc/vdso: Fix DOTSYM for 32-bit LE VDSO powerpc/vdso: Don't pass 64-bit ABI cflags to 32-bit VDSO powerpc/vdso: Block R_PPC_REL24 relocations powerpc/smp: Add __init to init_big_cores() powerpc/time: Force inlining of get_tb() powerpc/boot: Fix build of dts/fsl
This commit is contained in:
commit
9b3f7f1b84
|
@ -373,6 +373,8 @@ initrd-y := $(filter-out $(image-y), $(initrd-y))
|
|||
targets += $(image-y) $(initrd-y)
|
||||
targets += $(foreach x, dtbImage uImage cuImage simpleImage treeImage, \
|
||||
$(patsubst $(x).%, dts/%.dtb, $(filter $(x).%, $(image-y))))
|
||||
targets += $(foreach x, dtbImage uImage cuImage simpleImage treeImage, \
|
||||
$(patsubst $(x).%, dts/fsl/%.dtb, $(filter $(x).%, $(image-y))))
|
||||
|
||||
$(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gz
|
||||
|
||||
|
|
|
@ -180,7 +180,12 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR)
|
|||
#define VCPU_GPR(n) __VCPU_GPR(__REG_##n)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#ifdef CONFIG_PPC64
|
||||
|
||||
/*
|
||||
* We use __powerpc64__ here because we want the compat VDSO to use the 32-bit
|
||||
* version below in the else case of the ifdef.
|
||||
*/
|
||||
#ifdef __powerpc64__
|
||||
|
||||
#define STACKFRAMESIZE 256
|
||||
#define __STK_REG(i) (112 + ((i)-14)*8)
|
||||
|
|
|
@ -49,7 +49,7 @@ static inline unsigned long get_tbl(void)
|
|||
return mftb();
|
||||
}
|
||||
|
||||
static inline u64 get_tb(void)
|
||||
static __always_inline u64 get_tb(void)
|
||||
{
|
||||
unsigned int tbhi, tblo, tbhi2;
|
||||
|
||||
|
|
|
@ -121,18 +121,28 @@
|
|||
#ifdef CONFIG_VMAP_STACK
|
||||
mfspr r11, SPRN_SRR0
|
||||
mtctr r11
|
||||
#endif
|
||||
andi. r11, r9, MSR_PR
|
||||
mr r11, r1
|
||||
lwz r1,TASK_STACK-THREAD(r12)
|
||||
beq- 99f
|
||||
addi r1, r1, THREAD_SIZE - INT_FRAME_SIZE
|
||||
li r10, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */
|
||||
mtmsr r10
|
||||
isync
|
||||
tovirt(r12, r12)
|
||||
stw r11,GPR1(r1)
|
||||
stw r11,0(r1)
|
||||
mr r11, r1
|
||||
#else
|
||||
andi. r11, r9, MSR_PR
|
||||
lwz r11,TASK_STACK-THREAD(r12)
|
||||
beq- 99f
|
||||
addi r11, r11, THREAD_SIZE - INT_FRAME_SIZE
|
||||
#ifdef CONFIG_VMAP_STACK
|
||||
li r10, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */
|
||||
mtmsr r10
|
||||
isync
|
||||
tophys(r11, r11)
|
||||
stw r1,GPR1(r11)
|
||||
stw r1,0(r11)
|
||||
tovirt(r1, r11) /* set new kernel sp */
|
||||
#endif
|
||||
tovirt_vmstack r12, r12
|
||||
tophys_novmstack r11, r11
|
||||
mflr r10
|
||||
stw r10, _LINK(r11)
|
||||
#ifdef CONFIG_VMAP_STACK
|
||||
|
@ -140,9 +150,6 @@
|
|||
#else
|
||||
mfspr r10,SPRN_SRR0
|
||||
#endif
|
||||
stw r1,GPR1(r11)
|
||||
stw r1,0(r11)
|
||||
tovirt_novmstack r1, r11 /* set new kernel sp */
|
||||
stw r10,_NIP(r11)
|
||||
mfcr r10
|
||||
rlwinm r10,r10,0,4,2 /* Clear SO bit in CR */
|
||||
|
|
|
@ -990,7 +990,7 @@ static struct sched_domain_topology_level powerpc_topology[] = {
|
|||
{ NULL, },
|
||||
};
|
||||
|
||||
static int init_big_cores(void)
|
||||
static int __init init_big_cores(void)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# List of files in the vdso, has to be asm only for now
|
||||
|
||||
ARCH_REL_TYPE_ABS := R_PPC_JUMP_SLOT|R_PPC_GLOB_DAT|R_PPC_ADDR32|R_PPC_ADDR24|R_PPC_ADDR16|R_PPC_ADDR16_LO|R_PPC_ADDR16_HI|R_PPC_ADDR16_HA|R_PPC_ADDR14|R_PPC_ADDR14_BRTAKEN|R_PPC_ADDR14_BRNTAKEN
|
||||
ARCH_REL_TYPE_ABS := R_PPC_JUMP_SLOT|R_PPC_GLOB_DAT|R_PPC_ADDR32|R_PPC_ADDR24|R_PPC_ADDR16|R_PPC_ADDR16_LO|R_PPC_ADDR16_HI|R_PPC_ADDR16_HA|R_PPC_ADDR14|R_PPC_ADDR14_BRTAKEN|R_PPC_ADDR14_BRNTAKEN|R_PPC_REL24
|
||||
include $(srctree)/lib/vdso/Makefile
|
||||
|
||||
obj-vdso32 = sigtramp.o gettimeofday.o datapage.o cacheflush.o note.o getcpu.o
|
||||
|
@ -27,7 +27,7 @@ endif
|
|||
CC32FLAGS :=
|
||||
ifdef CONFIG_PPC64
|
||||
CC32FLAGS += -m32
|
||||
KBUILD_CFLAGS := $(filter-out -mcmodel=medium,$(KBUILD_CFLAGS))
|
||||
KBUILD_CFLAGS := $(filter-out -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc,$(KBUILD_CFLAGS))
|
||||
endif
|
||||
|
||||
targets := $(obj-vdso32) vdso32.so.dbg
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
# List of files in the vdso, has to be asm only for now
|
||||
|
||||
ARCH_REL_TYPE_ABS := R_PPC_JUMP_SLOT|R_PPC_GLOB_DAT|R_PPC_ADDR32|R_PPC_ADDR24|R_PPC_ADDR16|R_PPC_ADDR16_LO|R_PPC_ADDR16_HI|R_PPC_ADDR16_HA|R_PPC_ADDR14|R_PPC_ADDR14_BRTAKEN|R_PPC_ADDR14_BRNTAKEN
|
||||
ARCH_REL_TYPE_ABS := R_PPC_JUMP_SLOT|R_PPC_GLOB_DAT|R_PPC_ADDR32|R_PPC_ADDR24|R_PPC_ADDR16|R_PPC_ADDR16_LO|R_PPC_ADDR16_HI|R_PPC_ADDR16_HA|R_PPC_ADDR14|R_PPC_ADDR14_BRTAKEN|R_PPC_ADDR14_BRNTAKEN|R_PPC_REL24
|
||||
include $(srctree)/lib/vdso/Makefile
|
||||
|
||||
obj-vdso64 = sigtramp.o gettimeofday.o datapage.o cacheflush.o note.o getcpu.o
|
||||
|
|
Loading…
Reference in New Issue