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 A5F07C77B7C for ; Wed, 25 Jun 2025 17:49:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F39166B00CA; Wed, 25 Jun 2025 13:49:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F10596B00CD; Wed, 25 Jun 2025 13:49:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DFF0F6B00CE; Wed, 25 Jun 2025 13:49:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id CEEEA6B00CA for ; Wed, 25 Jun 2025 13:49:41 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 4DDF3104408 for ; Wed, 25 Jun 2025 17:49:41 +0000 (UTC) X-FDA: 83594660562.16.98DAA0B Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) by imf30.hostedemail.com (Postfix) with ESMTP id 5D35E80010 for ; Wed, 25 Jun 2025 17:49:39 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fDeQhYSW; spf=pass (imf30.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.215.173 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750873779; 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=c1ioaSGcSzaoSqR57at2NFDMA+eF56Ru2c256CsXdIs=; b=qIjoGPA5ywQTgQuxQlDegrSUO+inxm2XWYTMGAyP9mVdGua9gaIUSTwBiNj4xsQ1KwdZ14 x0kI8P3lhJwBJwdUMVKBYt836VDuY1dfHKMXgBB4WwMGG3geBqhRp9QevkM3npy8/7k2gt 5ciGAo2GsFLyMUxyFayzhjJEvh+yGRY= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fDeQhYSW; spf=pass (imf30.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.215.173 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750873779; a=rsa-sha256; cv=none; b=UGuMNWhZvfS6nZLdefCri1AFZHFNoewWwbqeWv4Ea53lqioX9l/lpTOne7htlMb32EpR99 HrZB4ys8HW94mBUJL5C0q84SV5pgnn9hj2XxS/GvLRYFd2TSuWnyHyfxyJ5mKsKTxmsMs6 dszNoF1SZq4vUKcUQuluHBkl5GWhfyw= Received: by mail-pg1-f173.google.com with SMTP id 41be03b00d2f7-b31c84b8052so152638a12.1 for ; Wed, 25 Jun 2025 10:49:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750873778; x=1751478578; 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=c1ioaSGcSzaoSqR57at2NFDMA+eF56Ru2c256CsXdIs=; b=fDeQhYSW8FYOtpHKd5G46roC4x6mA7R8j1KAQkgKF9KiVTC7G8qcojeEno6GOum6dm X5o3FsUKKjSrtWkgQHXfmMdME4NwOHNRBdUETpmwaD0P4S2axP7IALPFyGQ2zBySlBvN CzvC6FyGWUaeYVgIzIbDhLJpff497NAAHge09wWU8079fcBLFjSKf5ReUeBB023Yc8gs //cM6XHT633bmrptMYIpb/vPZbkzy3N8bJs8gOXmtAD2mt+zW+FOLCTDmfJl8vjtUhWc i1zFy7iTgm4rAl6NopDNEGlgBgnWbGDF0sT8pOsroZJVHGVDpFLBlzC/R93RRr9TGWlS TKUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750873778; x=1751478578; 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=c1ioaSGcSzaoSqR57at2NFDMA+eF56Ru2c256CsXdIs=; b=DjVB/K2dG1th5xXAXGLeWNcHtH5j5g9MYZQQO2tVf/rFcAn6ck2CL6fNYOctpSPF5U hvTLBqfJG3BLEKRF1uvkCr9Qi4zVQfsjZsiQ2Id6+h51pFH634MgPt//SYd45WeseJWs tCejnpEw3kkIU3baKwLkLfMOL5uXYJjZd1I0ymoAJqbCe0TCgaBLts8p9ql0IaC/WdPL DVnE8Qr1qkQ3/OKlayp6eBx4sBTseAgbLGUQ/PeKfMpx8AV51Zk0TkM9KeMvseglJZlQ 6CYtpLgqzfkiNx86J1eefp6cZZfi/8G4ryhuccdQGp6BGpwKj7+2qeOBWKRk/dboWdv5 T/7w== X-Gm-Message-State: AOJu0YxBmyEtbVtEtjvlRiTiTczDvgvR/uut8GsvPModh6nfNswown7s xUbg0a/Ed/b/3vpvN3KnvRYuU62uLLhfMKaidh/fs48O1OQQ1SqrPF4dPPe+nxAL X-Gm-Gg: ASbGncv0li8/GbgQ1jZ0AGXmsb1o/BfsRLT15nQSMcsWxjnig1zqAcIZpceRN+yCHtC z7EB/XkG7MWk3t2XLvHJ3vdkz6AYRpGDppodbv1UTceOam/OLLNSgHiH96IPw7wnXikBxJIwq4r xgUShwuoUc1p67C4YOWB2SXHfPLRlxEYMEP4MeyAuFtZKOTRFyTFduWp7fvTc66PsjCrKqDl9NS jr6kynpu97xZx4CpEp0KAPBtuFjqwcMqRuqvSWrO7AOS76qCyYicFyRgj/QijwTubRmcOHdKCGM l0BXH5DYXtX8Tp/LmJ5aXoa2fT+T+SSYkwjKF+hYS3wXXUTyfq7nIV91BOyG2uUUvOWnnQ+nVpY SErzFYy4JZbWT3EkyFHdXdNYtXpbZuNw= X-Google-Smtp-Source: AGHT+IFipD4D2odHuNdn/ATlCMR+IXWifKXifixJMQ7PhzMzFi6ZABQLZm7aZko8k9Nhwg8uIoSZQQ== X-Received: by 2002:a05:6a20:7d9a:b0:21f:5361:d7f7 with SMTP id adf61e73a8af0-2207f285b2cmr7515854637.31.1750873777676; Wed, 25 Jun 2025 10:49:37 -0700 (PDT) Received: from fedora.. (c-67-164-59-41.hsd1.ca.comcast.net. [67.164.59.41]) by smtp.googlemail.com with ESMTPSA id d2e1a72fcca58-749b5e23879sm4944869b3a.57.2025.06.25.10.49.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Jun 2025 10:49:37 -0700 (PDT) From: "Vishal Moola (Oracle)" To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, "Matthew Wilcox (Oracle)" , David Hildenbrand , Jordan Rome , Andrew Morton , "Vishal Moola (Oracle)" Subject: [RFC PATCH 1/3] mm/memory.c: convert __copy_remote_vm_str() to folios Date: Wed, 25 Jun 2025 10:48:39 -0700 Message-ID: <20250625174841.1094510-2-vishal.moola@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250625174841.1094510-1-vishal.moola@gmail.com> References: <20250625174841.1094510-1-vishal.moola@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 5D35E80010 X-Stat-Signature: 63s41h5xypwmaxyzcmomu6cyhswwtzzc X-Rspam-User: X-HE-Tag: 1750873779-924590 X-HE-Meta: U2FsdGVkX18aEHjuRcU7AF1mAN9emiplJxN5lLopOAcLUtq6IJWsR/lQkGvHofFQe2WPTYiDHKDO8BwzxtX+wJKY5nFeOHs7CXQesoWZfj+w64O9sty4Iq5jZcDM1XobvCKzFh07ph03khU+zpbY7+YU29Q6H63fN0xt3E3//EqcxXg7SwZE4F6ROvNx7k5emfzrTbR9dkeogpiWwFEBEgdsI9Na7dCo/ljh2/feFKlapL3q/iQ353VYg4aG/AFBiuutwLE11OhULEUK5lOTX2rPlhOVWlQJq7QYfZ3EISgYuvFKGhUDtsZisNdu2ek3lOSf+Oy1C5hus1w8jnjwDB3q8wgnRcXziX6x+pkJPjNUv0aNoZ0ZvGOeqbHuTd3xcHnvoYgZ1JbWV2M8cg1HeBMWdG4l4cP20Hv7gZRg7vnCjCfZJCib+X5EmnxckM2UM3k0zqP0QYTSjjI8G2uR9J55WjXki0wx1WSrcTPRYZ2eF0X5JAXhbJX7qSq1iracReFHXfq0KFuWrfYGK3O6IMgzUka4WGNoyuhhKy+4pEXlslZ+e2jaTIpuG7r+PnqrKGe0Yp1ggxkPiUeHozjxtJUPhQTrDtdEeZajRNhSuopltSTcSn9qSC3/E38YtFfthZxi5e9zX4ldenB/oGBCnTeKl52jr0kTVbuQmkiS3IbXHwnZeLMnKmsaPFIHM8BD8T8dZBjiylrIUlVRMT1fRnfeVxD4pon4uM2EhLY7RaGso4hmZBNDLJzJqWDABlFBjLkEX0YCK0yVXehieLABjkcF+MqsPbRW8jAJT5M5V4HJAOYP79h8z3CLrnamyTfXKZHaG9fPUPPTuXPqeCYGhp8WhStL9LaRBowi4sLJ/l9yLyhZFoZNO88pO4ViVyP3f+CbMJSYm8d1clIhkNR8oz0mk4Oh+1WLSLjFrIRgyc0x3UQmQBzq25H6gToWZw2kLlBFsRB64O+3aAurRmd jQbi+Kb2 8jIcOY9Be66HIK4zuQTXK3AfxEPcpHl0p4IhleJfT+YjxR6gBh0ROW1PpMlWa7aEMuveIILyXnMApoczt7hzdcsvoMKKL9OR/6kWg/4USsgFm4yy/YIeBx+U0lIn0/mp5AKXfC67Q1vzWU8Aykthzy5VGfuEazrg1nSi4XjVH8LpT5x/RG/qJtONrqskXyl2mKflXsNrPdvDlc/FCSE14b6R/Fcmb+dyQOv0PKapN8zB9XWbLHATFPUKoJnLYq5mGO/EfYVIwbsWIO8df24QBHhkPk9CUq4UV50+rJPkEl78W6HG7MbniVUCzE7miw1cfnY1rLktnlnsoeVBp2A1YpVcR/Dd7LCUZS5Qm1Ljb8H6nTzr4nL6lumtRKAOwtE5BlZGXAEUFpZrOd1fkMeaS+iU6RJKNooaeJ5z+WJB17kyQxsamnTTh/VffK4XhCj0/SSLH+rhlpJpSmwTxTh5nDIUeJ5NjaZkkbJ0DZR23d0VSUnBA3+sMn8hxbHGfiau17DBhGFHQ+5zPUqvSa4tLzf3FiU8VDqjItNKq7nGhrZCVDYY9Bo/GC/exUomhbXyjuJpkrc2s3sUATbjzVSRwS4Fe7A== 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: Use kmap_local_folio() instead of kmap_local_page(). Replaces 2 calls to compound_head() from unmap_and_put_page() with one. This prepares us for the removal of unmap_and_put_page(), and helps prepare for the eventual gup folio conversions since this function now supports individual subpages from large folios. Signed-off-by: Vishal Moola (Oracle) --- mm/memory.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 0f9b32a20e5b..747866060658 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -6820,9 +6820,10 @@ static int __copy_remote_vm_str(struct mm_struct *mm, unsigned long addr, } while (len) { - int bytes, offset, retval; + int bytes, folio_offset, page_offset retval; void *maddr; struct page *page; + struct folio *folio; struct vm_area_struct *vma = NULL; page = get_user_page_vma_remote(mm, addr, gup_flags, &vma); @@ -6837,17 +6838,20 @@ static int __copy_remote_vm_str(struct mm_struct *mm, unsigned long addr, goto out; } + folio = page_folio(page); bytes = len; - offset = addr & (PAGE_SIZE - 1); - if (bytes > PAGE_SIZE - offset) - bytes = PAGE_SIZE - offset; + folio_offset = offset_in_folio(folio, addr); + page_offset = offset_in_page(folio_offset); + + if (bytes > PAGE_SIZE - page_offset) + bytes = PAGE_SIZE - page_offset; - maddr = kmap_local_page(page); - retval = strscpy(buf, maddr + offset, bytes); + maddr = kmap_local_folio(folio, folio_offset); + retval = strscpy(buf, maddr, bytes); if (retval >= 0) { /* Found the end of the string */ buf += retval; - unmap_and_put_page(page, maddr); + folio_release_kmap(folio, maddr); break; } @@ -6859,13 +6863,16 @@ static int __copy_remote_vm_str(struct mm_struct *mm, unsigned long addr, */ if (bytes != len) { addr += bytes - 1; - copy_from_user_page(vma, page, addr, buf, maddr + (PAGE_SIZE - 1), 1); + copy_from_user_page(vma, + folio_page(folio, folio_offset / PAGE_SIZE), + addr, buf, + maddr + (PAGE_SIZE - page_offset - 1), 1); buf += 1; addr += 1; } len -= bytes; - unmap_and_put_page(page, maddr); + folio_release_kmap(folio, maddr); } out: -- 2.49.0