old, new) != old);
 }
 
-#define init_task_preempt_count(p)     do { } while (0)
-
-#define init_idle_preempt_count(p, cpu)        do { \
-       S390_lowcore.preempt_count = PREEMPT_DISABLED; \
-} while (0)
-
 static inline void set_preempt_need_resched(void)
 {
        __atomic_and(~PREEMPT_NEED_RESCHED, &S390_lowcore.preempt_count);
        S390_lowcore.preempt_count = pc;
 }
 
-#define init_task_preempt_count(p)     do { } while (0)
-
-#define init_idle_preempt_count(p, cpu)        do { \
-       S390_lowcore.preempt_count = PREEMPT_DISABLED; \
-} while (0)
-
 static inline void set_preempt_need_resched(void)
 {
 }
 
 #endif /* CONFIG_HAVE_MARCH_Z196_FEATURES */
 
+#define init_task_preempt_count(p)     do { } while (0)
+/* Deferred to CPU bringup time */
+#define init_idle_preempt_count(p, cpu)        do { } while (0)
+
 #ifdef CONFIG_PREEMPTION
 extern void preempt_schedule(void);
 #define __preempt_schedule() preempt_schedule()
 
        lc->br_r1_trampoline = 0x07f1;  /* br %r1 */
        lc->return_lpswe = gen_lpswe(__LC_RETURN_PSW);
        lc->return_mcck_lpswe = gen_lpswe(__LC_RETURN_MCCK_PSW);
+       lc->preempt_count = PREEMPT_DISABLED;
 
        set_prefix((u32)(unsigned long) lc);
        lowcore_ptr[0] = lc;
 
        lc->br_r1_trampoline = 0x07f1;  /* br %r1 */
        lc->return_lpswe = gen_lpswe(__LC_RETURN_PSW);
        lc->return_mcck_lpswe = gen_lpswe(__LC_RETURN_MCCK_PSW);
+       lc->preempt_count = PREEMPT_DISABLED;
        if (nmi_alloc_per_cpu(lc))
                goto out;
        lowcore_ptr[cpu] = lc;