Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp38236086rwd; Wed, 12 Jul 2023 05:11:13 -0700 (PDT) X-Google-Smtp-Source: APBJJlF0sOck+5pwSYnYN2FTtRH7nWYtZMoeaK1Ds/ZxTRfoGMdG3MWG1JGFUlalSxcPQXHDu9NO X-Received: by 2002:aa7:c141:0:b0:514:9df0:e3f3 with SMTP id r1-20020aa7c141000000b005149df0e3f3mr19512331edp.0.1689163872726; Wed, 12 Jul 2023 05:11:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689163872; cv=none; d=google.com; s=arc-20160816; b=avSCcBMdDXETzJJPTLzWHrI9cJT8dFAlPpZsE2RxHDqBjoqoLf3vPAvzL+C3KlJpiI 2R6siP8++SpB0HjeHbwuivmkuwwrV551Bi5Dd7DRO93LTS4MIJxXAzO5IVEJ8E021Ws5 FWZtecZJ3fMEhjB+YZEG4F2sjrb/suoCszJTKlfvhOvpfOYd7fgiTGGo7GhErg8JtV9I tq2LnHT0dXMx73Rpp4JumTu4qsf+TJ0zGScm1Y8FGaBkPJy3hMvqensCsTAgc16K438S PLpOLnDQuV6AYvkJTT+2GeLnRAd4aZpGFAz87SkSTghqIrnyWR0CBS7X1TvImN9kcu9D jdPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hmAuYXb6sW/eXsWuqTwTTk0l/fLjMDhok/RaW6HsBkk=; fh=UsT/IYsmrHK8Tj61E3lO7dmEfkPySLWlJpEUULEmP7s=; b=V3R6wqfXAUJ9zXijBYvYAKFeID2Pdpg40XDWritfnX/yZupVP5CpC6qEyOV2pdklBX B264r73le5ugJMtSdqAatK9NUllsZZ8COwQotRYFsqyIHxV8P94sQnF6hHtmd6t1JN3x xLm5CTIFwba28YcPUYKMxhax9RFbqBF/e7CfEaXnq7TahLBsaW7LpEHKjC6P5pGk+42i 7/U5vWWgzooI+fEfJmIFFlv5Mc1OVTLk8ArXeJTc083aZe6hDtd9uyO0WpVutjCAZZOE 3Jh0NsrRlNeEeCtlLI+iy1tsqKaVVxWd7bo0AGegkn2zpGiSKbp6i46gVYkPBEm1OESn XISQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=gVykyxOh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w2-20020aa7cb42000000b0051e28cead02si4550888edt.337.2023.07.12.05.10.45; Wed, 12 Jul 2023 05:11:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=gVykyxOh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233376AbjGLLsj (ORCPT + 99 others); Wed, 12 Jul 2023 07:48:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233450AbjGLLsM (ORCPT ); Wed, 12 Jul 2023 07:48:12 -0400 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7ED6B1989; Wed, 12 Jul 2023 04:47:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1689162468; x=1720698468; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=V2Xv+6vpWCnpQuSmn1mgHa02zM/YjYZIas2005LOhfA=; b=gVykyxOhNh0X6QjirqTBWPnT55OXhb3osSeMWSv/10i8EwMYOVzQrcOS roqRYC+Fuxar62ngUBqdYoTDl+OXdhUXnTeUIX2PKc77Pk2gLEELs388+ kkjlvWJFE4Giv4+w4cTaFXpys+lqHP70d9tuy0PY0JAgxtEwljGlKUkud El2UnEFX5hP9qMJqknhuo1s3OiR+yctPW3vLzQgCvFKCNUousGPspDxox Gd8QdnTAru/uFClDxKsjoWVk180c/yyiBk/LAuwFU0A/0CNXso+EFb5Te rHzmNe9oqAJ4gMJ+HF2RC7kP8CMzBLZ3Gy1d1/sqUQOJDdnyyGwu8wFLB Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10768"; a="344469079" X-IronPort-AV: E=Sophos;i="6.01,199,1684825200"; d="scan'208";a="344469079" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jul 2023 04:46:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10768"; a="866094034" X-IronPort-AV: E=Sophos;i="6.01,199,1684825200"; d="scan'208";a="866094034" Received: from eamonnob-mobl1.ger.corp.intel.com (HELO localhost.localdomain) ([10.213.237.202]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jul 2023 04:46:20 -0700 From: Tvrtko Ursulin To: Intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Tejun Heo , Johannes Weiner , Zefan Li , Dave Airlie , Daniel Vetter , Rob Clark , =?UTF-8?q?St=C3=A9phane=20Marchesin?= , "T . J . Mercier" , Kenny.Ho@amd.com, =?UTF-8?q?Christian=20K=C3=B6nig?= , Brian Welty , Tvrtko Ursulin , Aravind Iddamsetty Subject: [PATCH 02/17] drm/i915: Record which client owns a VM Date: Wed, 12 Jul 2023 12:45:50 +0100 Message-Id: <20230712114605.519432-3-tvrtko.ursulin@linux.intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230712114605.519432-1-tvrtko.ursulin@linux.intel.com> References: <20230712114605.519432-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HK_RANDOM_ENVFROM,HK_RANDOM_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,SPF_NONE,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tvrtko Ursulin To enable accounting of indirect client memory usage (such as page tables) in the following patch, lets start recording the creator of each PPGTT. Signed-off-by: Tvrtko Ursulin Reviewed-by: Aravind Iddamsetty --- drivers/gpu/drm/i915/gem/i915_gem_context.c | 11 ++++++++--- drivers/gpu/drm/i915/gem/i915_gem_context_types.h | 3 +++ drivers/gpu/drm/i915/gem/selftests/mock_context.c | 4 ++-- drivers/gpu/drm/i915/gt/intel_gtt.h | 1 + 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c index 9a9ff84c90d7..35cf6608180e 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c @@ -279,7 +279,8 @@ static int proto_context_set_protected(struct drm_i915_private *i915, } static struct i915_gem_proto_context * -proto_context_create(struct drm_i915_private *i915, unsigned int flags) +proto_context_create(struct drm_i915_file_private *fpriv, + struct drm_i915_private *i915, unsigned int flags) { struct i915_gem_proto_context *pc, *err; @@ -287,6 +288,7 @@ proto_context_create(struct drm_i915_private *i915, unsigned int flags) if (!pc) return ERR_PTR(-ENOMEM); + pc->fpriv = fpriv; pc->num_user_engines = -1; pc->user_engines = NULL; pc->user_flags = BIT(UCONTEXT_BANNABLE) | @@ -1621,6 +1623,7 @@ i915_gem_create_context(struct drm_i915_private *i915, err = PTR_ERR(ppgtt); goto err_ctx; } + ppgtt->vm.fpriv = pc->fpriv; vm = &ppgtt->vm; } if (vm) @@ -1740,7 +1743,7 @@ int i915_gem_context_open(struct drm_i915_private *i915, /* 0 reserved for invalid/unassigned ppgtt */ xa_init_flags(&file_priv->vm_xa, XA_FLAGS_ALLOC1); - pc = proto_context_create(i915, 0); + pc = proto_context_create(file_priv, i915, 0); if (IS_ERR(pc)) { err = PTR_ERR(pc); goto err; @@ -1822,6 +1825,7 @@ int i915_gem_vm_create_ioctl(struct drm_device *dev, void *data, GEM_BUG_ON(id == 0); /* reserved for invalid/unassigned ppgtt */ args->vm_id = id; + ppgtt->vm.fpriv = file_priv; return 0; err_put: @@ -2284,7 +2288,8 @@ int i915_gem_context_create_ioctl(struct drm_device *dev, void *data, return -EIO; } - ext_data.pc = proto_context_create(i915, args->flags); + ext_data.pc = proto_context_create(file->driver_priv, i915, + args->flags); if (IS_ERR(ext_data.pc)) return PTR_ERR(ext_data.pc); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context_types.h b/drivers/gpu/drm/i915/gem/i915_gem_context_types.h index cb78214a7dcd..c573c067779f 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_context_types.h +++ b/drivers/gpu/drm/i915/gem/i915_gem_context_types.h @@ -188,6 +188,9 @@ struct i915_gem_proto_engine { * CONTEXT_CREATE_SET_PARAM during GEM_CONTEXT_CREATE. */ struct i915_gem_proto_context { + /** @fpriv: Client which creates the context */ + struct drm_i915_file_private *fpriv; + /** @vm: See &i915_gem_context.vm */ struct i915_address_space *vm; diff --git a/drivers/gpu/drm/i915/gem/selftests/mock_context.c b/drivers/gpu/drm/i915/gem/selftests/mock_context.c index 8ac6726ec16b..125584ada282 100644 --- a/drivers/gpu/drm/i915/gem/selftests/mock_context.c +++ b/drivers/gpu/drm/i915/gem/selftests/mock_context.c @@ -83,7 +83,7 @@ live_context(struct drm_i915_private *i915, struct file *file) int err; u32 id; - pc = proto_context_create(i915, 0); + pc = proto_context_create(fpriv, i915, 0); if (IS_ERR(pc)) return ERR_CAST(pc); @@ -152,7 +152,7 @@ kernel_context(struct drm_i915_private *i915, struct i915_gem_context *ctx; struct i915_gem_proto_context *pc; - pc = proto_context_create(i915, 0); + pc = proto_context_create(NULL, i915, 0); if (IS_ERR(pc)) return ERR_CAST(pc); diff --git a/drivers/gpu/drm/i915/gt/intel_gtt.h b/drivers/gpu/drm/i915/gt/intel_gtt.h index 4d6296cdbcfd..7192a534a654 100644 --- a/drivers/gpu/drm/i915/gt/intel_gtt.h +++ b/drivers/gpu/drm/i915/gt/intel_gtt.h @@ -248,6 +248,7 @@ struct i915_address_space { struct drm_mm mm; struct intel_gt *gt; struct drm_i915_private *i915; + struct drm_i915_file_private *fpriv; struct device *dma; u64 total; /* size addr space maps (ex. 2GB for ggtt) */ u64 reserved; /* size addr space reserved */ -- 2.39.2