workqueue: Move workqueue_set_unbound_cpumask() and its helpers inside CONFIG_SYSFS
Commit fe28f631fa94 ("workqueue: Add workqueue_unbound_exclude_cpumask() to exclude CPUs from wq_unbound_cpumask") makes workqueue_set_unbound_cpumask() static as it is not used elsewhere in the kernel. However, this triggers a kernel test robot warning about 'workqueue_set_unbound_cpumask' defined but not used when CONFIG_SYS isn't defined. It happens that workqueue_set_unbound_cpumask() is only called when CONFIG_SYS is defined. Move workqueue_set_unbound_cpumask() and its helpers inside the CONFIG_SYSFS compilation block to avoid the warning. There is no functional change. Fixes: fe28f631fa94 ("workqueue: Add workqueue_unbound_exclude_cpumask() to exclude CPUs from wq_unbound_cpumask") Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202311130831.uh0AoCd1-lkp@intel.com/ Signed-off-by: Waiman Long <longman@redhat.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
e76d28bdf9
commit
49277a5b76
@ -4417,19 +4417,6 @@ static void apply_wqattrs_commit(struct apply_wqattrs_ctx *ctx)
|
||||
mutex_unlock(&ctx->wq->mutex);
|
||||
}
|
||||
|
||||
static void apply_wqattrs_lock(void)
|
||||
{
|
||||
/* CPUs should stay stable across pwq creations and installations */
|
||||
cpus_read_lock();
|
||||
mutex_lock(&wq_pool_mutex);
|
||||
}
|
||||
|
||||
static void apply_wqattrs_unlock(void)
|
||||
{
|
||||
mutex_unlock(&wq_pool_mutex);
|
||||
cpus_read_unlock();
|
||||
}
|
||||
|
||||
static int apply_workqueue_attrs_locked(struct workqueue_struct *wq,
|
||||
const struct workqueue_attrs *attrs)
|
||||
{
|
||||
@ -5833,44 +5820,6 @@ static int workqueue_apply_unbound_cpumask(const cpumask_var_t unbound_cpumask)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* workqueue_set_unbound_cpumask - Set the low-level unbound cpumask
|
||||
* @cpumask: the cpumask to set
|
||||
*
|
||||
* The low-level workqueues cpumask is a global cpumask that limits
|
||||
* the affinity of all unbound workqueues. This function check the @cpumask
|
||||
* and apply it to all unbound workqueues and updates all pwqs of them.
|
||||
*
|
||||
* Return: 0 - Success
|
||||
* -EINVAL - Invalid @cpumask
|
||||
* -ENOMEM - Failed to allocate memory for attrs or pwqs.
|
||||
*/
|
||||
static int workqueue_set_unbound_cpumask(cpumask_var_t cpumask)
|
||||
{
|
||||
int ret = -EINVAL;
|
||||
|
||||
/*
|
||||
* Not excluding isolated cpus on purpose.
|
||||
* If the user wishes to include them, we allow that.
|
||||
*/
|
||||
cpumask_and(cpumask, cpumask, cpu_possible_mask);
|
||||
if (!cpumask_empty(cpumask)) {
|
||||
apply_wqattrs_lock();
|
||||
cpumask_copy(wq_requested_unbound_cpumask, cpumask);
|
||||
if (cpumask_equal(cpumask, wq_unbound_cpumask)) {
|
||||
ret = 0;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
ret = workqueue_apply_unbound_cpumask(cpumask);
|
||||
|
||||
out_unlock:
|
||||
apply_wqattrs_unlock();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* workqueue_unbound_exclude_cpumask - Exclude given CPUs from unbound cpumask
|
||||
* @exclude_cpumask: the cpumask to be excluded from wq_unbound_cpumask
|
||||
@ -6027,6 +5976,19 @@ static struct attribute *wq_sysfs_attrs[] = {
|
||||
};
|
||||
ATTRIBUTE_GROUPS(wq_sysfs);
|
||||
|
||||
static void apply_wqattrs_lock(void)
|
||||
{
|
||||
/* CPUs should stay stable across pwq creations and installations */
|
||||
cpus_read_lock();
|
||||
mutex_lock(&wq_pool_mutex);
|
||||
}
|
||||
|
||||
static void apply_wqattrs_unlock(void)
|
||||
{
|
||||
mutex_unlock(&wq_pool_mutex);
|
||||
cpus_read_unlock();
|
||||
}
|
||||
|
||||
static ssize_t wq_nice_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
@ -6203,6 +6165,44 @@ static struct bus_type wq_subsys = {
|
||||
.dev_groups = wq_sysfs_groups,
|
||||
};
|
||||
|
||||
/**
|
||||
* workqueue_set_unbound_cpumask - Set the low-level unbound cpumask
|
||||
* @cpumask: the cpumask to set
|
||||
*
|
||||
* The low-level workqueues cpumask is a global cpumask that limits
|
||||
* the affinity of all unbound workqueues. This function check the @cpumask
|
||||
* and apply it to all unbound workqueues and updates all pwqs of them.
|
||||
*
|
||||
* Return: 0 - Success
|
||||
* -EINVAL - Invalid @cpumask
|
||||
* -ENOMEM - Failed to allocate memory for attrs or pwqs.
|
||||
*/
|
||||
static int workqueue_set_unbound_cpumask(cpumask_var_t cpumask)
|
||||
{
|
||||
int ret = -EINVAL;
|
||||
|
||||
/*
|
||||
* Not excluding isolated cpus on purpose.
|
||||
* If the user wishes to include them, we allow that.
|
||||
*/
|
||||
cpumask_and(cpumask, cpumask, cpu_possible_mask);
|
||||
if (!cpumask_empty(cpumask)) {
|
||||
apply_wqattrs_lock();
|
||||
cpumask_copy(wq_requested_unbound_cpumask, cpumask);
|
||||
if (cpumask_equal(cpumask, wq_unbound_cpumask)) {
|
||||
ret = 0;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
ret = workqueue_apply_unbound_cpumask(cpumask);
|
||||
|
||||
out_unlock:
|
||||
apply_wqattrs_unlock();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t __wq_cpumask_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf, cpumask_var_t mask)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user