Received: by 2002:ab2:6203:0:b0:1f5:f2ab:c469 with SMTP id o3csp3058418lqt; Tue, 23 Apr 2024 09:13:51 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVSZoBOvgN8YTe6kacsym6w3vHBsosbnk4yrX0GUpbLJE3BsGzRHIbYqnsoVakDmAE3uzu/vPtyEekk7ON+3QVoe84ZQx7UtfTj13HWwA== X-Google-Smtp-Source: AGHT+IG7k35uYwgITH44R/zNFinUleIMfAfWeSSAEcIdfx0vmUT5vRm16OlQiZ3FJ4HvNqApwJNN X-Received: by 2002:a05:6a21:3945:b0:1aa:9310:e83a with SMTP id ac5-20020a056a21394500b001aa9310e83amr15930534pzc.6.1713888831660; Tue, 23 Apr 2024 09:13:51 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713888831; cv=pass; d=google.com; s=arc-20160816; b=CpE2ghO0vQRPb885Lrue+MMXsAOT5TGrk4Se71xJkVD9p9rTN8wJQ6PhGBpkATmPJi oWxwNOgruCF0qvOWbnIyuVHg2sjeRifityXiDxjNpy+l46iRtFIhjNaMGjdGdnxwTsgV woyFtLatLn+KdSb9NIUctJU8B5s/qDdsZV+vFdhecM0Y7Wvq4FFmVirwj3O2gogy3UDS qIg379tE6yMuvRsiz3mQ58EmNf8pF3Dp8oAdgdHkYX0xocryRdt119qvAA7UqnGC67tw hxt5DQn+PutwBGq3DP6DJNzR1KNnFlR3cCwRPGpl+Gv6QYmZqqKHS8WdibHWkxSrS6ZN NhZg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=swF4uBKHP0vdIEscGMNNbfVPPhbyUQIfYMX06twLVmE=; fh=sgZNZy4F/7s7E0kP7zf6hvn456QwJsq+JjXpfk7rjK0=; b=QhdQm6W9n6yNODukOzb1MuxMKp5yJVmB+RnjC7OOkj2EaUd+6mgvkistaGUeaiAL+O OCnxnJbs2gekqCGAhXmZDe5uC7NXG4n3M2HFJunCstY+yhbEIDGPUKDSjYCTI2/vxYsr J0IdUqknnHw4OqEgdlNJzL5+j0ccPrlv+SR9cvHXql0GSQdifGSMhHrOEkf+hBrMIAos asbVU4W+/64whACbzON4xPNsJlTp5EWHs/mUC5DcVl9g/eHeM+9XEtGxQUN7sA0gdZSL l2cYfqP+9ztSEMk06CaiISQeY28DIOOpkA40poo5qLT6ZgQFM606BefgkL8flYY1Xxk+ vL2Q==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=OBXIO+lw; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel+bounces-155517-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-155517-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id z16-20020a656650000000b005f7c90de2aasi8312876pgv.575.2024.04.23.09.13.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Apr 2024 09:13:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-155517-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=OBXIO+lw; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel+bounces-155517-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-155517-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 8FC9EB23C91 for ; Tue, 23 Apr 2024 16:06:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1F5A413CFBE; Tue, 23 Apr 2024 16:06:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="OBXIO+lw" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (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 12E7F13CA88 for ; Tue, 23 Apr 2024 16:06:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.8 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713888400; cv=none; b=MTNMlVVVQzfFXYXr5Wv2AgTuypiDrOXTx/2koAKANvsVCi8oATUmUCrYNFL1WtSqgfg0E9iS5lSh56KIWi6KIHIQ3OR2Xc/18ol94UzceRbOE4h3seGaTY/nnnmCzI1x2xvV6zOEI+klYp2jc+AmmFpOrTRuOaAf3K8KBjWVCHs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713888400; c=relaxed/simple; bh=041Fq7CuReklTECSamsgpxP+ln//OQe3sBd84aiU7Vg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=QyQf1TbgE8mvb/TK18Exs2Dr6iTgy/93Raq3SjKgDKjZdvJUqJfleY9LigAjscQfeVgMtwOmYtqErR4MTIdtliTvkq+TEqcklSu2d21B/+zOnFooicJh4/dY2LMozsajMgPMzZCvBIdjx9JSlFp9ReJkCRuIT/Fe5nChRhNByjU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=OBXIO+lw; arc=none smtp.client-ip=192.198.163.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1713888398; x=1745424398; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=041Fq7CuReklTECSamsgpxP+ln//OQe3sBd84aiU7Vg=; b=OBXIO+lwL86Z10PAMpAF/y5d9T/pWnSDYe+hywDtLRbI2r1culWfo9rT D+S80UtAZzSOJJGWdRL8mz7wDUIanc6UX0XBZoLnChqxYmW9Yexhs+0kV qeF12Yui6poSaDxHDWZ2P1avqBB/mDaHm3VRpQxydTKyWgn0mv541Bym0 oTsfk26wQypCJ8+1Cpz86RB4leYD3noYf2BfXh+mwESjGSHbh2HatbQgQ ouPHeJ/yagj9TtIB3W8LjhT+Fc/i95PFRTij05KHn+Js9jOITzwbizA2b qsQs4lpE3Z2Fhax/8f40NESh3zoWcnmOKF7oXcKjT1Vwo4qa9T8SEGX4+ w==; X-CSE-ConnectionGUID: VkrIF73MSp+U2DMepdnHww== X-CSE-MsgGUID: eoBZ/Iq0TD2nLA+kfLFPQg== X-IronPort-AV: E=McAfee;i="6600,9927,11053"; a="26998819" X-IronPort-AV: E=Sophos;i="6.07,222,1708416000"; d="scan'208";a="26998819" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Apr 2024 09:06:37 -0700 X-CSE-ConnectionGUID: 1Jph/9nyR9S3snJOqOimPw== X-CSE-MsgGUID: OGYM+qYkQE6r3QI4MvmHpQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,222,1708416000"; d="scan'208";a="24462359" Received: from josouza-mobl2.bz.intel.com ([10.87.243.88]) by fmviesa010-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Apr 2024 09:06:36 -0700 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= To: linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org Cc: Rodrigo Vivi , Matt Roper , Zhanjun Dong , =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Subject: [PATCH CI 2/3] drm/xe: Add helpers to loop over geometry and compute DSS Date: Tue, 23 Apr 2024 09:05:49 -0700 Message-ID: <20240423160626.77110-2-jose.souza@intel.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240423160626.77110-1-jose.souza@intel.com> References: <20240423160626.77110-1-jose.souza@intel.com> 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: 8bit Some DSS can only be available for geometry while others can only be available for compute. So here adding helpers to loop only available DSS for given usage. User of this helper will come in the next patch. v2: - drop has_dss() Cc: Rodrigo Vivi Cc: Matt Roper Cc: Zhanjun Dong Reviewed-by: Rodrigo Vivi Signed-off-by: José Roberto de Souza --- drivers/gpu/drm/xe/xe_gt_mcr.h | 24 ++++++++++++++++++++++++ drivers/gpu/drm/xe/xe_gt_topology.c | 10 ++++++++++ drivers/gpu/drm/xe/xe_gt_topology.h | 3 +++ 3 files changed, 37 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_gt_mcr.h b/drivers/gpu/drm/xe/xe_gt_mcr.h index a7f4ab1aa584b..e7d03e001a49f 100644 --- a/drivers/gpu/drm/xe/xe_gt_mcr.h +++ b/drivers/gpu/drm/xe/xe_gt_mcr.h @@ -40,4 +40,28 @@ void xe_gt_mcr_get_dss_steering(struct xe_gt *gt, unsigned int dss, u16 *group, for_each_dss((dss), (gt)) \ for_each_if((xe_gt_mcr_get_dss_steering((gt), (dss), &(group), &(instance)), true)) +/* + * Loop over each DSS available for geometry and determine the group and + * instance IDs that should be used to steer MCR accesses toward this DSS. + * @dss: DSS ID to obtain steering for + * @gt: GT structure + * @group: steering group ID, data type: u16 + * @instance: steering instance ID, data type: u16 + */ +#define for_each_geometry_dss(dss, gt, group, instance) \ + for_each_dss_steering(dss, gt, group, instance) \ + if (xe_gt_has_geometry_dss(gt, dss)) + +/* + * Loop over each DSS available for compute and determine the group and + * instance IDs that should be used to steer MCR accesses toward this DSS. + * @dss: DSS ID to obtain steering for + * @gt: GT structure + * @group: steering group ID, data type: u16 + * @instance: steering instance ID, data type: u16 + */ +#define for_each_compute_dss(dss, gt, group, instance) \ + for_each_dss_steering(dss, gt, group, instance) \ + if (xe_gt_has_compute_dss(gt, dss)) + #endif /* _XE_GT_MCR_H_ */ diff --git a/drivers/gpu/drm/xe/xe_gt_topology.c b/drivers/gpu/drm/xe/xe_gt_topology.c index 3733e7a6860d3..af841d801a8f5 100644 --- a/drivers/gpu/drm/xe/xe_gt_topology.c +++ b/drivers/gpu/drm/xe/xe_gt_topology.c @@ -278,3 +278,13 @@ bool xe_gt_topology_has_dss_in_quadrant(struct xe_gt *gt, int quad) return quad_first < (quad + 1) * dss_per_quad; } + +bool xe_gt_has_geometry_dss(struct xe_gt *gt, unsigned int dss) +{ + return test_bit(dss, gt->fuse_topo.g_dss_mask); +} + +bool xe_gt_has_compute_dss(struct xe_gt *gt, unsigned int dss) +{ + return test_bit(dss, gt->fuse_topo.c_dss_mask); +} diff --git a/drivers/gpu/drm/xe/xe_gt_topology.h b/drivers/gpu/drm/xe/xe_gt_topology.h index b3e357777a6e7..746b325bbf6e4 100644 --- a/drivers/gpu/drm/xe/xe_gt_topology.h +++ b/drivers/gpu/drm/xe/xe_gt_topology.h @@ -33,4 +33,7 @@ bool xe_dss_mask_empty(const xe_dss_mask_t mask); bool xe_gt_topology_has_dss_in_quadrant(struct xe_gt *gt, int quad); +bool xe_gt_has_geometry_dss(struct xe_gt *gt, unsigned int dss); +bool xe_gt_has_compute_dss(struct xe_gt *gt, unsigned int dss); + #endif /* _XE_GT_TOPOLOGY_H_ */ -- 2.44.0