Received: by 2002:a05:6a10:c604:0:0:0:0 with SMTP id y4csp13823pxt; Wed, 11 Aug 2021 13:16:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxKVFimIbIoCftuuEleGZkm0IbQvaLUcIE/+t4cXAktGo+nZMiFyt0HAcNyEFrWt2rDozuR X-Received: by 2002:a05:6402:280e:: with SMTP id h14mr839490ede.187.1628712981382; Wed, 11 Aug 2021 13:16:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628712981; cv=none; d=google.com; s=arc-20160816; b=of6sxXAHpbhxX875EXOegfYEi4dxE4Slh4+YoE5R25X9TUFgYNX1Kvc7GP1OZn76wV T1KfEFgH/1XDnF53JO/4qt4OdCV2/P0hOCMQ1cWWuKdnIZtEIBJ5cIr8fADrpjcNGMoj RHnq7HAb4KDdCBSymEmn0hLBcvbThc0nesa6Q6O+iWNJk47HgakD2RMTRduWzAQbU7A1 McH7MeATx+OjlNmrcf1Fm0Sc3QOlA9fiL4QgQMoDMtXKCW29rqau9i7KTVmIuWbZ5Vcw nQkzlB2OeArLUet3/xCM/3oUn8R0QL9pvksSzJxBpLp7qTYey7+jvrYzD7jhFFp6oVc9 WUVA== 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=QkAKFbFTopoAEIvD94qtcMqxyg4qRgZvIdgaHLv2YWY=; b=MjfbjvHis0km/mDXQDWN/mPhc/wMw/GuNz/QuzJgXcrn9LP4MMJG3MeA4/rmVITEOf 8VOVb/WmFUlwKn6qX2TRnQspsndGeWT8ZCTitPCmK4vfSm5i3h4F0YYvV/SECltf4hlr tmDIO9N4EGTJwMYrqmrR6SbJeZADcwoSNMpeOyokQOS5sBH3VFfQJI5+dEUjjSAsmm6b JJfSzM6baVsluzC5Go4JtBqIIAusmuEfxZWrdkGb0k5MfHTuMfXd34Z0/Jq0LE8NByt8 HHoDHmLkN/zlUSKp26SutAxusP7Oh6EFsU4741Ap11r3FJzSQDh0xVwwblNpXCA/m6Jb kALw== 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q10si124720ejz.729.2021.08.11.13.15.57; Wed, 11 Aug 2021 13:16:21 -0700 (PDT) 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232034AbhHKUOq (ORCPT + 99 others); Wed, 11 Aug 2021 16:14:46 -0400 Received: from foss.arm.com ([217.140.110.172]:57758 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231953AbhHKUOn (ORCPT ); Wed, 11 Aug 2021 16:14:43 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 961FC113E; Wed, 11 Aug 2021 13:14:17 -0700 (PDT) Received: from e113632-lin.cambridge.arm.com (e113632-lin.cambridge.arm.com [10.1.194.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 844BD3F40C; Wed, 11 Aug 2021 13:14:14 -0700 (PDT) From: Valentin Schneider To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, rcu@vger.kernel.org, linux-rt-users@vger.kernel.org Cc: Catalin Marinas , Will Deacon , Ingo Molnar , Peter Zijlstra , Thomas Gleixner , Steven Rostedt , Daniel Bristot de Oliveira , Sebastian Andrzej Siewior , "Paul E. McKenney" , Frederic Weisbecker , Josh Triplett , Mathieu Desnoyers , Davidlohr Bueso , Lai Jiangshan , Joel Fernandes , Anshuman Khandual , Vincenzo Frascino , Steven Price , Ard Biesheuvel , Boqun Feng , Mike Galbraith Subject: [PATCH v3 2/4] sched: Introduce migratable() Date: Wed, 11 Aug 2021 21:13:52 +0100 Message-Id: <20210811201354.1976839-3-valentin.schneider@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210811201354.1976839-1-valentin.schneider@arm.com> References: <20210811201354.1976839-1-valentin.schneider@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some areas use preempt_disable() + preempt_enable() to safely access per-CPU data. The PREEMPT_RT folks have shown this can also be done by keeping preemption enabled and instead disabling migration (and acquiring a sleepable lock, if relevant). Introduce a helper which checks whether the current task can be migrated elsewhere, IOW if it is pinned to its local CPU in the current context. This can help determining if per-CPU properties can be safely accessed. Note that CPU affinity is not checked here, as a preemptible task can have its affinity changed at any given time (including if it has PF_NO_SETAFFINITY, when hotplug gets involved). Signed-off-by: Valentin Schneider --- include/linux/sched.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index debc960f41e3..8ba7b4a7ee69 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1715,6 +1715,16 @@ static inline bool is_percpu_thread(void) #endif } +/* Is the current task guaranteed to stay on its current CPU? */ +static inline bool migratable(void) +{ +#ifdef CONFIG_SMP + return preemptible() && !current->migration_disabled; +#else + return true; +#endif +} + /* Per-process atomic flags. */ #define PFA_NO_NEW_PRIVS 0 /* May not gain new privileges. */ #define PFA_SPREAD_PAGE 1 /* Spread page cache over cpuset */ -- 2.25.1