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 64079C0218A for ; Thu, 30 Jan 2025 10:37:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 883AC28005E; Thu, 30 Jan 2025 05:37:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 833B2280058; Thu, 30 Jan 2025 05:37:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6D39028005E; Thu, 30 Jan 2025 05:37:31 -0500 (EST) 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 4F6B5280058 for ; Thu, 30 Jan 2025 05:37:31 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B4C30B0B96 for ; Thu, 30 Jan 2025 10:37:30 +0000 (UTC) X-FDA: 83063766660.01.DD9BD1D Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by imf19.hostedemail.com (Postfix) with ESMTP id B08471A000C for ; Thu, 30 Jan 2025 10:37:28 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=ffwll.ch header.s=google header.b=KtEQTmjN; spf=none (imf19.hostedemail.com: domain of simona.vetter@ffwll.ch has no SPF policy when checking 209.85.128.41) smtp.mailfrom=simona.vetter@ffwll.ch; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738233448; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=tyqvf2GtMB8eYUA6roFvIAKJ3MrPvA1f4ISzNSrvZw0=; b=K6u/ShSew1ucm8K1cpO8EEVKxSKXSnQrsYBtNwJ4Ec4hhylFv/Nt0M5FetEXpt1sPRoO4q 6kwcJphIvnZyQxdVX2XhHW5OY4Tx+UR5fHNhLUas1mPmv1sRt2wO6BViiDM1XZGP9TGDFZ sjF737O2nh3nPVbvmuuoCmX5QKbxEp8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738233448; a=rsa-sha256; cv=none; b=apXsoTKxlA+vNtNc6opeUjAKiHSY37mb16sDOLCLo3/FfCRKp0hAqFO8/lk2UVDADaCZTs qlZah/XooQlvtee09ukMRbT12IRZocXqkLJ23jiEH2lj1dqBX31eNp7vjegK2YC6D/4ZFw LfGFXdbt9AdjaB1hYAbzf54jTwf1egg= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=ffwll.ch header.s=google header.b=KtEQTmjN; spf=none (imf19.hostedemail.com: domain of simona.vetter@ffwll.ch has no SPF policy when checking 209.85.128.41) smtp.mailfrom=simona.vetter@ffwll.ch; dmarc=none Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-436281c8a38so4071375e9.3 for ; Thu, 30 Jan 2025 02:37:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; t=1738233447; x=1738838247; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:from:to:cc :subject:date:message-id:reply-to; bh=tyqvf2GtMB8eYUA6roFvIAKJ3MrPvA1f4ISzNSrvZw0=; b=KtEQTmjNJ3I7kbudYBl8ukOQ5zmxP9WI4kLWlwlXJLyTXbYPeQCS3B5ShiC5dQkMHm vBKXffajIACuEuzj1eV/mpGQHm+WfPkDu0e+q6cwHmT5CULMZ6SWEoXmzDLl/FeQyFuv u3mXzyfjNr2hW4RZ7XcjjK5BfK+xty51KOMxs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738233447; x=1738838247; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=tyqvf2GtMB8eYUA6roFvIAKJ3MrPvA1f4ISzNSrvZw0=; b=BFIJ4Gr8jBPGPI1ICiapqn+w4216OfxBWjo4MkbvUAbXxPyrUTOFDqqeWc1LhSSRcJ nyLMc6AkDHuNkfGNrdA+y9umtJeNU4WEO4W/nwnUUvKil2vueB4t/3n/LH/AlF3kz1t2 1zpOcJz0pcYJVjLrk3pRrrAkuSPVFogEZVUeEdJEYRueswZ3XC2CGSO82rlx0kfukxsV 6THky8cyuj976W8K7EohR+AsfG6BxrnZJBTGk1SEp5PjOXR601HX7twveMMA/cyXTZnn HBdqgtddiRZ+71POUraiuIr/JEdCY20I5JHLNbeIvLidb2wPHs+YsgsXXYhwzGEi/6lo j9qg== X-Forwarded-Encrypted: i=1; AJvYcCXgSJ6V7Xi1Sx/ij8S0H1VPbxf4vfjjIzzCrOSYN0kcVih7RxRin0VV+N17oG6HxFjJPYGfpHDKhg==@kvack.org X-Gm-Message-State: AOJu0YzNCWAyR7X+ZOQl8UzBat7aSoKpGCIJYkGw5rnUzuOJopgiNgRO 2kctGK0RXd1C65ELz3+tFtjIy8maRIIZZfkpQZyfzd25tZip1DjxSN5K9+o41Bs= X-Gm-Gg: ASbGncsNBYC5U/Y5psif4gBN8j7AlJpx092N7bp2qkw4R5R+YxfsrcIk6hn9YzfMuUb CiwjMsEkOCVxKi2ME/8z/s6KM8JR0itrp5IQsXNjbt49dEMIsgi6zvrHaVMds+51VmgY/1RBwiW GurW2wtNLHr4uKWX7heOLM+3LlFRUKY47tkacqAce2VM7OE7+ftR1kfC8d4w6pqQK2efFKK2fEh 5HDcydPw/KHeGNDe2QjSYsc9xPMsXpwGEemAdwGcnjlJJoq+MkHfK+njZng98q+jiyanteHAxqQ pwWxJMuWbvV/eQOASRGTnXwa5Rc= X-Google-Smtp-Source: AGHT+IFg7SYWGB7s8CQ+QgL5BM/h37wU8TOAK/f2xIHq4oWzFN+REfQ6LxpHzU72JzdfiBY831Ddbw== X-Received: by 2002:a05:600c:3ba7:b0:435:306:e5dd with SMTP id 5b1f17b1804b1-438dc3fc40bmr54907245e9.22.1738233446986; Thu, 30 Jan 2025 02:37:26 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:57f4:0:5485:d4b2:c087:b497]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438d7aac93asm64284585e9.1.2025.01.30.02.37.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jan 2025 02:37:24 -0800 (PST) Date: Thu, 30 Jan 2025 11:37:22 +0100 From: Simona Vetter To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, nouveau@lists.freedesktop.org, Andrew Morton , =?iso-8859-1?B?Suly9G1l?= Glisse , Jonathan Corbet , Alex Shi , Yanteng Si , Karol Herbst , Lyude Paul , Danilo Krummrich , David Airlie , Simona Vetter , "Liam R. Howlett" , Lorenzo Stoakes , Vlastimil Babka , Jann Horn , Pasha Tatashin , Peter Xu , Alistair Popple , Jason Gunthorpe Subject: Re: [PATCH v1 12/12] mm/rmap: keep mapcount untouched for device-exclusive entries Message-ID: Mail-Followup-To: David Hildenbrand , linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, nouveau@lists.freedesktop.org, Andrew Morton , =?iso-8859-1?B?Suly9G1l?= Glisse , Jonathan Corbet , Alex Shi , Yanteng Si , Karol Herbst , Lyude Paul , Danilo Krummrich , David Airlie , Simona Vetter , "Liam R. Howlett" , Lorenzo Stoakes , Vlastimil Babka , Jann Horn , Pasha Tatashin , Peter Xu , Alistair Popple , Jason Gunthorpe References: <20250129115411.2077152-1-david@redhat.com> <20250129115411.2077152-13-david@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250129115411.2077152-13-david@redhat.com> X-Operating-System: Linux phenom 6.12.11-amd64 X-Stat-Signature: 6ydjkpxxjk7d4y49zgqeuw6ee3udsr6t X-Rspamd-Queue-Id: B08471A000C X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1738233448-50916 X-HE-Meta: U2FsdGVkX1/ezrYk35MTs/l2M3t1AOWImBzBsmO9C8MaZeukoizpqigoM5WJZtYN+ZNc6/AFEduh1qIkz2pSB8C9Eg+pHN+yQbPRPrI9tkBi8SchpGrF6ExinW3nYGb6Zw8XR2Uv5sR3hsAAMVqUh9yA/ZktxFkNpothK9O5ZkQLAf/0JZjvJsrJFs7eV2kKE35gnhOy95/Ljk4PY1Dp54TWxb4omPmBBsuTcPuzQCWIoOUzf1Z4deAE3auOKfoMjfn2fsrsu3O9yp/Bm2o/5ieyxezmyzp7S3ZocGi5bMRYvg/4JoGVdBHFMVfZtvLGel0pFNSJTrwHJ/s2taqzYH+W2Nt+RZ4ynTARspSA7NcmErSFD7qIM5Gt1JPe3SOvBIk1z5Yzo05932wIWnChILuAv5C3rmqvi8CxHWue+9TbWjVWsxBHmvQBz5FkTLYke89F1eBKH01MMfk3KUugHAWpjlOoCx6ynQ2otbi1JAjHnG5dkTI6sEojwdrIGw48Jp+lJrxepm2mJSzW9kwyHj1wLBixDCCTRwJfs53rz1DZBWHgk2ofBTDNUE1aQAy4GgWooQu0PnPQfmI/rb7lGZ95+FAz0gv7UUvD3vZ51Tmsw5AEQYy+T0F1kiyvOgufTqGjDRGtNUqMU8rZ9HyM8wCeLBYHzKJ6L48KAdDzpovN45hcPugZFbx8bdcwnRL0SaLO1y5a2B655yjOWcycV9xKW208lUG+9GR1czRtDA1l5kGLA42tenNZZGUEESetA3b6e4Vea6rpe02OcnKJLwKPT2znyA6dWiyIwkXJzHV7XTTUvQM1py9vBs6KydvrMF2JP0k2J930W/rSmlRudAUC2ye4ugZ8Hf6VDVZca8BollvweGNhDPZoHhaYwNNLw6X9fQYYm7zAA6EBg3iyntmtNwy3o5FkHCpPw4uzuCUV1cl9JLtdcmHk8O7kAixGXqtjPM4BkLpZ/PxfOZ6 +291hVDK 2pXvSr03teRpyREDhykeo4OjUFqlsvAEWPIEcWxHQnUzGXkIWAPxPsglk3VWe3CZn87PdLdDc7i1ekT/p/41i5rN18B7sdA6/T7xVK4thXjeFX8wkXVNo+/gMdy3x7gwlAskaKd7ddbVDiHzK9vi0ZTtctjtLC1PWvx8aSZlM3Omvh1fF62ErymFxz9Gdxr9pKm2C0j0/xAls8mO0l3hSnAiUDYM8UUWrUPu0dh2IjpWB+BuUJV58NAa5Qpgm/bY7aHgUBMKYsDM9pOwAS+1bfMH0kLZPsBeUBX+kjRbGTsF/Pn2Ns2Y10zvZRtCftZHSm+LK 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 Wed, Jan 29, 2025 at 12:54:10PM +0100, David Hildenbrand wrote: > Now that conversion to device-exclusive does no longer perform an > rmap walk and the main page_vma_mapped_walk() users were taught to > properly handle nonswap entries, let's treat device-exclusive entries just > as if they would be present, similar to how we handle device-private > entries already. So the reason for handling device-private entries in rmap is so that drivers can rely on try_to_migrate and related code to invalidate all the various ptes even for device private memory. Otherwise no one should hit this path, at least if my understanding is correct. So I'm very much worried about opening a can of worms here because I think this adds a genuine new case to all the various callers. > This fixes swapout/migration of folios with device-exclusive entries. > > Likely there are still some page_vma_mapped_walk() callers that are not > fully prepared for these entries, and where we simply want to refuse > !pte_present() entries. They have to be fixed independently; the ones in > mm/rmap.c are prepared. The other worry is that maybe breaking migration is a feature, at least in parts. If thp constantly reassembles a pmd entry because hey all the memory is contig and userspace allocated a chunk of memory to place atomics that alternate between cpu and gpu nicely separated by 4k pages, then we'll thrash around invalidating ptes to no end. So might be more fallout here. -Sima > > Fixes: b756a3b5e7ea ("mm: device exclusive memory access") > Signed-off-by: David Hildenbrand > --- > mm/memory.c | 17 +---------------- > mm/rmap.c | 7 ------- > 2 files changed, 1 insertion(+), 23 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index db38d6ae4e74..cd689cd8a7c8 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -743,20 +743,6 @@ static void restore_exclusive_pte(struct vm_area_struct *vma, > > VM_BUG_ON_FOLIO(pte_write(pte) && (!folio_test_anon(folio) && > PageAnonExclusive(page)), folio); > - > - /* > - * No need to take a page reference as one was already > - * created when the swap entry was made. > - */ > - if (folio_test_anon(folio)) > - folio_add_anon_rmap_pte(folio, page, vma, address, RMAP_NONE); > - else > - /* > - * Currently device exclusive access only supports anonymous > - * memory so the entry shouldn't point to a filebacked page. > - */ > - WARN_ON_ONCE(1); > - > set_pte_at(vma->vm_mm, address, ptep, pte); > > /* > @@ -1628,8 +1614,7 @@ static inline int zap_nonpresent_ptes(struct mmu_gather *tlb, > */ > WARN_ON_ONCE(!vma_is_anonymous(vma)); > rss[mm_counter(folio)]--; > - if (is_device_private_entry(entry)) > - folio_remove_rmap_pte(folio, page, vma); > + folio_remove_rmap_pte(folio, page, vma); > folio_put(folio); > } else if (!non_swap_entry(entry)) { > /* Genuine swap entries, hence a private anon pages */ > diff --git a/mm/rmap.c b/mm/rmap.c > index 9e2002d97d6f..4acc9f6d743a 100644 > --- a/mm/rmap.c > +++ b/mm/rmap.c > @@ -2495,13 +2495,6 @@ struct page *make_device_exclusive(struct mm_struct *mm, unsigned long addr, > /* The pte is writable, uffd-wp does not apply. */ > set_pte_at(mm, addr, fw.ptep, swp_pte); > > - /* > - * TODO: The device-exclusive non-swap PTE holds a folio reference but > - * does not count as a mapping (mapcount), which is wrong and must be > - * fixed, otherwise RMAP walks don't behave as expected. > - */ > - folio_remove_rmap_pte(folio, page, vma); > - > folio_walk_end(&fw, vma); > *foliop = folio; > return page; > -- > 2.48.1 > -- Simona Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch