mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
cgroup: Fixes for v6.19-rc3
- cpuset: Fix spurious warning when disabling remote partition after CPU hotplug leaves subpartitions_cpus empty. Guard the warning and invalidate affected partitions. -----BEGIN PGP SIGNATURE----- iIQEABYKACwWIQTfIjM1kS57o3GsC/uxYfJx3gVYGQUCaVHNBg4cdGpAa2VybmVs Lm9yZwAKCRCxYfJx3gVYGW13AQC7akGwBAjBbR5p0aoLXKl5vZ8UYiwH+7iyep2Z INn7ggEA/huYF4smSRk3oR8q7eiISa85mZc85EuVEAjPmBQhpAQ= =9UP0 -----END PGP SIGNATURE----- Merge tag 'cgroup-for-6.19-rc3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup Pull cgroup fix from Tejun Heo: - Fix a spurious cpuset warning when disabling remote partition after CPU hotplug leaves subpartitions_cpus empty. Guard the warning and invalidate affected partitions. * tag 'cgroup-for-6.19-rc3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: cpuset: fix warning when disabling remote partition
This commit is contained in:
commit
bba0b6a1c4
@ -1668,7 +1668,14 @@ static int remote_partition_enable(struct cpuset *cs, int new_prs,
|
|||||||
static void remote_partition_disable(struct cpuset *cs, struct tmpmasks *tmp)
|
static void remote_partition_disable(struct cpuset *cs, struct tmpmasks *tmp)
|
||||||
{
|
{
|
||||||
WARN_ON_ONCE(!is_remote_partition(cs));
|
WARN_ON_ONCE(!is_remote_partition(cs));
|
||||||
WARN_ON_ONCE(!cpumask_subset(cs->effective_xcpus, subpartitions_cpus));
|
/*
|
||||||
|
* When a CPU is offlined, top_cpuset may end up with no available CPUs,
|
||||||
|
* which should clear subpartitions_cpus. We should not emit a warning for this
|
||||||
|
* scenario: the hierarchy is updated from top to bottom, so subpartitions_cpus
|
||||||
|
* may already be cleared when disabling the partition.
|
||||||
|
*/
|
||||||
|
WARN_ON_ONCE(!cpumask_subset(cs->effective_xcpus, subpartitions_cpus) &&
|
||||||
|
!cpumask_empty(subpartitions_cpus));
|
||||||
|
|
||||||
spin_lock_irq(&callback_lock);
|
spin_lock_irq(&callback_lock);
|
||||||
cs->remote_partition = false;
|
cs->remote_partition = false;
|
||||||
@ -3976,8 +3983,9 @@ retry:
|
|||||||
if (remote || (is_partition_valid(cs) && is_partition_valid(parent)))
|
if (remote || (is_partition_valid(cs) && is_partition_valid(parent)))
|
||||||
compute_partition_effective_cpumask(cs, &new_cpus);
|
compute_partition_effective_cpumask(cs, &new_cpus);
|
||||||
|
|
||||||
if (remote && cpumask_empty(&new_cpus) &&
|
if (remote && (cpumask_empty(subpartitions_cpus) ||
|
||||||
partition_is_populated(cs, NULL)) {
|
(cpumask_empty(&new_cpus) &&
|
||||||
|
partition_is_populated(cs, NULL)))) {
|
||||||
cs->prs_err = PERR_HOTPLUG;
|
cs->prs_err = PERR_HOTPLUG;
|
||||||
remote_partition_disable(cs, tmp);
|
remote_partition_disable(cs, tmp);
|
||||||
compute_effective_cpumask(&new_cpus, cs, parent);
|
compute_effective_cpumask(&new_cpus, cs, parent);
|
||||||
@ -3990,9 +3998,12 @@ retry:
|
|||||||
* 1) empty effective cpus but not valid empty partition.
|
* 1) empty effective cpus but not valid empty partition.
|
||||||
* 2) parent is invalid or doesn't grant any cpus to child
|
* 2) parent is invalid or doesn't grant any cpus to child
|
||||||
* partitions.
|
* partitions.
|
||||||
|
* 3) subpartitions_cpus is empty.
|
||||||
*/
|
*/
|
||||||
if (is_local_partition(cs) && (!is_partition_valid(parent) ||
|
if (is_local_partition(cs) &&
|
||||||
tasks_nocpu_error(parent, cs, &new_cpus)))
|
(!is_partition_valid(parent) ||
|
||||||
|
tasks_nocpu_error(parent, cs, &new_cpus) ||
|
||||||
|
cpumask_empty(subpartitions_cpus)))
|
||||||
partcmd = partcmd_invalidate;
|
partcmd = partcmd_invalidate;
|
||||||
/*
|
/*
|
||||||
* On the other hand, an invalid partition root may be transitioned
|
* On the other hand, an invalid partition root may be transitioned
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user