From nobody Sat Jul 25 18:54:12 2026 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4786235F615 for ; Tue, 14 Jul 2026 22:21:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784067693; cv=none; b=Pya9MilYlm5+X+nBVobpf72IMRFW5tqo0zD4/oH1XGL5892tvZH6y1fHG1EUolFIe/x205qqbbEmQILWNqIDiHilql5OOjNNLY8Gk0q77T9Rs/p4ZL0Kjb/d2FP69hIS2VTZ+Rkrq4kZS9A2fgYRsBIszDM0LhGwyAVxg8aiyBo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784067693; c=relaxed/simple; bh=bwr01/9WY7csMe3oixAvNcmOUvWfBdhgJjR3WJyG5E4=; h=Subject:From:To:Cc:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hvc0lP0JUVptMIOf6i8CyoK3VQ3SSSZ3UBGHja4OEJ6dL5ZoIfdPi+Sfuc4nkWFuX9qfa8nbc3836PAFX4jOu/m0Y8ROp7NC83KzIVrskDKIBXrgRcjU32denFJ7AVc954lbEKLkDuromLguBneNhmhaHTDOZTDfLReET1+8J94= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=pFM+hxXf; arc=none smtp.client-ip=209.85.216.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pFM+hxXf" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-383adaa461fso1100676a91.3 for ; Tue, 14 Jul 2026 15:21:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784067691; x=1784672491; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:message-id:date:cc:to:from:subject:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Vc1a4EA+CKVDZWmxoam2W7gn+VW7+IE4FDUnuymM6t4=; b=pFM+hxXfzFnja+aVqNPW9SovupETbvBAdQAZy9VjiPEUkx+xPnbeFY8Sy9DLT8l+RG UYtifsORQ6WeMVOcakDxYKwXZk6YM6vujXJyeQGm/Jozr4apH4pwDR0VUQuyYt/m55VG 4880/fqC2MmP58/NWVVgs6N9dCIIuFF2hcNVU16N2rnbeBCrFvQGVA0zR99UFV/BEqm4 8RmPxacetvCIjf9FAsfnQH2IoxGUphSZkxRXsaGgXXmh/OS9wS6Pn/9TprTwzTqvBKht QI4LCVXsje05oyOd4LlLa/rtoMj10S1a8n58Z8697TLf5jb3SaJ6uCRXhW188Fxc2Ilf 3YQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784067691; x=1784672491; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:message-id:date:cc:to:from:subject:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Vc1a4EA+CKVDZWmxoam2W7gn+VW7+IE4FDUnuymM6t4=; b=IAD62SpgiHWWmGLcqR06EThdR57hcm79Ko6D9EAmZ/19EQM/HNlampfYtZ5cWCzoOw zrursAoLlvP1lacBoD6wRMIST/iSjB+BlOXp4l0hMXOTE2FTyk0bwePTBIiIlI++5dxf IKU4FPHoWhx5kdFN6QPdMQlkXenLRL5J7Q496eUx8GFUj4ZSodZxUB9gJ46d7rQwzZ+Z a8knnzV088GIIfQ/Rk3J6tMP/+/V1xRYklyO3nLAkbS7h9dOz6+KPm8SyOperQvb73fK nxZfVaaTrPKW/p9YJ+Gy5X4H5VJ9U62/Llbgsrx7aGvRg3MZsu4LJPS26IXNfWml94wh dcqg== X-Forwarded-Encrypted: i=1; AHgh+RrDVGFQOvmI59eINLnaUKWn+7Nrh3PUD683jPLl6c8SXH3s+PELXysFHmNCIflYvFNqLoh6iHRiFwTGaRs=@vger.kernel.org X-Gm-Message-State: AOJu0Yx1wI5A4Gk7vQ3HQFbsbl8sYsqTlxNfo1XNntGuA4pPcoREYYT/ 8sR7WsP3kvh7XsB5zw/WNcqKlnqLO5fa3ZTBdxebrkA3ObnlOy1ZCQ5v X-Gm-Gg: AfdE7clwR7xJ1rNvV4z3Y260drSnlcTaUr4dzH7uB2Tn4t11D+Ul+jk9YXhBoszEMzb rI6FrvmiSVOaXTzkkMRV3Xmne+n50PYWd6nZHGxF5yPqf9DstkQutVnUAJ2Ob8/6ZhXxM0Ctf1s KcPWKDUKntylpaV9zsdi1QyMaL+DXD/xtt/V8Tt3b/Cq7gpjOBoIRzJrjohNH6S1RXjMw1y8yXL kn6czMyOLtuQci+nq3PNG/+Qb8MKs76oW0nap2C/FZbJIgb9pylUZ0DHVr+x+wcfKkRCv+HbO1c +JXPGVgLcxULfRQ6uTRk/6PZI4Dc2LmNm6qUVeP/ekn9DXTzWUkjAuucj0rGC/5125d4Je9vFlu xBXg+F/ZZXA4w+biyxmpz+DW5ymn0BB6SV2Ak8sGfBCs4mlGBemoL4zWJNnKRTuBL0893gMDOxH nlASgU0SnbLFkGltqhkbCVPjynFDuuPx+U/mZytc1JiMSfENzQUGaC4rQhKYc= X-Received: by 2002:a17:90b:3d4b:b0:381:1f51:1ff0 with SMTP id 98e67ed59e1d1-38dc782ab85mr13404006a91.2.1784067690606; Tue, 14 Jul 2026 15:21:30 -0700 (PDT) Received: from [192.168.0.160] (c-98-225-44-182.hsd1.wa.comcast.net. [98.225.44.182]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38e172b6d08sm2132074a91.2.2026.07.14.15.21.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 15:21:30 -0700 (PDT) Subject: [PATCH v2 1/4] fixup! mm/hmm: add hmm_range_fault_unlocked_timeout() for mmap lock-drop support From: Stanislav Kinsburskii To: airlied@gmail.com, akhilesh@ee.iitb.ac.in, akpm@linux-foundation.org, corbet@lwn.net, dakr@kernel.org, david@kernel.org, jgg@ziepe.ca, kees@kernel.org, leon@kernel.org, liam@infradead.org, lizhi.hou@amd.com, ljs@kernel.org, lyude@redhat.com, maarten.lankhorst@linux.intel.com, mamin506@gmail.com, mhocko@suse.com, mripard@kernel.org, nouveau@lists.freedesktop.org, ogabbay@kernel.org, oleg@redhat.com, rppt@kernel.org, shuah@kernel.org, simona@ffwll.ch, skhan@linuxfoundation.org, skinsburskii@gmail.com, surenb@google.com, tzimmermann@suse.de, vbabka@kernel.org Cc: dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rdma@vger.kernel.org Date: Tue, 14 Jul 2026 15:21:28 -0700 Message-ID: <178406768885.1106335.9955379956617151440.stgit@skinsburskii> In-Reply-To: <178406760622.1106335.2379450382728057793.stgit@skinsburskii> References: <178406760622.1106335.2379450382728057793.stgit@skinsburskii> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The hmm_range_fault_unlocked_timeout() example checks for a concurrent mmu_interval_notifier invalidation after the HMM fault has succeeded. The sequence number used for that check is stored in range->notifier_seq by hmm_range_fault_unlocked_timeout(), so the retry check should use the same notifier stored in range as well. Update the example to pass range.notifier to mmu_interval_read_retry(), and spell out that the retry check uses the notifier and sequence number stored in range by the HMM fault helper. This makes the relationship between the HMM walk and the later invalidation check explicit. Signed-off-by: Stanislav Kinsburskii --- Documentation/mm/hmm.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Documentation/mm/hmm.rst b/Documentation/mm/hmm.rst index 5c88d2cf0818..fc1b8dc19825 100644 --- a/Documentation/mm/hmm.rst +++ b/Documentation/mm/hmm.rst @@ -206,7 +206,7 @@ The usage pattern is:: goto out_put; =20 take_lock(driver->update); - if (mmu_interval_read_retry(&interval_sub, range.notifier_seq)) { + if (mmu_interval_read_retry(range.notifier, range.notifier_seq)) { release_lock(driver->update); goto again; } @@ -225,7 +225,8 @@ The usage pattern is:: The driver->update lock is the same lock that the driver takes inside its invalidate() callback. That lock must be held before calling mmu_interval_read_retry() to avoid any race with a concurrent CPU page tab= le -update. +update. The retry check must use the same notifier and sequence number sto= red +in ``range`` by ``hmm_range_fault_unlocked_timeout()``. =20 Holding the mmap lock across HMM faults =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D From nobody Sat Jul 25 18:54:12 2026 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 36A773815D0 for ; Tue, 14 Jul 2026 22:21:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784067699; cv=none; b=Nqb6gFQGj+x7l42mgaX/cqm8zCqhEw5k0SOj+rUDgWXZoUxzz6iZNGWHtNuxf4K+OBkLQWUlLIGSLVV97WRekxXn0mVPXC9UBRmzPFpSF9c/6RiHdBz9Z1B8+YWk9Jn1H4BdR8T0X4bVkPBRPAmLjUa5dQHJaMY03MQVpqzPWsk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784067699; c=relaxed/simple; bh=yfrRBEA8+1jTOU/Ov53fj/3O/42x9krywkX8bMxjRO4=; h=Subject:From:To:Cc:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bunlJ4RhvTQZhAm/leO0j/OuxVdCSdhfwaUpcUMJMkqNzoK1NvgRWSne08GEfAiEqpDMpW7FkrhEhl6jp7D9u6GDKHJnU6026TYC5Ox7wZKzTdIMv1rvKLgr9i7cusH8c410aNDs8B4GRb0rI3yS/ECLSG5oD4QuRgiFhx8JFCI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J1iGNVTW; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J1iGNVTW" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-8486672f03cso4416358b3a.0 for ; Tue, 14 Jul 2026 15:21:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784067697; x=1784672497; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:message-id:date:cc:to:from:subject:from:to :cc:subject:date:message-id:reply-to:content-type; bh=s/XP8nJGTiSx4jpNVu3XVkKeZD1kh7QswKhz9rXqGp8=; b=J1iGNVTWEe0KyQiu+5OStpLUutxVy8Gh9wWoQqtFoamqdxqxQgOIATZL8pqk99cj+b 7l6aQCg6jdHL8gyDaVYC9sqCgYg/0R9/RHxBFnbBnExH2oQAbtjFZjJEBVoilbCdReTX DdAxpnjAGK4/gSJMJTtBTcQYK8tUgNVHu716ES7B65rFzOhchWzw30Ydk1AYvD4InDsk 5wtJjKtyarYR2MA6ao6ruIK1W+IfJZYyql/phkA2JinAzCV0JLyzSyYr0jZuu8xUxDOo 0ByrR1ob3xk3/w90uoAzs9o945rEBI0DraCcd99SGGqJdHlEe4A1fyXHtk4DA1qcBceV MXaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784067697; x=1784672497; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:message-id:date:cc:to:from:subject:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=s/XP8nJGTiSx4jpNVu3XVkKeZD1kh7QswKhz9rXqGp8=; b=UEEZlCCIfBed5fGYENXWgIqggBRz6eHnVatz1BrwTmof1D4mD9M4tpaZ8HcdD4s5zC W0Wwadis9YMsYCwdqIOzhy/h1IyRZ8/bUrr8ipj6MfHR7uKjMNv1DcEqp88JUObon2Dy mqwEs23+1IZxZXtkYYwMO/qo6B1x/CDgoZk2Rk36gikFWC879SZ6UELzEpZjASMvWmb6 +u/cSBNxDkjbwyv9ovGFglzq28mnQeRUHTsB/PHVvrUaYymVCwNj5PTYD8TcKV8eqxFP 3LnpuUWXPQtWWph0rUoGm/YjLekPohjvCDoZ2rfCiKHqtAxbrUWhDZLVuyIq04oEDyzK K/VQ== X-Forwarded-Encrypted: i=1; AHgh+RrS1cx/VP2/RRwo3Eb5xV0jkHCIoR6B1q1bgrE2FcH7xJAD0N8tDzEkFe26B1KomW9ngs5nXP4BceJZXCg=@vger.kernel.org X-Gm-Message-State: AOJu0Yz8T0dHoLglUd+UnRgaCXNzjfTXD2Zci40U9DYPoD0/J+jZiV+A t0p/hDydYms3Ktc6khTVJdypc5hHpoRebzLHobv820HQ7+udPpErlOuA X-Gm-Gg: AfdE7ckXgedAkszyUkQQWnj/n+hSeeSemGzMWhYhVFzYa4PGl4lKrPxFOIU3BZIuhbJ 1TCPTcQTelLGCIXSV5MwoZliUXrNMaWj8vwyPcN3xrzL43HXvMkCSN8TF1h8L9uFFL4oUpdR2RJ NmS9cgEO3tkBVLZ85rU9kQo4UAUhx2CQ/2apc9DuZ2Q3I0GuWr5lmvu7vlJz3AC+h/K9MvttouB ljdZBeCS6lNEE8m4FIYEc/8f/yjyAuK5Ka3cn4AoFv9rqPTTdvC/7NrbDQN0XxE4RHQsKgd57v7 PUFV0M0YSpntwKvQhdSx/uaeGQpSMTRMaA4HFb6/XmLTe22xoYAU12xok8yFeGTiqFJyoiH/EMd svCZ1Va0Jq7E+CTG7t2n6spoeAaUxmCFMQoneCHtdVzEeqY81sDCBEOEq1Hj6dDq3kdPnNOEVQf bLAo3RRmwvL5LhhDMtBUJb6STcp65bXOi6oK2gECJjj33C9M0UFhE685IQ61PX0A4j+F/YGg== X-Received: by 2002:a05:6a00:4b13:b0:847:8dec:141f with SMTP id d2e1a72fcca58-84a672ea3bfmr293017b3a.51.1784067697563; Tue, 14 Jul 2026 15:21:37 -0700 (PDT) Received: from [192.168.0.160] (c-98-225-44-182.hsd1.wa.comcast.net. [98.225.44.182]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a4f238f75sm2119769b3a.9.2026.07.14.15.21.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 15:21:37 -0700 (PDT) Subject: [PATCH v2 2/4] fixup! drm/nouveau: use hmm_range_fault_unlocked_timeout() for SVM faults From: Stanislav Kinsburskii To: airlied@gmail.com, akhilesh@ee.iitb.ac.in, akpm@linux-foundation.org, corbet@lwn.net, dakr@kernel.org, david@kernel.org, jgg@ziepe.ca, kees@kernel.org, leon@kernel.org, liam@infradead.org, lizhi.hou@amd.com, ljs@kernel.org, lyude@redhat.com, maarten.lankhorst@linux.intel.com, mamin506@gmail.com, mhocko@suse.com, mripard@kernel.org, nouveau@lists.freedesktop.org, ogabbay@kernel.org, oleg@redhat.com, rppt@kernel.org, shuah@kernel.org, simona@ffwll.ch, skhan@linuxfoundation.org, skinsburskii@gmail.com, surenb@google.com, tzimmermann@suse.de, vbabka@kernel.org Cc: dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rdma@vger.kernel.org Date: Tue, 14 Jul 2026 15:21:35 -0700 Message-ID: <178406769581.1106335.2090301352195900623.stgit@skinsburskii> In-Reply-To: <178406760622.1106335.2379450382728057793.stgit@skinsburskii> References: <178406760622.1106335.2379450382728057793.stgit@skinsburskii> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable nouveau_range_fault() now uses hmm_range_fault_unlocked_timeout() for the HMM fault path. Pass the remaining SVM fault timeout into HMM as a positive relative timeout instead of open-coding the HMM retry loop in nouveau. Keep the outer absolute timeout around nouveau's mmu_interval_read_retry() loop. HMM's timeout only bounds retries while HMM is walking and faulting the range. Once HMM returns successfully, a continuous stream of mmu-notifier invalidations can still make mmu_interval_read_retry() restart the operation. This path runs from the GPU fault worker, so fatal signals for the faulting userspace task cannot be relied on to break that outer loop. Use time_after_eq() before the HMM call so the remaining timeout passed to HMM is always positive. This preserves the old timeout behavior at the expiry boundary and avoids passing 0, which means retry indefinitely, to hmm_range_fault_unlocked_timeout(). Signed-off-by: Stanislav Kinsburskii --- drivers/gpu/drm/nouveau/nouveau_svm.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_svm.c b/drivers/gpu/drm/nouvea= u/nouveau_svm.c index 4cfb6eb7c771..58735446d783 100644 --- a/drivers/gpu/drm/nouveau/nouveau_svm.c +++ b/drivers/gpu/drm/nouveau/nouveau_svm.c @@ -678,14 +678,20 @@ static int nouveau_range_fault(struct nouveau_svmm *s= vmm, range.end =3D notifier->notifier.interval_tree.last + 1; =20 while (true) { - if (time_after(jiffies, timeout)) { + long remaining =3D timeout - jiffies; + + /* + * The HMM timeout only bounds retries while HMM is walking and + * faulting the range. This fault is handled by a kernel worker, + * so fatal signals from the faulting process cannot stop an + * endless stream of invalidations here. + */ + if (time_after_eq(jiffies, timeout)) { ret =3D -EBUSY; goto out; } =20 - ret =3D hmm_range_fault_unlocked_timeout(&range, - max(timeout - jiffies, - 1L)); + ret =3D hmm_range_fault_unlocked_timeout(&range, remaining); if (ret) goto out; From nobody Sat Jul 25 18:54:12 2026 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21C503F6C4D for ; Tue, 14 Jul 2026 22:21:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784067706; cv=none; b=VZ5JMKB74Tr1SenX2rhKhETu0W09SioCD3WIzS7KcmWWY5pjbbcly/hNnKFKWtDj+XPogQxPVbHdt5tFjvSW7lfEaqx0SwxDY4RoomBAZDXb1GuNeDbeihmFYbkj+ua4/s9XisbW/DSA+jCzdOtV5Swe8TDOKXUair55ugUmiXk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784067706; c=relaxed/simple; bh=A4Er1bYo7B9F/Fh0sK6T9CFPqwFBZai4b02cKx2Qk+I=; h=Subject:From:To:Cc:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uNYnTdqRP2hWuFSXp6tZbneLZ4AaREy+kS5Zah5B1XTaC8tOn9z5sfHYlUQV59ngqD/hTJxWH15ka8w9sMs3XJHY1LbUaFGBGoCOc4usU3csXSYwO2DfdO2aVQGjJ9+0RVA5lOGtsMVMcVATM84QQJKKXStninr7ubmfGfKZi+o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=e46TpYuY; arc=none smtp.client-ip=209.85.210.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="e46TpYuY" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-8485bd28dd0so5395641b3a.2 for ; Tue, 14 Jul 2026 15:21:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784067704; x=1784672504; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:message-id:date:cc:to:from:subject:from:to :cc:subject:date:message-id:reply-to:content-type; bh=O6UyZtJMGWyTXwkf9Ut71gXKM+acqkuQS9WqdrHTITA=; b=e46TpYuYIxYIhKkASg9LCbTW93foWXhS3iWCTwgoxIytDClVqta+oJc+jdS0lX/WFS aonGRXYzGXEa1xyqv4TfG1T9EKB3KiZIgceQ7+LKrF867I5jExmtTGm6Fa/u4orDXx1L veodExEc+DzuNqsQkMlP9uvRJB+gjlzNWqVdxj9RhvAmgSRWEP3hqu3h9qZONko5J6oi bvN6K8c8dY+mqslrhZ7zmUn/4DZfz0+f0d0YRx2VRZrnmpzZC603qmtEUt/SN29UvHSB e++K3ZsNlcgBgRjqNEuR6Yec1BqkHDOIKo0nPEk6DuaCROAPG+ngUwRJc7EG0BL6p3Gy 679w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784067704; x=1784672504; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:message-id:date:cc:to:from:subject:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=O6UyZtJMGWyTXwkf9Ut71gXKM+acqkuQS9WqdrHTITA=; b=WxfEYPWyURIH384uSjM/0yh7W4cG6pR4frraDPBuAmffw+6No3pDjvL58K2akihnQo x00Iz2cvXTZdtxfw1sGyhQOLpq9XOXqvZ7cVBziZ0V/l+h+OE6Gqfx5eOrORjSGhlhAS XnOubrumrGkSmjFAmzRnp84GyU3GqmLrVn0xkQEV6VIFC7oEBeDlwAlX+vfTceAm0jtP NEaMISp20mYcvFKZO+D0Vg0y6TBUx0IoYZiOQaHjJSfsE13lcC4YtxqA8Yb+EwKX1L9P qR0m1GBrPYFSbnHFgXqr01sfgmf2n5bYuxdMCVvlEtLDKEMEoHOKWVj/i3YroTKvjMFM WZsQ== X-Forwarded-Encrypted: i=1; AHgh+RoJrXe7O9JFxLx+wFODFaDjxsHINFn4fGBLej5/ZbbIkIRq/lAssb6hQWKkVTFguNkEwf6zpe5KfzEOCG4=@vger.kernel.org X-Gm-Message-State: AOJu0YzNM0nNrtqmdY9GggP6P8sjiF083GDPComyMTJoXDVBRlMyP15I SnM89z8Vo61KucrVY7dnAkpkyvepDbP5XYKShx8wAugFXaT6zzZZYLn7 X-Gm-Gg: AfdE7cneGcJEXvFyQZyH+ITUn6Pbc5KYt7fG/Oe70xgyicTqQkJijvcPQCMDsVmIfLE Cvio2/v1SoeQFf/zQeOJQ1WFgsl8vSA4rSVLQrGiMOxL1CWxyL4swlc6SBVKTIoDXeWXBIJAKx+ gYasQibt9w9nKux8uYRVisMxt36NAX/YtowfHRCKv696RJxCqTUOODNTQoM9TOUVkV9WA0HFX9Z jznAWPt079EzJbPSTI7b0wTfsEqU5cLC4XvweP+2HZQK6a2nEH1+XcEiboqmdkQ5qX5QaQ0IJaa BpWUts2rv+p+Y/l4/fTCy+O4lecepAXUZVseTUXqBS8QxJjd0y8Kq6gpFU4zWdxZkiMoTiWTcVK 92uk+w/TId8K4mAQaNIMjgbNhvZ7eZq/1fZhDYrH2VdPWmEkFQo29qO+eeetNUZGjF8K+qDfOm0 bHhD3rPyN+K2a3HJkHSsIdts+jyZeQjfeEXPN6rus2yRe2O0ItasxIzvYcDWE= X-Received: by 2002:a05:6a00:1819:b0:848:4742:90a6 with SMTP id d2e1a72fcca58-84a5140d4b5mr4845081b3a.15.1784067704431; Tue, 14 Jul 2026 15:21:44 -0700 (PDT) Received: from [192.168.0.160] (c-98-225-44-182.hsd1.wa.comcast.net. [98.225.44.182]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a4ff2ea4csm2010807b3a.23.2026.07.14.15.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 15:21:44 -0700 (PDT) Subject: [PATCH v2 3/4] fixup! accel/amdxdna: use hmm_range_fault_unlocked_timeout() for range population From: Stanislav Kinsburskii To: airlied@gmail.com, akhilesh@ee.iitb.ac.in, akpm@linux-foundation.org, corbet@lwn.net, dakr@kernel.org, david@kernel.org, jgg@ziepe.ca, kees@kernel.org, leon@kernel.org, liam@infradead.org, lizhi.hou@amd.com, ljs@kernel.org, lyude@redhat.com, maarten.lankhorst@linux.intel.com, mamin506@gmail.com, mhocko@suse.com, mripard@kernel.org, nouveau@lists.freedesktop.org, ogabbay@kernel.org, oleg@redhat.com, rppt@kernel.org, shuah@kernel.org, simona@ffwll.ch, skhan@linuxfoundation.org, skinsburskii@gmail.com, surenb@google.com, tzimmermann@suse.de, vbabka@kernel.org Cc: dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rdma@vger.kernel.org Date: Tue, 14 Jul 2026 15:21:42 -0700 Message-ID: <178406770278.1106335.17232929459598625570.stgit@skinsburskii> In-Reply-To: <178406760622.1106335.2379450382728057793.stgit@skinsburskii> References: <178406760622.1106335.2379450382728057793.stgit@skinsburskii> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable aie2_populate_range() now uses hmm_range_fault_unlocked_timeout() to let HMM own mmap_lock acquisition and retry handling while populating an invalid user mapping. The timeout passed to that helper is a relative HMM retry budget, not an absolute deadline. Pass HMM_RANGE_DEFAULT_TIMEOUT directly to the HMM helper instead of computing the remaining time from a local absolute deadline. The broader command submission path still keeps its existing timeout around repeated range population attempts, while each HMM fault attempt receives a fresh retry budget for HMM's internal mmu-notifier retries. Keep the existing driver-visible timeout errno by translating -EBUSY from hmm_range_fault_unlocked_timeout() to -ETIME on return. Signed-off-by: Stanislav Kinsburskii --- drivers/accel/amdxdna/aie2_ctx.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/accel/amdxdna/aie2_ctx.c b/drivers/accel/amdxdna/aie2_= ctx.c index 548ba4315554..21f2817751f9 100644 --- a/drivers/accel/amdxdna/aie2_ctx.c +++ b/drivers/accel/amdxdna/aie2_ctx.c @@ -1037,7 +1037,7 @@ static int aie2_populate_range(struct amdxdna_gem_obj= *abo) bool found; int ret; =20 - timeout =3D jiffies + msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); + timeout =3D msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); again: found =3D false; down_write(&xdna->notifier_lock); @@ -1062,13 +1062,9 @@ static int aie2_populate_range(struct amdxdna_gem_ob= j *abo) return -EFAULT; } =20 - ret =3D hmm_range_fault_unlocked_timeout(&mapp->range, - max_t(long, timeout - jiffies, 1)); - if (ret) { - if (ret =3D=3D -EBUSY) - ret =3D -ETIME; + ret =3D hmm_range_fault_unlocked_timeout(&mapp->range, timeout); + if (ret) goto put_mm; - } =20 down_write(&xdna->notifier_lock); if (mmu_interval_read_retry(&mapp->notifier, mapp->range.notifier_seq)) { @@ -1086,7 +1082,7 @@ static int aie2_populate_range(struct amdxdna_gem_obj= *abo) put_mm: amdxdna_umap_put(mapp); mmput(mm); - return ret; + return ret =3D=3D -EBUSY ? -ETIME : ret; } =20 int aie2_cmd_submit(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job = *job, u64 *seq) From nobody Sat Jul 25 18:54:12 2026 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C46FD42BC54 for ; Tue, 14 Jul 2026 22:21:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784067714; cv=none; b=Q9wY6FgMKgFjtOoPdTBUce6pxt42074XHmlDxr+M6LiKS4vglhdpOfzp95cLmq2rIirPWXBsd1EtgN280nhDMAg89g1AOSWrDfOmJX5CKkomfFB9Gh3oGNOOXX9MPxULtA4BwGx/BhJ5XgtdAHxp6/9V9nE7Em4At+QvfuFbIVE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784067714; c=relaxed/simple; bh=Q8uBbE9XdPRVXQaZ0ExTI42TK7zcMOJJhXBlrcrT8a4=; h=Subject:From:To:Cc:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TVZzsm5AtdUeMZ/1lawPsNK70Mnb/kanVh/VBBDdu3XB6JhxOI24ZHpLsNfEqxCONsu1jgMKllf7BI1ZHzFsvwgdGOO47fhmOXv12d5XW5l5yk/eIBlnsetfqCR5QmgZXfNzC4JZxR71VihjvNSnxYRWQaH/1vmPl8JbMk5UVYY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bCcqBd6p; arc=none smtp.client-ip=209.85.214.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bCcqBd6p" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2cedda2ce6fso17383785ad.1 for ; Tue, 14 Jul 2026 15:21:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784067712; x=1784672512; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:message-id:date:cc:to:from:subject:from:to :cc:subject:date:message-id:reply-to:content-type; bh=EUZJ2b06rpE59kyPt/lRc7T/ATHNB4Peeih6JEYSOE8=; b=bCcqBd6pLM1VKsXErISfU78JfZjhPvwtrPLKWjhOTWaMKlw3MkCu6iNgjz3nvZ8Y5I GP55kEVQPhUwQn4WehX6KPsxRiyraoW0q1ySXyPEWHL4NBQ23BAX6CsWVmdzcV2ZgAdp aZCp/AvReu1EG1gm8RsE5U08mCNNsa5AfntU5TOVoTceDeRTv1Vo68SSKmIR7E6SKVHC gZEQ3+1AMnpYRI3WXOpLobTzLIdIA51HznWH7crClBm2IiiKrRTBivXZ49MTwkrSb4Nw KbG5UQd4WpH6FWp277B6k6OR8PfZ+mHEiUls7Et9WM8WyxgzSUSyJqkk2rLsf8BcTtH9 AOHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784067712; x=1784672512; h=content-transfer-encoding:content-type:mime-version:user-agent :references:in-reply-to:message-id:date:cc:to:from:subject:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=EUZJ2b06rpE59kyPt/lRc7T/ATHNB4Peeih6JEYSOE8=; b=G+8OrjrCdAjVR6V7IYPpKJNOcQRl0wslJ9XRdbNcCO8P/dzr+SOM+rsw5e6NdOR1h1 H1OTVTL/tLzvgeRNofEs9Z1gIx2H2AuBIB7tHJKRxrb95bEqMRsg76x6CiLwV34gNVkj atSTt7ge/jp6xumACIn85NUkE1cK86KELb/ZXJMlc8a1D3XRwge+Hu4MRHZyCMJoHheT Eq/5SAbyEz2z0KqSGm71VJ3RiweJiB+NWkaRQk3NoUxft/tCJOmgrerA2LtsXfkNAZ+x Ru+kKw4uZaheGtfJ5Bee/Z4B2qI6BTYQBYN3K6BYmUqh6UbWY+pMDURx0ReSU7SxAtvX Ecww== X-Forwarded-Encrypted: i=1; AHgh+Rr/vy7z6Bp2v+DtHd688vkkRR5cmZgullwx7M5gDmWNVegtxfLb3ORPtfXZwHQvKRrSqwHtiq9PhWfR78k=@vger.kernel.org X-Gm-Message-State: AOJu0YzJDxVlJz2fKKgXzkmD+oALFkDcG5ZKQAbEzorLokYLiTsC3sJf 2Bzq8Sf5otVlBjQr9AhMRDpYM3CaOxq94WCrm4eZiDyOe87wTvg4Nen6 X-Gm-Gg: AfdE7cn/MZoi/kMBWAB84h040gpufElsV9WasiKxAmaJH8umuHLGrDggSJn2VMrzYfm AQKRcU8fuoQBF9gt4OQkZj44qE6PPpI3qiMux4cIXpOsYBnVtrsGgvxVTeuWF74h+DeTerdrZmY iGQaeaRwQ5CTyrwb2g0pKJCbxdbL5xp5oPIXbE1aBffKGUyCDVpy7w3YNPg5/JR1OAzNLVqlYwy /COt0Ppb4cmXVbIMr/BboQpAkiUlaRJB5LGX/oVazbLIAaNOeTOPHeU95AQQqdBcJ5WsYB57vvv Cn+W2rWvJThoIUN067J1VlJiaeVli78WVLod5HnevrBTww+crt48YwfdJb+eY/L3QBE85Ts/h9J Gh7ohjSECUrJcKSYVr2GC9VUfKyTqUj986IG3KIrHGZcQ/HEHluRabA4QeC+BVkdDvGL7Zmf9tI hAx7XlxEX2pPFYJa8JF+rAba7bDUvsx1ZHEJofKre+Pm+Oo1P6k0JUCALvwVc= X-Received: by 2002:a17:902:e751:b0:2cc:307c:51f2 with SMTP id d9443c01a7336-2cef143aec1mr42102315ad.22.1784067712200; Tue, 14 Jul 2026 15:21:52 -0700 (PDT) Received: from [192.168.0.160] (c-98-225-44-182.hsd1.wa.comcast.net. [98.225.44.182]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9d1f030sm122554955ad.51.2026.07.14.15.21.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 15:21:51 -0700 (PDT) Subject: [PATCH v2 4/4] fixup! drm/gpusvm: use hmm_range_fault_unlocked_timeout() for range faults From: Stanislav Kinsburskii To: airlied@gmail.com, akhilesh@ee.iitb.ac.in, akpm@linux-foundation.org, corbet@lwn.net, dakr@kernel.org, david@kernel.org, jgg@ziepe.ca, kees@kernel.org, leon@kernel.org, liam@infradead.org, lizhi.hou@amd.com, ljs@kernel.org, lyude@redhat.com, maarten.lankhorst@linux.intel.com, mamin506@gmail.com, mhocko@suse.com, mripard@kernel.org, nouveau@lists.freedesktop.org, ogabbay@kernel.org, oleg@redhat.com, rppt@kernel.org, shuah@kernel.org, simona@ffwll.ch, skhan@linuxfoundation.org, skinsburskii@gmail.com, surenb@google.com, tzimmermann@suse.de, vbabka@kernel.org Cc: dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rdma@vger.kernel.org Date: Tue, 14 Jul 2026 15:21:49 -0700 Message-ID: <178406770964.1106335.10099816010446253543.stgit@skinsburskii> In-Reply-To: <178406760622.1106335.2379450382728057793.stgit@skinsburskii> References: <178406760622.1106335.2379450382728057793.stgit@skinsburskii> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The timeout passed to hmm_range_fault_unlocked_timeout() is a relative retry budget for HMM's internal mmu-notifier retry loop. drm_gpusvm was still keeping an absolute deadline around the outer driver retry logic and passing the remaining time into HMM. Pass HMM_RANGE_DEFAULT_TIMEOUT directly to hmm_range_fault_unlocked_timeout() on each HMM fault attempt instead. If HMM succeeds but the later drm_gpusvm-side mmu_interval_read_retry() check observes an invalidation, retry with a fresh HMM retry budget. This keeps the timeout focused on repeated notifier retries inside HMM, while avoiding an outer deadline that also accounts unrelated driver-side work after HMM has made progress. Signed-off-by: Stanislav Kinsburskii --- drivers/gpu/drm/drm_gpusvm.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c index b8f2dd9982f5..76e8a0028c7f 100644 --- a/drivers/gpu/drm/drm_gpusvm.c +++ b/drivers/gpu/drm/drm_gpusvm.c @@ -852,8 +852,7 @@ enum drm_gpusvm_scan_result drm_gpusvm_scan_mm(struct d= rm_gpusvm_range *range, .end =3D end, .dev_private_owner =3D dev_private_owner, }; - unsigned long timeout =3D - jiffies + msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); + unsigned long timeout =3D msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); enum drm_gpusvm_scan_result state =3D DRM_GPUSVM_SCAN_UNPOPULATED, new_st= ate; unsigned long *pfns; unsigned long npages =3D npages_in_range(start, end); @@ -867,8 +866,7 @@ enum drm_gpusvm_scan_result drm_gpusvm_scan_mm(struct d= rm_gpusvm_range *range, hmm_range.hmm_pfns =3D pfns; =20 retry: - err =3D hmm_range_fault_unlocked_timeout(&hmm_range, - max(timeout - jiffies, 1L)); + err =3D hmm_range_fault_unlocked_timeout(&hmm_range, timeout); if (err) goto err_free; =20 @@ -1459,8 +1457,7 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm, .dev_private_owner =3D ctx->device_private_page_owner, }; void *zdd; - unsigned long timeout =3D - jiffies + msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); + unsigned long timeout =3D msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); unsigned long i, j; unsigned long npages =3D npages_in_range(pages_start, pages_end); unsigned long num_dma_mapped; @@ -1478,9 +1475,6 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm, return -EINVAL; =20 retry: - if (time_after(jiffies, timeout)) - return -EBUSY; - hmm_range.notifier_seq =3D mmu_interval_read_begin(notifier); if (drm_gpusvm_pages_valid_unlocked(gpusvm, svm_pages)) goto set_seqno; @@ -1495,8 +1489,7 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm, } =20 hmm_range.hmm_pfns =3D pfns; - err =3D hmm_range_fault_unlocked_timeout(&hmm_range, - max_t(long, timeout - jiffies, 1)); + err =3D hmm_range_fault_unlocked_timeout(&hmm_range, timeout); mmput(mm); if (err) goto err_free; @@ -1718,8 +1711,7 @@ int drm_gpusvm_range_evict(struct drm_gpusvm *gpusvm, .end =3D drm_gpusvm_range_end(range), .dev_private_owner =3D NULL, }; - unsigned long timeout =3D - jiffies + msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); + unsigned long timeout =3D msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); unsigned long *pfns; unsigned long npages =3D npages_in_range(drm_gpusvm_range_start(range), drm_gpusvm_range_end(range)); @@ -1734,8 +1726,7 @@ int drm_gpusvm_range_evict(struct drm_gpusvm *gpusvm, return -ENOMEM; =20 hmm_range.hmm_pfns =3D pfns; - err =3D hmm_range_fault_unlocked_timeout(&hmm_range, - max_t(long, timeout - jiffies, 1)); + err =3D hmm_range_fault_unlocked_timeout(&hmm_range, timeout); =20 kvfree(pfns); mmput(mm);