aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2021-01-24 19:51:34 +0100
committerVasily Gorbik <gor@linux.ibm.com>2021-02-09 15:57:05 +0100
commit96c0c7ae5266ec347041312ae22d947b5371e5b3 (patch)
treeb97bd2b0b6f1e69fed3e0a0492a13a6b17a9836c /arch
parents390/vdso: fix vdso data page definition (diff)
downloadlinux-dev-96c0c7ae5266ec347041312ae22d947b5371e5b3.tar.xz
linux-dev-96c0c7ae5266ec347041312ae22d947b5371e5b3.zip
s390/vdso: convert vdso_init() to arch_initcall
Convert vdso_init() to arch_initcall like it is on all other architectures. This requires to remove the vdso_getcpu_init() call from vdso_init() since it must be called before smp is enabled. vdso_getcpu_init() is now an early_initcall like on powerpc. Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/s390/include/asm/vdso.h2
-rw-r--r--arch/s390/kernel/vdso.c7
2 files changed, 5 insertions, 4 deletions
diff --git a/arch/s390/include/asm/vdso.h b/arch/s390/include/asm/vdso.h
index f46c2596c21f..e4ea142a082c 100644
--- a/arch/s390/include/asm/vdso.h
+++ b/arch/s390/include/asm/vdso.h
@@ -13,7 +13,7 @@
extern struct vdso_data *vdso_data;
-void vdso_getcpu_init(void);
+int vdso_getcpu_init(void);
#endif /* __ASSEMBLY__ */
#endif /* __S390_VDSO_H__ */
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c
index c6aeddcd687d..0bb287ae0f04 100644
--- a/arch/s390/kernel/vdso.c
+++ b/arch/s390/kernel/vdso.c
@@ -92,10 +92,12 @@ static union {
} vdso_data_store __page_aligned_data;
struct vdso_data *vdso_data = vdso_data_store.data;
-void vdso_getcpu_init(void)
+int vdso_getcpu_init(void)
{
set_tod_programmable_field(smp_processor_id());
+ return 0;
}
+early_initcall(vdso_getcpu_init); /* Must be called before SMP init */
/*
* This is called from binfmt_elf, we create the special vma for the
@@ -167,7 +169,6 @@ static int __init vdso_init(void)
{
int i;
- vdso_getcpu_init();
/* Calculate the size of the 64 bit vDSO */
vdso64_pages = ((&vdso64_end - &vdso64_start
+ PAGE_SIZE - 1) >> PAGE_SHIFT) + 1;
@@ -188,4 +189,4 @@ static int __init vdso_init(void)
return 0;
}
-early_initcall(vdso_init);
+arch_initcall(vdso_init);