Commit d861f6e6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'smp-core-2020-06-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull SMP updates from Ingo Molnar:
 "Misc cleanups in the SMP hotplug and cross-call code"

* tag 'smp-core-2020-06-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  cpu/hotplug: Remove __freeze_secondary_cpus()
  cpu/hotplug: Remove disable_nonboot_cpus()
  cpu/hotplug: Fix a typo in comment "broadacasted"->"broadcasted"
  smp: Use smp_call_func_t in on_each_cpu()
parents 58ff3b76 fb7fb84a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ More details follow::
                                        |
                                        |
                                        v
                              disable_nonboot_cpus()
                              freeze_secondary_cpus()
                                   /* start */
                                        |
                                        v
@@ -83,7 +83,7 @@ More details follow::
                            Release cpu_add_remove_lock
                                        |
                                        v
                       /* disable_nonboot_cpus() complete */
                       /* freeze_secondary_cpus() complete */
                                        |
                                        v
                                   Do suspend
@@ -93,7 +93,7 @@ More details follow::
Resuming back is likewise, with the counterparts being (in the order of
execution during resume):

* enable_nonboot_cpus() which involves::
* thaw_secondary_cpus() which involves::

   |  Acquire cpu_add_remove_lock
   |  Decrease cpu_hotplug_disabled, thereby enabling regular cpu hotplug
+2 −2
Original line number Diff line number Diff line
@@ -1384,12 +1384,12 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
	speculative_store_bypass_ht_init();
}

void arch_enable_nonboot_cpus_begin(void)
void arch_thaw_secondary_cpus_begin(void)
{
	set_mtrr_aps_delayed_init();
}

void arch_enable_nonboot_cpus_end(void)
void arch_thaw_secondary_cpus_end(void)
{
	mtrr_aps_init();
}
+1 −1
Original line number Diff line number Diff line
@@ -307,7 +307,7 @@ int hibernate_resume_nonboot_cpu_disable(void)
	if (ret)
		return ret;
	smp_ops.play_dead = resume_play_dead;
	ret = disable_nonboot_cpus();
	ret = freeze_secondary_cpus(0);
	smp_ops.play_dead = play_dead;
	return ret;
}
+4 −15
Original line number Diff line number Diff line
@@ -144,18 +144,8 @@ static inline void get_online_cpus(void) { cpus_read_lock(); }
static inline void put_online_cpus(void) { cpus_read_unlock(); }

#ifdef CONFIG_PM_SLEEP_SMP
int __freeze_secondary_cpus(int primary, bool suspend);
static inline int freeze_secondary_cpus(int primary)
{
	return __freeze_secondary_cpus(primary, true);
}

static inline int disable_nonboot_cpus(void)
{
	return __freeze_secondary_cpus(0, false);
}

void enable_nonboot_cpus(void);
extern int freeze_secondary_cpus(int primary);
extern void thaw_secondary_cpus(void);

static inline int suspend_disable_secondary_cpus(void)
{
@@ -168,12 +158,11 @@ static inline int suspend_disable_secondary_cpus(void)
}
static inline void suspend_enable_secondary_cpus(void)
{
	return enable_nonboot_cpus();
	return thaw_secondary_cpus();
}

#else /* !CONFIG_PM_SLEEP_SMP */
static inline int disable_nonboot_cpus(void) { return 0; }
static inline void enable_nonboot_cpus(void) {}
static inline void thaw_secondary_cpus(void) {}
static inline int suspend_disable_secondary_cpus(void) { return 0; }
static inline void suspend_enable_secondary_cpus(void) { }
#endif /* !CONFIG_PM_SLEEP_SMP */
+2 −2
Original line number Diff line number Diff line
@@ -227,8 +227,8 @@ static inline int get_boot_cpu_id(void)
 */
extern void arch_disable_smp_support(void);

extern void arch_enable_nonboot_cpus_begin(void);
extern void arch_enable_nonboot_cpus_end(void);
extern void arch_thaw_secondary_cpus_begin(void);
extern void arch_thaw_secondary_cpus_end(void);

void smp_setup_processor_id(void);

Loading