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 B0899C02194 for ; Fri, 7 Feb 2025 01:39:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E553A6B0082; Thu, 6 Feb 2025 20:39:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E0541280001; Thu, 6 Feb 2025 20:39:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CA5EE6B0085; Thu, 6 Feb 2025 20:39:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A8F8C6B0082 for ; Thu, 6 Feb 2025 20:39:05 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 2827E1C9238 for ; Fri, 7 Feb 2025 01:39:05 +0000 (UTC) X-FDA: 83091440250.15.9929D82 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by imf04.hostedemail.com (Postfix) with ESMTP id E657B40008 for ; Fri, 7 Feb 2025 01:39:02 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=canonical.com header.s=20210705 header.b=JcrmIxbp; spf=pass (imf04.hostedemail.com: domain of mitchell.augustin@canonical.com designates 185.125.188.122 as permitted sender) smtp.mailfrom=mitchell.augustin@canonical.com; dmarc=pass (policy=none) header.from=canonical.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738892343; a=rsa-sha256; cv=none; b=POUjvAofp61lS6yKqHGX1QZevDwRUYbIr/GxctfBbiatTdfSEmVDSMgmrTwu7hvknl/7tA LHvQF5Gb6B78YAy7wTOW5QGpAkaI5KXko+X+J3pYJMqGhxMHXIOdYT4BVosSXJQ2CusyiF k9tfwncbd0nFSbo6y3l+1dmHvFrjjtY= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=canonical.com header.s=20210705 header.b=JcrmIxbp; spf=pass (imf04.hostedemail.com: domain of mitchell.augustin@canonical.com designates 185.125.188.122 as permitted sender) smtp.mailfrom=mitchell.augustin@canonical.com; dmarc=pass (policy=none) header.from=canonical.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738892343; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=GTkrXOMiM73qeeJp4KtVvMnuZB30bb4oVfWJGcMkjrM=; b=EWOtw8Afp2aDrksVcTejEa2IXzaOuxdCh7j4N2LdXCruG+Nwyjr3FyO4sopAUJ20LvjCjU atKIjUKzzge6y8S/n7rlSlcD6lcQOo5bLjqS2QD0DOiucNvEkPF9btX0uLgXRWFlUFne4w 8J7dGb2ZXdWbvYJ7N3opWUi8CJ0EhNk= Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id D853D3FA55 for ; Fri, 7 Feb 2025 01:39:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1738892340; bh=GTkrXOMiM73qeeJp4KtVvMnuZB30bb4oVfWJGcMkjrM=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=JcrmIxbp5y3i1PepYTSSX7JVMB15UzoktNbLYEoSIJ1aUVHKN233r02ePC9wtYAC+ ZaEuldo0DYXOqdt3dYblZDm9luvJf7NituPljmqPrNiMDSZsK3hKV4HLr5vWdhHF/v NVXvA84dNs73iAMic1X5J7mPjI4KMrPHwHRXdv2lZSVsZfTS71kNmxxcGqp7kNtbH8 qRcS5MoTsz3zLv1FKfcCTy73zJPlKDMJQ7vhIffdAyneD5wbBHctlHTUbPdPX5YFBZ 0NwAXhem7KyFQGNfVNITE+raY/5rrow5G8gqnyCh277nNNaZ7tNoaD2Vq05WaJ16B6 jcg66w0jppG/A== Received: by mail-ed1-f72.google.com with SMTP id 4fb4d7f45d1cf-5dcee17a6a5so1555586a12.2 for ; Thu, 06 Feb 2025 17:39:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738892340; x=1739497140; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GTkrXOMiM73qeeJp4KtVvMnuZB30bb4oVfWJGcMkjrM=; b=qs8e52ZVBJIsY4cYPuyobipc648oqz5kzKkYob1M+fMWJI+5a1KwMVn2y9HmR/LlfJ RVlMbDP+N6QfJwUiFeKgokAAMezQ6LjPZnUCUxFlBQ5E1kzImivnNoWZdJKQ6CXT53WJ M42zpoJvGxeA/JLn0JIBTKNffOiybSHhz/Wg9eTt6inIFm2xkzuHwNaspsHQZLKqwYC9 LGeQzuKfzriUv0uqtkX1I1WXUWenJmzupQ44P+nDRlYLh8lTQCK7xno3Ds/hBHfB8yv9 zpOAXtxbZTfFhRbqoH8xHuJYEcK28PXNworGjdRwPhD7ev+6Mwj+6SkDDzEf1AyT7M2p CH/Q== X-Forwarded-Encrypted: i=1; AJvYcCX07RUBONvJ+4UO+Uiq506NunvvPPEOUd+vYSktYJzlO8/0D4RPFCPXMY8Jr170+UKhKBLnFXOE7w==@kvack.org X-Gm-Message-State: AOJu0YwNoRXAS3rg6fWf1noX4XlModP30xh+uE/neDLYyNzg2CgsMNCh 1acp1y06q9zD4IouXrV22qepaQLkxoPMcPI2tuTocQ448kkUpJrOYA1+0eSkDTcnkf0002hfYUb eb9sKFrI9Soz15juapKwFAThs1hkz8DnwgFzv+uwtgHF7egXbwU4DBYXJNZcPn8Ufwb6Py2dA0Z IGUHdZiuYwYQseRWfZPB6mrIoN5sdzHb6FH7arHqA= X-Gm-Gg: ASbGncuCU6ENexFCne8YnpBfuDMyTN3xH2inFZaTujIBaBPi30P+ZTJP7br/ptR23Pz jtZm5BY8w62yA2kI3ue85J82cxzJj+/7OKRRwJIsh6kOV+hZfFUT+ReO3fL8v X-Received: by 2002:a05:6402:2711:b0:5db:f317:98d7 with SMTP id 4fb4d7f45d1cf-5de4504012amr1547475a12.6.1738892340425; Thu, 06 Feb 2025 17:39:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IFgOhkvrAKf7nnqy6gf6zaVcLFDeVOoBgzqKLIZs9WBroJfeQUTu2VncuzrSklAcKO7aLry1JfOkH3CEhT1YvI= X-Received: by 2002:a05:6402:2711:b0:5db:f317:98d7 with SMTP id 4fb4d7f45d1cf-5de4504012amr1547459a12.6.1738892340077; Thu, 06 Feb 2025 17:39:00 -0800 (PST) MIME-Version: 1.0 References: <20250205231728.2527186-1-alex.williamson@redhat.com> <20250205231728.2527186-5-alex.williamson@redhat.com> In-Reply-To: <20250205231728.2527186-5-alex.williamson@redhat.com> From: Mitchell Augustin Date: Thu, 6 Feb 2025 19:38:49 -0600 X-Gm-Features: AWEUYZlzA01SrkVvm2yXKQXBYBNe15LNEHSv-QmGFlSTajNCQkvq6Nepgp2ijso Message-ID: Subject: Re: [PATCH 4/5] mm: Provide page mask in struct follow_pfnmap_args To: Alex Williamson Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, peterx@redhat.com, clg@redhat.com, akpm@linux-foundation.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: yfiher611go5fiaqncczo4dob8j69iz6 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: E657B40008 X-Rspam-User: X-HE-Tag: 1738892342-668034 X-HE-Meta: U2FsdGVkX1+8/tBcScePEoIv1uMKTccgRLXNWs/QNhCP6EozT+ymnPcMNppbihSZg3YARPeZX87VaSQlfcuxYu0Q6ieTLjLhnUoTn0RAGkXr/zf6zbkJLS8hw5HdDX2malXrl37fZWmbHjkMh+FVQOdmbsr3o/WvdGt0kzA5zuibTiLoMWqa+3ZIkc22Oj+aul9nF0ky5l5pmS6LpvNLPunE38vVHer5Aee1/rI8V4EsvESnoabRdXFuWx9qfakHP0CZkJprGlv9IsgrS4ZotO+B/SW5cXJC5UDuqp2Mka3u2b9YkZRLbQuE0VI/tWvTb1faIF6D8H/1EpnhWCMiGJd0weDUr2N363YqgSH+ENXxQKMBK1cozyV4glOSyAZpC6ukMwgzL1L/5iIZ/AlvWsnylkvhKx0aBknThrKZ2/wozN4txiMzC9l9MG7K78oyA7cnXZXv0g+8igkkRhHsRrcehmK7JKacnj+dvYmdeQ5uChzXq7hWhfTNBt+AxNu4BQ3emnHzYf1Wjh9MsmMN5kWPhYRblc7I5+sIL7ZqG6dohlnoAhKoenRRL8x/GlYO1y/o33I7p988xUu1vq0niewnbi51oz63gfDXPO6RiiXRhyGX8vHyiDt4izp4OWd/LMS7vhV/nCpt7YJAcq+qt+qdkOzMWaTe3PXKwbq0y5ETiM+F1qjvEKxB6VHOYPNJHAnLD7t+d+H73bBWFO6NakW277BEBabkGpTGGDt3HYKyhtcUD7qeMyr7K/eepCY0M34oQQAkObm6IDFVZB3+7Llv0gHPTXya4Ov8CXlSY1TG7hsWury1uJUHFfE6/sCelLMD72C0JscIHt/hUxlJPIw5SVe9G9vPp7J448jWCpoMLim9gYR+q0/BzbSD51BvxD+ENnhY3qs+ic+jAiX3GcuNvtHpFNktSpqX50GYFDDGi9E5Z7dZkUFuhxZTglc4oBY4mSDj/PDtNIw7u82 0L/tB3xP zk2blMakPWo/BwWA8NwM0M34HJd6AjUfyZ2rIqagC5H3h52A+GS8YCB7DjCwxU+VA6NB1TES8k+wDfFTl7sDrIo0AWxoUi5y8I5t47R/5sPKdyB41dUj2w/gH57qu0AmPOa+vGgrmWvFfDuDxoDZ0LGSLKKb9ktroTmFVSkgEzKFTzCrNvho86/ZYeiB2I1CsyhQLRuv9lG0XwVALVBfU9+L/OEg8HZd3t9PKMgaZsMAdiZWrJ9JfBhRNIWJ1nFsq8kQfevNfau27jrShzHVaatDoqvJ1delrdm1+rPbTgq1L03MWydc0wfkv31oLvlTqf8x0p6svGeZ9f29PBUyVQlURBeM5COhdLeTVtXvjUOcU7TxYZ4ellQ5Yls9eUUUgToqLmHixRfq3oRc3cxvNrQ05YBPHnZ2B28Jaeq6uMpcfOVFQGiwaJ2/kuSWd4EjNRqS7Iuxhd+XCTQGOnT4QMPZJ/9MisQLBmgrx1z3xiSJijAw= X-Bogosity: Ham, tests=bogofilter, spamicity=0.005107, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Reviewed-by: "Mitchell Augustin" Tested-by: "Mitchell Augustin" On Wed, Feb 5, 2025 at 5:18=E2=80=AFPM Alex Williamson wrote: > > follow_pfnmap_start() walks the page table for a given address and > fills out the struct follow_pfnmap_args in pfnmap_args_setup(). > The page mask of the page table level is already provided to this > latter function for calculating the pfn. This page mask can also be > useful for the caller to determine the extent of the contiguous > mapping. > > For example, vfio-pci now supports huge_fault for pfnmaps and is able > to insert pud and pmd mappings. When we DMA map these pfnmaps, ex. > PCI MMIO BARs, we iterate follow_pfnmap_start() to get each pfn to test > for a contiguous pfn range. Providing the mapping page mask allows us > to skip the extent of the mapping level. Assuming a 1GB pud level and > 4KB page size, iterations are reduced by a factor of 256K. In wall > clock time, mapping a 32GB PCI BAR is reduced from ~1s to <1ms. > > Cc: Andrew Morton > Cc: linux-mm@kvack.org > Signed-off-by: Alex Williamson > --- > include/linux/mm.h | 2 ++ > mm/memory.c | 1 + > 2 files changed, 3 insertions(+) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index b1c3db9cf355..0ef7e7a0b4eb 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -2416,11 +2416,13 @@ struct follow_pfnmap_args { > * Outputs: > * > * @pfn: the PFN of the address > + * @pgmask: page mask covering pfn > * @pgprot: the pgprot_t of the mapping > * @writable: whether the mapping is writable > * @special: whether the mapping is a special mapping (real PFN m= aps) > */ > unsigned long pfn; > + unsigned long pgmask; > pgprot_t pgprot; > bool writable; > bool special; > diff --git a/mm/memory.c b/mm/memory.c > index 398c031be9ba..97ccd43761b2 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -6388,6 +6388,7 @@ static inline void pfnmap_args_setup(struct follow_= pfnmap_args *args, > args->lock =3D lock; > args->ptep =3D ptep; > args->pfn =3D pfn_base + ((args->address & ~addr_mask) >> PAGE_SH= IFT); > + args->pgmask =3D addr_mask; > args->pgprot =3D pgprot; > args->writable =3D writable; > args->special =3D special; > -- > 2.47.1 > -- Mitchell Augustin Software Engineer - Ubuntu Partner Engineering