* This is pagesize for historical reasons. */
 #define KVM_S390_VIRTIO_RING_ALIGN     4096
 
-#ifdef __KERNEL__
-/* early virtio console setup */
-#ifdef CONFIG_S390_GUEST
-extern void s390_virtio_console_init(void);
-#else
-static inline void s390_virtio_console_init(void)
-{
-}
-#endif /* CONFIG_VIRTIO_CONSOLE */
-#endif /* __KERNEL__ */
 #endif
 
 
 static void __init set_preferred_console(void)
 {
-       if (MACHINE_IS_KVM) {
+       if (MACHINE_IS_KVM)
                add_preferred_console("hvc", 0, NULL);
-               s390_virtio_console_init();
-               return;
-       }
-
-       if (CONSOLE_IS_3215 || CONSOLE_IS_SCLP)
+       else if (CONSOLE_IS_3215 || CONSOLE_IS_SCLP)
                add_preferred_console("ttyS", 0, NULL);
-       if (CONSOLE_IS_3270)
+       else if (CONSOLE_IS_3270)
                add_preferred_console("tty3270", 0, NULL);
 }
 
 
        return len;
 }
 
-void __init s390_virtio_console_init(void)
+static int __init s390_virtio_console_init(void)
 {
-       virtio_cons_early_init(early_put_chars);
+       if (!MACHINE_IS_KVM)
+               return -ENODEV;
+       return virtio_cons_early_init(early_put_chars);
 }
+console_initcall(s390_virtio_console_init);
+
 
 /*
  * We do this after core stuff, but before the drivers.