From nobody Fri Dec 19 03:03:12 2025 Received: from mblankhorst.nl (lankhorst.se [141.105.120.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB2B8197A96; Thu, 27 Jun 2024 15:57:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=141.105.120.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719503875; cv=none; b=gybPn1kOp6lwAxhnda8W6bdeVZ513DNk6D2f2B9KlsZrhwM6PGu93tL6W8dE/ek+v22b2EhQ6w+TyD8dfBuQx/3BRJFKgdkGUSg0qKb/a+a81+//CgNEzt+sGwLpuRkY/qKRLz22jCx2ZNMr+POHZHyyt1L7M/CaJi1rSiYkS3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719503875; c=relaxed/simple; bh=mxgrYw11W6QuxrE8RNDk043FZWyPg/KkLmzOqrDcOiI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kgrofNkjLFqXo32v1kh5h98fTMiUxz9yxVh5kU5sxenAmQcrUCfJ9vcbevsC++EL4zNT9rGmfXIEHO9CtGLB1g2fz2ilsyGmrHRN/3mVZbPi9592uDfaRox2adYFNReM14biW8FjBBdS1uqSw16yFCmXCJT1fEdBp9wTvU02W2I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=mblankhorst.nl; arc=none smtp.client-ip=141.105.120.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=mblankhorst.nl From: Maarten Lankhorst To: intel-xe@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Tejun Heo , Zefan Li , Johannes Weiner , Andrew Morton , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: Friedrich Vock , cgroups@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 4/6] drm/xe: Implement cgroup for vram Date: Thu, 27 Jun 2024 17:47:23 +0200 Message-ID: <20240627154754.74828-5-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240627154754.74828-1-maarten.lankhorst@linux.intel.com> References: <20240627154754.74828-1-maarten.lankhorst@linux.intel.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" Add vram based cgroup eviction to Xe. Most hardware with VRAM uses TTM for its management, and can be similarly trivially enabled. Signed-off-by: Maarten Lankhorst --- drivers/gpu/drm/xe/xe_device.c | 4 ++++ drivers/gpu/drm/xe/xe_device_types.h | 4 ++++ drivers/gpu/drm/xe/xe_ttm_vram_mgr.c | 10 ++++++++++ 3 files changed, 18 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index 5ef9b50a20d0..6e630d67b13a 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -616,6 +616,10 @@ int xe_device_probe(struct xe_device *xe) /* Allocate and map stolen after potential VRAM resize */ xe_ttm_stolen_mgr_init(xe); =20 + err =3D drmmcg_register_device(&xe->drm, &xe->cg); + if (err) + goto err_irq_shutdown; + /* * Now that GT is initialized (TTM in particular), * we can try to init display, and inherit the initial fb. diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_d= evice_types.h index 2e62450d86e1..6b60837d9090 100644 --- a/drivers/gpu/drm/xe/xe_device_types.h +++ b/drivers/gpu/drm/xe/xe_device_types.h @@ -7,6 +7,7 @@ #define _XE_DEVICE_TYPES_H_ =20 #include +#include =20 #include #include @@ -216,6 +217,9 @@ struct xe_device { /** @devcoredump: device coredump */ struct xe_devcoredump devcoredump; =20 + /** @cg: drm cgroup bookkeeping */ + struct drmcgroup_device cg; + /** @info: device info */ struct intel_device_info { /** @info.graphics_name: graphics IP name */ diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_t= tm_vram_mgr.c index fe3779fdba2c..9a625b69fc52 100644 --- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c +++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c @@ -339,6 +339,16 @@ int __xe_ttm_vram_mgr_init(struct xe_device *xe, struc= t xe_ttm_vram_mgr *mgr, struct ttm_resource_manager *man =3D &mgr->manager; int err; =20 + if (mem_type !=3D XE_PL_STOLEN) { + int cgregion =3D xe->cg.num_regions++; + + xe->cg.regions[cgregion].size =3D size; + xe->cg.regions[cgregion].name =3D + mem_type =3D=3D XE_PL_VRAM0 ? "vram0" : "vram1"; + man->cgdev =3D &xe->cg; + man->cgidx =3D cgregion; + } + man->func =3D &xe_ttm_vram_mgr_func; mgr->mem_type =3D mem_type; mutex_init(&mgr->lock); --=20 2.45.2