s390/vdso: convert vdso_init() to arch_initcall
authorHeiko Carstens <hca@linux.ibm.com>
Sun, 24 Jan 2021 18:51:34 +0000 (19:51 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 9 Feb 2021 14:57:05 +0000 (15:57 +0100)
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>
arch/s390/include/asm/vdso.h
arch/s390/kernel/vdso.c

index f46c259..e4ea142 100644 (file)
@@ -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__ */
index c6aeddc..0bb287a 100644 (file)
@@ -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);