diff mbox

[v3,4/8] sched, x86: use arch_update_cpu_topology to indicate x86 need sched domain rebuild

Message ID 1473373615-51427-5-git-send-email-srinivas.pandruvada@linux.intel.com (mailing list archive)
State Changes Requested, archived
Headers show

Commit Message

srinivas pandruvada Sept. 8, 2016, 10:26 p.m. UTC
From: Tim Chen <tim.c.chen@linux.intel.com>

Provides x86 with arch_update_cpu_topology function. This function
allows us to indicate that a condition is detected that the sched
domain of x86 needs a complete rebuild.  This is done by setting the
x86_topology_update flag.

Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 arch/x86/include/asm/topology.h |  2 ++
 arch/x86/kernel/smpboot.c       | 11 +++++++++++
 2 files changed, 13 insertions(+)

Comments

Thomas Gleixner Sept. 10, 2016, 4:20 p.m. UTC | #1
On Thu, 8 Sep 2016, Srinivas Pandruvada wrote:

How is this related to sched? And please stop writing lengthy sentences in
the subject line.

> From: Tim Chen <tim.c.chen@linux.intel.com>
> 
> Provides x86 with arch_update_cpu_topology function. This function
> allows us to indicate that a condition is detected that the sched
> domain of x86 needs a complete rebuild.

scheduler domains are not x86 specific .... 

> This is done by setting the x86_topology_update flag.

So without reading the patch I expect that the function sets the
x86_topology_update flag. Crap.

What you really want to say is:

  The scheduler calls arch_update_cpu_topology() to check whether the
  scheduler domains have to be rebuilt.

  So far x86 has no requirement for this, but the upcoming IMTI support
  makes this necessary.

  Request the rebuild when the x86 internal update flag is set.

Or something along these lines. Changelog is a important part of a patch,
really..

> +/* Flag to indicate if a complete sched domain rebuild is required */
> +bool x86_topology_update;
> +
> +int arch_update_cpu_topology(void)
> +{
> +	if (x86_topology_update) {
> +		x86_topology_update = false;
> +		return 1;
> +	} else
> +		return 0;

That lacks braces around the else path, but why aren't you just doing the
obvious:

	if (!x86_topology_update)
		return false;
	
	x86_topology_update = false;
	return true;

That would be too simple to read, right?;

Thanks,

	tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tim Chen Sept. 12, 2016, 9 p.m. UTC | #2
On Sat, 2016-09-10 at 18:20 +0200, Thomas Gleixner wrote:
> On Thu, 8 Sep 2016, Srinivas Pandruvada wrote:
> 
> How is this related to sched? And please stop writing lengthy sentences in
> the subject line.


> > From: Tim Chen <tim.c.chen@linux.intel.com>
> > 
> > Provides x86 with arch_update_cpu_topology function. This function
> > allows us to indicate that a condition is detected that the sched
> > domain of x86 needs a complete rebuild.
> scheduler domains are not x86 specific .... 


> > 
> > This is done by setting the x86_topology_update flag.
> So without reading the patch I expect that the function sets the
> x86_topology_update flag. Crap.
> 
> What you really want to say is:
> 
>   The scheduler calls arch_update_cpu_topology() to check whether the
>   scheduler domains have to be rebuilt.
> 
>   So far x86 has no requirement for this, but the upcoming IMTI support
>   makes this necessary.
> 
>   Request the rebuild when the x86 internal update flag is set.
> 
> Or something along these lines. Changelog is a important part of a patch,
> really..

Sure.  Will do.

> 
> > 
> > +/* Flag to indicate if a complete sched domain rebuild is required */
> > +bool x86_topology_update;
> > +
> > +int arch_update_cpu_topology(void)
> > +{
> > +	if (x86_topology_update) {
> > +		x86_topology_update = false;
> > +		return 1;
> > +	} else
> > +		return 0;
> That lacks braces around the else path, but why aren't you just doing the
> obvious:
> 
> 	if (!x86_topology_update)
> 		return false;
> 	
> 	x86_topology_update = false;
> 	return true;
> 
> That would be too simple to read, right?;

Sure.  Will do.


> 
> Thanks,
> 
> 	tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
index 0bcf3b7..8d6df77 100644
--- a/arch/x86/include/asm/topology.h
+++ b/arch/x86/include/asm/topology.h
@@ -147,6 +147,8 @@  struct pci_bus;
 int x86_pci_root_bus_node(int bus);
 void x86_pci_root_bus_resources(int bus, struct list_head *resources);
 
+extern bool x86_topology_update;
+
 #ifdef CONFIG_SCHED_ITMT
 extern unsigned int __read_mostly sysctl_sched_itmt_enabled;
 #endif /* CONFIG_SCHED_ITMT */
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 292df31..737b9edf 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -110,6 +110,17 @@  static bool logical_packages_frozen __read_mostly;
 int __max_smt_threads __read_mostly;
 
 unsigned int __read_mostly sysctl_sched_itmt_enabled;
+/* Flag to indicate if a complete sched domain rebuild is required */
+bool x86_topology_update;
+
+int arch_update_cpu_topology(void)
+{
+	if (x86_topology_update) {
+		x86_topology_update = false;
+		return 1;
+	} else
+		return 0;
+}
 
 static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip)
 {