From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pz2-f1.google.com (mail-pz2-f1.google.com [74.125.228.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4BD9B414A11 for ; Tue, 7 Jul 2026 13:00:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.1 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783429207; cv=none; b=GrLry4NVoqwQ6tmFMexcf3MjtLr+CgJSthxcyRN1OsN1xLoRFY6WjH9fcoc4efKRSA0D6kLR02YTUezVZzQ8Fv3jQEBmMKDkZsXID5srmj5uoL61hD1ezIPh/fWDy3COK0Nl/K2JMKj1LmJP10vhGykksqwzyoNdUFRgfUC/jnA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783429207; c=relaxed/simple; bh=Uu6ffgw5ANp4RrdWNurpzkvUhN3Hlg5sZPnNxmwEMzY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OOp669R9XsakjfZhQPMnYde7aSyqHHjfDr1iMd28kSFwtNsAZ7Xe589kx2u1Xr55JFUCapW/xkg00ufvTjIu5djCMKI0k/VKGX8RtJaNUr6Hd2hQcev6d1PCl2GO6louHY1o37dI6aEgGAnq3k294kQNlHbVQnpBUjmN/MYC3yg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PwkjeeuH; arc=none smtp.client-ip=74.125.228.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PwkjeeuH" Received: by mail-pz2-f1.google.com with SMTP id 41be03b00d2f7-c9fe62e0da3so655859a12.1 for ; Tue, 07 Jul 2026 06:00:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783429206; x=1784034006; darn=vger.kernel.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=dRG4koxyQiwY5tLrrrfMaCr8tCYmTMxhC2SFHMMXrW4=; b=PwkjeeuHcuI7JrU3TRG0eyjEBDcKRA+t32SN+/gGpoHv65T062UMR+lPu08l9P3GwY NIRLLrtF5NNrr6NSLQEuelBD9AGdNEUTz7o1bvq6nGpoM7Q3fNA0wIHXp/cQh4miMHJg 47m/5ciV0PDdBSgYHZlPOT1e81mZdmdcCqd8cOoUxx1UJco/yLu1DATr4PnReHFp+Tv/ eQm/xpP15DD7cf3t/GCY0cN1s1gHARSdJWfeYncrB53L62xrH/2UnSZDp565kCv+bjdf rvIjtx4FM+TgTazzc8dy1WyjqSEi9rUiTmFUt54EK3W1jPCFgkmwGYdxFXwexz98SZHr Lnew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783429206; x=1784034006; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dRG4koxyQiwY5tLrrrfMaCr8tCYmTMxhC2SFHMMXrW4=; b=orMz4CWQsu8l3wz/eiXNANwkNu67/Z+xyjKpe9R0DopKZGgLcsaOlEsqB8E4Q82yKf 775vY+miyghSyWpvx9k25vSJhrKOll/4TC+A5S1ux93Yr3V9xPMpn4XcuzkBCx1avZFH j9Gxta01rf8diU+by9U+kjPinHp0lVyEKsV1k4I2CxN9QgThiC80v2P6ltIuICT6O2Dr LcHnBkSB8voQe+8ZMjyjmYMjWsU7SlSkLK4p/JC3zEihhq0WWIHtt9vp6R1tzkDkq+e1 5DEQuSJIGFLcLDKLhdy/NOEf0rlQKeI+ERdCA9CVxHCPkJF4Gtk1EzWRCB6mcXSMRDe7 NFpQ== X-Forwarded-Encrypted: i=1; AHgh+RqdZli1FpWTkriwkEGkGejOo13SPscL1IR+etrAtueW3x4uTF17MBeEJZ1qCPBZJ/8c6NKTMXSe0ANGwSk=@vger.kernel.org X-Gm-Message-State: AOJu0YxuvmXQ7VwiqLvptBUiG/qKMgD0CVY0feCeu7PDNB7qj6nyuGm0 kWXN+4GaspH9+WUhg1OsuxR5rPof+JZ1PPoEgLy4DFbQBEP9cUZLmcVf X-Gm-Gg: AfdE7ckSy93CgZDEJg4+dilIbWl6jwnSk/Fr5m8vrmF/9t4WBnkKXWGnHEVWKQaX2xL 1gKA4OJMgmjNE0ONSU/yShVRpOAIZy92fwZFlCT/ZwmTVM69wRvogByINHzO5/lFNXbTmSJfuP+ rgYMJ03WMaJnrzvoC3iU0A5IilvkSGWwn79Ew7EAn9MAVDp7tc2YcousdUAJ52FH7ZRtNDpVJmm TzLf1cgV6T0F1wTtHBm74xfjomjnyZXh/AvxKtAaLRz+m4osleAZqKfa2Wt6hfFsYYtIWa5iJpN HI4XpFgN/H78FRyYToaOXE/Xc1uAuiDQAtUQvr7nqU+LRpGPTyuw8IRjRbGFNoGzaWaLAbopq5P oq3jB+CsiwhVVwHIQ60jnZ4rN73lbEVvn2S0j4JM/FVJ6XdqPnIdm6w0ogidRyRgiGznYsnmT7X XDVYGWzYQ1YFVp9Jjb472UbhBhn8k1aVeWeh1r X-Received: by 2002:a05:6a00:3d0f:b0:847:6ff4:da97 with SMTP id d2e1a72fcca58-84826e92efbmr4766809b3a.61.1783429205836; Tue, 07 Jul 2026 06:00:05 -0700 (PDT) Received: from intel.company.local ([210.184.73.204]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-847f6b5e566sm5415983b3a.3.2026.07.07.05.59.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jul 2026 06:00:05 -0700 (PDT) From: Wandun Chen To: vbabka@kernel.org, david@kernel.org, rostedt@goodmis.org, mhiramat@kernel.org, Alexander.Krabler@kuka.com, hughd@google.com, fvdl@google.com, bigeasy@linutronix.de, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev Cc: akpm@linux-foundation.org, surenb@google.com, mhocko@suse.com, jackmanb@google.com, hannes@cmpxchg.org, ziy@nvidia.com, ljs@kernel.org, riel@surriel.com, liam@infradead.org, harry@kernel.org, jannh@google.com, lance.yang@linux.dev, mathieu.desnoyers@efficios.com, matthew.brost@intel.com, joshua.hahnjy@gmail.com, rakie.kim@sk.com, byungchul@sk.com, gourry@gourry.net, ying.huang@linux.alibaba.com, apopple@nvidia.com, pfalcato@suse.de Subject: [PATCH v2 2/4] mm/mlock: wait for migration to finish when mlocking a folio Date: Tue, 7 Jul 2026 20:59:23 +0800 Message-ID: <20260707125925.3725177-3-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260707125925.3725177-1-chenwandun1@gmail.com> References: <20260707125925.3725177-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Wandun Chen In RT kernels, sysctl_compact_unevictable_allowed is false by default, when the mlock/mlockall system call try to lock all the present page, the mlock_pte_range function skips non-present entries. If these non-present entries are migration entries, and the migration is not guaranteed to have completed before the mlock/mlockall, it may result in a page fault on subsequent access, which then waits for the migration to finish, causing spike latency in RT kernels. Fix it by waiting for the migration to complete during the mlock/mlockall syscall when sysctl_compact_unevictable_allowed is false. Fixes: 90d07210ab55 ("mm: mlock: use folios and a folio batch internally") Suggested-by: Vlastimil Babka Signed-off-by: Wandun Chen Link: https://lore.kernel.org/lkml/c8793c0f-7156-4cb7-9e6e-7909397e2fff@kernel.org/#t --- mm/mlock.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/mm/mlock.c b/mm/mlock.c index 97e49038d8d3..ac65de40b22b 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "internal.h" @@ -361,8 +362,17 @@ static int mlock_pte_range(pmd_t *pmd, unsigned long addr, ptl = pmd_trans_huge_lock(pmd, vma); if (ptl) { - if (!pmd_present(*pmd)) + if (!pmd_present(*pmd)) { + if (unlikely((vma->vm_flags & VM_LOCKED) && + !compaction_allow_unevictable() && + softleaf_is_migration(softleaf_from_pmd(*pmd)))) { + spin_unlock(ptl); + pmd_migration_entry_wait(vma->vm_mm, pmd); + walk->action = ACTION_AGAIN; + return 0; + } goto out; + } if (is_huge_zero_pmd(*pmd)) goto out; folio = pmd_folio(*pmd); @@ -383,8 +393,17 @@ static int mlock_pte_range(pmd_t *pmd, unsigned long addr, for (pte = start_pte; addr != end; pte++, addr += PAGE_SIZE) { ptent = ptep_get(pte); - if (!pte_present(ptent)) + if (!pte_present(ptent)) { + if (unlikely((vma->vm_flags & VM_LOCKED) && + !compaction_allow_unevictable() && + softleaf_is_migration(softleaf_from_pte(ptent)))) { + pte_unmap_unlock(start_pte, ptl); + migration_entry_wait(vma->vm_mm, pmd, addr); + walk->action = ACTION_AGAIN; + return 0; + } continue; + } folio = vm_normal_folio(vma, addr, ptent); if (!folio || folio_is_zone_device(folio)) continue; -- 2.43.0