From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9524C5B549 for ; Fri, 30 May 2025 09:34:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 769256B00C0; Fri, 30 May 2025 05:34:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6F1AA6B00C1; Fri, 30 May 2025 05:34:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4CE4E6B00C2; Fri, 30 May 2025 05:34:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 2A3956B00C0 for ; Fri, 30 May 2025 05:34:24 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id DB0C4A5427 for ; Fri, 30 May 2025 09:34:23 +0000 (UTC) X-FDA: 83499063606.12.3CAFB38 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by imf28.hostedemail.com (Postfix) with ESMTP id 42805C0009 for ; Fri, 30 May 2025 09:34:21 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=PzZs1Ggt; spf=pass (imf28.hostedemail.com: domain of libo.gcs85@bytedance.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=libo.gcs85@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748597662; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=J8WmlWSYokiEZq8ImcTa9QlYOraa+eQKx+5TbFt2hGQ=; b=pdGIuuWgChaxu/FEEgySMs6lNmWsQljoy8GXq1k5o57+LzvsZopAPCKLFuHvBII8ReNcAY Ai0bn31v04ZwlxP5XX408pOonD4XN0Gue4T2TeQe5KnrdrAeNIrWx9kvnwe7c1N0s6j+ii V4oQOF57cWyzPhLTXa9rXnSur3Fe8n0= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=PzZs1Ggt; spf=pass (imf28.hostedemail.com: domain of libo.gcs85@bytedance.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=libo.gcs85@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748597662; a=rsa-sha256; cv=none; b=gAfFPeOU/YQ7XoUB8mI1FRPxYJjD/9nJa9CMq5/VSzfuqv4hmxT+mW6b+utf1brXmp8Zz9 kQShO/FOZ37RVlz1nKkkOQnTO43YYxZetbEoZEB4oT91cUxz1LdYn7mV9IqZ2DYeP/zBFA XLuVzTgqz3tKYuv/zzoeCRu1jXZJ2DA= Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-306bf444ba2so1551417a91.1 for ; Fri, 30 May 2025 02:34:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1748597660; x=1749202460; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J8WmlWSYokiEZq8ImcTa9QlYOraa+eQKx+5TbFt2hGQ=; b=PzZs1GgtYKQ87CQjdq0ijYnT+jdwrVRqvOUiL6Cyk3xh6CkN1K9IX7hRcnYzzRF/rh zOKRuyBpNfscZxhuKTQ/86gJnnNT6L3Vlu+WyhG85gT6JxsSJTM+x7Dt8NpoJ7KnDV8V UvOAteVQg1XCb+4I8tZ9NrFJAPVELUcpaWzkQdRymjHuP6DYbFU5XuqqpVzGQO0NhLLj O9rNVnsEcd/zPgNaRDQHPqtmsIDuBtlbE2zHPsrWcjD6rJlqFxLB93/9hEl1tOAiZz5F cWtYQow8bi7pqOIkOAZc0ghOcGPZcqNq5HVk1Bge3Lh+8HIMDjK32WsyWjwsWtejq01t ETTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748597660; x=1749202460; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J8WmlWSYokiEZq8ImcTa9QlYOraa+eQKx+5TbFt2hGQ=; b=hl5C+K5m3j8KnTMhKZhVGInAVsnJS3HD9FvIsE0Q5hcMS+w+aH6BocKJEgTbldX5Pm /ND2OMYQizBLoU3Tn3us7DgD1itV5cv9BpwalIaLUdFKH7NZhXAocbJXWocF0ZbSY7Bn WRY/ve4Wdz8PAK/Li+ExXx8xo38zKSEPklPXKVMMvMBXPwteLkryckJ0J1uzPWPti5+N ZJmhTqZ/pPURqTGX4lLnFTcvvhO73AE7ZKXdzLDOvqtthdD4I2YOnWLDW3YNnJqm/U83 pIiqqdvc6Vnl1We/KrvE3Oqd/Ll6Ha0XbnrniKEtEy4cA3gZWjQGhMgY+6lfBjnD7sWQ Jwpw== X-Forwarded-Encrypted: i=1; AJvYcCURCc6IOagGLYr17ydeXIyFHzRqhcCTrRvX7wLWVfnkkyZttskdaKxtG+Ugbv0KQHomXMarbloIqg==@kvack.org X-Gm-Message-State: AOJu0YxtV/WZNIWPQ2rhYUEPhMvUEpSydzGc43Rv6lqtAYOGcC7281Y+ 1GVuXLZT5XFUmWT1a2R9+7azAxE+QTMsFJfX2jT/szYZGzAPaB4nsvuSE5lu1nEkUxU= X-Gm-Gg: ASbGncuxU0PELJOLvmXgKRz6MYVwZEhVHf/WyVYABIIBlbsQczxt/KRtR4lL5T/5bC0 Bp4amOvNuXfT9uYvxZQvQle7em315K2BzZdxQAe8yJYz+WQyHeeeYkRUE6bjyyuTqL1ikmJbeQm 35vFbM5CxyEmMKx6utX2YKp9HC9oeqAhsmSadodl4xE5Hc+p0/DKLrCbvolwbars2FIyNtk3PuH ipAcJB+vOv0BtLkrNJ1f7xKF6aTGdaqnjsIHFMfsrjO5J8maeJe8aw6an7ey73ORnfrLnwJhpry 8QGOLlmPC8U6xgF3Mz4GH9OX6FQQDqoQZZ9JuW/Rc1Op8dsAq2jQ8TjNMcx+B2/H0PdZjS7R8P6 Oj9MJS/EHvQ== X-Google-Smtp-Source: AGHT+IF4zFLLKAk8uepZIGBZM+3fXRB/hltSj95jGD1vqbYt83ikw4yeQ1JJHBQBbftK0SQTg3CQlA== X-Received: by 2002:a17:90a:d2cf:b0:311:a314:c2c7 with SMTP id 98e67ed59e1d1-3124150e346mr4368890a91.2.1748597660011; Fri, 30 May 2025 02:34:20 -0700 (PDT) Received: from FQ627FTG20.bytedance.net ([63.216.146.178]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3124e29f7b8sm838724a91.2.2025.05.30.02.34.05 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 30 May 2025 02:34:19 -0700 (PDT) From: Bo Li To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, luto@kernel.org, kees@kernel.org, akpm@linux-foundation.org, david@redhat.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, peterz@infradead.org Cc: dietmar.eggemann@arm.com, hpa@zytor.com, acme@kernel.org, namhyung@kernel.org, mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, kan.liang@linux.intel.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, mhocko@suse.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, jannh@google.com, pfalcato@suse.de, riel@surriel.com, harry.yoo@oracle.com, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, duanxiongchun@bytedance.com, yinhongbo@bytedance.com, dengliang.1214@bytedance.com, xieyongji@bytedance.com, chaiwen.cc@bytedance.com, songmuchun@bytedance.com, yuanzhu@bytedance.com, chengguozhu@bytedance.com, sunjiadong.lff@bytedance.com, Bo Li Subject: [RFC v2 23/35] RPAL: resume cpumask when fork Date: Fri, 30 May 2025 17:27:51 +0800 Message-Id: <45c1884aaf21256ed6fc66b4a4a716bffebb54e1.1748594841.git.libo.gcs85@bytedance.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 42805C0009 X-Stat-Signature: 3ma6q9mhpr4wfk5uhm6yzxjn51daupmu X-Rspam-User: X-HE-Tag: 1748597661-647533 X-HE-Meta: U2FsdGVkX18DMXcLlt0H6yqGUb/JZpaPK6Vb4PsK0sZuDCYmfCMMf6vA4RQAU1wXTSoJ1OGOrssUOKaF9IfhqgxRdbpDvrBChyAe+/32WqmgMy37Qb+vUMCf/vuMjwaBbS6IqRh5/Fl0CHCoqgGjcyq7qXvtr/cRm2jYyKpTetL0Oj6Mh9tzZrJGIZ0MF/gMecAPfxkdzY34NM4pEQxO0YfmhYEWffQQt0yMxSbaqiCentpaaXeIhUW+UIOEDUg8wfeb39o7+IecdJEmOqjCBAyfYom+jp8uaQhXHZdMypD274NSzBbTXotX9opeHr9iWURFrW2KSk43jmpbcol6VmeIMTKAbsXsPyFmTj/k8hSZcCi+pzaCPu3XfH+Oz8LI34UdIMD9++n8Xsnb89qa/r5Ggi8D30ydbPooBtVlTE5SGL5NDGdb1wUIuupjnGR91XnfnMkBaG/6c07ukf53B9jc9B13N7OPc590P6Mdf+lqSMpGGo6WIPFRRL6yEr7g8Oo1j69wId4sR2wJmgSifMVK4t4oFSXK8GGWln5E8IH0x1fWn7DCXLGsqAUUwRh+KsIcRaICoDXMYTLMJk21uaWePHNx0QJbazcPOY8BblEEPQ4z66ZCt0/3mmOs+UOTRX3LAXsBEl0xgizuLKqFziS9pbMEeqjzeIqOvHq1klrlyZwU0QotvRCuUcGtnzmSeILEf2/1dXu9PQj4C6VTyimW+EXq08j5zOzGAa4uEeoNen7uv/1U/6K92kPGnSHFzdmCo+FCwwW1cf98qj8sEQIbbGkuswgvoClLdZhJcjaIPkqURL+K5LdAkWm7OHFdjleD1M7XIf6CcmZNqXotMWogU561C4/NvoIUGDYhEfx4jK5LgDDSHfWS+KLgyY7IXfWKPRKsRoPd+gFP/Mw3ztIHhQNkyt8bhaXpJoNrRATRbddfu6TkS9qPGNj0y+4OqZCwrdm4V+mVi5ClYuL ehQLQ1nt HoyS9e50edNmLnChhGqscEzQ6+vXLj3P3FcRSeJV2qyCNczusIyo0InWXLz4r+rumTk/3d1iCgDenseY/O8Dm6bxulibr/1eqHDqVz6JSF+HVrt6f9aWs+M4XaYsy4ozInmrmca5dZyC3/irFBNzFApPqJ5G2AbpMbfhI2pFymgPbo7mWMexutGEz7crZ6SsKSW8jN7Xdj3obNXS4gSlMz+UHaN6Z8oEJW17Uuw8mrUQ7sy1Ru/dKIDolO95MQmtBHq9cdhJzeCujF4LEDLYGtGi3rOXrz8PNtwEtghX4F9fPp1MchnBQmnQKLPTz/By8ModnRIiEsgLEn9vF1/9KygYiXQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: After a lazy switch occurs, RPAL locks the receiver to the current CPU by modifying its cpumask. If the receiver performs a fork operation at this point, the kernel will copy the modified cpumask to the new task, causing the new task to be permanently locked on the current CPU. This patch addresses this issue by detecting whether the original task is locked to the current CPU by RPAL during fork. If locked, assigning the cpumask that existed before the lazy switch to the new task. This ensures the new task will not be locked to the current CPU. Signed-off-by: Bo Li --- arch/x86/kernel/process.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index c1d2dac72b9c..be8845e2ca4d 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -88,6 +89,19 @@ EXPORT_PER_CPU_SYMBOL(cpu_tss_rw); DEFINE_PER_CPU(bool, __tss_limit_invalid); EXPORT_PER_CPU_SYMBOL_GPL(__tss_limit_invalid); +#ifdef CONFIG_RPAL +static void rpal_fix_task_dump(struct task_struct *dst, + struct task_struct *src) +{ + unsigned long flags; + + raw_spin_lock_irqsave(&src->pi_lock, flags); + if (rpal_test_task_thread_flag(src, RPAL_CPU_LOCKED_BIT)) + cpumask_copy(&dst->cpus_mask, &src->rpal_cd->old_mask); + raw_spin_unlock_irqrestore(&src->pi_lock, flags); +} +#endif + /* * this gets called so that we can store lazy state into memory and copy the * current task into the new thread. @@ -100,6 +114,10 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) #ifdef CONFIG_VM86 dst->thread.vm86 = NULL; #endif +#ifdef CONFIG_RPAL + if (src->rpal_rs) + rpal_fix_task_dump(dst, src); +#endif return 0; } -- 2.20.1