Re: [PATCH v5 5/9] x86/sysctl: Add sysctl for ITMT scheduling feature
From: Thomas Gleixner <hidden>
Date: 2016-10-05 14:38:11
Also in:
linux-pm, lkml
On Sat, 1 Oct 2016, Srinivas Pandruvada wrote:
+static int sched_itmt_update_handler(struct ctl_table *table, int write,
+ void __user *buffer, size_t *lenp, loff_t *ppos)
+{
+ int ret;
+ unsigned int old_sysctl;
+
+ mutex_lock(&itmt_update_mutex);
+
+ if (!sched_itmt_capable) {
+ mutex_unlock(&itmt_update_mutex);
+ return 0;This should return a proper error code.
void sched_set_itmt_support(bool itmt_supported)
{
mutex_lock(&itmt_update_mutex);
- if (itmt_supported != sched_itmt_capable)
- sched_itmt_capable = itmt_supported;
+ if (itmt_supported == sched_itmt_capable) {
+ mutex_unlock(&itmt_update_mutex);
+ return;
+ }
+ sched_itmt_capable = itmt_supported;
+
+ if (itmt_supported) {
+ itmt_sysctl_header =
+ register_sysctl_table(itmt_root_table);
+ if (!itmt_sysctl_header) {
+ mutex_unlock(&itmt_update_mutex);
+ return;So you now have a state of capable which cannot be enabled. Whats the point?
+ }
+ /*
+ * ITMT capability automatically enables ITMT
+ * scheduling for small systems (single node).
+ */
+ if (topology_num_packages() == 1)
+ sysctl_sched_itmt_enabled = 1;
+ } else {
+ if (itmt_sysctl_header)
+ unregister_sysctl_table(itmt_sysctl_header);
+ }
+
+ if (sysctl_sched_itmt_enabled) {
+ /* disable sched_itmt if we are no longer ITMT capable */
+ if (!itmt_supported)How do you get here if itmt is not supported?
+ sysctl_sched_itmt_enabled = 0; + x86_topology_update = true; + rebuild_sched_domains(); + } mutex_unlock(&itmt_update_mutex);
Thanks, tglx