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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D1AB6E83054 for ; Tue, 3 Feb 2026 05:28:36 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0139210E52B; Tue, 3 Feb 2026 05:28:36 +0000 (UTC) Received: from us-smtp-delivery-44.mimecast.com (us-smtp-delivery-44.mimecast.com [205.139.111.44]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0341010E52B for ; Tue, 3 Feb 2026 05:28:34 +0000 (UTC) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-152-ZpPcaSQWMjmLBQyi2p7OPg-1; Tue, 03 Feb 2026 00:28:30 -0500 X-MC-Unique: ZpPcaSQWMjmLBQyi2p7OPg-1 X-Mimecast-MFC-AGG-ID: ZpPcaSQWMjmLBQyi2p7OPg_1770096509 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CBA5619560B2; Tue, 3 Feb 2026 05:28:29 +0000 (UTC) Received: from dreadlord.redhat.com (unknown [10.67.32.75]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C28A21956053; Tue, 3 Feb 2026 05:28:27 +0000 (UTC) From: Dave Airlie To: dri-devel@lists.freedesktop.org Cc: nouveau@lists.freedesktop.org Subject: nouveau/vmm: fix switching between small and large PTEs Date: Tue, 3 Feb 2026 15:25:24 +1000 Message-ID: <20260203052823.2220053-1-airlied@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 8Qf9vApvmpnJedSQH6swmgalAfDMmBrMui2WpuSpCnI_1770096509 X-Mimecast-Originator: gmail.com Content-Transfer-Encoding: quoted-printable content-type: text/plain; charset=WINDOWS-1252; x-default=true X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The nouveau page table has dual page tables with special states for tracking small vs large pages at the bottom level. However the current code isn't designed with the higher level large page support in mind. The nouveau_uvmm/gpuvm code can cause unrefs to get delayed, so things like ref SPT, map SPT, unmap SPT, ref LPT, map LPT, unref SPT can happen. unrefs can end up quite delayed and it shouldn't matter as unref should just affect reference counts. However at least the SPT unref path was overwriting the LPT value when all SPT were unreffed even if an LPT was referenced in between. This series refactors the code to use a union, then increases the size as I think even with the current code there was enough ref counts for SPTE. The last patch adds LPTE tracking. Dave.