From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12]) (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 BD085222590 for ; Thu, 12 Mar 2026 10:17:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.12 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773310659; cv=none; b=oQ+XOqXR8ASjtKzrFujNRTDc4omfFJ+mFUqLO9bXKLzCxuT3ogGuJvGuzUnweZ3mNEkhpU10IRxe6UjT5QRMbcZIRU83rAvw4QVPfUwjSY6cX5swXVCOdRKHF8AJcQU0ooTZ2TaAI7vAxma2StdT95f6Xbc4xuS3afKN1l63kOE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773310659; c=relaxed/simple; bh=q10lpM6sZRUITHwwKuTv+xH4LIsg86jKPcy0faoM7Es=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Nnu2hNS0cTym+PJM4cz8EyfliHZGcUmmANa4l3OA31b+XvsuZav0TJklhW1Zv8iUegMisPVcy3NJwbTKlEhj0wjNqnzrPT8ylmsxyi1gDo61mKFHMzuzdVzOsFjcO8ihtALjUyQ7IyOixvZn59a83hKRJaWk6ZE8cIIZZaMnN6U= 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=a6bF6945; arc=none smtp.client-ip=198.175.65.12 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="a6bF6945" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773310658; x=1804846658; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=q10lpM6sZRUITHwwKuTv+xH4LIsg86jKPcy0faoM7Es=; b=a6bF69457qd5u4VYfWxCJ7pwNbh82azu458xwESN3fY4gq7iBhopmRlM B4dWBNNpRjLJRuJTaloTK6DVcSrxdXqXN8C9QmEETGGliT4ycls0fw9Qf y+puzaZmFfp510YpDWHP4auem4VZeaIzktY/ZR3JP7IqCdN9Tuxi+sqw7 MxIg7JqxoPa/5t0Glfmut52zPfvXbBaejz543oP5alHTtwxpCbGNpmWdD 3/Hoyjg5SVU6inHNI+sEQnqmQJ1AeT5KNdbdoFuFgrZz/zcLvW16tlhDD WEG6BoWXHAxmvQmscrYrHp00o1pUoWpNEDsmP591gK0SxCqBWauxEBUsf g==; X-CSE-ConnectionGUID: Z8iVVXm8QDe4Me/qSRpXZA== X-CSE-MsgGUID: oes4WYJOQbqOt0GMBWXa1g== X-IronPort-AV: E=McAfee;i="6800,10657,11726"; a="85873116" X-IronPort-AV: E=Sophos;i="6.23,116,1770624000"; d="scan'208";a="85873116" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2026 03:17:37 -0700 X-CSE-ConnectionGUID: 6U0YCNtlS/uFf4lm9Auj8w== X-CSE-MsgGUID: 4EJFmJB5QieJ72tRPRK7Ow== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,116,1770624000"; d="scan'208";a="251270236" Received: from black.igk.intel.com ([10.91.253.5]) by orviesa002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2026 03:17:34 -0700 Date: Thu, 12 Mar 2026 11:17:30 +0100 From: Raag Jadav To: Riana Tauro Cc: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, netdev@vger.kernel.org, aravind.iddamsetty@linux.intel.com, anshuman.gupta@intel.com, rodrigo.vivi@intel.com, joonas.lahtinen@linux.intel.com, simona.vetter@ffwll.ch, airlied@gmail.com, pratik.bari@intel.com, joshua.santosh.ranjan@intel.com, ashwin.kumar.kulkarni@intel.com, shubham.kumar@intel.com, ravi.kishore.koppuravuri@intel.com, anvesh.bakwad@intel.com, maarten.lankhorst@linux.intel.com Subject: Re: [PATCH 2/4] drm/xe/xe_drm_ras: Add support for clear-error-counter in XE DRM RAS Message-ID: References: <20260311102913.3387468-6-riana.tauro@intel.com> <20260311102913.3387468-8-riana.tauro@intel.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260311102913.3387468-8-riana.tauro@intel.com> On Wed, Mar 11, 2026 at 03:59:16PM +0530, Riana Tauro wrote: > Add support for clear-error-counter command in XE DRM RAS. > This resets the counter value. > > Usage: > > $ sudo ynl --family drm_ras --do clear-error-counter --json \ > '{"node-id":1, "error-id":1}' > None > > Signed-off-by: Riana Tauro > --- > drivers/gpu/drm/xe/xe_drm_ras.c | 35 +++++++++++++++++++++++++++++++-- > 1 file changed, 33 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c > index e07dc23a155e..c21c8b428de6 100644 > --- a/drivers/gpu/drm/xe/xe_drm_ras.c > +++ b/drivers/gpu/drm/xe/xe_drm_ras.c > @@ -27,6 +27,16 @@ static int hw_query_error_counter(struct xe_drm_ras_counter *info, > return 0; > } > > +static int hw_clear_error_counter(struct xe_drm_ras_counter *info, u32 error_id) > +{ > + if (!info || !info[error_id].name) > + return -ENOENT; > + > + atomic_set(&info[error_id].counter, 0); > + > + return 0; > +} > + > static int query_uncorrectable_error_counter(struct drm_ras_node *ep, u32 error_id, > const char **name, u32 *val) > { > @@ -37,6 +47,15 @@ static int query_uncorrectable_error_counter(struct drm_ras_node *ep, u32 error_ > return hw_query_error_counter(info, error_id, name, val); > } > > +static int clear_uncorrectable_error_counter(struct drm_ras_node *node, u32 error_id) > +{ > + struct xe_device *xe = node->priv; > + struct xe_drm_ras *ras = &xe->ras; > + struct xe_drm_ras_counter *info = ras->info[DRM_XE_RAS_ERR_SEV_UNCORRECTABLE]; > + > + return hw_clear_error_counter(info, error_id); > +} > + > static int query_correctable_error_counter(struct drm_ras_node *ep, u32 error_id, > const char **name, u32 *val) > { > @@ -47,6 +66,15 @@ static int query_correctable_error_counter(struct drm_ras_node *ep, u32 error_id > return hw_query_error_counter(info, error_id, name, val); > } > > +static int clear_correctable_error_counter(struct drm_ras_node *node, u32 error_id) > +{ > + struct xe_device *xe = node->priv; > + struct xe_drm_ras *ras = &xe->ras; > + struct xe_drm_ras_counter *info = ras->info[DRM_XE_RAS_ERR_SEV_CORRECTABLE]; > + > + return hw_clear_error_counter(info, error_id); > +} This would've been much simpler if we had per node info, but for now Reviewed-by: Raag Jadav > static struct xe_drm_ras_counter *allocate_and_copy_counters(struct xe_device *xe) > { > struct xe_drm_ras_counter *counter; > @@ -92,10 +120,13 @@ static int assign_node_params(struct xe_device *xe, struct drm_ras_node *node, > if (IS_ERR(ras->info[severity])) > return PTR_ERR(ras->info[severity]); > > - if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE) > + if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE) { > node->query_error_counter = query_correctable_error_counter; > - else > + node->clear_error_counter = clear_correctable_error_counter; > + } else { > node->query_error_counter = query_uncorrectable_error_counter; > + node->clear_error_counter = clear_uncorrectable_error_counter; > + } > > return 0; > } > -- > 2.47.1 >