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 77178C369C2 for ; Fri, 25 Apr 2025 08:17:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AB6656B000A; Fri, 25 Apr 2025 04:17:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A661A6B000C; Fri, 25 Apr 2025 04:17:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8E07A6B000E; Fri, 25 Apr 2025 04:17:23 -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 6BADC6B000A for ; Fri, 25 Apr 2025 04:17:23 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 52B0A1C814A for ; Fri, 25 Apr 2025 08:17:24 +0000 (UTC) X-FDA: 83371861608.13.69C01E8 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf24.hostedemail.com (Postfix) with ESMTP id C16E818000D for ; Fri, 25 Apr 2025 08:17:21 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=bl9rC6Du; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf24.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745569042; a=rsa-sha256; cv=none; b=gyWzqv/sgIMYdnMCfKiX83YwiXul0hseFHoAJSGPKaJtuLnoE+AW619GRKE48W5NqfZM9S cxmfKdx8VW3NxL0Wd1ucG8EpPLEZN5ypnlGntvOZTYqm7CkdOg0lYX6MPOlSrUtg/00UHF 0d61u9lpaGzAonI87aRy/yWnDUPCa8Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745569042; 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=tzxwt+MhqUuWVN/lcqMQkoSkMK2b7PEADKfx26VXtCo=; b=yeFizKxeBpIjR/raXTqY+TGTuSD4EkKf4acw7Mku2VCceoJ5gkBHWCQS1zG62tLAatvCda xitq7p61tl03cYNKaUjxN2CujTFBX8vJbEiGctPhgTIeaBXbBqhbbIGDKhN2m9na8rtCkf gnkzsr4ri2XR53D6PL73aIjTY8liYGA= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=bl9rC6Du; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf24.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1745569041; 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=tzxwt+MhqUuWVN/lcqMQkoSkMK2b7PEADKfx26VXtCo=; b=bl9rC6DuRx36DNsZ8uAU+2IKugGcFBspXej3wTpxfTYvdrWx+63Sq1ZBDoRVLw+BlzdbxJ 8pMaAiaeeMbwOLjrZQXJuNmH9ZA0lBaVxlUGBkwTXFJDYr6j0D1Sljf9hvHfUvCt8X8DZE VtOi+Qsr3Yh90QYhQPRIXDAD4Y3Hnck= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-317-AftdVDzgOgKi1F84kMbQHQ-1; Fri, 25 Apr 2025 04:17:19 -0400 X-MC-Unique: AftdVDzgOgKi1F84kMbQHQ-1 X-Mimecast-MFC-AGG-ID: AftdVDzgOgKi1F84kMbQHQ_1745569038 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-43cf172ffe1so11650385e9.3 for ; Fri, 25 Apr 2025 01:17:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745569038; x=1746173838; 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=tzxwt+MhqUuWVN/lcqMQkoSkMK2b7PEADKfx26VXtCo=; b=l6nPB090ma2b4Bf3pIJow9DGNO4vcQzLQJdAxvYH4Y6hIGjOj2EIgGjLWLBkskMMhy VD3QZCrZzNX1p/I8qPeeQsfA1cATzQnfpIMz12HooaVf6n7ViwJ2OzQ1b7p2XtX3myn6 92Kd5AjlJtIs2bL5CnO7BPnBXody8ebs/1kIWDrx6kgEjUdfXPqKDK1wXeAXIfdBB4iS jRY3a6L0irZAO4zMyKRlskX4g1lXjBZGXe/LHDtEypE4sAM7tYyrxNqeGsrb2hW/EArA FdkM1jbhYtqoW4tIhCGAyScZdIawqslkFfhNLwndo+xP5GZWJ2m+SLlEQE/mFqMWDN0O n8ww== X-Gm-Message-State: AOJu0Yw9kBj3pDeEgTqwmjmOrBmlcA+mNRIUWz8XzMe39xW3AGyZ12Nm Ha+UaEJKN8P5lsvcoVbF8tvga5CBnLv9mK9hscZnwC2H5QHR1MYuBul14WS20RjNvREf+CqL6Q9 5XCezyP7eIUanmMVFPBfqRAEF9b0rZDtHWinPZlW3hMO5nKu/ X-Gm-Gg: ASbGncth15d1HA2+VchoXYQeHzv1GMluq2QWdR9aI2XMIeqJsYqtx8ItmNZ+4mcatsB yO3dYsWqz+b3acP0iAfVDfIpqfwcmCR361BQvSWqYgdVvx+O7n3BfSKk1kX9tvgNWlfnE1UOeRi +WqC0wD917Ah/LVpvt8ckGgpfUh5FMJjt0PVydoQvYBpmLT8X5E5XHHyHTyTuYh30zlPZgNSUNo uXkQ2R3/BC8qUF3IRGhp3cKFQ/9WDCzzV7Z6Ztkf35Py34b7qqZQvf8SwGmlJZIXTof5ydaR3op 3ebjIc1wIQAyoZ0k94/uqg9T+yZtmJukcxIXSfoLGBgFkSE9JBX0j85EyOyryyzxgT8g/p0= X-Received: by 2002:a05:600c:190b:b0:440:68db:a013 with SMTP id 5b1f17b1804b1-440a669e6c4mr9418085e9.25.1745569038279; Fri, 25 Apr 2025 01:17:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFyjFcQvI7K5mz5sl36l2qzWjhPhbqRCrF/SO1EP+wbgtlXIcwScGs89x5MDFtUy4eN+gIvTg== X-Received: by 2002:a05:600c:190b:b0:440:68db:a013 with SMTP id 5b1f17b1804b1-440a669e6c4mr9417765e9.25.1745569037869; Fri, 25 Apr 2025 01:17:17 -0700 (PDT) Received: from localhost (p200300cbc70f69006c5680f80c146d2a.dip0.t-ipconnect.de. [2003:cb:c70f:6900:6c56:80f8:c14:6d2a]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-440a0692a22sm35772685e9.2.2025.04.25.01.17.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 25 Apr 2025 01:17:17 -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 v1 00/11] mm: rewrite pfnmap tracking and remove VM_PAT Date: Fri, 25 Apr 2025 10:17:04 +0200 Message-ID: <20250425081715.1341199-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: R9KDbVAz7JNbZiRay72Ix-ZwLFGZlCqvVKZW5mTkosI_1745569038 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: C16E818000D X-Stat-Signature: haee9rqe3b5y5dktyxxdkmtmzqxpg977 X-Rspam-User: X-HE-Tag: 1745569041-184186 X-HE-Meta: U2FsdGVkX18MJ8tJnDtrQGtzeez9ciCIyaSloNVQ0dDJ2pxcBzCiyz7XRC8ebs1dYXWOkdcAR37gGjZcfsb8xUPRVqOhkTVF1xNV+1aQxmiExXRwz7okAlgWp6ztI1DToxrYal5R8pnKRIsG6CxNW1uj6EC0Zj87krh9q4ga7tNnAoEPwqD93oWoJlur9Zcw6pbhWmKpt9Lxq9fnzIIqBWTEM4oUF44etFnXrrbry+eaBj+69L4NVjMAO86al/gKOkMRkbiqGU+p4PDATOfWcsJwj3znurRso/Q0yNeLn3LCxnqNPSpeoZxY13pDIM3FRmnuvWaIIYce86JWoFI2JynoNfl/uE70U0zftOqpUESbLKgnD3y7AyhtBWv3Uknjap3LBBVSNUN5qt3rrBsGWIAid3AFCIaOQWqdoXcq4Hv49kYt4gxHSLrZVv17F+NXlEYb+D1np+wuWFbDD7yYiTuJcD4Q1mRxmsiLLxyBHDYtABhwo5HQRMzQ+1hwm4TmYOoMqmbEnwABtkg6DVK13wS9owC4xJ4KdWqCOJZ7RhtESbTJubuLvmQTi2h7OGVjPiRbbJqIYJQugxSJsOGEtXBuYu9yhRabg1ztXzNjJZcMXhH4WjafonibZB2yFShDF9NUrm6a20h7glbK6aCbaluvwkKRQmpJElvEiPBDYOXVGU3vp0Bs3IsEkrw24ESiiLyAuMQbw18jjluiC9Rcrdshl/8QkVHC14cr7Ie2la9tWYynZ6nDlbNZm1ZwRXkfo2lakC/kVHnDrimH0BtLMbroXzjGpE6QAaBJo/SCEGSQgMEaMNptLCmk5pEfBgPx36+A/CGmEGUW3X9ATklbekMC+3hBCXhQNh/jXq3K2OwojeFRmjAt8oIeR/9Gecaa2sc9/0vyK4lh+QCgfY3w6QTp7Tv+GEAi9WmgeMOTTVIFJ+kmD3GY2DRO6kQoDnlBIaIN28b7ZgWe30Um1OE UShHCcTN qch47wcsSn0ycZrE7pWsJswxSSmaQMG3ExKYufJx6yOUtqz4GnK5wgKXJVGGouWadeilbIGUmt9nFhVRKB9ma3xwF1S9e9ooCZwgSI6es2x1c6KOKVoNKuGnkCpatV/qiAGq7grDatROWbulCXtPSdZetPc75tiAWHNwrKVOorppusvmIYG+8w3twPcpZ3l4lQNlvz9ywgultRjizMlauU7ETqods5sf6gCaBeYKOfqecyn9kvIB7KakCgELMknPs7C4UItLwTS8q1ewta/uY5hYNwmVfUFTd5eFkpVXozL1O/R9rkfPrhq9y+5rZ9snrLhPvB9LN79wlTtGy78jUztrfdJAkMA0MBALev4hT9NGz95eUiFiwqaXtqnZWW4Yj7SyAlsJcGHviYUSKQNMD5Py7PCIYhDu4BlgaEc2hsUsJi6fyTRAQZnzg/RS/hHxD7i+ye8tHcQy2gHs7z/qulh3uDd3H1eN0LCdrBq4FuaYeVuKmXOR+06nXGkhKAuDqVHcwvCVu+crMlogkegUytIPWNoOKEIwQmpykLldDwknQ2jF3iXEqd9Gg8h7AigTYZMnsHC/7f88rHkjkL/f2W/VUun48wtEaUYvwHqXUuA7D8BEcPaZMktWplP5zw1UC5/5S1JQL9kKaWB8y9wNzs3aZyr9TqzzhTygnBYl/dPI8H8oS54k99jJmWTXqI64ohaicy75sp7l1LLzTrWHFEkke+VeCXQwXy/N5+K0/kGjkSOaWQK1VfSZUXk9aq63hdHKv3OBu5qszGVfOXlMR20U7AsyBcubzqbeTKSkQydReYuDfKfOMQBkSaMZ/JPE5CficGzJVggKWvBYC9VZEeAJBRbo03wEbQdfcViAn8ylV6A1ObkvkCK1EIJyQCEL3df+yAuw+6yJ0FBKyt5Kdzj60Qt7v/vaSWW1ME1v2ztKHCfkR8So0jtOct3U7p85EF78Mqs5enVKNkP7ac3W0/NrVfVFw S3VQZ4tC 2GPPfoMY5rQ2jZIKqdMkx09dLiJrUQvk 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 There will be some clash with [1], but nothing that cannot be sorted out easily by moving the functions added to kernel/fork.c to wherever the vma bits will live. Briefly tested with some basic /dev/mem test I crafted. I want to convert them to selftests, but that might or might not require a bit of more work (e.g., /dev/mem accessibility). [1] lkml.kernel.org/r/cover.1745528282.git.lorenzo.stoakes@oracle.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 David Hildenbrand (11): x86/mm/pat: factor out setting cachemode into pgprot_set_cachemode() mm: convert track_pfn_insert() to pfnmap_sanitize_pgprot() x86/mm/pat: introduce pfnmap_track() and pfnmap_untrack() mm/memremap: convert to pfnmap_track() + pfnmap_untrack() 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 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 | 44 +------ 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 | 101 ++++++--------- include/trace/events/mmflags.h | 4 +- kernel/fork.c | 54 +++++++- mm/huge_memory.c | 7 +- mm/io-mapping.c | 2 +- mm/memory.c | 85 ++++++++++--- mm/memremap.c | 8 +- mm/mremap.c | 4 - 14 files changed, 212 insertions(+), 312 deletions(-) -- 2.49.0