Message ID | 20250210193801.781278-18-david@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> 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 F3A8DC0219E for <linux-mm@archiver.kernel.org>; Mon, 10 Feb 2025 19:39:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 787F4280012; Mon, 10 Feb 2025 14:39:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 70EC528000B; Mon, 10 Feb 2025 14:39:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 56170280012; Mon, 10 Feb 2025 14:39:18 -0500 (EST) 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 352E128000B for <linux-mm@kvack.org>; Mon, 10 Feb 2025 14:39:18 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E45F1C022E for <linux-mm@kvack.org>; Mon, 10 Feb 2025 19:39:17 +0000 (UTC) X-FDA: 83105048754.19.84C7BA8 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf30.hostedemail.com (Postfix) with ESMTP id AF18F8000C for <linux-mm@kvack.org>; Mon, 10 Feb 2025 19:39:15 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=iMPn+tH9; spf=pass (imf30.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739216355; 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=gxIo4/a9ZeK4nnisZvQU6AU2gxtpzJDN86Rrv62j7Tk=; b=KCoFeVI3vXr0N3KsztcsF6czndgje1NhX9h9RbPmVdmNy4gADPxMrUQys6+Y/w5dlWcpuJ Yrn47W4kk6Kx//KzwLQUtmDdeEPDugXgIdI6a7+70yFYhMJrd//YSCV9MtFPSoBTf7Au72 uVHHgTMJsmc5kngmvhXQimJ0NoPlvW4= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=iMPn+tH9; spf=pass (imf30.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739216355; a=rsa-sha256; cv=none; b=6HX9VoN9QXLdmoT/C/6w+/eVyWsciQpbAycHvM70wgtr7d3AMZXV5kuhhJccJVxNX1213t mHu3iyT0yzkFxUPqHcP4Rprak6HHNItiwMzvaq/JUilw+vedyQcbQ0FJTqBCQbKZlMLhD3 USXsNRxAdx78NWGy0A6z2LePUs5suLU= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739216354; 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: in-reply-to:in-reply-to:references:references; bh=gxIo4/a9ZeK4nnisZvQU6AU2gxtpzJDN86Rrv62j7Tk=; b=iMPn+tH9G3FTpgC/rPymOg1on9OC9SCUJvtz1LitdmiybXPFY/ai+T5CDMa/sYBG8dFaDu 2L0RBt4HbbZnprfGeKJISs1ykaWSH39JG+BkZpmTGliQZq12T/aYyZlIT/0u2Pr/F9Xzh4 YaPD/ITZuj4fwHdwpDhN/jiHWcDgxXo= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-146-RJ6-qt6TN3KICgCpVX9-Bg-1; Mon, 10 Feb 2025 14:39:10 -0500 X-MC-Unique: RJ6-qt6TN3KICgCpVX9-Bg-1 X-Mimecast-MFC-AGG-ID: RJ6-qt6TN3KICgCpVX9-Bg Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-38ddba9814bso733058f8f.3 for <linux-mm@kvack.org>; Mon, 10 Feb 2025 11:39:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739216349; x=1739821149; 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=gxIo4/a9ZeK4nnisZvQU6AU2gxtpzJDN86Rrv62j7Tk=; b=XTqm7L95fA8/IydO4ngsH2j/HqLKtsz2LANZMuzx6ezDzDPNskX0rJmWH3Yu2/LPor HDR6jktsQpYSSijo3vpvLYzkQWSOLCjXj+SFdVy/R7VM1tCFM5tsL8HoUP09DVk83UFx mdC5b1L8jLxUtgqrKMRx2FoyJ0LASz/iOM+ovbIevvkb7SAlqNDpcqp0WAqxtLcSTmSm RyQ3X5Z4qc/0dkwYxSABnyJpGiHlzVLFEvlYP0O2To20WO5CCb9oCpBJyH5DcVVkmfy3 5WcWBTlavgEycSXnvAL5cILo+nVKmtcvaLoT9XPWysBHDkSiggGOgyal2BJ503MBWu0Y KTEg== X-Forwarded-Encrypted: i=1; AJvYcCWEHs7foBFTcdylvg8GU6IRp5m+OMhQgnFgJghKhv+3z8MlJDrK8xcmQMWXJX9ytZI/EpS7C2MyCg==@kvack.org X-Gm-Message-State: AOJu0Yx0juHz/420t93cm/Md8aGUw1YTTbMDW5QHZgDd/5TkuWOwA8UA f7u69LyhQF2dX4Bzjvq8su1Vx1IrPZL9zGeIcaemG+p4drgrd5ZSzTpiNUwdPKo3wazCQHKYzys NdfpAqndMwP+ptEAxU0v7bGqCgMnlgb/mCXZXi8piarDmrx0R X-Gm-Gg: ASbGncsZRVY5PdawPTMXaxBOcu7DB2XO+MOZKOPKdye9aHFWbOCzJpf3rlc3uZL0OHE 5eM5wLMkI2YbwJ7Ii+W+2dDf3TvxHt20zZGmF9dbPuEd4ARfeZUwQQ/Ih5g7xxoLPVVoubpmbTH JP6Meyx2tIFj4wQ1u7rWGahwVz6827t5ZMKwMh0gml8dgBKvHKu7h566GiFLbyc3K2jdtXOHPgY CLFYkvLg3exLJOgqotutgp2LbfImESsNoGRLnpWdC17MO+kMGesWgqQxHdSJ7h6lk+tHg4SFhFf 2EQUUv7TJdpWUtBQ4Qd2EHxXItJLODsRMmtNOY2FZN8PJvTI9BdUCYfodSfcn3xGXQ== X-Received: by 2002:a05:6000:1448:b0:38d:a879:4778 with SMTP id ffacd0b85a97d-38dc9343f89mr13325598f8f.33.1739216349517; Mon, 10 Feb 2025 11:39:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IFOm3YA+KmUhyhlND1SLmjpOJWvwKHSp1MsMH3YdrdBRb69cVHv165Q1M/eFn8bTRexW9yPlw== X-Received: by 2002:a05:6000:1448:b0:38d:a879:4778 with SMTP id ffacd0b85a97d-38dc9343f89mr13325571f8f.33.1739216349113; Mon, 10 Feb 2025 11:39:09 -0800 (PST) Received: from localhost (p200300cbc734b80012c465cd348aaee6.dip0.t-ipconnect.de. [2003:cb:c734:b800:12c4:65cd:348a:aee6]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-38dca0b4237sm10326047f8f.85.2025.02.10.11.39.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Feb 2025 11:39:07 -0800 (PST) From: David Hildenbrand <david@redhat.com> To: linux-kernel@vger.kernel.org Cc: linux-doc@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, nouveau@lists.freedesktop.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, damon@lists.linux.dev, David Hildenbrand <david@redhat.com>, Andrew Morton <akpm@linux-foundation.org>, =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= <jglisse@redhat.com>, Jonathan Corbet <corbet@lwn.net>, Alex Shi <alexs@kernel.org>, Yanteng Si <si.yanteng@linux.dev>, Karol Herbst <kherbst@redhat.com>, Lyude Paul <lyude@redhat.com>, Danilo Krummrich <dakr@kernel.org>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Masami Hiramatsu <mhiramat@kernel.org>, Oleg Nesterov <oleg@redhat.com>, Peter Zijlstra <peterz@infradead.org>, SeongJae Park <sj@kernel.org>, "Liam R. Howlett" <Liam.Howlett@oracle.com>, Lorenzo Stoakes <lorenzo.stoakes@oracle.com>, Vlastimil Babka <vbabka@suse.cz>, Jann Horn <jannh@google.com>, Pasha Tatashin <pasha.tatashin@soleen.com>, Peter Xu <peterx@redhat.com>, Alistair Popple <apopple@nvidia.com>, Jason Gunthorpe <jgg@nvidia.com> Subject: [PATCH v2 17/17] mm/rmap: avoid -EBUSY from make_device_exclusive() Date: Mon, 10 Feb 2025 20:37:59 +0100 Message-ID: <20250210193801.781278-18-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210193801.781278-1-david@redhat.com> References: <20250210193801.781278-1-david@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: X4rVh1e1Abl2iF_6t-0-jIN9A1u7YB8XMNw0pat18X0_1739216349 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: AF18F8000C X-Stat-Signature: swkt6rro8fwpnd19gfgmdg5hp7gaehiq X-Rspam-User: X-HE-Tag: 1739216355-220490 X-HE-Meta: U2FsdGVkX1+83fNlLF6Og6+edMljqIqW0qfus+O9bx0wXUDE5RzX0WM3pR4ZEr/ysODph6e2W8GAlzK5wEzpOFyFlL7PX/7ff21Zce/hp1XjaFjyN+JqiPp+1N54XBKoHzm0e6dl35QcStj6tyKxvt8uwCiFHsDEdTLX8DloUvUTX54QWz0u+EfFzm0HaJYYzvjolmERDlms+5vs5K34fy5XL/2M5bHP6d2NdV+VSKoUBsoYnEjdyKqpJi2unNsvTRnZUDehlee38bz5vehsll83GOsJLdL6aDNE+WETqJPLCHPSWPSHvytBDi1uAk07TM94POzBPnLi/u3zN72KfSUiefaf9G4z7id2rh86mo9mWA5+q+p1qSJi/t/42kVDmtY60gzuwL8cUwk9O3w/oVa4SjjWPkI+yvxXAWGt13aFKFWyxIn1S1zdPYIvZkqNqQ7b6HG4BpMRKJZpJybn1/BZnTFM7RZUX6Ot04zLwGYdo6sbS4dlEKu6JJSgvjTAk9nB9wK92bfmiu/x25HN4u0JhUj8gEfURAzZSsl5cMj9s6eZE2bPjU5jvFWPIMHF21ywcT/rZKYYOy+H4HmTMMmfXmWBePtVirXH1Pc/yqZ1Z1s5I04SsyUPTwvuX4nEc0FmecHM6y8Onn9hZONGXyZIEMfqLFtABc4SY8i0l3Z1che2Ev8fkIQchPDqfcX1qqL3dKVk8G9wqjW1lnlxB7k2AETqL8xP58hk9o3sWBfm5GTIj8YDOCKF888svnJUnBriyenp72oLtRLIbX/msOu8g9LEfDr/ojZ/22w/ZQeI6pW0hJ6QLBdtgytNobSe64YnyoHGY1vkgdaZyZZx9sodOnJMqv4l+Vlx8O3CjZrfrKXH8wjbrdjORHeTB9cFprZyF4kKnkh98ZisASsBPGbeflfHkFBTXNKbtZxKgouBhZ5NTWOaYBNs9APN6vj7VVKBbFMBoOPmijAU2qr hmKb7hAQ Vyy+pF1rUhjZ9SRpGN4upcrhbm/VOMiFNQhnOZ6ycfiE0eh41zoEFEnfgt/mdM6/VIPAUMHVex+KUPCfw/9Q2zbbS0JyASndJjlU1n0u0W5hFbjzce2NTih7vPsgYsrMyw9I924Eea6ExrOQZRLs9k7u21Zjz6iufXRQd8q2wsovIqqY30GU3EMe+ZyKXOPH3f+aIIgvXhl31rJnso+fQZiU1dcZ3vOejqLAq8IT/TRAtk0A9fuoTQeOBar4Ic+UrABuW6QhPrD35WnrbuO6th2RGkElr2no7njawbxidSJO29BrRqINOWfYmRu5M+r8EPv28tiZhdUYyArfVI+GOq6UVbjWecGPyE25/73ireeuMuuJUigGUl7tHvpMWjHf5B0sOTI7mWzKRcUDFR01bHHrwZFaqkcdmyoKL3pwvCeZFCJtNlsDabDhtoAgSqa9x46Z6Lj4G+sJB5bpPEGKkHVOQFVl6OpBy73pIVYv4wdnRJGWsybJ/7yVSxVkK2bwaj8nnUitlWZpdl2+GMQE1LsQWqw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: <linux-mm.kvack.org> List-Subscribe: <mailto:majordomo@kvack.org> List-Unsubscribe: <mailto:majordomo@kvack.org> |
Series |
mm: fixes for device-exclusive entries (hmm)
|
expand
|
diff --git a/mm/rmap.c b/mm/rmap.c index e2a543f639ce3..0f760b93fc0a2 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -2435,6 +2435,7 @@ struct page *make_device_exclusive(struct mm_struct *mm, unsigned long addr, struct page *page; swp_entry_t entry; pte_t swp_pte; + int ret; mmap_assert_locked(mm); addr = PAGE_ALIGN_DOWN(addr); @@ -2448,6 +2449,7 @@ struct page *make_device_exclusive(struct mm_struct *mm, unsigned long addr, * fault will trigger a conversion to an ordinary * (non-device-exclusive) PTE and issue a MMU_NOTIFY_EXCLUSIVE. */ +retry: page = get_user_page_vma_remote(mm, addr, FOLL_GET | FOLL_WRITE | FOLL_SPLIT_PMD, &vma); @@ -2460,9 +2462,10 @@ struct page *make_device_exclusive(struct mm_struct *mm, unsigned long addr, return ERR_PTR(-EOPNOTSUPP); } - if (!folio_trylock(folio)) { + ret = folio_lock_killable(folio); + if (ret) { folio_put(folio); - return ERR_PTR(-EBUSY); + return ERR_PTR(ret); } /* @@ -2488,7 +2491,7 @@ struct page *make_device_exclusive(struct mm_struct *mm, unsigned long addr, mmu_notifier_invalidate_range_end(&range); folio_unlock(folio); folio_put(folio); - return ERR_PTR(-EBUSY); + goto retry; } /* Nuke the page table entry so we get the uptodate dirty bit. */
Failing to obtain the folio lock, for example because the folio is concurrently getting migrated or swapped out, can easily make the callers fail: for example, the hmm selftest can sometimes be observed to fail because of this. Instead of forcing the caller to retry, let's simply retry in this to-be-expected case. Similarly, avoid spurious failures simply because we raced with someone (e.g., swapout) modifying the page table such that our folio_walk fails. Simply unconditionally lock the folio, and retry GUP if our folio_walk fails. Note that the folio_walk repeatedly failing is not something we expect. Note that we might want to avoid grabbing the folio lock at some point; for now, keep that as is and only unconditionally lock the folio. With this change, the hmm selftests don't fail simply because the folio is already locked. While this fixes the selftests in some cases, it's likely not something that deserves a "Fixes:". Signed-off-by: David Hildenbrand <david@redhat.com> --- mm/rmap.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)