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 795D0C3ABC3 for ; Mon, 12 May 2025 12:34:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 845AD6B00F6; Mon, 12 May 2025 08:34:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 818D86B00FE; Mon, 12 May 2025 08:34:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6DF966B00FF; Mon, 12 May 2025 08:34:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 3972D6B00F6 for ; Mon, 12 May 2025 08:34:32 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 37E93C10AA for ; Mon, 12 May 2025 12:34:32 +0000 (UTC) X-FDA: 83434199184.16.56755C5 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf26.hostedemail.com (Postfix) with ESMTP id 18676140007 for ; Mon, 12 May 2025 12:34:29 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=T+dKKU9G; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf26.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747053270; a=rsa-sha256; cv=none; b=jEKGn8mMBBL+cLfKw3Eqv21nwjRpT/MttKW8A/URxqWr6SAPhAUZmjE/uu6GXlXzVDUcHp Xe/5LqQMWVcGTHSZFBsX59gbYQxQO9GNN2sqFKx28RQQH+fKrinWLM/erIusMplOYJ+HL9 bKDKsC7ngC/t4V7f41/rbAViQAPdGK4= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=T+dKKU9G; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf26.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747053270; 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: references:dkim-signature; bh=AsNfuXk++hQsXcSMH0/ZpoD/Dq28xwSeg936k+p2z/0=; b=ICISteORcsAduhje9VgaqmkTI7q0nE1bOGv5mQC+/AxC9gqMjftvh1mVKjDysGHOsFin4c vW9FCaAjBDwfI+CH2KpL0G4vNoDoy7NXeox8kyfBeL2uhrLB2p5oCmpRTUc5sSoY9WVScl /KtilAFJt4JQzw8ylU+lYUr6HzOTvbM= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747053269; h=from:from: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; bh=AsNfuXk++hQsXcSMH0/ZpoD/Dq28xwSeg936k+p2z/0=; b=T+dKKU9GvuPvNRfRCpSrNJrcmdhXnlof071VH1WTVIb3AKXj14g+PIACg0U0/guE+ahV3u aRDAoli13N4Mx+o/LSJeZiNygy8tqUXOkMO7T6jeiQB7d73cAKayDtoFsuq/4AFiGMDk1/ 08sRLuClrc0BpjEZqgHP0kDHAh+UErU= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-76-1P_6oqPhMresGguYgbe55A-1; Mon, 12 May 2025 08:34:28 -0400 X-MC-Unique: 1P_6oqPhMresGguYgbe55A-1 X-Mimecast-MFC-AGG-ID: 1P_6oqPhMresGguYgbe55A_1747053267 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-3a205227595so449956f8f.3 for ; Mon, 12 May 2025 05:34:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747053267; x=1747658067; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=AsNfuXk++hQsXcSMH0/ZpoD/Dq28xwSeg936k+p2z/0=; b=ft9tpVpNiTtVlYO0Ag2ve88Old3fJTdNPq9jLvOetw/HPvdWSQTHu/k+I47vHHDpw4 epVZCzP5yUvO7oO6cnzBXJA9D1C4OfdUePcSNyRpVB5+efVKP9UKXlrBEZCMF0n3yu+o nGggCaQw6SEAsZaGBfYOwIGGaLeP+O1ljvemuwf/iCtALyqqSO9pgOiDLm8/6DEnw1Mw 3ARpsmFPCWBZs05ZcjsgMWcsIIMX1Ls6UaJcZt0aKXN6p6EQWq8zor4+hf0WtZRiOf3y iy0OxSJoE0917zCuTtEIciuOK2EvKUWX+yA5adOoJacYMx1/fLTtc5ggnBlt/2bGxbht jt2A== X-Gm-Message-State: AOJu0YwqFebvLdBSs0tOcEfdIt5CeEROLasbST9lWF9FNb2/F+OixICL ymepqHlNbSeOheC+Yrg0eHe3q9Y9yxmrotayjw1K3FyxYGtbMIyrmaZd8bPuIaQUj/e/Y4H0PMH RTAQ/hdbsoqlBF4P1NVe/7ggsbfyRsbd9AORtOrOuv9cVbxCX X-Gm-Gg: ASbGncvAI/lCmR3wLgL5tc9x0kdqLasFnCVF27jD1QfL9rup4c4gMHsUiAJCXPWiKqC ZmeDmsKnmHVGtiW6zxj+9S5AUYNcLSMbHUbn4RGod8MAXiiDn9iDXbfF/e5gS3N8zBZhmRLkW9p moH1+EJnboCyQ74LK5JHPigqTkXKd+dCsuhXmMQlmB7eeCCmhUriQ0CLA1vW6ygfK71SsTx0uZd wsjOH64p1OSeDLM4v4ZroLlSOZGNcO5RY4cJAoI40v89kspuppd4KvKPU1KdrPf8t0MRUb8QLyW B0WRWqfnqUtFYA2BqjGZehvKl+sj8Da8uluCpHAcsUdkd/G5pPGQo757uCZJbyvYeUDwElTH X-Received: by 2002:a05:6000:1a8a:b0:3a2:6bc:3f25 with SMTP id ffacd0b85a97d-3a206bc6568mr3282305f8f.36.1747053267153; Mon, 12 May 2025 05:34:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEbVOvWh8aR7BY5sT0iHvCaoLmEQsNhObrlGdsawBm2VmjmvFE+wMDlxjPW6z9Q2DtavCs6CQ== X-Received: by 2002:a05:6000:1a8a:b0:3a2:6bc:3f25 with SMTP id ffacd0b85a97d-3a206bc6568mr3282274f8f.36.1747053266780; Mon, 12 May 2025 05:34:26 -0700 (PDT) Received: from localhost (p200300d82f4a5800f1ae8e20d7f451b0.dip0.t-ipconnect.de. [2003:d8:2f4a:5800:f1ae:8e20:d7f4:51b0]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-3a1f5a4c583sm12119696f8f.84.2025.05.12.05.34.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 May 2025 05:34:26 -0700 (PDT) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, x86@kernel.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-trace-kernel@vger.kernel.org, David Hildenbrand , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Simona Vetter , Andrew Morton , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , "Liam R. Howlett" , Lorenzo Stoakes , Vlastimil Babka , Jann Horn , Pedro Falcato , Peter Xu Subject: [PATCH v2 00/11] mm: rewrite pfnmap tracking and remove VM_PAT Date: Mon, 12 May 2025 14:34:13 +0200 Message-ID: <20250512123424.637989-1-david@redhat.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ZvgnajUYzFCUCanoBJCFXk3ibkIJtXEQyZun_N48yZw_1747053267 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 18676140007 X-Rspam-User: X-Stat-Signature: 7hh8iwaknpznchekemxnu8y5z73xcspz X-HE-Tag: 1747053269-543853 X-HE-Meta: U2FsdGVkX1+7Gfbh+EEUVk/NuPhE4DSYtjOoYDfpuFwd7aSPFVBxsa4hsPNXPT7FT6RPeHiJZP9vpnskVPGAPTxs9xeD8iqxjVOqU9yVtLdqhAnB8ij5xX7QxMTebBxXCXZ+cwamTqZmZu7jJ2Thf5Gu/PJv2rODaCK9YaC9JLrIWrpKz6AQmD0cYAq3URnt+nLQ2kkvgu+4QnJ709Ry26DuE4rbNlt21gQvYGFTLetuo+9zZxDbMab60zKCAqlD9/EHJklYfJKIUNmfRBppN4jYjzpuR0vpMKgZwxe88O20RfskBE2uxBvZfNlD73O/jChHULWOlRDxgT0yOKM5/LvsYj/LoO6qXaygagobOJ47CJ/8HGoFgpkmEoDOvaNs3OmOCnWXq4ARKKXkb3r5JWjHP2XDk+bIjhTn7o0ht9dE3JLpiFs9e39qRtNoQtnBl2XXJj/ebr7B8nWFHThrOeBL+GAJ9Zrxo3QHAjPJ0aFvjrdLAcPwdkvLdk/ycItI7vQLvhWobd/j5F3GU18yEOH9cFLiDyZZZ0CDXs1+Ho7ZOCr8Vb1b2KRvm4JL8n52FzRXGfBOylWrc6OkZhUf1o/spfFijeUglIaKTKylZRliJpEBgVaVJciI7gADXGQjGWYVVQdKZsN8pcICgibtGpTrmbgkxV+Y235aq4VSiZ4T518Dt8MtbLtsiNEKWS/9gwKC1YoDsIRYe2ASdYKi9lXLUub8E0WUGwX11LUCLWzq65wqFfuW504VBj1IvevDsk5pvmDjIs8MI9r5kRUTRqa2W3ElHx/I6ranOpgFRiuf3U/B0KAuYBkwSU+41xWJOIpFbjjwsEt+SyqVZoyiXZlPvzFoSeylhXxjRCmkHCuAeQ2+njWnDxcP7jhB0ynx6skSnQn9uTirTjV4nAqGUUlDx3QktHULk2/b3oBRENHPq5SESB5ICCwKJ9tU57VEhIx8P0Eq4++lBy+r1QP HAG7StTa QIbhQxy78Se5zW5/AHONOYMTA4dh65Qh/7zns9wVc9ftKU4zlhQkSpCR00l7HThc1jgMcIpPZj2SKSrriC381d+3Pp7rk+lRcbcL4SikJ942KPo3qIiUZptsldQKm/+oJDtx6jTev+0Ga22EQvr4DRGdwNQpL22FncxfglApL2NSrSpUPjTX+EKye84sehDPpx6P8r3zEQjdG/0rGFELx4ornNWD/9pbFCDRQSNV1+iYVC5JJnnybX1NismT5SpLoTT0/+n16PEoBbq3KnSSsu+hwq3RKzKi7nO4OC26dkrNSFp3w9CA+B4PodIEewTHbTnB3zBxmGbwDpzcebEQbmgs82i2eLwszxATfseVmz9GQJCDfHo6rOb9Dj50poG2npJvN5L0bNYhWS5sTN4Elv+xdVBJt3IQvdd1QxmitgiK3SioPOFS0TF5wsTEVYNmmSXJneSAMpujaphXdk3XafGNSE4jUEmk45PCVKKn5egEI/hX2esxTa14yZLOhvmlFW9KXTY+1BjGFkiHGAxgR0d9JldJYelE9Tt1+xVdW4GHAWRUL3xyiJ27cW+B5bv7aslEa8g8YDf56m6x3aToqwslXCAsl/OviEah5cD/2DESVt1FXFNr7gu1oEvf8bOXIzVuPG7BJ9YaVHri/VbJhNMy9V7as+xfH5XMwHwkd+DJlRR2JZYIR1Px0n5bnaJzQhyOlPUJRS//3Q5INWXQGbEQwBnqs2UWdwhIHbpb2NI/27I2uA372q8t35lTvq8anPSTITs5NkHSqOArIDKU4dgVGnPWTUW8Vso+77VBd5jpnZtoBkyHGbtPzkiY6D5j5m81wEyBgqtNnfizoFijFEFqu5zmLXby8iPUCt3U8eiLqSaOvVXvZ69tEeLqEaoZ637oXZAnFLj/yaP5KdzZTuXFrXiMJaDK5TJ4AvZJ+tVQUGuYp+qrs72nzNppD69BuWXOZ58CG+TMn2FyQvP2dd423LcUH WYOe3hS6 R77qyqo6YkIkQyZlNmaYb2qhwqSlYfJnouq5AatgYOYQR9sKvVDgLJitAlFsvtSP3Ywe+/LI4tTW2bwIf9wl6ktcSgjIPGVQr+UmWo8k73rQoX2QfASkswJH2EE/U3viTgrwFR9gwKDs6ySO3VW2ZQ== 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: On top of mm-unstable. VM_PAT annoyed me too much and wasted too much of my time, let's clean PAT handling up and remove VM_PAT. This should sort out various issues with VM_PAT we discovered recently, and will hopefully make the whole code more stable and easier to maintain. In essence: we stop letting PAT mode mess with VMAs and instead lift what to track/untrack to the MM core. We remember per VMA which pfn range we tracked in a new struct we attach to a VMA (we have space without exceeding 192 bytes), use a kref to share it among VMAs during split/mremap/fork, and automatically untrack once the kref drops to 0. This implies that we'll keep tracking a full pfn range even after partially unmapping it, until fully unmapping it; but as that case was mostly broken before, this at least makes it work in a way that is least intrusive to VMA handling. Shrinking with mremap() used to work in a hacky way, now we'll similarly keep the original pfn range tacked even after this form of partial unmap. Does anybody care about that? Unlikely. If we run into issues, we could likely handled that (adjust the tracking) when our kref drops to 1 while freeing a VMA. But it adds more complexity, so avoid that for now. Briefly tested with the new pfnmap selftests [1]. [1] https://lkml.kernel.org/r/20250509153033.952746-1-david@redhat.com Cc: Dave Hansen Cc: Andy Lutomirski Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: "H. Peter Anvin" Cc: Jani Nikula Cc: Joonas Lahtinen Cc: Rodrigo Vivi Cc: Tvrtko Ursulin Cc: David Airlie Cc: Simona Vetter Cc: Andrew Morton Cc: Steven Rostedt Cc: Masami Hiramatsu Cc: Mathieu Desnoyers Cc: "Liam R. Howlett" Cc: Lorenzo Stoakes Cc: Vlastimil Babka Cc: Jann Horn Cc: Pedro Falcato Cc: Peter Xu v1 -> v2: * "mm: convert track_pfn_insert() to pfnmap_setup_cachemode*()" -> Call it "pfnmap_setup_cachemode()" and improve the documentation -> Add pfnmap_setup_cachemode_pfn() -> Keep checking a single PFN for PMD/PUD case and document why it's ok * Merged memremap conversion patch with pfnmap_track() introduction patch -> Improve documentation * "mm: convert VM_PFNMAP tracking to pfnmap_track() + pfnmap_untrack()" -> Adjust to code changes in mm-unstable * Added "x86/mm/pat: inline memtype_match() into memtype_erase()" * "mm/io-mapping: track_pfn() -> "pfnmap tracking"" -> Adjust to code changes in mm-unstable David Hildenbrand (11): x86/mm/pat: factor out setting cachemode into pgprot_set_cachemode() mm: convert track_pfn_insert() to pfnmap_setup_cachemode*() mm: introduce pfnmap_track() and pfnmap_untrack() and use them for memremap mm: convert VM_PFNMAP tracking to pfnmap_track() + pfnmap_untrack() x86/mm/pat: remove old pfnmap tracking interface mm: remove VM_PAT x86/mm/pat: remove strict_prot parameter from reserve_pfn_range() x86/mm/pat: remove MEMTYPE_*_MATCH x86/mm/pat: inline memtype_match() into memtype_erase() drm/i915: track_pfn() -> "pfnmap tracking" mm/io-mapping: track_pfn() -> "pfnmap tracking" arch/x86/mm/pat/memtype.c | 194 ++++------------------------- arch/x86/mm/pat/memtype_interval.c | 63 ++-------- drivers/gpu/drm/i915/i915_mm.c | 4 +- include/linux/mm.h | 4 +- include/linux/mm_inline.h | 2 + include/linux/mm_types.h | 11 ++ include/linux/pgtable.h | 127 ++++++++++--------- include/trace/events/mmflags.h | 4 +- mm/huge_memory.c | 5 +- mm/io-mapping.c | 2 +- mm/memory.c | 86 ++++++++++--- mm/memremap.c | 8 +- mm/mmap.c | 5 - mm/mremap.c | 4 - mm/vma_init.c | 50 ++++++++ 15 files changed, 242 insertions(+), 327 deletions(-) base-commit: c68cfbc5048ede4b10a1d3fe16f7f6192fc2c9c8 -- 2.49.0