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 72D2BC4167B for ; Sat, 9 Dec 2023 01:49:49 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3A3B110E179; Sat, 9 Dec 2023 01:49:49 +0000 (UTC) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4250C10E179 for ; Sat, 9 Dec 2023 01:49:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1702086587; x=1733622587; h=date:message-id:from:to:cc:subject:in-reply-to: references:mime-version; bh=JLKc0yqKcj4nPgzZ+UP/kbvNVkU6sUNHBERpheSfZJ0=; b=Udy4N8PzTCLq5CGSdAK4JOxVf4O94oCN5nEwuznLpbOetnl93yARYBbV mErtRXi8d2ot168J3wNQ9sz6fK8Q75PfbsG+csCnh5dGnfWpH7/3eec3j LSK1tNW7LPX1B8maODINvUfQQLzwl1LXHEr3Rd+7VSSyBuF8J91dnNedK io80KIl97afoTrpDXs/+99GIc605SOe6CRmEw7EuXOU6syoHEb7VyKqoo z1UAR/nly6rU5Ooc/Gz4FQxJ+9FmvugzjKM2NG1BkAU4Sfq28AVD9gNcd yD9gfBvqSNdQpQaMHNUMZ2E7S88oslDvmieE1mXziI0iHHh1l0UhZ7mQD g==; X-IronPort-AV: E=McAfee;i="6600,9927,10918"; a="374650544" X-IronPort-AV: E=Sophos;i="6.04,262,1695711600"; d="scan'208";a="374650544" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Dec 2023 17:49:46 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10918"; a="765684710" X-IronPort-AV: E=Sophos;i="6.04,262,1695711600"; d="scan'208";a="765684710" Received: from adixit-mobl.amr.corp.intel.com (HELO adixit-arch.intel.com) ([10.212.147.196]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Dec 2023 17:49:45 -0800 Date: Fri, 08 Dec 2023 17:33:19 -0800 Message-ID: <87o7f0i2hs.wl-ashutosh.dixit@intel.com> From: "Dixit, Ashutosh" To: intel-xe@lists.freedesktop.org Subject: Re: [PATCH] drm/xe/pmu/uapi: Remove PMU group busyness events from uapi In-Reply-To: <20231209000233.2577418-1-ashutosh.dixit@intel.com> References: <20231209000233.2577418-1-ashutosh.dixit@intel.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/29.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: francois.dugast@intel.com, Lucas De Marchi , Rodrigo Vivi Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" On Fri, 08 Dec 2023 16:02:33 -0800, Ashutosh Dixit wrote: > > PMU group busyness uapi is likely to change in the future. Till the uapi is > decided remove the uapi from xe_drm.h. To not break the build retain the > events internally in xe_pmu.c for now. This gets the job done of getting the PMU stuff out of the uapi, but not sure if moving the defines in xe_pmu.c is ugly? The other easy option is to just delete everything (maybe drop all PMU patches in a rebase). Later add it back when some valid PMU stuff is added again. Deleting the uapi but retaining the PMU infrastructure is a chore. I'd say do something like this patch, or delete everything and start over. > > Signed-off-by: Ashutosh Dixit > --- > drivers/gpu/drm/xe/xe_pmu.c | 39 +++++++++++++++++++++++++++++++++++++ > include/uapi/drm/xe_drm.h | 39 ------------------------------------- > 2 files changed, 39 insertions(+), 39 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c > index 9d0b7887cfc45..d6fa7cdca9ede 100644 > --- a/drivers/gpu/drm/xe/xe_pmu.c > +++ b/drivers/gpu/drm/xe/xe_pmu.c > @@ -12,6 +12,45 @@ > #include "xe_gt_clock.h" > #include "xe_mmio.h" > > +/** > + * DOC: XE PMU event config IDs > + * > + * Check 'man perf_event_open' to use the ID's DRM_XE_PMU_XXXX listed in xe_drm.h > + * in 'struct perf_event_attr' as part of perf_event_open syscall to read a > + * particular event. > + * > + * For example to open the DRMXE_PMU_RENDER_GROUP_BUSY(0): > + * > + * .. code-block:: C > + * > + * struct perf_event_attr attr; > + * long long count; > + * int cpu = 0; > + * int fd; > + * > + * memset(&attr, 0, sizeof(struct perf_event_attr)); > + * attr.type = type; // eg: /sys/bus/event_source/devices/xe_0000_56_00.0/type > + * attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED; > + * attr.use_clockid = 1; > + * attr.clockid = CLOCK_MONOTONIC; > + * attr.config = DRM_XE_PMU_RENDER_GROUP_BUSY(0); > + * > + * fd = syscall(__NR_perf_event_open, &attr, -1, cpu, -1, 0); > + */ > + > +/* > + * Top bits of every counter are GT id. > + */ > +#define __DRM_XE_PMU_GT_SHIFT (56) > + > +#define ___DRM_XE_PMU_OTHER(gt, x) \ > + (((__u64)(x)) | ((__u64)(gt) << __DRM_XE_PMU_GT_SHIFT)) > + > +#define DRM_XE_PMU_RENDER_GROUP_BUSY(gt) ___DRM_XE_PMU_OTHER(gt, 0) > +#define DRM_XE_PMU_COPY_GROUP_BUSY(gt) ___DRM_XE_PMU_OTHER(gt, 1) > +#define DRM_XE_PMU_MEDIA_GROUP_BUSY(gt) ___DRM_XE_PMU_OTHER(gt, 2) > +#define DRM_XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___DRM_XE_PMU_OTHER(gt, 3) > + > static cpumask_t xe_pmu_cpumask; > static unsigned int xe_pmu_target_cpu = -1; > > diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h > index 0895e4d2a9815..64498c762d8b9 100644 > --- a/include/uapi/drm/xe_drm.h > +++ b/include/uapi/drm/xe_drm.h > @@ -1081,45 +1081,6 @@ struct drm_xe_wait_user_fence { > __u64 reserved[2]; > }; > > -/** > - * DOC: XE PMU event config IDs > - * > - * Check 'man perf_event_open' to use the ID's DRM_XE_PMU_XXXX listed in xe_drm.h > - * in 'struct perf_event_attr' as part of perf_event_open syscall to read a > - * particular event. > - * > - * For example to open the DRMXE_PMU_RENDER_GROUP_BUSY(0): > - * > - * .. code-block:: C > - * > - * struct perf_event_attr attr; > - * long long count; > - * int cpu = 0; > - * int fd; > - * > - * memset(&attr, 0, sizeof(struct perf_event_attr)); > - * attr.type = type; // eg: /sys/bus/event_source/devices/xe_0000_56_00.0/type > - * attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED; > - * attr.use_clockid = 1; > - * attr.clockid = CLOCK_MONOTONIC; > - * attr.config = DRM_XE_PMU_RENDER_GROUP_BUSY(0); > - * > - * fd = syscall(__NR_perf_event_open, &attr, -1, cpu, -1, 0); > - */ > - > -/* > - * Top bits of every counter are GT id. > - */ > -#define __DRM_XE_PMU_GT_SHIFT (56) > - > -#define ___DRM_XE_PMU_OTHER(gt, x) \ > - (((__u64)(x)) | ((__u64)(gt) << __DRM_XE_PMU_GT_SHIFT)) > - > -#define DRM_XE_PMU_RENDER_GROUP_BUSY(gt) ___DRM_XE_PMU_OTHER(gt, 0) > -#define DRM_XE_PMU_COPY_GROUP_BUSY(gt) ___DRM_XE_PMU_OTHER(gt, 1) > -#define DRM_XE_PMU_MEDIA_GROUP_BUSY(gt) ___DRM_XE_PMU_OTHER(gt, 2) > -#define DRM_XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___DRM_XE_PMU_OTHER(gt, 3) > - > #if defined(__cplusplus) > } > #endif > -- > 2.41.0 >