From nobody Fri Dec 19 10:36:46 2025 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 B959B288C2F for ; Thu, 9 Oct 2025 23:39:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053171; cv=none; b=GatJvbe+kz4r7tqcpeYNF1LqFaSyRA6YmVvmD5B6ZlM2tn2S11WCnnMcAjS1tqHebye8hT+dhGzsksv4bsFpxlay6SYGCl2R0LQ476IQv1Yy+fxS/q+GwPptpytNh7mpB24mR6CM7+cQBpirxWXMLKm/ciWmu8JwxfWspJS+f4E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053171; c=relaxed/simple; bh=ItfMmn+R7UH9bvdf6j8ORLmF7FLLoFdQH2KllDT/9h0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tj2ShbsKLkQ4Tr6W6UlFKegNl0/yNfv5nJ+POKYBUvB5/llWTMh5i6DUrfVK923Nnwep5grQd3AJ6K7vDRlbIosiRohCw8rnGNMAQdHcziaYIzKwodoEi2bwXX06BCjAt25n0d10mSfiJB5Bcd7ahVOA2viTKFyx3PuPiHtRE1E= 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=QM7TN5y8; arc=none smtp.client-ip=209.85.221.47 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="QM7TN5y8" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-3ee12807d97so224692f8f.0 for ; Thu, 09 Oct 2025 16:39:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760053168; x=1760657968; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2JhmEHML4YZsocrCrkvgUzfjEb2YtmrVyX5gtRMUrA8=; b=QM7TN5y80yrXh2AQufIfIuiYdzNzOR4Kx55DZcGnFURgits/AM3gCUU89JaNY4uUEe A/0vJ8qsYMPgc4wzqzdTXsKKizcZ+XTqAjXuZ6C4vDLVMLSvb4sqv3BT+Q56As6ucyyE vBlx4qrld30530CzfFNqfDh22zgHu2MhxlNgHO4TeeA0g+4Dhv3Ut8j0WODly9xijAcT n1PHx4ii6bDTJt1DIl+xTxRqyiE2iNVUNlQYVg5vG6dqoO+cgK1JJZ+vxtNIrn3iizn1 AAKWI0DWF8SG2QPgepy3dWmWNEzyuJ1u+TaeeTbyuf2FQOmI1ZlDpFf5Gxk2YMFOFSpV sSKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760053168; x=1760657968; 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=2JhmEHML4YZsocrCrkvgUzfjEb2YtmrVyX5gtRMUrA8=; b=w/IrHNJLS7cXs1F7Mtt1iygTOSmoR3k47ptP7u6/w+b/Y8Uzy3ryPnVfD3xH0LlnkO Lf7fmdIiIA7MRaV5lrhLab2uQe/fTWhVFPCV99WIWgoGI3Yv6NLg+WJXFlUYTY3FLuui K68BuIY7vCN/mw643QQuyJv4ywjQTew37Mpt5xmnQFH2w92vmqKLbHsW8poG7MaHfohq FK377lb8WHocgTCcUVRQfuX0NlCl6p+U6DQjipyap8FbE/e0DpZYJq2gPHSxiFdujhvj oPL93dHmKBd8fSJtoMXfqVRtSltlt72iq9mO2bFQixE9kgRWSiDCOhegPP3KkeM5Cm17 IiJw== X-Gm-Message-State: AOJu0YyUxtI/IVpa2QlmghGDq3fpHQMhyE0qkaTcMJRfK/b4zZ4kbVfU zHkdMywVWGO8hn3hRO5IaDr+ws9tlfslKy/ydkErrbPf90I17EcQTS4xr0kcug== X-Gm-Gg: ASbGnctNlcH13KYKDetDx4yh9To2CXmgNQW0S4a9P6aPT+A7eNwKP5ZJO6M2BV/HJKa OarQQ9ekylv6iNbwMsOx3jO/K3Ay7l/NGKNZ/GMhb6qmYzaz+Vs5q5ILfEsdMYMPn1WgoZD7Loh KU+uGUIHS697/pCvb79S+oWyEiNH3QDBn6woLV4wBAjaE7cVvt03s9/+QsKA3WgIBUBb0vfLPSk c0QGOWDkTGR5qoKKVLEVv5Wf8bzhZ15fEIRZMIfg1no4+0LFwOSO+Nl7ryp8W3mOjVcrELbAdOn qoTzVMml+q3VELbDQlHcKaj8jfiZ6xbtDfIcweUsvIxbcI3qmPr9ucmM7mxcpfw/JVAG1Y/yUXx liAFpJZjGJG62WporRFK/zNsHH00FpxSHx6gQruRmVIodk+ijC6kz X-Google-Smtp-Source: AGHT+IGxNdg6McO+WElqM+IzOe/JAhQmHGECqqEjMeBVhDNcGiJPHZRJSvqItDW1eKWtErU9sbCUeA== X-Received: by 2002:a05:6000:240d:b0:425:7c3c:82cf with SMTP id ffacd0b85a97d-4266e7cdc8fmr6741837f8f.11.1760053167548; Thu, 09 Oct 2025 16:39:27 -0700 (PDT) Received: from fedora ([41.45.27.42]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46fab3e3206sm46066075e9.4.2025.10.09.16.39.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Oct 2025 16:39:25 -0700 (PDT) From: Mohamed Ahmed To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Mary Guillemard , Faith Ekstrand , Lyude Paul , Danilo Krummrich , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , nouveau@lists.freedesktop.org, Mohamed Ahmed Subject: [PATCH 1/5] drm/nouveau/uvmm: Prepare for larger pages Date: Fri, 10 Oct 2025 02:38:33 +0300 Message-ID: <20251009233837.10283-2-mohamedahmedegypt2001@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> References: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Mary Guillemard Currently memory allocated by VM_BIND uAPI can only have a granuality matching PAGE_SIZE (4KiB in common case) To have a better memory management and to allow big (64KiB) and huge (2MiB) pages later in the series, we are now passing the page shift all around the internals of UVMM. Signed-off-by: Mary Guillemard Co-developed-by: Mohamed Ahmed Signed-off-by: Mohamed Ahmed Reviewed-by: Lyude Paul --- drivers/gpu/drm/nouveau/nouveau_uvmm.c | 46 ++++++++++++++++---------- drivers/gpu/drm/nouveau/nouveau_uvmm.h | 1 + 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouve= au/nouveau_uvmm.c index 79eefdfd08a2..2cd0835b05e8 100644 --- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c +++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c @@ -107,34 +107,34 @@ nouveau_uvmm_vmm_sparse_unref(struct nouveau_uvmm *uv= mm, =20 static int nouveau_uvmm_vmm_get(struct nouveau_uvmm *uvmm, - u64 addr, u64 range) + u64 addr, u64 range, u8 page_shift) { struct nvif_vmm *vmm =3D &uvmm->vmm.vmm; =20 - return nvif_vmm_raw_get(vmm, addr, range, PAGE_SHIFT); + return nvif_vmm_raw_get(vmm, addr, range, page_shift); } =20 static int nouveau_uvmm_vmm_put(struct nouveau_uvmm *uvmm, - u64 addr, u64 range) + u64 addr, u64 range, u8 page_shift) { struct nvif_vmm *vmm =3D &uvmm->vmm.vmm; =20 - return nvif_vmm_raw_put(vmm, addr, range, PAGE_SHIFT); + return nvif_vmm_raw_put(vmm, addr, range, page_shift); } =20 static int nouveau_uvmm_vmm_unmap(struct nouveau_uvmm *uvmm, - u64 addr, u64 range, bool sparse) + u64 addr, u64 range, u8 page_shift, bool sparse) { struct nvif_vmm *vmm =3D &uvmm->vmm.vmm; =20 - return nvif_vmm_raw_unmap(vmm, addr, range, PAGE_SHIFT, sparse); + return nvif_vmm_raw_unmap(vmm, addr, range, page_shift, sparse); } =20 static int nouveau_uvmm_vmm_map(struct nouveau_uvmm *uvmm, - u64 addr, u64 range, + u64 addr, u64 range, u8 page_shift, u64 bo_offset, u8 kind, struct nouveau_mem *mem) { @@ -163,7 +163,7 @@ nouveau_uvmm_vmm_map(struct nouveau_uvmm *uvmm, return -ENOSYS; } =20 - return nvif_vmm_raw_map(vmm, addr, range, PAGE_SHIFT, + return nvif_vmm_raw_map(vmm, addr, range, page_shift, &args, argc, &mem->mem, bo_offset); } @@ -182,8 +182,9 @@ nouveau_uvma_vmm_put(struct nouveau_uvma *uvma) { u64 addr =3D uvma->va.va.addr; u64 range =3D uvma->va.va.range; + u8 page_shift =3D uvma->page_shift; =20 - return nouveau_uvmm_vmm_put(to_uvmm(uvma), addr, range); + return nouveau_uvmm_vmm_put(to_uvmm(uvma), addr, range, page_shift); } =20 static int @@ -193,9 +194,11 @@ nouveau_uvma_map(struct nouveau_uvma *uvma, u64 addr =3D uvma->va.va.addr; u64 offset =3D uvma->va.gem.offset; u64 range =3D uvma->va.va.range; + u8 page_shift =3D uvma->page_shift; =20 return nouveau_uvmm_vmm_map(to_uvmm(uvma), addr, range, - offset, uvma->kind, mem); + page_shift, offset, uvma->kind, + mem); } =20 static int @@ -203,12 +206,13 @@ nouveau_uvma_unmap(struct nouveau_uvma *uvma) { u64 addr =3D uvma->va.va.addr; u64 range =3D uvma->va.va.range; + u8 page_shift =3D uvma->page_shift; bool sparse =3D !!uvma->region; =20 if (drm_gpuva_invalidated(&uvma->va)) return 0; =20 - return nouveau_uvmm_vmm_unmap(to_uvmm(uvma), addr, range, sparse); + return nouveau_uvmm_vmm_unmap(to_uvmm(uvma), addr, range, page_shift, spa= rse); } =20 static int @@ -501,7 +505,8 @@ nouveau_uvmm_sm_prepare_unwind(struct nouveau_uvmm *uvm= m, =20 if (vmm_get_range) nouveau_uvmm_vmm_put(uvmm, vmm_get_start, - vmm_get_range); + vmm_get_range, + PAGE_SHIFT); break; } case DRM_GPUVA_OP_REMAP: { @@ -528,6 +533,7 @@ nouveau_uvmm_sm_prepare_unwind(struct nouveau_uvmm *uvm= m, u64 ustart =3D va->va.addr; u64 urange =3D va->va.range; u64 uend =3D ustart + urange; + u8 page_shift =3D uvma_from_va(va)->page_shift; =20 /* Nothing to do for mappings we merge with. */ if (uend =3D=3D vmm_get_start || @@ -538,7 +544,8 @@ nouveau_uvmm_sm_prepare_unwind(struct nouveau_uvmm *uvm= m, u64 vmm_get_range =3D ustart - vmm_get_start; =20 nouveau_uvmm_vmm_put(uvmm, vmm_get_start, - vmm_get_range); + vmm_get_range, + page_shift); } vmm_get_start =3D uend; break; @@ -592,6 +599,7 @@ op_map_prepare(struct nouveau_uvmm *uvmm, =20 uvma->region =3D args->region; uvma->kind =3D args->kind; + uvma->page_shift =3D PAGE_SHIFT; =20 drm_gpuva_map(&uvmm->base, &uvma->va, op); =20 @@ -633,7 +641,8 @@ nouveau_uvmm_sm_prepare(struct nouveau_uvmm *uvmm, =20 if (vmm_get_range) { ret =3D nouveau_uvmm_vmm_get(uvmm, vmm_get_start, - vmm_get_range); + vmm_get_range, + new->map->page_shift); if (ret) { op_map_prepare_unwind(new->map); goto unwind; @@ -689,6 +698,7 @@ nouveau_uvmm_sm_prepare(struct nouveau_uvmm *uvmm, u64 ustart =3D va->va.addr; u64 urange =3D va->va.range; u64 uend =3D ustart + urange; + u8 page_shift =3D uvma_from_va(va)->page_shift; =20 op_unmap_prepare(u); =20 @@ -704,7 +714,7 @@ nouveau_uvmm_sm_prepare(struct nouveau_uvmm *uvmm, u64 vmm_get_range =3D ustart - vmm_get_start; =20 ret =3D nouveau_uvmm_vmm_get(uvmm, vmm_get_start, - vmm_get_range); + vmm_get_range, page_shift); if (ret) { op_unmap_prepare_unwind(va); goto unwind; @@ -799,10 +809,11 @@ op_unmap_range(struct drm_gpuva_op_unmap *u, u64 addr, u64 range) { struct nouveau_uvma *uvma =3D uvma_from_va(u->va); + u8 page_shift =3D uvma->page_shift; bool sparse =3D !!uvma->region; =20 if (!drm_gpuva_invalidated(u->va)) - nouveau_uvmm_vmm_unmap(to_uvmm(uvma), addr, range, sparse); + nouveau_uvmm_vmm_unmap(to_uvmm(uvma), addr, range, page_shift, sparse); } =20 static void @@ -882,6 +893,7 @@ nouveau_uvmm_sm_cleanup(struct nouveau_uvmm *uvmm, struct drm_gpuva_op_map *n =3D r->next; struct drm_gpuva *va =3D r->unmap->va; struct nouveau_uvma *uvma =3D uvma_from_va(va); + u8 page_shift =3D uvma->page_shift; =20 if (unmap) { u64 addr =3D va->va.addr; @@ -893,7 +905,7 @@ nouveau_uvmm_sm_cleanup(struct nouveau_uvmm *uvmm, if (n) end =3D n->va.addr; =20 - nouveau_uvmm_vmm_put(uvmm, addr, end - addr); + nouveau_uvmm_vmm_put(uvmm, addr, end - addr, page_shift); } =20 nouveau_uvma_gem_put(uvma); diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.h b/drivers/gpu/drm/nouve= au/nouveau_uvmm.h index 9d3c348581eb..51925711ae90 100644 --- a/drivers/gpu/drm/nouveau/nouveau_uvmm.h +++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.h @@ -33,6 +33,7 @@ struct nouveau_uvma { =20 struct nouveau_uvma_region *region; u8 kind; + u8 page_shift; }; =20 #define uvmm_from_gpuvm(x) container_of((x), struct nouveau_uvmm, base) --=20 2.51.0 From nobody Fri Dec 19 10:36:46 2025 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 CD9A4289E17 for ; Thu, 9 Oct 2025 23:39:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053177; cv=none; b=YtpN9AhOiGWwGTyEEJrepM3rxu5A/KguKJutDq1U+x7MzPowGeC1tCDpKIA1farHIIxa7zjBQhDb48v4zpBqfbfOLCySLF22eHZauhDFhvL8roAjin6+xisowX/lO/35ynoHCHCQ+h7t7bfvBf7K1BUrnrWjJvzXWHHx58IAHSw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053177; c=relaxed/simple; bh=87JDphCaHktiF6piSU460m4DUFo2x5gB2FcUdBbP05k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JjJ7kFs3UGH6HDdO5zBD7WoRVffcfnpsb2HFTT7fIoXOZ1s0D5yd3jaYB6Rf1/H6NQmzLZJrrP4U32zB+iTGXKLqN1l4aAUW86FtJixC61v6y0cAOQ+SnLgvT4XP6E+mbym9xbCK0+hOBW+FbWPrVAhcYP54rUnn4zl0BHaT4W8= 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=a2E83KHb; arc=none smtp.client-ip=209.85.221.47 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="a2E83KHb" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-3ecdf2b1751so1064919f8f.0 for ; Thu, 09 Oct 2025 16:39:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760053174; x=1760657974; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SNJhbRyXnLpVcJDyTCl+QlImHdH1yijCDQYOlaa6U08=; b=a2E83KHba9yA9guMRkHcGN8yRzwSa+GTBsHLJ9wSA/YwBlStO/KCkKcExDDlN9CT/e p4pSvdN1fQtUeYe4amZsK5VcN5VbQbbVv1Y3Jq6lRURrhdx3sJwWyaksBcAkvbYDP3D9 DwgZMTMX0VRcm4nw2M5kNwODkVRCuy3mhnUQnV44nN4jgq+BZEnSYsgiwVZF0hh/JbbR 1gQgrHiAwzmgBY300p8Qx4ls/LtmFMjIQsDwmuU9Nh4FxTdzkYY1KUHbIHcBXnghM0TK R5IIERy8saXloZPIeQoNEhHe9srAOVnOAfHfpEEsx5ticDYSK8YgSHWeVUh6XkMCT9Ik dqqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760053174; x=1760657974; 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=SNJhbRyXnLpVcJDyTCl+QlImHdH1yijCDQYOlaa6U08=; b=Cpu9dgJy26ccHVzTFJVP/ofIH+Q6koymCTGPgbrpGoAdKxcCuoIiA2jdlb3vpicO17 NaIiXlTsa+0OS+UBNM/ndO9giTMSNddisB+HTl1qWVpL/aXa+t9uawWcRp4UTYJyQ4Zv 4JQKh4twILR0cApKUJqaepcvrfMtXgokrrPGJSI3Ag5RHiqUupj4KVXeDpurPyEW5wbi lA7ppJFQSEja64uwxjgdyRibXPLUcotG5oa7vOIC88rso7b+JUqkMIsNiMhEsnjmZQtc NYzV/JQrAlaVRJoTF4QM3c9+h34Ujaa2xOITcvmPiPuGmS3lC16Xaea0ibC6wgnT5+Bo 5Lnw== X-Gm-Message-State: AOJu0YxpIRV89JYeQ1/LlPIXCk/QdgTzxERybnwHyWssQE3RROS2sJim s3WfkW5pyvmG3hx2QDdUAk8nomxS9BFjSKpY8J2VHc2J1B6B98FobN/t2vlQHw== X-Gm-Gg: ASbGnctha0wcgp12pzuLfbCwXHlC2uwDH3yNzgPUfcxMOvvQsxVM04vqHpodLnEcRTI DfKzH6+dQUt44qfOfQjEG9ASNqnkZhG8PeWOXaKzr7HWRax4oF9edid3Nx/OPfhVxc8VTGlgGLT 01nu53vpUmG0+T0KmATamyiSuy+ic5rhHMPZL0+RzxfEyFyQ7pxaAZqOoFnXk4m4nrgZlS3EChh +CIZWTLMFVnVWJHXahGRYsIuFSwuYGjfz+u7ZxW4/3EWkYbNxBz30I35/tqvI4MdeBHnTQrGQ0H FT/70DXy1DZAE/s8ClebMZtkMbaQYoqCziXxRMaOVJJoxzqoCsHO0RNbgWejpagKZyqe7+oXVsJ NoYS6krphpjYvEQ68XQmdIcOsrWiCYb010kk7E1U80xxacziQ3dVu X-Google-Smtp-Source: AGHT+IEHbriviJcKghNvsIijh1pBMhiKzJ4SyCmZlLqgkmtnMByimnxocABQh66B8voRln+z3wk6JA== X-Received: by 2002:a05:6000:2485:b0:425:8133:ec6c with SMTP id ffacd0b85a97d-42666ac634cmr5253436f8f.9.1760053173778; Thu, 09 Oct 2025 16:39:33 -0700 (PDT) Received: from fedora ([41.45.27.42]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46fab3e3206sm46066075e9.4.2025.10.09.16.39.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Oct 2025 16:39:32 -0700 (PDT) From: Mohamed Ahmed To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Mary Guillemard , Faith Ekstrand , Lyude Paul , Danilo Krummrich , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , nouveau@lists.freedesktop.org, Mohamed Ahmed Subject: [PATCH 2/5] drm/nouveau/uvmm: Allow larger pages Date: Fri, 10 Oct 2025 02:38:34 +0300 Message-ID: <20251009233837.10283-3-mohamedahmedegypt2001@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> References: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Mary Guillemard Now that everything in UVMM knows about the variable page shift, we can select larger values. The proposed approach relies on nouveau_bo::page unless if it would cause alignment issues (in which case we fall back to searching for an appropriate shift) Signed-off-by: Mary Guillemard Co-developed-by: Mohamed Ahmed Signed-off-by: Mohamed Ahmed --- drivers/gpu/drm/nouveau/nouveau_uvmm.c | 29 ++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouve= au/nouveau_uvmm.c index 2cd0835b05e8..26edc60a530b 100644 --- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c +++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c @@ -454,6 +454,31 @@ op_unmap_prepare_unwind(struct drm_gpuva *va) drm_gpuva_insert(va->vm, va); } =20 +static bool +op_map_aligned_to_page_shift(const struct drm_gpuva_op_map *op, u8 page_sh= ift) +{ + u64 page_size =3D 1ULL << page_shift; + + return op->va.addr % page_size =3D=3D 0 && op->va.range % page_size =3D= =3D 0 && + op->gem.offset % page_size =3D=3D 0; +} + +static u8 +select_page_shift(struct nouveau_uvmm *uvmm, struct drm_gpuva_op_map *op) +{ + struct nouveau_bo *nvbo =3D nouveau_gem_object(op->gem.obj); + + /* nouveau_bo_fixup_align() guarantees for us that the page size will be = aligned + * but just in case, make sure that it is aligned. + */ + if (op_map_aligned_to_page_shift(op, nvbo->page)) + return nvbo->page; + + /* This should never happen, but raise a warning and return 4K if we get = here. */ + WARN_ON(1); + return PAGE_SHIFT; +} + static void nouveau_uvmm_sm_prepare_unwind(struct nouveau_uvmm *uvmm, struct nouveau_uvma_prealloc *new, @@ -506,7 +531,7 @@ nouveau_uvmm_sm_prepare_unwind(struct nouveau_uvmm *uvm= m, if (vmm_get_range) nouveau_uvmm_vmm_put(uvmm, vmm_get_start, vmm_get_range, - PAGE_SHIFT); + select_page_shift(uvmm, &op->map)); break; } case DRM_GPUVA_OP_REMAP: { @@ -599,7 +624,7 @@ op_map_prepare(struct nouveau_uvmm *uvmm, =20 uvma->region =3D args->region; uvma->kind =3D args->kind; - uvma->page_shift =3D PAGE_SHIFT; + uvma->page_shift =3D select_page_shift(uvmm, op); =20 drm_gpuva_map(&uvmm->base, &uvma->va, op); =20 --=20 2.51.0 From nobody Fri Dec 19 10:36:46 2025 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 4D8B828A1CC for ; Thu, 9 Oct 2025 23:39:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053184; cv=none; b=cgSv96zUmGr/m0Gr62wQN9J0irnG363bfZW6fVelzmztm9kULCf68Nn4d+yOznUVFaAGEon73SVrJWvLio7t1tFd0zGCPnE+yafYi02zgXQl5InssVXrM5+WneiDpjoWZib5f3beNqp5jtrA/O1H+nXk0XfAmPvJlIkoQOYaFIw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053184; c=relaxed/simple; bh=kjGFSLCMqozWPEfBaKD+iuh/CVvQu9T6udB30XWCDoo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Zqw929IFl8TBkwYobTBm+b38ldyz0yBH2rOYjIQ4rT8B9Lot5wKfreBiiod0iIgExEDk1kkCPd5MZyU13b+E41DKNbbif+X2dO2ctvCZ33yMpzuGHoKRTTr3KIIQGqp2Pa/gTfcrQ/Snj4QK6BuQmk4Z0VCt41DzgG7U5nEYgcc= 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=gvdFwwNF; arc=none smtp.client-ip=209.85.221.47 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="gvdFwwNF" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-3f2cf786abeso1344620f8f.3 for ; Thu, 09 Oct 2025 16:39:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760053180; x=1760657980; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Kn7r3BL145SwP61apKkjC+d51IoKdlTNuTUmtFzl4kM=; b=gvdFwwNF6LdWgvBgEVpyhR0q6XhAZu3vu9/wvxLRZY9/OLAgef2o56hHA7tGn1y6y8 R6Va9dnFrjUO21VF9H1xzDcDL+u9K24w27SelAPZFVrR64jzQ3J7Yi2cjTHs3B3VPXqZ Z+hkFucW4CkvXyy58UejdHD/5lZnI3r/BHgAD1ARI3QrxHxxabN3Sjla3sIb1dzcXYHK z1KA8PxZCjLUUQ1dEu6rDpwtqIGPsHw5bR0JrjVr3gnLuE4EUWBSz8/4M0v5vmjp51Bj LmfFbziiMhsjr4+j1wwvM/kJa5wywLc6xTdlhOaVaSkki6k/ekQOb635QJFrauFTfHA2 jbJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760053180; x=1760657980; 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=Kn7r3BL145SwP61apKkjC+d51IoKdlTNuTUmtFzl4kM=; b=sSbcBEx/Tlc2qsb5aYHDg/fxJXAivpENHnTdYTKg0Tpgk7bS/r8w2HAGF24wV1+QTb ZuqfC2z0uLVVBliz9aIHGwmv0fuwmO99fVXkgP6bNdgpDjWr/681viEAdtVqBwxQH2kj ON3qtnpE8ctOdc7azt9/x2rFWC5uhPQ4f4PFjWttkwdyu5jrgT72CuLp1foSszjmSc4k OcbhEIYW9NdYsjqJuGl4VpSNQDHkqDrRXzGsMEk2QWT2sm8JUm1ovhuIHbNWEC7mI78L RIVu60EbaCIxGtE++cFOKWpf21iyExOQrXAp0V+gscGnG6WSnUjXztZJEIVmeo+w3L0v ScJg== X-Gm-Message-State: AOJu0YwuXc6+FZwPEhSbgX7FGzHKCXF28OX/XdtIehF1i+cpxEO9mim1 lVBOLqfhxz5MMg3L873SA2/41SCJtIKXQF3/pQYmVUkbROd+0qek0KxYUduYfQ== X-Gm-Gg: ASbGncs2O1fcEdHfRNTgKOfu41+IItySRrmP9Y87+QqOC0aNDL5CfgDbAHdcldn/0hr KGqNwSco6J7hHNKbnKFN5XTzp2SVchm2lP4RJNvi37PV+mEsnfADuRjOMTpKf/br8Skc6NnsPer p5eoqkIlYkApswDX5/C6UymgJEDkbXv9V+ipZ7XsqHyTugfdT/dORIszy6XzpAUNt9KEG3J8AcO S54UyxtXxoSV2sRZmRstYhVr0/649hqlIjL7tlelDq/hNq146YlOnye1EBGf/xgxGpmDxH4NXTM 5vSfu6uNIGqqeg/CLEKewdUre//sMBQ6xFfaNWB1WdvOw8C/lXo/efwpvw3rqWV8fZ8f57DkVQU 8Jk1rfkvWhDA5R3X6AZsmAdJKSzsbtnrD1YliEQW4EOAdS0Kkqbxy X-Google-Smtp-Source: AGHT+IGdqls7SyfS9rlGiYJhNhOTiuHdsvgydZoDC64SjECyggTia4JZD0sXtoOH5akOKGGE784WqQ== X-Received: by 2002:a05:6000:26c9:b0:425:7679:ea72 with SMTP id ffacd0b85a97d-4266e8e0959mr6384259f8f.47.1760053179986; Thu, 09 Oct 2025 16:39:39 -0700 (PDT) Received: from fedora ([41.45.27.42]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46fab3e3206sm46066075e9.4.2025.10.09.16.39.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Oct 2025 16:39:38 -0700 (PDT) From: Mohamed Ahmed To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Mary Guillemard , Faith Ekstrand , Lyude Paul , Danilo Krummrich , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , nouveau@lists.freedesktop.org, Ben Skeggs , Mohamed Ahmed Subject: [PATCH 3/5] drm/nouveau/mmu/gp100: Remove unused/broken support for compression Date: Fri, 10 Oct 2025 02:38:35 +0300 Message-ID: <20251009233837.10283-4-mohamedahmedegypt2001@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> References: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ben Skeggs From GP100 onwards it's not possible to initialise comptag RAM without PMU firmware, which nouveau has no support for. As such, this code is essentially a no-op and will always revert to the equivalent non-compressed kind due to comptag allocation failure. It's also broken for the needs of VM_BIND/Vulkan. Remove the code entirely to make way for supporting compression on GPUs that support GSM-RM. Signed-off-by: Ben Skeggs Signed-off-by: Mohamed Ahmed Reviewed-by: Lyude Paul --- .../drm/nouveau/nvkm/subdev/mmu/vmmgp100.c | 39 ++----------------- .../drm/nouveau/nvkm/subdev/mmu/vmmgp10b.c | 4 +- 2 files changed, 6 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c b/drivers/g= pu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c index 851fd847a2a9..ecff1096a1bb 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c @@ -21,9 +21,7 @@ */ #include "vmm.h" =20 -#include #include -#include #include #include =20 @@ -117,8 +115,6 @@ gp100_vmm_pgt_pte(struct nvkm_vmm *vmm, struct nvkm_mmu= _pt *pt, { u64 data =3D (addr >> 4) | map->type; =20 - map->type +=3D ptes * map->ctag; - while (ptes--) { VMM_WO064(pt, vmm, ptei++ * 8, data); data +=3D map->next; @@ -142,7 +138,6 @@ gp100_vmm_pgt_dma(struct nvkm_vmm *vmm, struct nvkm_mmu= _pt *pt, while (ptes--) { const u64 data =3D (*map->dma++ >> 4) | map->type; VMM_WO064(pt, vmm, ptei++ * 8, data); - map->type +=3D map->ctag; } nvkm_done(pt->memory); return; @@ -200,8 +195,6 @@ gp100_vmm_pd0_pte(struct nvkm_vmm *vmm, struct nvkm_mmu= _pt *pt, { u64 data =3D (addr >> 4) | map->type; =20 - map->type +=3D ptes * map->ctag; - while (ptes--) { VMM_WO128(pt, vmm, ptei++ * 0x10, data, 0ULL); data +=3D map->next; @@ -411,8 +404,6 @@ gp100_vmm_valid(struct nvkm_vmm *vmm, void *argv, u32 a= rgc, struct gp100_vmm_map_vn vn; struct gp100_vmm_map_v0 v0; } *args =3D argv; - struct nvkm_device *device =3D vmm->mmu->subdev.device; - struct nvkm_memory *memory =3D map->memory; u8 kind, kind_inv, priv, ro, vol; int kindn, aper, ret =3D -ENOSYS; const u8 *kindm; @@ -450,30 +441,8 @@ gp100_vmm_valid(struct nvkm_vmm *vmm, void *argv, u32 = argc, } =20 if (kindm[kind] !=3D kind) { - u64 tags =3D nvkm_memory_size(memory) >> 16; - if (aper !=3D 0 || !(page->type & NVKM_VMM_PAGE_COMP)) { - VMM_DEBUG(vmm, "comp %d %02x", aper, page->type); - return -EINVAL; - } - - if (!map->no_comp) { - ret =3D nvkm_memory_tags_get(memory, device, tags, - nvkm_ltc_tags_clear, - &map->tags); - if (ret) { - VMM_DEBUG(vmm, "comp %d", ret); - return ret; - } - } - - if (!map->no_comp && map->tags->mn) { - tags =3D map->tags->mn->offset + (map->offset >> 16); - map->ctag |=3D ((1ULL << page->shift) >> 16) << 36; - map->type |=3D tags << 36; - map->next |=3D map->ctag; - } else { - kind =3D kindm[kind]; - } + /* Revert to non-compressed kind. */ + kind =3D kindm[kind]; } =20 map->type |=3D BIT(0); @@ -592,8 +561,8 @@ gp100_vmm =3D { { 47, &gp100_vmm_desc_16[4], NVKM_VMM_PAGE_Sxxx }, { 38, &gp100_vmm_desc_16[3], NVKM_VMM_PAGE_Sxxx }, { 29, &gp100_vmm_desc_16[2], NVKM_VMM_PAGE_Sxxx }, - { 21, &gp100_vmm_desc_16[1], NVKM_VMM_PAGE_SVxC }, - { 16, &gp100_vmm_desc_16[0], NVKM_VMM_PAGE_SVxC }, + { 21, &gp100_vmm_desc_16[1], NVKM_VMM_PAGE_SVxx }, + { 16, &gp100_vmm_desc_16[0], NVKM_VMM_PAGE_SVxx }, { 12, &gp100_vmm_desc_12[0], NVKM_VMM_PAGE_SVHx }, {} } diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp10b.c b/drivers/g= pu/drm/nouveau/nvkm/subdev/mmu/vmmgp10b.c index e081239afe58..5791d134962b 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp10b.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp10b.c @@ -34,8 +34,8 @@ gp10b_vmm =3D { { 47, &gp100_vmm_desc_16[4], NVKM_VMM_PAGE_Sxxx }, { 38, &gp100_vmm_desc_16[3], NVKM_VMM_PAGE_Sxxx }, { 29, &gp100_vmm_desc_16[2], NVKM_VMM_PAGE_Sxxx }, - { 21, &gp100_vmm_desc_16[1], NVKM_VMM_PAGE_SxHC }, - { 16, &gp100_vmm_desc_16[0], NVKM_VMM_PAGE_SxHC }, + { 21, &gp100_vmm_desc_16[1], NVKM_VMM_PAGE_SxHx }, + { 16, &gp100_vmm_desc_16[0], NVKM_VMM_PAGE_SxHx }, { 12, &gp100_vmm_desc_12[0], NVKM_VMM_PAGE_SxHx }, {} } --=20 2.51.0 From nobody Fri Dec 19 10:36:46 2025 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.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 8546628C03D for ; Thu, 9 Oct 2025 23:39:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053189; cv=none; b=pMk2A5pbom1WTBFUyDrZjkKIE7PEFJpJ+29eZqXgytcpxSqHCB7gLaFROw+H/GrKmJfqvMne3FLqdVqvrPnlFqxJZBaXzz204iYci9dxZG+kAHpqb6L7X6nk41L2bMMDg+lg+u7CJRuvgdramosnfKIayRUetiV6YheUb/vYnzY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053189; c=relaxed/simple; bh=8VPAMaQBETO2yjs7C45RwpZmClyUw0V51lsKIvS8Qt8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Pe8dGIdcjC2zEEtfUQlehpyccifuHjxrS7ewE+MwR30/NBtY5L63+6haK5y0eACMhp8ouec4buy0SgBg9j0VyYPho11kHBIU1TQFz91hDp7+PrdtOu5g41yPzNxjCfO3OL9N2+d+jIYSjhXolW7GLABw/GIAvFdNqDXskpL87+k= 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=QtDKU8Li; arc=none smtp.client-ip=209.85.128.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="QtDKU8Li" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-46e6674caa5so8129735e9.0 for ; Thu, 09 Oct 2025 16:39:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760053185; x=1760657985; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=61fl0QmalDC2B70Ur7984Y98C8MPZlXSrMQqbp1jaho=; b=QtDKU8LioM7tsO2TeOUXSWCuHtvsU3RDtggco9pg/JzmO7tXZqNfbkWd8NoCReHtA3 IHJvR+95Jl/FvIwCe7I37HdZ8tPWjFpMgyAt6hPCwf5u002BcLA0mcfQDtkmx9OFT3IY O7L/QwlpAV9bvGy9lx5ir0uwax+CcdJIJxEKxVv0tZ9vA33E5jm3FoCVmt4Kx6n4+bDz 4XoBgf8VtRWy8+wigw9RYuOB1J0Jk56Hw3DBgfGnqRVTI3Dd/59cMX79wEYjqeI4OPBU SZB4E4rW734jle5y8fAtTe8fCMw0EKuhiz4LmOaC/dCJHd/GddK0qfaPskoH3SQi8QFy hnSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760053185; x=1760657985; 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=61fl0QmalDC2B70Ur7984Y98C8MPZlXSrMQqbp1jaho=; b=B3yCgkqJH9rtjdmoDOI102I+8gATsjfqwzLt7+AN2IZGilUBK3Ek83bkv1ctOBE2jj 80RzJjNPXSLa8QTs7lbQhbO9ERx/C4jSNC3Q3+RtC61c9nlitzPromYXpKt5nqLz3oAd DyB1LOnS+7UavkW479YJqP6Gt2SHKPgSygR4OdXbQ6hxJT2zpe1kSW9/c696hgYbzK+H ojULdHi4L+JoGB+arm2s5t5yDHiF8iBJlQiqw5Rb8ITEvuVT7TSPq6hpmbkheVt5LMNW JdIdBI3FxnxaRqlZLcP4YdN8BYw/f4nIgYAMLRS3X4fDRlo6rqa0TNbvbwzi/cihM0ss 5O5Q== X-Gm-Message-State: AOJu0YxbF5kixclQKBEljQMpctyJguxRPhfSEdSNSLFQ3NVLNHSCPT20 pSm3zN89wAsTzWxHkjw4AsOHYZGOIac0RB3vC2ROSJoho3/7BQidEqn0uWWzJA== X-Gm-Gg: ASbGncszsZOxQMddu2Vd81QwXNk8wvHuU0o+/z5LgMQKKF2BIIPehRHiuFz167kRYPO 5Ql+KbSz1Fwm4j+HOBya2PkmqSPPRj19E5YI6LgkgPtH/CAPFCFo+Dh/xpCZrUWYuE8jT1sPh+t cIEhu8Hvk6C0Hz9jNUEyyhxuydzBJZh8z/yetzXM0hBu5wzp7z4J1jnjt3gP7Bex7e3tztygK1B g/IqqKg0AwibHXtpWfyNv5o42docbDAd3Jtmpm6LH57WtHI+ujOVttY+cuibuKHjGz8EdMis8+P 1C0qPNjtQJtG/DjJZFZjuT/w7UH5RNw0gBweQbzGaHPh2W1flI2uo0RLFKh/Q9bxnnEhpZAfNUA pPTI5XdF+Yp78s70cVXA+ZhbepFxOeAhBqoJur3dHYhF3n39SDO2G X-Google-Smtp-Source: AGHT+IGKhAP1SwjKQyd4gXEeUKmnVqILTkgIT5bozEqWpm87eGAj421N2AI9bjTAYBj21oh0zBP4/Q== X-Received: by 2002:a05:600d:4384:b0:46e:6d12:ee2a with SMTP id 5b1f17b1804b1-46fa29f5e70mr60200355e9.16.1760053185395; Thu, 09 Oct 2025 16:39:45 -0700 (PDT) Received: from fedora ([41.45.27.42]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46fab3e3206sm46066075e9.4.2025.10.09.16.39.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Oct 2025 16:39:43 -0700 (PDT) From: Mohamed Ahmed To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Mary Guillemard , Faith Ekstrand , Lyude Paul , Danilo Krummrich , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , nouveau@lists.freedesktop.org, Ben Skeggs , Mohamed Ahmed Subject: [PATCH 4/5] drm/nouveau/mmu/tu102: Add support for compressed kinds Date: Fri, 10 Oct 2025 02:38:36 +0300 Message-ID: <20251009233837.10283-5-mohamedahmedegypt2001@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> References: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ben Skeggs Allow compressed PTE kinds to be written into PTEs when GSP-RM is present, rather than reverting to their non-compressed versions. Signed-off-by: Ben Skeggs Signed-off-by: Mohamed Ahmed Reviewed-by: Lyude Paul --- .../drm/nouveau/nvkm/subdev/mmu/vmmgp100.c | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c b/drivers/g= pu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c index ecff1096a1bb..ed15a4475181 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c @@ -109,12 +109,34 @@ gp100_vmm_pgt_pfn(struct nvkm_vmm *vmm, struct nvkm_m= mu_pt *pt, nvkm_done(pt->memory); } =20 +static inline u64 +gp100_vmm_comptag_nr(u64 size) +{ + return size >> 16; /* One comptag per 64KiB VRAM. */ +} + +static inline u64 +gp100_vmm_pte_comptagline_base(u64 addr) +{ + /* RM allocates enough comptags for all of VRAM, so use a 1:1 mapping. */ + return (1 + gp100_vmm_comptag_nr(addr)) << 36; /* NV_MMU_VER2_PTE_COMPTAG= LINE */ +} + +static inline u64 +gp100_vmm_pte_comptagline_incr(u32 page_size) +{ + return gp100_vmm_comptag_nr(page_size) << 36; /* NV_MMU_VER2_PTE_COMPTAGL= INE */ +} + static inline void gp100_vmm_pgt_pte(struct nvkm_vmm *vmm, struct nvkm_mmu_pt *pt, u32 ptei, u32 ptes, struct nvkm_vmm_map *map, u64 addr) { u64 data =3D (addr >> 4) | map->type; =20 + if (map->ctag) + data |=3D gp100_vmm_pte_comptagline_base(addr); + while (ptes--) { VMM_WO064(pt, vmm, ptei++ * 8, data); data +=3D map->next; @@ -195,6 +217,9 @@ gp100_vmm_pd0_pte(struct nvkm_vmm *vmm, struct nvkm_mmu= _pt *pt, { u64 data =3D (addr >> 4) | map->type; =20 + if (map->ctag) + data |=3D gp100_vmm_pte_comptagline_base(addr); + while (ptes--) { VMM_WO128(pt, vmm, ptei++ * 0x10, data, 0ULL); data +=3D map->next; @@ -440,9 +465,26 @@ gp100_vmm_valid(struct nvkm_vmm *vmm, void *argv, u32 = argc, return -EINVAL; } =20 + /* Handle compression. */ if (kindm[kind] !=3D kind) { - /* Revert to non-compressed kind. */ - kind =3D kindm[kind]; + struct nvkm_device *device =3D vmm->mmu->subdev.device; + + /* Compression is only supported when using GSP-RM, as + * PMU firmware is required in order to initialise the + * compbit backing store. + */ + if (nvkm_gsp_rm(device->gsp)) { + /* Turing GPUs require PTE_COMPTAGLINE to be filled, + * in addition to specifying a compressed kind. + */ + if (device->card_type < GA100) { + map->ctag =3D gp100_vmm_pte_comptagline_incr(1 << map->page->shift); + map->next |=3D map->ctag; + } + } else { + /* Revert to non-compressed kind. */ + kind =3D kindm[kind]; + } } =20 map->type |=3D BIT(0); --=20 2.51.0 From nobody Fri Dec 19 10:36:46 2025 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 0063B289E0B for ; Thu, 9 Oct 2025 23:39:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053192; cv=none; b=ipUo5PlS2XD2QZrH5sbnsRXVPTOmuzbiUiOBSutSZYm20WxdME9tYtiP6wtmCl3KHg30AhGpSiiUm+PBuiwjlElrU03ef0JXBqfgowuM+q3Fi59ust+kFbANJcI6k0EGeY/9p5byAgGSuhCVx8qLi0M4ajWrcyO5RK2Sh8oF+VY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760053192; c=relaxed/simple; bh=36pVCnZWN4SZ80UBOIQS1tVOes82LSVnGiM35BqW6ZI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PLOV4Lc+2UZShPXvl3PcUE9b9yyo+627yVezQkdOKkx9iRDontrR1fE4mKdxAzo1WsgOoKWqRp5SWaUtd/3YXtI4paMeFw70yo14E4rpEAVGm66d9RaiIGJ4DWtl0ZEpuPbPtpttmx+gPPfb1bOgjyO6ASyzaBmscGrYxqL+xRI= 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=CTYTovnU; arc=none smtp.client-ip=209.85.128.53 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="CTYTovnU" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-46e6c8bc46eso8792095e9.3 for ; Thu, 09 Oct 2025 16:39:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760053189; x=1760657989; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OpLyNX9fRh+6ZSUeqgLPaV8NCrY8WnY93VlPM/N7oK8=; b=CTYTovnU3OEOx+++fGVBRFUtRG4wlzd4Pc1Xu9RrCaN9S9XJHantMglflyQWP4DESH dFAyZDHto7jx1Yu8i1YCUbSHkDPw1ULR2lLnhVOHPjghtGGZ+3C8dinAxDv2CqFwJG+s boX0de9f6QHcf0d7NWwz02Z3qKMIuYO92JFtq8s8Wr8pEegIGc93ueTnH4qTXNtAKaOJ 2bRSjr4DdfNCrvbtw9Tm4IviKnN38zHnq4l02KUmxvjdAOCFltOU5kd+bnHjkMzMP8o0 YrlQIvsq7jt4qpwYKfLHq+L6PpvOZBhzt+HQXVk8T/9uvsABXASycyL4q9iaL+GaPJ/j 24Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760053189; x=1760657989; 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=OpLyNX9fRh+6ZSUeqgLPaV8NCrY8WnY93VlPM/N7oK8=; b=BkPArVbN52jdT3dn0MQ+wIub8LPUPWevLogDyN7Tn5qhfTaBNdIbNxN3G0A9oSRBea /vHwjCzRXyafCoupuw4aj9XFxI8AxlwgQQ7De03RuzYYxInpQ0CZaeh34904R9PyifzF bWuq7gicpRyK4iiS7Yib8PPKv4r+sa+Ex9SnWoUS28A07pTVyH0RNcfxo0AxuP4WNhlb s0PHLiYokLjeTTXVqVkrjCpNslESsnYkG+JLhQIUa1zUCSB4rDOt3P8hj0remGnKB9zY NPMJJ5Xn2zJYqZ2sdkw3H+COvCnsJS34PUITsYQzZk2ONXNd+YFgleJ3U/Kaop5L6XLB VX1Q== X-Gm-Message-State: AOJu0YzB9bPuQA1wEJ6e0zazXRlM38BheXQW6wKKX5LcG0CyhpwUghGZ GEfI/z9qbqz6QChRwR4+ztHcFUs8T8M2ugJCrfGOTGMlWf41/cM+9ib+V8OtMw== X-Gm-Gg: ASbGncs2iI65+nVsm/gxkIHaTP1viIe2/Qznv6vK4FF/Oe7QD+BhonZaJFnskwPhSt7 meuYC6UTxl7LXCpF9QIVgq9vRD4bTQxmYqm4JmtRdryd3ZWiePt8ij7rV9bzOs8keE9LfYlBPhL 21SnxpVNn83ns7ckww1qIq832zog62mtWr/EuEeSl8/nB9Tg1EejvUebYzIwxsGLA+PTnOxcfjg YFmE6zVC5y7FrSqc/ZE6+9qDCn5EK7YBkbaKtevHTRbSrj7BdCLj3SnRGA2pIH8ySMNtSp8D1S9 13UHvRD4eVD92+CfaqKuN73mGVfPoTceZcIrkzTMTZnxDGu8W4PJMgdX1QWAyuvrERMw3W1cpOP FfCAEFlRLQssJGgAhVFiKoiSLeli0kZqAbCxQ3TwwiqyYJk4BM0g/ X-Google-Smtp-Source: AGHT+IGJYw11rDLltJwLvCnQW4izSML6BKxvrZuXRvJXZRf+jWWFVqJr/ShHNVK1a4VjhZ4lvPbVMg== X-Received: by 2002:a05:600c:1395:b0:46e:27fb:17f0 with SMTP id 5b1f17b1804b1-46fa9aa204cmr65438775e9.9.1760053188697; Thu, 09 Oct 2025 16:39:48 -0700 (PDT) Received: from fedora ([41.45.27.42]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46fab3e3206sm46066075e9.4.2025.10.09.16.39.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Oct 2025 16:39:48 -0700 (PDT) From: Mohamed Ahmed To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Mary Guillemard , Faith Ekstrand , Lyude Paul , Danilo Krummrich , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , nouveau@lists.freedesktop.org, Mohamed Ahmed Subject: [PATCH 5/5] drm/nouveau/drm: Bump the driver version to 1.4.1 to report new features Date: Fri, 10 Oct 2025 02:38:37 +0300 Message-ID: <20251009233837.10283-6-mohamedahmedegypt2001@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> References: <20251009233837.10283-1-mohamedahmedegypt2001@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The HW can only do compression on large and huge pages, and enabling it on 4K pages leads to a MMU fault. Compression also needs kernel support for handling the compressed kinds and managing the compression tags. This increments the nouveau version number which allows NVK to enable it only when the kernel actually supports both features and avoid breaking the system if a newer mesa version is paired with an older kernel version. For the associated userspace MR, please see !36450: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36450 Signed-off-by: Mohamed Ahmed Reviewed-by: Lyude Paul --- drivers/gpu/drm/nouveau/nouveau_drv.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouvea= u/nouveau_drv.h index 55abc510067b..e5de4367e2cc 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drv.h +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h @@ -10,7 +10,7 @@ =20 #define DRIVER_MAJOR 1 #define DRIVER_MINOR 4 -#define DRIVER_PATCHLEVEL 0 +#define DRIVER_PATCHLEVEL 1 =20 /* * 1.1.1: @@ -35,6 +35,8 @@ * programs that get directly linked with NVKM. * 1.3.1: * - implemented limited ABI16/NVIF interop + * 1.4.1: + * - add variable page sizes and compression for Turing+ */ =20 #include --=20 2.51.0