When none of the allowed CPUs of a task are online, it gets migrated
to the fallback cpumask which is all the non nohz_full CPUs.
However just like nohz_full CPUs, domain isolated CPUs don't want to be
disturbed by tasks that have lost their CPU affinities.
And since nohz_full rely on domain isolation to work correctly, the
housekeeping mask of domain isolated CPUs should always be a superset of
the housekeeping mask of nohz_full CPUs (there can be CPUs that are
domain isolated but not nohz_full, OTOH there shouldn't be nohz_full
CPUs that are not domain isolated):
HK_TYPE_DOMAIN | HK_TYPE_KERNEL_NOISE == HK_TYPE_DOMAIN
Therefore use HK_TYPE_DOMAIN as the appropriate fallback target for
tasks and since this cpumask can be modified at runtime, make sure
that 32 bits support CPUs on ARM64 mismatched systems are not isolated
by cpusets.
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Reviewed-by: Waiman Long <longman@redhat.com>
---
arch/arm64/kernel/cpufeature.c | 18 +++++++++++++++---
include/linux/cpu.h | 4 ++++
kernel/cgroup/cpuset.c | 17 ++++++++++++++---
3 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index c840a93b9ef9..70b0e45e299a 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -1656,6 +1656,18 @@ has_cpuid_feature(const struct arm64_cpu_capabilities *entry, int scope)
return feature_matches(val, entry);
}
+/*
+ * 32 bits support CPUs can't be isolated because tasks may be
+ * arbitrarily affine to them, defeating the purpose of isolation.
+ */
+bool arch_isolated_cpus_can_update(struct cpumask *new_cpus)
+{
+ if (static_branch_unlikely(&arm64_mismatched_32bit_el0))
+ return !cpumask_intersects(cpu_32bit_el0_mask, new_cpus);
+ else
+ return true;
+}
+
const struct cpumask *system_32bit_el0_cpumask(void)
{
if (!system_supports_32bit_el0())
@@ -1669,7 +1681,7 @@ const struct cpumask *system_32bit_el0_cpumask(void)
const struct cpumask *task_cpu_fallback_mask(struct task_struct *p)
{
- return __task_cpu_possible_mask(p, housekeeping_cpumask(HK_TYPE_TICK));
+ return __task_cpu_possible_mask(p, housekeeping_cpumask(HK_TYPE_DOMAIN));
}
static int __init parse_32bit_el0_param(char *str)
@@ -3987,8 +3999,8 @@ static int enable_mismatched_32bit_el0(unsigned int cpu)
bool cpu_32bit = false;
if (id_aa64pfr0_32bit_el0(info->reg_id_aa64pfr0)) {
- if (!housekeeping_cpu(cpu, HK_TYPE_TICK))
- pr_info("Treating adaptive-ticks CPU %u as 64-bit only\n", cpu);
+ if (!housekeeping_cpu(cpu, HK_TYPE_DOMAIN))
+ pr_info("Treating domain isolated CPU %u as 64-bit only\n", cpu);
else
cpu_32bit = true;
}
diff --git a/include/linux/cpu.h b/include/linux/cpu.h
index 487b3bf2e1ea..0b48af25ab5c 100644
--- a/include/linux/cpu.h
+++ b/include/linux/cpu.h
@@ -229,4 +229,8 @@ static inline bool cpu_attack_vector_mitigated(enum cpu_attack_vectors v)
#define smt_mitigations SMT_MITIGATIONS_OFF
#endif
+struct cpumask;
+
+bool arch_isolated_cpus_can_update(struct cpumask *new_cpus);
+
#endif /* _LINUX_CPU_H_ */
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index de693acc9254..4c9aa3f80553 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -1408,14 +1408,22 @@ static void partition_xcpus_del(int old_prs, struct cpuset *parent,
cpumask_or(parent->effective_cpus, parent->effective_cpus, xcpus);
}
+bool __weak arch_isolated_cpus_can_update(struct cpumask *new_cpus)
+{
+ return true;
+}
+
/*
- * isolated_cpus_can_update - check for isolated & nohz_full conflicts
+ * isolated_cpus_can_update - check for conflicts against housekeeping and
+ * CPUs capabilities.
* @add_cpus: cpu mask for cpus that are going to be isolated
* @del_cpus: cpu mask for cpus that are no longer isolated, can be NULL
* Return: false if there is conflict, true otherwise
*
- * If nohz_full is enabled and we have isolated CPUs, their combination must
- * still leave housekeeping CPUs.
+ * Check for conflicts:
+ * - If nohz_full is enabled and there are isolated CPUs, their combination must
+ * still leave housekeeping CPUs.
+ * - Architecture has CPU capabilities incompatible with being isolated
*
* TBD: Should consider merging this function into
* prstate_housekeeping_conflict().
@@ -1426,6 +1434,9 @@ static bool isolated_cpus_can_update(struct cpumask *add_cpus,
cpumask_var_t full_hk_cpus;
int res = true;
+ if (!arch_isolated_cpus_can_update(add_cpus))
+ return false;
+
if (!housekeeping_enabled(HK_TYPE_KERNEL_NOISE))
return true;
--
2.51.1
Hi Frederic, On Thu, Jan 01, 2026 at 11:13:54PM +0100, Frederic Weisbecker wrote: > When none of the allowed CPUs of a task are online, it gets migrated > to the fallback cpumask which is all the non nohz_full CPUs. > > However just like nohz_full CPUs, domain isolated CPUs don't want to be > disturbed by tasks that have lost their CPU affinities. > > And since nohz_full rely on domain isolation to work correctly, the > housekeeping mask of domain isolated CPUs should always be a superset of > the housekeeping mask of nohz_full CPUs (there can be CPUs that are > domain isolated but not nohz_full, OTOH there shouldn't be nohz_full > CPUs that are not domain isolated): > > HK_TYPE_DOMAIN | HK_TYPE_KERNEL_NOISE == HK_TYPE_DOMAIN > > Therefore use HK_TYPE_DOMAIN as the appropriate fallback target for > tasks and since this cpumask can be modified at runtime, make sure > that 32 bits support CPUs on ARM64 mismatched systems are not isolated > by cpusets. > > Signed-off-by: Frederic Weisbecker <frederic@kernel.org> > Reviewed-by: Waiman Long <longman@redhat.com> > --- > arch/arm64/kernel/cpufeature.c | 18 +++++++++++++++--- > include/linux/cpu.h | 4 ++++ > kernel/cgroup/cpuset.c | 17 ++++++++++++++--- > 3 files changed, 33 insertions(+), 6 deletions(-) tbh, I'd also be fine just saying that isolation isn't reliable on these systems and then you don't need to add the extra arch hook. Whatever you prefer, but please can you update the text in Documentation/arch/arm64/asymmetric-32bit.rst to cover the interaction between the asymmetric stuff and cpu isolation? Cheers, Will
Le Tue, Jan 20, 2026 at 03:15:14PM +0000, Will Deacon a écrit : > Hi Frederic, > > On Thu, Jan 01, 2026 at 11:13:54PM +0100, Frederic Weisbecker wrote: > > When none of the allowed CPUs of a task are online, it gets migrated > > to the fallback cpumask which is all the non nohz_full CPUs. > > > > However just like nohz_full CPUs, domain isolated CPUs don't want to be > > disturbed by tasks that have lost their CPU affinities. > > > > And since nohz_full rely on domain isolation to work correctly, the > > housekeeping mask of domain isolated CPUs should always be a superset of > > the housekeeping mask of nohz_full CPUs (there can be CPUs that are > > domain isolated but not nohz_full, OTOH there shouldn't be nohz_full > > CPUs that are not domain isolated): > > > > HK_TYPE_DOMAIN | HK_TYPE_KERNEL_NOISE == HK_TYPE_DOMAIN > > > > Therefore use HK_TYPE_DOMAIN as the appropriate fallback target for > > tasks and since this cpumask can be modified at runtime, make sure > > that 32 bits support CPUs on ARM64 mismatched systems are not isolated > > by cpusets. > > > > Signed-off-by: Frederic Weisbecker <frederic@kernel.org> > > Reviewed-by: Waiman Long <longman@redhat.com> > > --- > > arch/arm64/kernel/cpufeature.c | 18 +++++++++++++++--- > > include/linux/cpu.h | 4 ++++ > > kernel/cgroup/cpuset.c | 17 ++++++++++++++--- > > 3 files changed, 33 insertions(+), 6 deletions(-) > > tbh, I'd also be fine just saying that isolation isn't reliable on these > systems and then you don't need to add the extra arch hook. Hmm, I think I heard about nohz_full usage on arm64 but I'm not sure. And I usually expect isolcpus or cpuset isolated partitions to be even more broadly used, it's lighter isolation with less constraints. Anyway you're probably right that we could remove isolation support here but I don't want to break any existing user. > Whatever you prefer, but please can you update the text in > Documentation/arch/arm64/asymmetric-32bit.rst to cover the interaction > between the asymmetric stuff and cpu isolation? I'll keep that path and update the documentation. I guess we can still consider removing that support afterward. If we do so anyway, it would deserve its own patchset and shouldn't be hidden in this pile. Thanks. -- Frederic Weisbecker SUSE Labs
On Wed, Jan 21, 2026 at 06:06:07PM +0100, Frederic Weisbecker wrote: > Le Tue, Jan 20, 2026 at 03:15:14PM +0000, Will Deacon a écrit : > > Hi Frederic, > > > > On Thu, Jan 01, 2026 at 11:13:54PM +0100, Frederic Weisbecker wrote: > > > When none of the allowed CPUs of a task are online, it gets migrated > > > to the fallback cpumask which is all the non nohz_full CPUs. > > > > > > However just like nohz_full CPUs, domain isolated CPUs don't want to be > > > disturbed by tasks that have lost their CPU affinities. > > > > > > And since nohz_full rely on domain isolation to work correctly, the > > > housekeeping mask of domain isolated CPUs should always be a superset of > > > the housekeeping mask of nohz_full CPUs (there can be CPUs that are > > > domain isolated but not nohz_full, OTOH there shouldn't be nohz_full > > > CPUs that are not domain isolated): > > > > > > HK_TYPE_DOMAIN | HK_TYPE_KERNEL_NOISE == HK_TYPE_DOMAIN > > > > > > Therefore use HK_TYPE_DOMAIN as the appropriate fallback target for > > > tasks and since this cpumask can be modified at runtime, make sure > > > that 32 bits support CPUs on ARM64 mismatched systems are not isolated > > > by cpusets. > > > > > > Signed-off-by: Frederic Weisbecker <frederic@kernel.org> > > > Reviewed-by: Waiman Long <longman@redhat.com> > > > --- > > > arch/arm64/kernel/cpufeature.c | 18 +++++++++++++++--- > > > include/linux/cpu.h | 4 ++++ > > > kernel/cgroup/cpuset.c | 17 ++++++++++++++--- > > > 3 files changed, 33 insertions(+), 6 deletions(-) > > > > tbh, I'd also be fine just saying that isolation isn't reliable on these > > systems and then you don't need to add the extra arch hook. > > Hmm, I think I heard about nohz_full usage on arm64 but I'm not sure. > And I usually expect isolcpus or cpuset isolated partitions to be even > more broadly used, it's lighter isolation with less constraints. > > Anyway you're probably right that we could remove isolation support here > but I don't want to break any existing user. fwiw, I think it's only some Android markets using the mismatched 32-bit support and we're definitely not using nohz_full there. Will
Le Thu, Jan 22, 2026 at 09:56:29AM +0000, Will Deacon a écrit : > On Wed, Jan 21, 2026 at 06:06:07PM +0100, Frederic Weisbecker wrote: > > Le Tue, Jan 20, 2026 at 03:15:14PM +0000, Will Deacon a écrit : > > > Hi Frederic, > > > > > > On Thu, Jan 01, 2026 at 11:13:54PM +0100, Frederic Weisbecker wrote: > > > > When none of the allowed CPUs of a task are online, it gets migrated > > > > to the fallback cpumask which is all the non nohz_full CPUs. > > > > > > > > However just like nohz_full CPUs, domain isolated CPUs don't want to be > > > > disturbed by tasks that have lost their CPU affinities. > > > > > > > > And since nohz_full rely on domain isolation to work correctly, the > > > > housekeeping mask of domain isolated CPUs should always be a superset of > > > > the housekeeping mask of nohz_full CPUs (there can be CPUs that are > > > > domain isolated but not nohz_full, OTOH there shouldn't be nohz_full > > > > CPUs that are not domain isolated): > > > > > > > > HK_TYPE_DOMAIN | HK_TYPE_KERNEL_NOISE == HK_TYPE_DOMAIN > > > > > > > > Therefore use HK_TYPE_DOMAIN as the appropriate fallback target for > > > > tasks and since this cpumask can be modified at runtime, make sure > > > > that 32 bits support CPUs on ARM64 mismatched systems are not isolated > > > > by cpusets. > > > > > > > > Signed-off-by: Frederic Weisbecker <frederic@kernel.org> > > > > Reviewed-by: Waiman Long <longman@redhat.com> > > > > --- > > > > arch/arm64/kernel/cpufeature.c | 18 +++++++++++++++--- > > > > include/linux/cpu.h | 4 ++++ > > > > kernel/cgroup/cpuset.c | 17 ++++++++++++++--- > > > > 3 files changed, 33 insertions(+), 6 deletions(-) > > > > > > tbh, I'd also be fine just saying that isolation isn't reliable on these > > > systems and then you don't need to add the extra arch hook. > > > > Hmm, I think I heard about nohz_full usage on arm64 but I'm not sure. > > And I usually expect isolcpus or cpuset isolated partitions to be even > > more broadly used, it's lighter isolation with less constraints. > > > > Anyway you're probably right that we could remove isolation support here > > but I don't want to break any existing user. > > fwiw, I think it's only some Android markets using the mismatched 32-bit > support and we're definitely not using nohz_full there. Now that removal becomes appealing. And what about isolcpus= / isolated cpuset which only consist in scheduler domain isolation? Probably not used by android either. Ok but is there a way to detect on early boot that the system has mismatched 32 bits support? Because I need to fail nohz_full= and isolcpus= boot parameters early on top of this information without waiting for secondary CPUs boot. Thanks. -- Frederic Weisbecker SUSE Labs
On Thu, Jan 22, 2026 at 12:29:17PM +0100, Frederic Weisbecker wrote: > Le Thu, Jan 22, 2026 at 09:56:29AM +0000, Will Deacon a écrit : > > On Wed, Jan 21, 2026 at 06:06:07PM +0100, Frederic Weisbecker wrote: > > > Le Tue, Jan 20, 2026 at 03:15:14PM +0000, Will Deacon a écrit : > > > > Hi Frederic, > > > > > > > > On Thu, Jan 01, 2026 at 11:13:54PM +0100, Frederic Weisbecker wrote: > > > > > When none of the allowed CPUs of a task are online, it gets migrated > > > > > to the fallback cpumask which is all the non nohz_full CPUs. > > > > > > > > > > However just like nohz_full CPUs, domain isolated CPUs don't want to be > > > > > disturbed by tasks that have lost their CPU affinities. > > > > > > > > > > And since nohz_full rely on domain isolation to work correctly, the > > > > > housekeeping mask of domain isolated CPUs should always be a superset of > > > > > the housekeeping mask of nohz_full CPUs (there can be CPUs that are > > > > > domain isolated but not nohz_full, OTOH there shouldn't be nohz_full > > > > > CPUs that are not domain isolated): > > > > > > > > > > HK_TYPE_DOMAIN | HK_TYPE_KERNEL_NOISE == HK_TYPE_DOMAIN > > > > > > > > > > Therefore use HK_TYPE_DOMAIN as the appropriate fallback target for > > > > > tasks and since this cpumask can be modified at runtime, make sure > > > > > that 32 bits support CPUs on ARM64 mismatched systems are not isolated > > > > > by cpusets. > > > > > > > > > > Signed-off-by: Frederic Weisbecker <frederic@kernel.org> > > > > > Reviewed-by: Waiman Long <longman@redhat.com> > > > > > --- > > > > > arch/arm64/kernel/cpufeature.c | 18 +++++++++++++++--- > > > > > include/linux/cpu.h | 4 ++++ > > > > > kernel/cgroup/cpuset.c | 17 ++++++++++++++--- > > > > > 3 files changed, 33 insertions(+), 6 deletions(-) > > > > > > > > tbh, I'd also be fine just saying that isolation isn't reliable on these > > > > systems and then you don't need to add the extra arch hook. > > > > > > Hmm, I think I heard about nohz_full usage on arm64 but I'm not sure. > > > And I usually expect isolcpus or cpuset isolated partitions to be even > > > more broadly used, it's lighter isolation with less constraints. > > > > > > Anyway you're probably right that we could remove isolation support here > > > but I don't want to break any existing user. > > > > fwiw, I think it's only some Android markets using the mismatched 32-bit > > support and we're definitely not using nohz_full there. > > Now that removal becomes appealing. And what about isolcpus= / isolated cpuset > which only consist in scheduler domain isolation? Probably not used by android > either. > > Ok but is there a way to detect on early boot that the system has mismatched > 32 bits support? Because I need to fail nohz_full= and isolcpus= boot parameters > early on top of this information without waiting for secondary CPUs boot. Honestly, I'm not sure I'd bother trying to be smart here. Even if the system has enabled support for mismatched 32-bit CPUs, things should still work properly with nohz_full/isolcpus if all the tasks are 64-bit, right? In which case, I'd just document whatever weird behaviour you get if somebody throws 32-bit tasks into the mix. Adding hooks to the generic code for this use-case just seems like a waste, as they're not going to be used in practice and it increases the maintenance burden. Will
Le Thu, Jan 22, 2026 at 11:36:21AM +0000, Will Deacon a écrit :
> On Thu, Jan 22, 2026 at 12:29:17PM +0100, Frederic Weisbecker wrote:
> > Le Thu, Jan 22, 2026 at 09:56:29AM +0000, Will Deacon a écrit :
> > > On Wed, Jan 21, 2026 at 06:06:07PM +0100, Frederic Weisbecker wrote:
> > > > Le Tue, Jan 20, 2026 at 03:15:14PM +0000, Will Deacon a écrit :
> > > > > Hi Frederic,
> > > > >
> > > > > On Thu, Jan 01, 2026 at 11:13:54PM +0100, Frederic Weisbecker wrote:
> > > > > > When none of the allowed CPUs of a task are online, it gets migrated
> > > > > > to the fallback cpumask which is all the non nohz_full CPUs.
> > > > > >
> > > > > > However just like nohz_full CPUs, domain isolated CPUs don't want to be
> > > > > > disturbed by tasks that have lost their CPU affinities.
> > > > > >
> > > > > > And since nohz_full rely on domain isolation to work correctly, the
> > > > > > housekeeping mask of domain isolated CPUs should always be a superset of
> > > > > > the housekeeping mask of nohz_full CPUs (there can be CPUs that are
> > > > > > domain isolated but not nohz_full, OTOH there shouldn't be nohz_full
> > > > > > CPUs that are not domain isolated):
> > > > > >
> > > > > > HK_TYPE_DOMAIN | HK_TYPE_KERNEL_NOISE == HK_TYPE_DOMAIN
> > > > > >
> > > > > > Therefore use HK_TYPE_DOMAIN as the appropriate fallback target for
> > > > > > tasks and since this cpumask can be modified at runtime, make sure
> > > > > > that 32 bits support CPUs on ARM64 mismatched systems are not isolated
> > > > > > by cpusets.
> > > > > >
> > > > > > Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> > > > > > Reviewed-by: Waiman Long <longman@redhat.com>
> > > > > > ---
> > > > > > arch/arm64/kernel/cpufeature.c | 18 +++++++++++++++---
> > > > > > include/linux/cpu.h | 4 ++++
> > > > > > kernel/cgroup/cpuset.c | 17 ++++++++++++++---
> > > > > > 3 files changed, 33 insertions(+), 6 deletions(-)
> > > > >
> > > > > tbh, I'd also be fine just saying that isolation isn't reliable on these
> > > > > systems and then you don't need to add the extra arch hook.
> > > >
> > > > Hmm, I think I heard about nohz_full usage on arm64 but I'm not sure.
> > > > And I usually expect isolcpus or cpuset isolated partitions to be even
> > > > more broadly used, it's lighter isolation with less constraints.
> > > >
> > > > Anyway you're probably right that we could remove isolation support here
> > > > but I don't want to break any existing user.
> > >
> > > fwiw, I think it's only some Android markets using the mismatched 32-bit
> > > support and we're definitely not using nohz_full there.
> >
> > Now that removal becomes appealing. And what about isolcpus= / isolated cpuset
> > which only consist in scheduler domain isolation? Probably not used by android
> > either.
> >
> > Ok but is there a way to detect on early boot that the system has mismatched
> > 32 bits support? Because I need to fail nohz_full= and isolcpus= boot parameters
> > early on top of this information without waiting for secondary CPUs boot.
>
> Honestly, I'm not sure I'd bother trying to be smart here. Even if the
> system has enabled support for mismatched 32-bit CPUs, things should
> still work properly with nohz_full/isolcpus if all the tasks are 64-bit,
> right?
>
> In which case, I'd just document whatever weird behaviour you get if
> somebody throws 32-bit tasks into the mix. Adding hooks to the generic
> code for this use-case just seems like a waste, as they're not going to
> be used in practice and it increases the maintenance burden.
Ok, how does this updated version look now?
---
From: Frederic Weisbecker <frederic@kernel.org>
Date: Thu, 24 Jul 2025 23:38:48 +0200
Subject: [PATCH] sched/arm64: Move fallback task cpumask to HK_TYPE_DOMAIN
When none of the allowed CPUs of a task are online, it gets migrated
to the fallback cpumask which is all the non nohz_full CPUs.
However just like nohz_full CPUs, domain isolated CPUs don't want to be
disturbed by tasks that have lost their CPU affinities.
And since nohz_full rely on domain isolation to work correctly, the
housekeeping mask of domain isolated CPUs should always be a subset of
the housekeeping mask of nohz_full CPUs (there can be CPUs that are
domain isolated but not nohz_full, OTOH there shouldn't be nohz_full
CPUs that are not domain isolated):
HK_TYPE_DOMAIN & HK_TYPE_KERNEL_NOISE == HK_TYPE_DOMAIN
Therefore use HK_TYPE_DOMAIN as the appropriate fallback target for
tasks. Note that cpuset isolated partitions are not supported on those
systems and may result in undefined behaviour.
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Marco Crivellari <marco.crivellari@suse.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Waiman Long <longman@redhat.com>
Cc: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
---
Documentation/arch/arm64/asymmetric-32bit.rst | 12 ++++++++----
arch/arm64/kernel/cpufeature.c | 6 +++---
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/Documentation/arch/arm64/asymmetric-32bit.rst b/Documentation/arch/arm64/asymmetric-32bit.rst
index 57b8d7476f71..fc0c350c5e00 100644
--- a/Documentation/arch/arm64/asymmetric-32bit.rst
+++ b/Documentation/arch/arm64/asymmetric-32bit.rst
@@ -154,10 +154,14 @@ mode will return to host userspace with an ``exit_reason`` of
``KVM_EXIT_FAIL_ENTRY`` and will remain non-runnable until successfully
re-initialised by a subsequent ``KVM_ARM_VCPU_INIT`` operation.
-NOHZ FULL
----------
+SCHEDULER DOMAIN ISOLATION
+--------------------------
-To avoid perturbing an adaptive-ticks CPU (specified using
-``nohz_full=``) when a 32-bit task is forcefully migrated, these CPUs
+To avoid perturbing a boot-defined domain isolated CPU (specified using
+``isolcpus=[domain]``) when a 32-bit task is forcefully migrated, these CPUs
are treated as 64-bit-only when support for asymmetric 32-bit systems
is enabled.
+
+However as opposed to boot-defined domain isolation, runtime-defined domain
+isolation using cpuset isolated partition is not advised on asymmetric
+32-bit systems and will result in undefined behaviour.
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index c840a93b9ef9..f0e66cb27d17 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -1669,7 +1669,7 @@ const struct cpumask *system_32bit_el0_cpumask(void)
const struct cpumask *task_cpu_fallback_mask(struct task_struct *p)
{
- return __task_cpu_possible_mask(p, housekeeping_cpumask(HK_TYPE_TICK));
+ return __task_cpu_possible_mask(p, housekeeping_cpumask(HK_TYPE_DOMAIN));
}
static int __init parse_32bit_el0_param(char *str)
@@ -3987,8 +3987,8 @@ static int enable_mismatched_32bit_el0(unsigned int cpu)
bool cpu_32bit = false;
if (id_aa64pfr0_32bit_el0(info->reg_id_aa64pfr0)) {
- if (!housekeeping_cpu(cpu, HK_TYPE_TICK))
- pr_info("Treating adaptive-ticks CPU %u as 64-bit only\n", cpu);
+ if (!housekeeping_cpu(cpu, HK_TYPE_DOMAIN))
+ pr_info("Treating domain isolated CPU %u as 64-bit only\n", cpu);
else
cpu_32bit = true;
}
--
2.51.1
© 2016 - 2026 Red Hat, Inc.