Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3173027pxu; Tue, 8 Dec 2020 05:34:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJyVNZtkPdKISQMPi/gg+dsERFN/rbdg6BdhPYkiWS2MzrkQJy8AL45uhny+tUxEMdoQpjT1 X-Received: by 2002:a05:6402:30ac:: with SMTP id df12mr9236745edb.175.1607434440776; Tue, 08 Dec 2020 05:34:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607434440; cv=none; d=google.com; s=arc-20160816; b=wyrG9lL8HEbmX3oJ/yNzB8NrA0qE8pCy723bRqmJrCHlo4CVlrx2uxfOK0l2CSDKpb hlnX0XiLrLL4mm16LGPlDpt8u3gJp7OhZFxYEx/hMA5JX018FKEmaypAolH/INwN0njQ Pg4Jd/NTUx0gkctLRWFxveNnSwGkF36A1jCOujG77c1gjZ4bCCRCbx+RGuqGmUwmW3Ff KO0qQjDK6KRljfbzQVOj0xuUUeNKQvHYWZ6G6T1w+I50AQ7iTR5e27/hIGRpjTRI1iIW FpYWX3rBjGqzHg1QE+oIlVGZM1weY+qPvXDqOjQhAskBDKV9IeQP8ubyb3+pyEUEczl8 au7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=bD7RWe+3MJAyG3jpuPaqc1EYf72VPE4LPoU3OY42Z8I=; b=nK3UzaO8oUPC4Tgzhp5XgoxK3akHn2QD4qXONCagDBmG2m0Uxd+nj6PaJVoTfw8OO8 IX/1EBsnSmSSvOgj4Ryg6hhzXBMEGfqpg+eVBFPVrH4QAH6+qePa88Mk1JeIQrzF+IEz 2k52ICEWbbjdls0UJyavkkpceh/95IlVjM/Kiz5cJ6HCs8uUTHU1sSFhDuMOryoG5j8s nihK3W3u/SFAW2XMeYJxMjo4SyMlwB0uGyaIBD7544hgW8q2+TgcWgI8fHlbr+cEuX+f wjLfqXyeDlW4C52eDp/8ugpH3+BCThSVQv52PDg9XVKDgY3LNaz28klFJ95S7QVIY/rL 1g9w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gb20si8562170ejc.685.2020.12.08.05.33.38; Tue, 08 Dec 2020 05:34:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729469AbgLHNaU (ORCPT + 99 others); Tue, 8 Dec 2020 08:30:20 -0500 Received: from mail.kernel.org ([198.145.29.99]:49582 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729461AbgLHNaT (ORCPT ); Tue, 8 Dec 2020 08:30:19 -0500 From: Will Deacon Authentication-Results: mail.kernel.org; dkim=permerror (bad message/signature format) To: linux-arm-kernel@lists.infradead.org Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, Will Deacon , Catalin Marinas , Marc Zyngier , Greg Kroah-Hartman , Peter Zijlstra , Morten Rasmussen , Qais Yousef , Suren Baghdasaryan , Quentin Perret , Tejun Heo , Li Zefan , Johannes Weiner , Ingo Molnar , Juri Lelli , Vincent Guittot , kernel-team@android.com Subject: [PATCH v5 12/15] arm64: exec: Adjust affinity for compat tasks with mismatched 32-bit EL0 Date: Tue, 8 Dec 2020 13:28:32 +0000 Message-Id: <20201208132835.6151-13-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201208132835.6151-1-will@kernel.org> References: <20201208132835.6151-1-will@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When exec'ing a 32-bit task on a system with mismatched support for 32-bit EL0, try to ensure that it starts life on a CPU that can actually run it. Reviewed-by: Quentin Perret Signed-off-by: Will Deacon --- arch/arm64/kernel/process.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 9a2532d848f0..da313b738c7c 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -633,8 +633,20 @@ void arch_setup_new_exec(void) if (is_compat_task()) { mmflags = MMCF_AARCH32; - if (static_branch_unlikely(&arm64_mismatched_32bit_el0)) + + /* + * Restrict the CPU affinity mask for a 32-bit task so that + * it contains only 32-bit-capable CPUs. + * + * From the perspective of the task, this looks similar to + * what would happen if the 64-bit-only CPUs were hot-unplugged + * at the point of execve(), although we try a bit harder to + * honour the cpuset hierarchy. + */ + if (static_branch_unlikely(&arm64_mismatched_32bit_el0)) { + force_compatible_cpus_allowed_ptr(current); set_tsk_thread_flag(current, TIF_NOTIFY_RESUME); + } } current->mm->context.flags = mmflags; -- 2.29.2.576.ga3fc446d84-goog