From patchwork Wed Apr 26 20:57:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224936 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 C2263C7618E for ; Wed, 26 Apr 2023 20:57:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CE3EA10E239; Wed, 26 Apr 2023 20:57:32 +0000 (UTC) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8BE9710E1FD; Wed, 26 Apr 2023 20:57:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542645; x=1714078645; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=tAQf0FEJlkeNWaMHKHFYIp6l7S0xHpih33tO5eVWotc=; b=h2ijdE0rT5gcfih/KuVioJktKv6ZuMQkN/85Ala3J3yvrQqUhf9iQFFx 96Tw7FbaZlj8yElzuJ+qvMrHAQAdIPUn6DER6NK+W7r7+W8craG0uYAgU d9tXsE+xPjMZWdTjdxbgXX+aWW8hCRLjvXyX1VtNlvoKbqQFMz8PiOcsd XtQoq50/O86l/RlzzmTzGXT/zkR81aB9oKrxrKQ5gkCElHCwfGsffzAoR Jk2QFKVkW3FYRzFuztzYiAKBvitZSoOsAXVwcuSnIx058T4V/KaVwJwDb fYvQPKp1UlV7coaphwzXe7AvC5z/9/h9h5pH1gh4ACiAk3UW3x776B/B8 A==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="410249414" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="410249414" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="868434967" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="868434967" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga005.jf.intel.com with ESMTP; 26 Apr 2023 13:57:25 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:25 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:24 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:24 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.47) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OeejHLXqtofCiSxRlqdI6eZQcjkqm6GqPByTNjXIARGHjoG5HtK6jpXzn2Z9JkTwA0uNZ4upWcym2nAqq3hXDUN/JekJ8PKOhWX6Dr5xjZr60ToaI3a/O2goR31NRnwOue6/Wrizt2GRZgDwVTHIEWncZxIZJ450dIX5ObhuJ30+ARQyIK9QkC1twcCgmWQBH69cTRBH2sZaK3HpXl2MXw39IIqENDetZzeD9wwkD1gPXbPgiWPdxNWijFhd2x6/TtUacmtk3onL0JF/gGQ3JuRbcmY6MnloXe+H5NNetUik1E/BtgXn6lAqc6qcykQQKpt1iL+XrmSFbIIgF/+24g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=l6z8xpPcKBdxwDkLShdRzfohW7IDq6Vp7k3CqLAxspo=; b=XFGj/LU0abmpq5e7XLeV0zJn3KrQ3lHCwdyjtzhca2tZKTqUIp31ViO9Pdg03lwFrLguC8La/llYCkU/z+8FKgD/mpKxZTYaluTKDuE+Zr1ieGJXbM4r5To/pIHMqQloFktkRSWqCqDVVWu/aTPNh0Oh7mC4mqvvm3YyLfPpJjHpYlUCH8nVdUN7p5dLLsB7OxaJX/6gyYel6dWRCZmPZDcGi0y7KZWf58ANiWZL2gxULVPqd/TJ3Iqo9uUaX4y1LrByeyhzWXKe7PccmA0AvEpDeryCsGgwa8mS7I5xIOMLJ9YMKO1hsD5FxyzlwPtExvCbOx05ghUGFtJxv0T6Pg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by MN0PR11MB6182.namprd11.prod.outlook.com (2603:10b6:208:3c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21; Wed, 26 Apr 2023 20:57:23 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:23 +0000 From: Rodrigo Vivi To: Subject: [PATCH 01/14] drm/xe: Fix print of RING_EXECLIST_SQ_CONTENTS_HI Date: Wed, 26 Apr 2023 16:57:00 -0400 Message-ID: <20230426205713.512695-2-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: SJ0PR13CA0133.namprd13.prod.outlook.com (2603:10b6:a03:2c6::18) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|MN0PR11MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: ef1f7bfe-0de8-4e6c-22f7-08db4698d50c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /jrI6vKMaS+D8G316B1TeACs8dJ26Jlzhhei8dbjA/O4A6rXX+qgcbAslf8WENQZ2+mIV4t3fudmVOavLro5Ixuy00XAYq7tfQwB2NpG5a2LBuWWvGNlMdApLOdADxOerGmtuiFbM3IsjYnHzgHmj9M4vw2oLJBGe6c0NTtQ1mw46JCADwSKsZamzXOSldpUg/xMzSjyQOK0AtvnWbnGnvr4F4SZ+d1P9iUuOL2Gs75LzD/35sXhWrjtE++wHPjxnG4xfD+edaE9T3Y1gXj3TSRI+XLq0y0GhWn4P7JduemMDLBiRsX6DfQQAoDRmW1eUknobUAMPzfs/6EBYOs/mOklc/5kZsiE2oQTv2dql7Y1/nbXLqZSEt0qtK4sIYmCvQ5P2IeN4sZCyYtq3j30c8Uyu9XlHXfkLZzTmjkkOOv4LysJVQ9msRfSn/XSUwxNDIrOw03weBx2E02dG8N/HJu/tGMrv3IE3RTIU5o1Ak/7xfV8XkO6gzxzg37gmKjvsFT0lPpEfmpFsbIlyFhNEV/zsrLzhuhDUpUT0XSwI8PRP5T2mfGgl9NLe3PTecVT X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(39860400002)(366004)(136003)(376002)(396003)(451199021)(2616005)(83380400001)(186003)(1076003)(26005)(6506007)(6512007)(316002)(6916009)(66476007)(86362001)(4326008)(450100002)(38100700002)(82960400001)(66556008)(66946007)(2906002)(44832011)(41300700001)(107886003)(478600001)(5660300002)(36756003)(8676002)(6486002)(6666004)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4Vc9jxkUpRtQQxmBhk5FJa9D9cOi/sqmXWJl3wPdOc+CVPmOq0Tz+XuhNLrBUMaCzOZG/fn/Ui/C7aFZILML62x6JCT1SRkK0QfKBVZvg9TnJmbzOJlSi0jy9cLkVxMSfkl3MHt4G6tzMk/n6zbdHCt5HGvrPO9TUZKEEfMBcAMT0hsPDhDuXhW4OCe2oJHdzuhPnU113c9fAhjh/EPlDhLwWEaGae1/rsJ/z5pS7eLeiNfW/vyWdsTpK3a2Wks+Vg+HpoctYuBaWf6cGihFGD2j6ZjbFuJnR23zB5hmxe6i1qq3wyqXyPErYF06B4tOpYo+s0oY/lF/bgzo/8wlT8Iu7R+r0e3U3ILXJz2wTfQbdlZIaWVhUT9TH/mV/JRtQJQCERXdFjuIKJklTPJjyiXdqFSvOqIs7Zezj2/UZ7bECAiDTo2xH1z1vjtLYt+xN6DMi8dw9AqD/Bi1E5NnPaIVYglZc4Ub2z7N0yz5NTg+qnbofnR1ZlEt9+2jvby4zYo1NvuyGt/DFjB+fAT3n4sPpaHJnR//L4sYpsCaz8hBLNPpgy+LPQgtKA8/gpz1eOwxhotUnPs35EeidnvolWiJUSgDoh467o1h7VIowDAOCOAVFXLcHilK+OpD2rMLv/xAhJTC0kPQM/4rvQF/TuNW94KBVTHulq877ZNgF5VlGHW2t1g9CsIiSub+Vt86+bleYA7zcjCWoOSMxA7ZYh/p7/Q/8GPgjX9KT8tDxl9WQpgnyrVLM25vG8JJAPB0lzoMXQU2ifKTwNCeTH5WmIewxJcuRJIaa//NWpilDlMuZ0n/FeTbMqcu9wy3LNqV+vQxkjC8WeSiuGirpqPwa4oq7uVMvkpEixnm2kxicNH4CeRzUebUkW4MGvoMFQOQsdc9s8/j6OKz7PCFcmpbsMx48060K/BSyyIfx7SZkuCcUHMSXljUr+ZFWeqLQXvgkSTb8+Qq1QwHVDzu3U0/wdsRT/9qBJca4cIK1onoba6TTr/P0lNbSNsRph/NizpNv11Te83ejT9cKwWAg+UBGBbVWgynQDl27cX/9JTgd+RgcIlaJikTQ0FVsYtlF91B06rY6jXWi2Rq987IvjzpfeXzc6wt9SD8J8+QuhtDaDbqE6Aotrrh8AHXQ3fxbLTWS9tf7BxBb7q6+qm1RsJfDQKHpNbPqwVFapddHJQiyQ2QDMm33E8bvG9u921dhX7nvxJSf38kRbCAUq8pSFsByfDap/k0ZUYLxrwW6IH4a7pCibzQOzPVZQMH7gCr0uTA91rtYHw3Z1yP8n8RD2J7Zf9LAY3YfV1wAIWZ1U5nDYcmo272QyrmcXosqntAuJXsGSlz3/EHmJR4qfVas0C/m+0qDg6AbzSqtGGcXo1wgIVBohGRS8JXBGP10KZ8iw7EQ6ksb0e8coPLuTPTwu8iYi9CpO7PkfWlQyrAkKDGttkYOGPj1/QgiBM3WbB/yrO88YNigjhe6FphXUYFLpNhipYf2U4AofupWk+WuTF7ikaEuamPy7yikjpyrlDPyWRXC49VoGpJIMSLlX9Qqzq+TEsXivKwl5K5fLNLl31BFdsoFhNNS5Z0Yxlcfyyfi31v X-MS-Exchange-CrossTenant-Network-Message-Id: ef1f7bfe-0de8-4e6c-22f7-08db4698d50c X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:22.9094 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QMwvCNP//0dpIj/ioU1djNWlrIew0macnWEqzaCSQPdYZaZWEXUJl/dfN8leeVwWOD5DnKy87cbhBXLzB2x07Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6182 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On xe_hw_engine_print_state we were printing: value_of(0x510) + 4 instead of value_of(0x514) as desired. So, let's properly define a RING_EXECLIST_SQ_CONTENTS_HI register to fix the issue and also to avoid other issues like that. Signed-off-by: Rodrigo Vivi Reviewed-by: Lucas De Marchi --- drivers/gpu/drm/xe/regs/xe_engine_regs.h | 3 ++- drivers/gpu/drm/xe/xe_execlist.c | 4 ++-- drivers/gpu/drm/xe/xe_hw_engine.c | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/xe/regs/xe_engine_regs.h b/drivers/gpu/drm/xe/regs/xe_engine_regs.h index 2aa67d001c34..a1e1d1c206fa 100644 --- a/drivers/gpu/drm/xe/regs/xe_engine_regs.h +++ b/drivers/gpu/drm/xe/regs/xe_engine_regs.h @@ -84,7 +84,8 @@ RING_FORCE_TO_NONPRIV_DENY) #define RING_MAX_NONPRIV_SLOTS 12 -#define RING_EXECLIST_SQ_CONTENTS(base) _MMIO((base) + 0x510) +#define RING_EXECLIST_SQ_CONTENTS_LO(base) _MMIO((base) + 0x510) +#define RING_EXECLIST_SQ_CONTENTS_HI(base) _MMIO((base) + 0x510 + 4) #define RING_EXECLIST_CONTROL(base) _MMIO((base) + 0x550) #define EL_CTRL_LOAD REG_BIT(0) diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c index 02021457b1f0..37ac6473195e 100644 --- a/drivers/gpu/drm/xe/xe_execlist.c +++ b/drivers/gpu/drm/xe/xe_execlist.c @@ -84,9 +84,9 @@ static void __start_lrc(struct xe_hw_engine *hwe, struct xe_lrc *lrc, xe_mmio_write32(gt, RING_MODE_GEN7(hwe->mmio_base).reg, _MASKED_BIT_ENABLE(GEN11_GFX_DISABLE_LEGACY_MODE)); - xe_mmio_write32(gt, RING_EXECLIST_SQ_CONTENTS(hwe->mmio_base).reg + 0, + xe_mmio_write32(gt, RING_EXECLIST_SQ_CONTENTS_LO(hwe->mmio_base).reg, lower_32_bits(lrc_desc)); - xe_mmio_write32(gt, RING_EXECLIST_SQ_CONTENTS(hwe->mmio_base).reg + 4, + xe_mmio_write32(gt, RING_EXECLIST_SQ_CONTENTS_HI(hwe->mmio_base).reg, upper_32_bits(lrc_desc)); xe_mmio_write32(gt, RING_EXECLIST_CONTROL(hwe->mmio_base).reg, EL_CTRL_LOAD); diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c index 4b56c35b988d..23b9f120c258 100644 --- a/drivers/gpu/drm/xe/xe_hw_engine.c +++ b/drivers/gpu/drm/xe/xe_hw_engine.c @@ -528,10 +528,10 @@ void xe_hw_engine_print_state(struct xe_hw_engine *hwe, struct drm_printer *p) hw_engine_mmio_read32(hwe, RING_EXECLIST_STATUS_HI(0).reg)); drm_printf(p, "\tRING_EXECLIST_SQ_CONTENTS_LO: 0x%08x\n", hw_engine_mmio_read32(hwe, - RING_EXECLIST_SQ_CONTENTS(0).reg)); + RING_EXECLIST_SQ_CONTENTS_LO(0).reg)); drm_printf(p, "\tRING_EXECLIST_SQ_CONTENTS_HI: 0x%08x\n", hw_engine_mmio_read32(hwe, - RING_EXECLIST_SQ_CONTENTS(0).reg) + 4); + RING_EXECLIST_SQ_CONTENTS_HI(0).reg)); drm_printf(p, "\tRING_EXECLIST_CONTROL: 0x%08x\n", hw_engine_mmio_read32(hwe, RING_EXECLIST_CONTROL(0).reg)); From patchwork Wed Apr 26 20:57:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224937 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 481C8C77B60 for ; Wed, 26 Apr 2023 20:57:37 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CEFF210E46F; Wed, 26 Apr 2023 20:57:33 +0000 (UTC) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id C067D10E1FD; Wed, 26 Apr 2023 20:57:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542648; x=1714078648; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=imHsePnRTl+nBAtx+gOpXfmdF93lZvDXhITIpAKZrAk=; b=KXzOyGb98wdJTBf5D2BeEOJ1uRT7yG5ZDctNe9HCSe/qIC4w+lwGEDM9 24Dvv5HDhd2j6/GyV0H3se6djzO5FnEtHcMp78H/qFaTzescyiUIfON12 V4E0iTMF6+cvgVnSyX0ceipW5q34GB2SV2upp+8dDFSn0Jx8OW+bktPIJ 0LYqDasrp6Mw3lWrxmZu1JCL175yEZxRKjpWJxB2FEUXaHJ9MJ9chA3vf 5S8Z3DwenyQgf30MdtJr8fHUyyiSpZG4MSj+/u3dinZQMjkqyqCWsxEq0 oMkIzY3kwYPmL7wFThUGLZUe3hbINMxi/oTndJJI4YuoAn5thaHlrMp/O A==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="410249426" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="410249426" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="868435018" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="868435018" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga005.jf.intel.com with ESMTP; 26 Apr 2023 13:57:28 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:28 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:28 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AYlJ0rvnNVE3CAkf0bsReUNhhYkA0l8139X0uV95mdproXjeEvTblEVVixrZvmzfZ1JaduezJUxg3rGSr+kQWGda8njpDK/xn90G+QdrFjBJVO0fLATQGszjeidMYcqscSRp88ewasHcLDLY62xfWiRMUIxad9Dg9bAAUykB881l7MJAL0Uk735ANSQDMd8V4KjH7NjWTcAnAEqAmWobFRsay0Pw8VN7oBIjUXtD09BuRd9rmm+mBpSXageOMH9Kx57YYjBsKmI0RZz8oCdXUqoXzYJlZnQSSZzQzxaurJU9+32BgP+GpfP8tYEEF9YMTFwnoFn2O+pEYuK4zIr4LQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CjqgEAtxqihVyRFAztKkzORumPoy2b/tnNaKOokbwv8=; b=fGSpgwhYqEII2+x4OaF8H+I1j6e8SlISjiFl5fbGkLVHP4ykWwCE1NIlYKwPPzoaY/5FI6XNOkOt6+PNwuM/jvjpA32XKnXoas5uiU8Os8TYz5UT0fchHQMafTasxOI08tPXEyyoanigWoSwsgzeMjCp2LaQFYwDxyG/Nv9eKoDQOgzxlSyiFvmeKfZhTTab9f08+tSIxAqRXMgqvJgc+ez+UUYAfIPpgjrWLUGkZNA5kqmT/bNL+nldnx7j42OaM2jEt4HVoJfG/yS8putaXY4dh276NohnAuFYBNqpWvxbnm3CDzQbyIPdY2zlmJyMp6jc4O8VgSsKk24DmptzHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by MN0PR11MB6182.namprd11.prod.outlook.com (2603:10b6:208:3c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21; Wed, 26 Apr 2023 20:57:26 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:26 +0000 From: Rodrigo Vivi To: Subject: [PATCH 02/14] drm/xe: Introduce the dev_coredump infrastructure. Date: Wed, 26 Apr 2023 16:57:01 -0400 Message-ID: <20230426205713.512695-3-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: BYAPR07CA0045.namprd07.prod.outlook.com (2603:10b6:a03:60::22) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|MN0PR11MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: cb019fa6-b609-4c63-b72d-08db4698d71f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wBbfMpIDMPRR00X8OupqoTYVEegX5PwgNhaK7ggBiBQFPnNDRR8pzrSBDEGpao7uttUSzc4sKckTh2cW4jF8QPAPm5agDU0KcrE6ofO0QVW6FfZGG9yJAb+dA8c/OYlRF0PbdwcLIqbNN+9Ljeu9Fuj+QwXLFIm+aBoUpCmnnA2ndzMXuBrRd8g/X6r7I1M5mHKqfYntUOEYzYcmNOJidd/+hwa5547aSq50beVJc3b0iKPM3Mp1AQX9eterEQzcsAeCSFLOHBbvKWE7CcQ+ec/8qIBF5SGYFEfmIBY50R4Hs5OrHvpa9Nav45zHBhOPb6S0ieJlM3YTfNLofyDbXa+N0crTgpdP6BAFFyd7n2UKcG7O05LWedm0Y2MjkqBQ/hdyopzD25N2BSDaOBqqO/M+qo/QvJGSZuXhUmo57TRbQL1s9tlkn15P1TU69HEp3ItPklOlvpaEauFf8hqihnR55YYVbU62mRnxBMN3kE22/Nt0GrLrvFyiUIKsvqhwkaktymEIg/kIu7IFSJVTVJM4EKuXgmapT29c8PgMUiPZcHnJeVWFVQ7+1l8VMXzL X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(39860400002)(366004)(136003)(376002)(396003)(451199021)(2616005)(83380400001)(186003)(1076003)(26005)(6506007)(6512007)(316002)(6916009)(66476007)(86362001)(4326008)(38100700002)(82960400001)(66556008)(66946007)(2906002)(30864003)(44832011)(41300700001)(478600001)(54906003)(5660300002)(36756003)(8676002)(6486002)(6666004)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?XryHFnn8OTYF4Qcgq/vznML6VleW?= =?utf-8?q?B6TWdMMT0KW9cLqqX8eZUcHcjgAOSwuxqa3ZQ3wHexQYXDxzQxocwQY1DQz+drCBF?= =?utf-8?q?h38iYdks3c+Zk9HgjziqhkGejjf36YpY2Ce0kUNmRBexhjIKqZfptOFbw40D3PA+I?= =?utf-8?q?eiTc/klQF39w2pkuYWu+opwM/KqstJ/d9Us3YNGKV5cGKF+iKxv0Fp5YbxPXqKxm5?= =?utf-8?q?DG6Zq4gapkMzfJaAxMnZaddXqNSc7kJ4SVUK5/m0fS8Dhq0v+ZOaY0XY3hfkB7xt0?= =?utf-8?q?g+yIZCgHKIUKgeZ4LNp9tbp77sWnbZ4IZ4hAL9dvQmnZ39+u5jAJXU9WjnQWhyXQq?= =?utf-8?q?RTcL6awVn7vQjSbX8HI5O0vylI+NdU+fEBuhzn47DDXX7FjL1vb4lgqwxUl8TT4V5?= =?utf-8?q?fDQAC6BmIrdw4s+obbLPlxzwhZ2tD3jbQb9DdYPjuHHpm7Y5Qb/BLCPA4PncU9eRn?= =?utf-8?q?6AYuBM8vodtcs433JV+OLkJSt7obmkHzu1DewDdPZ3SmFeLAkr8tanCvowpfiz5g9?= =?utf-8?q?ZoEVJESEiBCC6VOwq8u8AbLLE4oEiZmnhfocSbADj2x/CJUUML8sn/JazRd42hEI6?= =?utf-8?q?7F5HpEvKbcVfcJUSlLRtHMrWokceqSD728ZivV3jLxzgUT/T6lLqeYXI2dZjn4LXq?= =?utf-8?q?V3Qdu6hz7shUR44TjKBNzq3EKAhZcrwkX7vQpKdf7sscOhWNSgomBvjartXJJ23zi?= =?utf-8?q?AogAVCG27TFeaRMP30nJxzaHWotHmYj7LcccbvcB+8LBTsWMYdE0dNWq0KHp2YE7O?= =?utf-8?q?K+PgVopUUFBudDINa4YvKTrnwRuYcF+iKvAsFk3nu6q0v6xItYsCg+zcdb9gTVKwP?= =?utf-8?q?Lt4URnIao4tDpFpNEoqh2SN5870m880JmoYwgs23GI8Lqpy2rkSf2BpmGC6C/F2Mr?= =?utf-8?q?xM7+lApGL5JEIBncK1Yv/d3B0Zogd9MGulglF0Ena75I2VnjSh8x2AtPtAnmigyjn?= =?utf-8?q?x/ij+SvFjqdUtU49gUG2dUsn35O4eRWKKTqs8C4iaiyVbk9TPZL7V06BkOcxJeTEu?= =?utf-8?q?dKCnwlX7xlWEycyWdIhtEFOWGmkEIBZHQTIZ5K7TtizCvppQYBvWI1DCqFXXJPJLB?= =?utf-8?q?YDxw6IKG9f6NanUG6XdrT0SMH0f+T0GlWKmitMbvL6FpJeF9XYX3VzvN4RoWd49CD?= =?utf-8?q?/jpBcEEzYlv6K9tgyNivPCQ76uWTYJvy2OZkWqCvTYqecTuK9uOvs5S4Gnx0xn22U?= =?utf-8?q?ny6llK8pGk4Gs8OCG06rUsxyYlnWebaYiptIMgOnsFDvGLymON0g4XFDO0NjiVBJx?= =?utf-8?q?+G4U3NBJ24dIcLlzd37nXW0H8/2DYuEnHxlWdVLFkmbO9ne6yFhEpLDXQ2LU9dyzj?= =?utf-8?q?U4UWNtG1EEG1JCgYdFzXIju79VMWAyC4DAC2c40NkGWCtdHelEia3xhzYC1thmsOK?= =?utf-8?q?ScZarB2VvRQXoHRcyDNM3uohgZ/g4vMQgi0up/8o5h891wfchExZIjuaYCj5Pp2Fz?= =?utf-8?q?qXlPQPPkHEvy1VJ655XJbMg2bMe6027NCpYiBdCFhYofS2P2uaHZ3xglZuKAJXPoy?= =?utf-8?q?2p9VsBQK0J/a2Ss5M5qTAyr8NEa5NMQHCA=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: cb019fa6-b609-4c63-b72d-08db4698d71f X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:26.3828 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: eSBp3PkIxOqCn5XPd3tIQ2UY7xI6wHCmMEFixAvGTDahMJFVZwngqIUrGKJXap3AT/jezdfPcuaxJ0HZzlh4bA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6182 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Vetter , dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The goal is to use devcoredump infrastructure to report error states captured at the crash time. The error state will contain useful information for GPU hang debug, such as INSTDONE registers and the current buffers getting executed, as well as any other information that helps user space and allow later replays of the error. The proposal here is to avoid a Xe only error_state like i915 and use a standard dev_coredump infrastructure to expose the error state. For our own case, the data is only useful if it is a snapshot of the time when the GPU crash has happened, since we reset the GPU immediately after and the registers might have changed. So the proposal here is to have an internal snapshot to be printed out later. Also, usually a subsequent GPU hang can be only a cause of the initial one. So we only save the 'first' hang. The dev_coredump has a delayed work queue where it remove the coredump and free all the data withing a few moments of the error. When that happens we also reset our capture state and allow further snapshots. Right now this infra only print out the time of the hang. More information will be migrated here on subsequent work. Also, in order to organize the dump better, the goal is to propose dev_coredump changes itself to allow multiple files and different controls. But for now we start Xe usage of it without any dependency on dev_coredump core changes. Cc: Daniel Vetter Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/xe/Kconfig | 1 + drivers/gpu/drm/xe/Makefile | 1 + drivers/gpu/drm/xe/xe_devcoredump.c | 144 ++++++++++++++++++++++ drivers/gpu/drm/xe/xe_devcoredump.h | 22 ++++ drivers/gpu/drm/xe/xe_devcoredump_types.h | 47 +++++++ drivers/gpu/drm/xe/xe_device_types.h | 4 + drivers/gpu/drm/xe/xe_guc_submit.c | 2 + drivers/gpu/drm/xe/xe_pci.c | 2 + 8 files changed, 223 insertions(+) create mode 100644 drivers/gpu/drm/xe/xe_devcoredump.c create mode 100644 drivers/gpu/drm/xe/xe_devcoredump.h create mode 100644 drivers/gpu/drm/xe/xe_devcoredump_types.h diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig index f6f3b491d162..d44794f99338 100644 --- a/drivers/gpu/drm/xe/Kconfig +++ b/drivers/gpu/drm/xe/Kconfig @@ -35,6 +35,7 @@ config DRM_XE select DRM_TTM_HELPER select DRM_SCHED select MMU_NOTIFIER + select WANT_DEV_COREDUMP help Experimental driver for Intel Xe series GPUs diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile index ee4a95beec20..9d675f7c77aa 100644 --- a/drivers/gpu/drm/xe/Makefile +++ b/drivers/gpu/drm/xe/Makefile @@ -34,6 +34,7 @@ xe-y += xe_bb.o \ xe_bo.o \ xe_bo_evict.o \ xe_debugfs.o \ + xe_devcoredump.o \ xe_device.o \ xe_dma_buf.o \ xe_engine.o \ diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c new file mode 100644 index 000000000000..d9531183f03a --- /dev/null +++ b/drivers/gpu/drm/xe/xe_devcoredump.c @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2023 Intel Corporation + */ + +#include "xe_devcoredump.h" +#include "xe_devcoredump_types.h" + +#include +#include + +#include "xe_engine.h" +#include "xe_gt.h" + +/** + * DOC: Xe device coredump + * + * Devices overview: + * Xe uses dev_coredump infrastructure for exposing the crash errors in a + * standardized way. + * devcoredump exposes a temporary device under /sys/class/devcoredump/ + * which is linked with our card device directly. + * The core dump can be accessed either from + * /sys/class/drm/card/device/devcoredump/ or from + * /sys/class/devcoredump/devcd where + * /sys/class/devcoredump/devcd/failing_device is a link to + * /sys/class/drm/card/device/. + * + * Snapshot at hang: + * The 'data' file is printed with a drm_printer pointer at devcoredump read + * time. For this reason, we need to take snapshots from when the hang has + * happened, and not only when the user is reading the file. Otherwise the + * information is outdated since the resets might have happened in between. + * + * 'First' failure snapshot: + * In general, the first hang is the most critical one since the following hangs + * can be a consequence of the initial hang. For this reason we only take the + * snapshot of the 'first' failure and ignore subsequent calls of this function, + * at least while the coredump device is alive. Dev_coredump has a delayed work + * queue that will eventually delete the device and free all the dump + * information. At this time we also clear the faulty_engine and allow the next + * hang capture. + */ + +static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, + size_t count, void *data, size_t datalen) +{ + struct xe_devcoredump *coredump = data; + struct xe_devcoredump_snapshot *ss; + struct drm_printer p; + struct drm_print_iterator iter; + struct timespec64 ts; + + iter.data = buffer; + iter.offset = 0; + iter.start = offset; + iter.remain = count; + + mutex_lock(&coredump->lock); + + ss = &coredump->snapshot; + p = drm_coredump_printer(&iter); + + drm_printf(&p, "**** Xe Device Coredump ****\n"); + drm_printf(&p, "kernel: " UTS_RELEASE "\n"); + drm_printf(&p, "module: " KBUILD_MODNAME "\n"); + + ts = ktime_to_timespec64(ss->snapshot_time); + drm_printf(&p, "Snapshot time: %lld.%09ld\n", ts.tv_sec, ts.tv_nsec); + ts = ktime_to_timespec64(ss->boot_time); + drm_printf(&p, "Boot time: %lld.%09ld\n", ts.tv_sec, ts.tv_nsec); + ts = ktime_to_timespec64(ktime_sub(ss->snapshot_time, ss->boot_time)); + drm_printf(&p, "Uptime: %lld.%09ld\n", ts.tv_sec, ts.tv_nsec); + + mutex_unlock(&coredump->lock); + + return count - iter.remain; +} + +static void xe_devcoredump_free(void *data) +{ + struct xe_devcoredump *coredump = data; + struct xe_device *xe = container_of(coredump, struct xe_device, + devcoredump); + mutex_lock(&coredump->lock); + + coredump->faulty_engine = NULL; + drm_info(&xe->drm, "Xe device coredump has been deleted.\n"); + + mutex_unlock(&coredump->lock); +} + +static void devcoredump_snapshot(struct xe_devcoredump *coredump) +{ + struct xe_devcoredump_snapshot *ss = &coredump->snapshot; + + lockdep_assert_held(&coredump->lock); + ss->snapshot_time = ktime_get_real(); + ss->boot_time = ktime_get_boottime(); +} + +/** + * xe_devcoredump - Take the required snapshots and initialize coredump device. + * @e: The faulty xe_engine, where the issue was detected. + * + * This function should be called at the crash time. It is skipped if we still + * have the core dump device available with the information of the 'first' + * snapshot. + */ +void xe_devcoredump(struct xe_engine *e) +{ + struct xe_device *xe = gt_to_xe(e->gt); + struct xe_devcoredump *coredump = &xe->devcoredump; + + mutex_lock(&coredump->lock); + if (coredump->faulty_engine) { + drm_dbg(&xe->drm, "Multiple hangs are occuring, but only the first snapshot was taken\n"); + mutex_unlock(&coredump->lock); + return; + } + coredump->faulty_engine = e; + devcoredump_snapshot(coredump); + mutex_unlock(&coredump->lock); + + drm_info(&xe->drm, "Xe device coredump has been created\n"); + drm_info(&xe->drm, "Check your /sys/class/drm/card/device/devcoredump/data\n"); + + dev_coredumpm(xe->drm.dev, THIS_MODULE, coredump, 0, GFP_KERNEL, + xe_devcoredump_read, xe_devcoredump_free); +} + +/** + * xe_devcoredump_init - Initialize xe_devcoredump. + * @xe: Xe device. + * + * This function should be called at the probe so the mutex lock can be + * initialized. + */ +void xe_devcoredump_init(struct xe_device *xe) +{ + struct xe_devcoredump *coredump = &xe->devcoredump; + + mutex_init(&coredump->lock); +} diff --git a/drivers/gpu/drm/xe/xe_devcoredump.h b/drivers/gpu/drm/xe/xe_devcoredump.h new file mode 100644 index 000000000000..30941d2e554b --- /dev/null +++ b/drivers/gpu/drm/xe/xe_devcoredump.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2023 Intel Corporation + */ + +#ifndef _XE_DEVCOREDUMP_H_ +#define _XE_DEVCOREDUMP_H_ + +struct xe_device; +struct xe_engine; + +void xe_devcoredump_init(struct xe_device *xe); + +#ifdef CONFIG_DEV_COREDUMP +void xe_devcoredump(struct xe_engine *e); +#else +static inline void xe_devcoredump(struct xe_engine *e) +{ +} +#endif + +#endif diff --git a/drivers/gpu/drm/xe/xe_devcoredump_types.h b/drivers/gpu/drm/xe/xe_devcoredump_types.h new file mode 100644 index 000000000000..3f395fa9104e --- /dev/null +++ b/drivers/gpu/drm/xe/xe_devcoredump_types.h @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2023 Intel Corporation + */ + +#ifndef _XE_DEVCOREDUMP_TYPES_H_ +#define _XE_DEVCOREDUMP_TYPES_H_ + +#include +#include + +struct xe_device; + +/** + * struct xe_devcoredump_snapshot - Crash snapshot + * + * This struct contains all the useful information quickly captured at the time + * of the crash. So, any subsequent reads of the coredump points to a data that + * shows the state of the GPU of when the issue has happened. + */ +struct xe_devcoredump_snapshot { + /** @snapshot_time: Time of this capture. */ + ktime_t snapshot_time; + /** @boot_time: Relative boot time so the uptime can be calculated. */ + ktime_t boot_time; +}; + +/** + * struct xe_devcoredump - Xe devcoredump main structure + * + * This struct represents the live and active dev_coredump node. + * It is created/populated at the time of a crash/error. Then it + * is read later when user access the device coredump data file + * for reading the information. + */ +struct xe_devcoredump { + /** @xe: Xe device. */ + struct xe_device *xe; + /** @falty_engine: Engine where the crash/error happened. */ + struct xe_engine *faulty_engine; + /** @lock: Protects data from races between capture and read out. */ + struct mutex lock; + /** @snapshot: Snapshot is captured at time of the first crash */ + struct xe_devcoredump_snapshot snapshot; +}; + +#endif diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h index 1cb404e48aaa..2a0995824692 100644 --- a/drivers/gpu/drm/xe/xe_device_types.h +++ b/drivers/gpu/drm/xe/xe_device_types.h @@ -12,6 +12,7 @@ #include #include +#include "xe_devcoredump_types.h" #include "xe_gt_types.h" #include "xe_platform_types.h" #include "xe_step_types.h" @@ -55,6 +56,9 @@ struct xe_device { /** @drm: drm device */ struct drm_device drm; + /** @devcoredump: device coredump */ + struct xe_devcoredump devcoredump; + /** @info: device info */ struct intel_device_info { /** @graphics_name: graphics IP name */ diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c index e857013070b9..231fb4145297 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.c +++ b/drivers/gpu/drm/xe/xe_guc_submit.c @@ -14,6 +14,7 @@ #include #include "regs/xe_lrc_layout.h" +#include "xe_devcoredump.h" #include "xe_device.h" #include "xe_engine.h" #include "xe_force_wake.h" @@ -800,6 +801,7 @@ guc_engine_timedout_job(struct drm_sched_job *drm_job) drm_warn(&xe->drm, "Timedout job: seqno=%u, guc_id=%d, flags=0x%lx", xe_sched_job_seqno(job), e->guc->id, e->flags); simple_error_capture(e); + xe_devcoredump(e); } else { drm_dbg(&xe->drm, "Timedout signaled job: seqno=%u, guc_id=%d, flags=0x%lx", xe_sched_job_seqno(job), e->guc->id, e->flags); diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c index e512e8b69831..1d496210b580 100644 --- a/drivers/gpu/drm/xe/xe_pci.c +++ b/drivers/gpu/drm/xe/xe_pci.c @@ -16,6 +16,7 @@ #include "regs/xe_regs.h" #include "regs/xe_gt_regs.h" +#include "xe_devcoredump.h" #include "xe_device.h" #include "xe_display.h" #include "xe_drv.h" @@ -657,6 +658,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) return err; } + xe_devcoredump_init(xe); xe_pm_runtime_init(xe); return 0; From patchwork Wed Apr 26 20:57:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224938 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 AD2EDC77B7C for ; Wed, 26 Apr 2023 20:57:40 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AF25910E33B; Wed, 26 Apr 2023 20:57:36 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1BF6110E571; Wed, 26 Apr 2023 20:57:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542654; x=1714078654; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=FuE1CQRzl7ekRzQhJ29y2W1GcwGdyL/Si0JfGIgZ/K4=; b=gZnQQg3GvtprKzN5fzsge2Oq+QG56lSFEhLbnNnU2WedZpLWHau5KUcF 1Fo/1BbiHqxAeVoLf3rQoAgPO2+zp8Hij9wpiKa6QEDyqWx8UiO9pqFS/ ZNyTIa6Uz94/EHqJuhXd8L9ZrZIHe4NPtQE3Yfj675fglvm8GVYUHfSmL dXRwr4CnKJ/j2qGe2dwi1co8L5VaFWvFdQe8oE4QkuFzsE2Qvu4zhTl58 JB4z8UQi7XUCnZwNHNmGcEsVfj33IFHNLNMubH5sa8oDklyhywOBM9fMN pvYLrG3dyhsawSr4R4QcHbjbBMl8HEO74oOl8J58JTUr0XdNXpm30c4/U Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="375203521" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="375203521" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="688105005" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="688105005" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 26 Apr 2023 13:57:32 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:31 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:31 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.45) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jLPZ6gLInC+jDiZygq85blaSvmkR4tFSoVDwzixNsemDkPhY/4fg9I7nQLaWV03YLSXXe7c3WZYTv8pudfLQrVOKzqScBn/4EFc1gfi+VCW6SDZpCJp1N+23Dnd1fQLDsiZyZYvJQRxTAbAClaGoiNYRVNiWtlQOeC8QqLJUBGNvboUIcsbVk7xluH5ToPLNWbXc13iNvNTBtny6bxENcYbl8v9aw0cUfq8MIS0UWK61xcw4AbmrOmg15Z6hE5sNry3l43/O85JUzd7S/fJ1G+70KMW0bK/ZSnrD6xkHu8H2k8Y+4ieMzmSbByUGnkgj2TLtIRM/9YPfWwx5Tbv7lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dlWCYEAUPAi/XhGddmgjvW8ZMwpz7GwYGArdZqMF1j8=; b=KwO+QbsR81n7q1XOqMBRRl3MyhIYPvLcc0KyWVSPaqH80VzVRJDVGCGzY0cLbFRLJYuLx1z82JMrSZeLAWa8XFv39wVNu9VGmFEwfHbLkG8/nmmd3W7vgtrfjrmDNqVdalBSI0ldnx4Xk0cpuT7n/qskxnRo6dei/xaGoOmjlJBkRKgJHn0grjc5zjBrHHsVo0+mM6UynrynExWGz83GQUekQnBQmvz3SEoCkBxnODos+jncGYQeHmYxFw+kCTwss8kKEN1J67++UCP+BmC+cPJ/4KsDqsIcvSAb/nDAT0Nu6LnENKW9PQHeos1JVv7rggT2hk7zi+/tWe4nkAzdVw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by MN0PR11MB6182.namprd11.prod.outlook.com (2603:10b6:208:3c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21; Wed, 26 Apr 2023 20:57:30 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:30 +0000 From: Rodrigo Vivi To: Subject: [PATCH 03/14] drm/xe: Do not take any action if our device was removed. Date: Wed, 26 Apr 2023 16:57:02 -0400 Message-ID: <20230426205713.512695-4-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: SJ0PR03CA0161.namprd03.prod.outlook.com (2603:10b6:a03:338::16) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|MN0PR11MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: f5d1c93c-bfce-4c3f-812b-08db4698d96c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: t98aBWJzr+/oujpJN2nhhDfLwv9Mm2If78zPy8dZ1UFHqHb4EYDR9Tnl3z+aS9w0ueW3PxgcKIeDrqsgaMSeg4DEZhe801pJdHlg7QWyh5zMpWXrDTrpyBLfLt4rXxVU1JzwwYf9AvpFUP5ekTvLYA1033RkcuSYBe/P+f2ubHW8pnAy1FKVFJBCEMgrpWfEtvyLdmKissG2Y41DgiNswz/nz67JTEuYJ3BBGemEf3H3NeLCl9a1VGClyuNhppKav1CDt6Vu+0rH0pQXyPiouoYecZBp99Gnmu7YIZTdX8T5dG4CgDIVXVwC2IbaJ/8UORKeb2AdO5dWTFSagd6xqeSUHVNxbTrDszNVRBOF15I5MlluHt6KMmDZHBp8GP1mxFeusmzTZ/X2RZuvYW/SMs0Xwm6E01rWG8bDtoFTct9O6WI1PkxpgOy+ifFtkANF9ctPmjYyeqwSFLhvN0xxZfBV+Va2w84BhH5jbNbGt62ul3KPFb6t6gdjINShEZZmhYU+aQPvmCpxQ+QlYfD3R0miBNbSWqeRTNSERboDwzJE5c9jzt65BQWjNca1ZpeM X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(39860400002)(366004)(136003)(376002)(396003)(451199021)(2616005)(83380400001)(186003)(1076003)(26005)(6506007)(6512007)(316002)(6916009)(66476007)(86362001)(4326008)(450100002)(38100700002)(82960400001)(66556008)(66946007)(2906002)(44832011)(41300700001)(107886003)(478600001)(5660300002)(36756003)(8676002)(6486002)(6666004)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: L9GY9+OpYZH0ilp+WieW0b/ZnOBH90a2Fk0w6/dCYQU0/K81uB+7p4wXcewVB5Usbv+BY2bLID0hyTr7IX+WwmCt7JgLAYZ6h9r9IfXeNxBlRLtpfmoNQ1BRAx3LGl1eBwPwL06PP5A1BLDleM7ElFamiwEaHq4bx2ydmYas5HtzVCxT6ByY/xcpm1jgEkdbDb/Zj/PKw4vC0DrvFZ8HJelrLYfU2thII+2L1LlsIKlJti7rVYJcb3oe9JnLX7nkkhTbyPT6JVsjcUPT6CoI9Ao+sRHEPHh+qysaGSDMBCfuavVdXr3oHBnEwE38LgcPahgLOEoknslW1GFGPgs8eHmf4AZgShmmwj5nDY7IN7Iq7FwsYFaELTfp7tvFMXoe+Xfte7OrZceUTd38iI/0pXZeSQxbBJyceksCIsYrpfPcWp7v/hXVmncPaxRwG8RtRBh5F10NRfmTXMj4vrfUByMe9CYs1NMQhFM5rtrq5R7I9uMwZ9VtEKy4EImqXLJbCMMsQojsxSTo3Dv9p0P9CQCEhl0oG//fbUD76ql9AO9fgpihtcNCJS40Cm+9oPqK0N+AZIezcwLaftRJTCgqJho1jG5B2FFcN+zdCIqg0y2WmnuO5mZyS5sZUSXM1yD63DKidPTv3vJkQ1JvGCTQc+FkubvuALtBd2uD/033M42qX8SniQ997eYMbkkGeSWJTKnc7hAPU0VSoC9tMyz68uOoryJLC3oLjM5iLbCQV52Ef9TzGCuKzVl/aM2HhRW43Uyrp+wnrDI2fOLcIqaWLLaCIHlw64Ent9b4bJcJH+cTja9+Ylb8V8Gkk0NzY9EPPGkMx/Tp3RA5tDYQ3wfwdE5qHEfU+ifz0RQBndhwRkYm/LtkK3iZ8GjmRO6F18fKuWHtABRPfemi7g4Im+Ry8e5eu3Gx2LFSj0ua+8pzgKFKzou94jlPYq9tWfxhMB9FzKLtVabosrHC88MXEj8/XksMhpIoGihqFoZwQJFQtaiSQ+FkS0Vb8hXwLOYQ8et7pPDHrC7m2QJWLpDLhZihyynWNB0YPcBHVYKy4EAFhkJIULL/JZDO+5t7p47qJW6/cpsLVrRuHCZRnYN4rhU1yBtNKS5BTjSbuuhI6EvsxhwVh2VuF0WxhLO/F1QgsYl8G1wAGczZWXCF+hRaeXXtMtqu2HJ3qmRHv39moiVZGAs0xYnSM82017Ir2q9bwU+InOluFLh4PjSquvKhXO3BK6kANLbPe5eQ0214F4p+tfShUWZFD0i9rDdxk3SvfM1m6xg51OhsHPDII8Q7A9keUyEuBr1IDJm+SxCIWCpqTSVMkqr+J7sjKMtxZgONTa58URED0B4RXFSOqWfY16UwCNOAOkdTxFOYJrdvmP+KX3Drwb7Pu/BsyceQ+gUPtBljFIzAmDPL8J6NoylCiYcu5cZraDbJSMYafqFENccqUIvbBcN9UigilmHghsUayTaxJWaei2m7cO1M1VryfJDUJEnWeAn/etrAltroY85eg9aziwPMJVqQ94dwu1fLhF2n3N5fvacTWez8ySsQdDXpvMHFhGwfUrfOpTiYaUUETNNwpZQ4OYbS7ujx1iknz2xYJNEQr+dKQodxnwvjD4FX4Q== X-MS-Exchange-CrossTenant-Network-Message-Id: f5d1c93c-bfce-4c3f-812b-08db4698d96c X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:30.3054 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: t4+4+0jMy96fxzgT6Cpxr0/eth5uV8COpqDq80njM5H7clyU5uztEuVE64iQKodKl9yJzIAb2aQVqB2k5zPaPg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6182 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Unfortunately devcoredump infrastructure does not provide and interface for us to force the device removal upon the pci_remove time of our device. The devcoredump is linked at the device level, so when in use it will prevent the module removal, but it doesn't prevent the call of the pci_remove callback. This callback cannot fail anyway and we end up clearing and freeing the entire pci device. Hence, after we removed the pci device, we shouldn't allow any read or free operations to avoid segmentation fault. Signed-off-by: Rodrigo Vivi Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_devcoredump.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c index d9531183f03a..a08929c01b75 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump.c +++ b/drivers/gpu/drm/xe/xe_devcoredump.c @@ -42,6 +42,11 @@ * hang capture. */ +static struct xe_device *coredump_to_xe(const struct xe_devcoredump *coredump) +{ + return container_of(coredump, struct xe_device, devcoredump); +} + static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, size_t count, void *data, size_t datalen) { @@ -51,6 +56,10 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, struct drm_print_iterator iter; struct timespec64 ts; + /* Our device is gone already... */ + if (!data || !coredump_to_xe(coredump)) + return -ENODEV; + iter.data = buffer; iter.offset = 0; iter.start = offset; @@ -80,12 +89,16 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, static void xe_devcoredump_free(void *data) { struct xe_devcoredump *coredump = data; - struct xe_device *xe = container_of(coredump, struct xe_device, - devcoredump); + + /* Our device is gone. Nothing to do... */ + if (!data || !coredump_to_xe(coredump)) + return; + mutex_lock(&coredump->lock); coredump->faulty_engine = NULL; - drm_info(&xe->drm, "Xe device coredump has been deleted.\n"); + drm_info(&coredump_to_xe(coredump)->drm, + "Xe device coredump has been deleted.\n"); mutex_unlock(&coredump->lock); } From patchwork Wed Apr 26 20:57:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224939 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 B4813C77B7C for ; Wed, 26 Apr 2023 20:57:48 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1F60310E9D9; Wed, 26 Apr 2023 20:57:48 +0000 (UTC) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5CC1C10E143; Wed, 26 Apr 2023 20:57:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542657; x=1714078657; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=PKUPodSWJm6zFdDK2CSJ3Idoh2Hab8QKsC+Rx6cwX9M=; b=ldvdeEeNA6I+YMW8EdReSspvUGeWxReYY1AF02TubdYK7ccoXBNl2pD5 FUM5KsJWSZU2oPuYGGFfHRGzmCBUg+Hp1K+C+7F1J2g+KgtQf2Hel3qzt NrTd1O4Uk3cBDLttqre0FDP8K1HRFMwya+IMRQG/Z0VHO+b6YAfxdLefI mtXpMNnwUDtZQq9yAY6OuzUae394FGoXdfli1/HPqSp+EqF2stwL3BqDk ALfCvGfCFFZ76Obl5H+u5ufAtLfj1c0Vng6RfXPES75/jhXeTbOosoCFx 5HAVjCPaft09io4uB4ksQxyf0sTPD+CpiuS2cKZhXXrQ1EUxZbJdGv7ig g==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="410249461" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="410249461" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="868435110" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="868435110" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga005.jf.intel.com with ESMTP; 26 Apr 2023 13:57:36 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:36 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:36 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.175) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VccsY5DIqZKYjv7ibGPJj+mCaDhIAhIO0H1KSKcbmZKf6pKrN7MdC+4ctFT6cwtyKyNEQn7JG0DdmuzLAsfTGLVahKSnsgWOHd8LMFuBghsvRD1Iu66GiudsPq+Wtvd6EXcfZ185a1QFZNSYPKb4sqTKHFDwX4FIB6SA8wq1AaJLPdvVKV7koZ3WNFI7zISy/McXnyZEYT2CASc+K2zwGgicp7O/QtOrFf5Oyht2I6o5nZmlWjsxJPIlaUh54eIflmOilRIoR+IMpcJQNCGpsPxbHVXNK2aQCvYvkpy+xh6nea2f1AuR9g8EfHYplodaKCK0puA2X8ppGqICxRp0oA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KkQI9kylSSJRgpgSTvhUcpis4mtOqMyequN69k264Wk=; b=G573pewJ1Ayj0Ie8FsALAEwlWlglGZ66krtn0YdCkti321r89OHq4XWa43LXVAhl1GGQD58/BBVx5UOfvfdoZ4Mi/1I//UVpiLOt38qPJjOosgkJdrQ2NSQ6TdT10mH2XFRwmEoE8miCGxva+GzCDhqt6PZbVr/y//vPFa01B55Zawz2CHSJ29o0YzCYcD0pFkK2x1Lvde7VO1si0EqapV6lYYJuo20neTUdZkqHTiE8eut3P92ImncsV/0yDxcouwirp9FVVocH0hp3gMmtQOdUiyXi+ZeQEp2dNvBazcUEU8KJw/i9LJ1wr6FWLwRNcnWpZlZFN7cXO2PqTcYUvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by MN0PR11MB6182.namprd11.prod.outlook.com (2603:10b6:208:3c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21; Wed, 26 Apr 2023 20:57:34 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:34 +0000 From: Rodrigo Vivi To: Subject: [PATCH 04/14] drm/xe: Extract non mapped regions out of GuC CTB into its own struct. Date: Wed, 26 Apr 2023 16:57:03 -0400 Message-ID: <20230426205713.512695-5-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: SJ0PR05CA0177.namprd05.prod.outlook.com (2603:10b6:a03:339::32) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|MN0PR11MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: 13a13a6e-3760-4866-368e-08db4698dbc5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mZ7TFysjinr4GfAGugkzgpUaYMM6OgynbaW+5avKiA5QsgoYnWe9cosE/glXHS3YuH0ETonJ5ya42a6Sg3aiI+RDMKFDveeRB1W/r4BGYMATznRSaj15R/xnFCyyEDcDRivnd38pQWTq++3HjdRrcznkynUkPV8xH6Q6KFqJXySTm7bItiBM2dPH3+1GdoJwwAS0lso604CVB1KbhMF97ZS4XMGm+OrsisTHvj8B2FKln1H6ahLIpJDz5GeTCA5QUKRzZyqXvCSU3Ns7EPOZcnvc4i/+hSfDo5ybyX/xFhhiD0oUaiBQ843TNhnYEn25FYVCsFbi0/iL5GrjnLwDgOVHkdyn+TcD/xO1cueRlf0ycGlTotvQFo68fxgkNbEC/WjbxuKNA0IcVpMcoIgsn7LcC3A8NxcJ6E5Jz/ELadD0CIvt6vBRVMpKhljYaz0fDwjWT40cA+BWnSproyWBb3IYWXI6T4K+X1FzCjaeqgj6l2lMxyWpsyxEyiaDMLRq5EplICFxSgojl7y9UGQAu36TEasE2wMIW9xo+Y55cEOP4kxHutHdQ/EuQhIzxm0N X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(39860400002)(366004)(136003)(376002)(396003)(451199021)(2616005)(83380400001)(186003)(1076003)(26005)(6506007)(6512007)(316002)(6916009)(66476007)(86362001)(4326008)(450100002)(38100700002)(82960400001)(66556008)(66946007)(2906002)(30864003)(44832011)(41300700001)(107886003)(478600001)(5660300002)(36756003)(8676002)(6486002)(6666004)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: N4kO88fk53tn1/8FVx8M0Vv4JjgY5ePE7hzdujAcsUyuEzbkDMxKnXDoxC5Be4/RLMTiYunSxXTiDTT2ETjUoyN3ap4uyAhOuY+2IudEA4Q2hFnGhB3lnf3BoeL68Tby+MqDo/J101UvQFLaZJ3m8HtPFbfVJXQIQaN8KZvkesyBJkrYkIh0wxgPy1QvR0RixiwA7L+W7MEM1qfIRqloWuMGrFFfy7zUB7yNSpFNC/3utGqHUdMcaJcJ8fMvBcJWC0sJP4q3u3GmQMQtZAm6OoEBPAcpIyeyAZoYYOoSKj4Fx5zCZ46WqR27rS7FdAjaSFagBNF4jJD0hLINgP/zoNtkt5bCbdLCdvO+bd5kRgAfRGB8wcgsvs6BOGQXZsOaljO/8/S5aPVYpSkTcBoFxk9oaFbVMf0ZqOGAovDbZNVaUuiXk+xkw4fYyZHW0O/Z1L+wJVioaYkl98lHA4y7zJUXGzB++UNQVmtpOfaMUab+k+FuFudea/VeRoiVz62Tx9gZPxWEvFfWiMs5nA504p0mP1D+KgLCJdjyq+memaJGgUpKRdA1DAueqJHbAVeT9nBfqPJVLdztSfyxMv7g+HxPqpMF295ARMLGmISYY8VuHW4T08dcgaAXpNs96m3viSIwPvIX0hGEiDs0TI1lk+GXKlLc0NgZ/ASHXgutj8GdvzYBlq0k7vxvMPNMZ7VO0c+RyhBtClbY3QmOsVjP9J3YjQUJH0FT7DB4aTOJvhdpJARhOEIbbrVnakM/3PwbVUI8o+IF+tV5GXImrha0s8SlLWrsG2FT5w34ypWUBlfeQwVt0lbdM2AshDmjEKlgL8Qfih0rv38FIE92w1HA+BRzcQRbC2cJ+FS6vcBozXcVcAAapAKagRlmLWZ/U5i0UzjnSCZfY5ZVA2ykUE7TCZPMbE2sqFE5EQ/5fU57IoOMmXQbLkHJ8bEEVd6TnfDNZa0VJh4d++XULR557Ig8fUBwBIp3Env7YJsvJ4ZQqAn7a01KTGUnayGz78i26tma0Jr9uBArEIYTmuJG8NMSgQWDmkYxG5iZDNkTi7zexCqhvwQjD2j9og+x2u2OFzY3o2LDYLM9Eg2ftLakUFNs2oFnW5ruILqtWOOgDcxJOSBIT5mSx9V8JeD7CLwmyHeJLjqA9LK8qqx8fXB6aewj/WCToV1/obBf+1z/7VKOY8xFvX9YvOvgfpty2wf+Fi3ouCHHEVRvjtLDEdsX1PcQqUS6guOQ5oro+5gMFzHzcGmGMuU3+GPFatGJaHB5ft2+stFBEBluZSY/c4BK+yGJ8uO5ToqNysng2o8NOYPF7j6WktqeLbw0F/a0ZwXGH48b4SMakvScsqZBuPnudML8iUuHGN8iBJhfyGu7hTEodwSE0I20EnZvga6bnGP3Yxmhuy/Co+8K0e5ufVO8ClPCwQuxgrlLKqtDHnQJdkaL86D5uw8/mZbKpQB+VvRvADGuoDc+rXNhYjkbSp3VcqNcoxcwDdMddq9IJp+cOO63c04Fv5Dl9Up4J/vZ55mL6IgURzVAC3UsKNkhqs3yymxEvcYfXAU2QrxSUaCj0kY6EaqwkAQjaowaWF712XRvSjONWjvC1aSYiBwMJjOI7h7ang== X-MS-Exchange-CrossTenant-Network-Message-Id: 13a13a6e-3760-4866-368e-08db4698dbc5 X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:34.1800 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xFdas2ARE6YRffRfONS57sM1aUWO86wI15r5VCBuRYOyztPxHEPJ2Y57T6mIZP+SpiEETqXAu3aFECE7NAP2sQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6182 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" No functional change here. The goal is to have a clear split between the mapped portions of the CTB and the static information, so we can easily capture snapshots that will be used for later read out with the devcoredump infrastructure. Signed-off-by: Rodrigo Vivi Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_guc_ct.c | 155 ++++++++++++++------------- drivers/gpu/drm/xe/xe_guc_ct_types.h | 20 ++-- 2 files changed, 95 insertions(+), 80 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c index 9055ff133a7c..e16e5fe37ed4 100644 --- a/drivers/gpu/drm/xe/xe_guc_ct.c +++ b/drivers/gpu/drm/xe/xe_guc_ct.c @@ -172,13 +172,14 @@ int xe_guc_ct_init(struct xe_guc_ct *ct) static void guc_ct_ctb_h2g_init(struct xe_device *xe, struct guc_ctb *h2g, struct iosys_map *map) { - h2g->size = CTB_H2G_BUFFER_SIZE / sizeof(u32); - h2g->resv_space = 0; - h2g->tail = 0; - h2g->head = 0; - h2g->space = CIRC_SPACE(h2g->tail, h2g->head, h2g->size) - - h2g->resv_space; - h2g->broken = false; + h2g->info.size = CTB_H2G_BUFFER_SIZE / sizeof(u32); + h2g->info.resv_space = 0; + h2g->info.tail = 0; + h2g->info.head = 0; + h2g->info.space = CIRC_SPACE(h2g->info.tail, h2g->info.head, + h2g->info.size) - + h2g->info.resv_space; + h2g->info.broken = false; h2g->desc = *map; xe_map_memset(xe, &h2g->desc, 0, 0, sizeof(struct guc_ct_buffer_desc)); @@ -189,13 +190,14 @@ static void guc_ct_ctb_h2g_init(struct xe_device *xe, struct guc_ctb *h2g, static void guc_ct_ctb_g2h_init(struct xe_device *xe, struct guc_ctb *g2h, struct iosys_map *map) { - g2h->size = CTB_G2H_BUFFER_SIZE / sizeof(u32); - g2h->resv_space = G2H_ROOM_BUFFER_SIZE / sizeof(u32); - g2h->head = 0; - g2h->tail = 0; - g2h->space = CIRC_SPACE(g2h->tail, g2h->head, g2h->size) - - g2h->resv_space; - g2h->broken = false; + g2h->info.size = CTB_G2H_BUFFER_SIZE / sizeof(u32); + g2h->info.resv_space = G2H_ROOM_BUFFER_SIZE / sizeof(u32); + g2h->info.head = 0; + g2h->info.tail = 0; + g2h->info.space = CIRC_SPACE(g2h->info.tail, g2h->info.head, + g2h->info.size) - + g2h->info.resv_space; + g2h->info.broken = false; g2h->desc = IOSYS_MAP_INIT_OFFSET(map, CTB_DESC_SIZE); xe_map_memset(xe, &g2h->desc, 0, 0, sizeof(struct guc_ct_buffer_desc)); @@ -212,7 +214,7 @@ static int guc_ct_ctb_h2g_register(struct xe_guc_ct *ct) desc_addr = xe_bo_ggtt_addr(ct->bo); ctb_addr = xe_bo_ggtt_addr(ct->bo) + CTB_DESC_SIZE * 2; - size = ct->ctbs.h2g.size * sizeof(u32); + size = ct->ctbs.h2g.info.size * sizeof(u32); err = xe_guc_self_cfg64(guc, GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR_KEY, @@ -240,7 +242,7 @@ static int guc_ct_ctb_g2h_register(struct xe_guc_ct *ct) desc_addr = xe_bo_ggtt_addr(ct->bo) + CTB_DESC_SIZE; ctb_addr = xe_bo_ggtt_addr(ct->bo) + CTB_DESC_SIZE * 2 + CTB_H2G_BUFFER_SIZE; - size = ct->ctbs.g2h.size * sizeof(u32); + size = ct->ctbs.g2h.info.size * sizeof(u32); err = xe_guc_self_cfg64(guc, GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR_KEY, @@ -329,11 +331,12 @@ static bool h2g_has_room(struct xe_guc_ct *ct, u32 cmd_len) lockdep_assert_held(&ct->lock); - if (cmd_len > h2g->space) { - h2g->head = desc_read(ct_to_xe(ct), h2g, head); - h2g->space = CIRC_SPACE(h2g->tail, h2g->head, h2g->size) - - h2g->resv_space; - if (cmd_len > h2g->space) + if (cmd_len > h2g->info.space) { + h2g->info.head = desc_read(ct_to_xe(ct), h2g, head); + h2g->info.space = CIRC_SPACE(h2g->info.tail, h2g->info.head, + h2g->info.size) - + h2g->info.resv_space; + if (cmd_len > h2g->info.space) return false; } @@ -344,7 +347,7 @@ static bool g2h_has_room(struct xe_guc_ct *ct, u32 g2h_len) { lockdep_assert_held(&ct->lock); - return ct->ctbs.g2h.space > g2h_len; + return ct->ctbs.g2h.info.space > g2h_len; } static int has_room(struct xe_guc_ct *ct, u32 cmd_len, u32 g2h_len) @@ -360,16 +363,16 @@ static int has_room(struct xe_guc_ct *ct, u32 cmd_len, u32 g2h_len) static void h2g_reserve_space(struct xe_guc_ct *ct, u32 cmd_len) { lockdep_assert_held(&ct->lock); - ct->ctbs.h2g.space -= cmd_len; + ct->ctbs.h2g.info.space -= cmd_len; } static void g2h_reserve_space(struct xe_guc_ct *ct, u32 g2h_len, u32 num_g2h) { - XE_BUG_ON(g2h_len > ct->ctbs.g2h.space); + XE_BUG_ON(g2h_len > ct->ctbs.g2h.info.space); if (g2h_len) { spin_lock_irq(&ct->fast_lock); - ct->ctbs.g2h.space -= g2h_len; + ct->ctbs.g2h.info.space -= g2h_len; ct->g2h_outstanding += num_g2h; spin_unlock_irq(&ct->fast_lock); } @@ -378,10 +381,10 @@ static void g2h_reserve_space(struct xe_guc_ct *ct, u32 g2h_len, u32 num_g2h) static void __g2h_release_space(struct xe_guc_ct *ct, u32 g2h_len) { lockdep_assert_held(&ct->fast_lock); - XE_WARN_ON(ct->ctbs.g2h.space + g2h_len > - ct->ctbs.g2h.size - ct->ctbs.g2h.resv_space); + XE_WARN_ON(ct->ctbs.g2h.info.space + g2h_len > + ct->ctbs.g2h.info.size - ct->ctbs.g2h.info.resv_space); - ct->ctbs.g2h.space += g2h_len; + ct->ctbs.g2h.info.space += g2h_len; --ct->g2h_outstanding; } @@ -400,20 +403,21 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len, u32 cmd[GUC_CTB_MSG_MAX_LEN / sizeof(u32)]; u32 cmd_len = len + GUC_CTB_HDR_LEN; u32 cmd_idx = 0, i; - u32 tail = h2g->tail; + u32 tail = h2g->info.tail; struct iosys_map map = IOSYS_MAP_INIT_OFFSET(&h2g->cmds, tail * sizeof(u32)); lockdep_assert_held(&ct->lock); XE_BUG_ON(len * sizeof(u32) > GUC_CTB_MSG_MAX_LEN); - XE_BUG_ON(tail > h2g->size); + XE_BUG_ON(tail > h2g->info.size); /* Command will wrap, zero fill (NOPs), return and check credits again */ - if (tail + cmd_len > h2g->size) { - xe_map_memset(xe, &map, 0, 0, (h2g->size - tail) * sizeof(u32)); - h2g_reserve_space(ct, (h2g->size - tail)); - h2g->tail = 0; - desc_write(xe, h2g, tail, h2g->tail); + if (tail + cmd_len > h2g->info.size) { + xe_map_memset(xe, &map, 0, 0, + (h2g->info.size - tail) * sizeof(u32)); + h2g_reserve_space(ct, (h2g->info.size - tail)); + h2g->info.tail = 0; + desc_write(xe, h2g, tail, h2g->info.tail); return -EAGAIN; } @@ -445,11 +449,11 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len, xe_device_wmb(ct_to_xe(ct)); /* Update local copies */ - h2g->tail = (tail + cmd_len) % h2g->size; + h2g->info.tail = (tail + cmd_len) % h2g->info.size; h2g_reserve_space(ct, cmd_len); /* Update descriptor */ - desc_write(xe, h2g, tail, h2g->tail); + desc_write(xe, h2g, tail, h2g->info.tail); return 0; } @@ -466,7 +470,7 @@ static int __guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, XE_BUG_ON(!g2h_len && num_g2h); lockdep_assert_held(&ct->lock); - if (unlikely(ct->ctbs.h2g.broken)) { + if (unlikely(ct->ctbs.h2g.info.broken)) { ret = -EPIPE; goto out; } @@ -554,8 +558,9 @@ static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len, if (sleep_period_ms == 1024) goto broken; - trace_xe_guc_ct_h2g_flow_control(h2g->head, h2g->tail, - h2g->size, h2g->space, + trace_xe_guc_ct_h2g_flow_control(h2g->info.head, h2g->info.tail, + h2g->info.size, + h2g->info.space, len + GUC_CTB_HDR_LEN); msleep(sleep_period_ms); sleep_period_ms <<= 1; @@ -565,15 +570,16 @@ static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len, struct xe_device *xe = ct_to_xe(ct); struct guc_ctb *g2h = &ct->ctbs.g2h; - trace_xe_guc_ct_g2h_flow_control(g2h->head, + trace_xe_guc_ct_g2h_flow_control(g2h->info.head, desc_read(xe, g2h, tail), - g2h->size, g2h->space, + g2h->info.size, + g2h->info.space, g2h_fence ? GUC_CTB_HXG_MSG_MAX_LEN : g2h_len); #define g2h_avail(ct) \ - (desc_read(ct_to_xe(ct), (&ct->ctbs.g2h), tail) != ct->ctbs.g2h.head) + (desc_read(ct_to_xe(ct), (&ct->ctbs.g2h), tail) != ct->ctbs.g2h.info.head) if (!wait_event_timeout(ct->wq, !ct->g2h_outstanding || g2h_avail(ct), HZ)) goto broken; @@ -590,7 +596,7 @@ static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len, broken: drm_err(drm, "No forward process on H2G, reset required"); xe_guc_ct_print(ct, &p); - ct->ctbs.h2g.broken = true; + ct->ctbs.h2g.info.broken = true; return -EDEADLK; } @@ -656,7 +662,7 @@ static bool retry_failure(struct xe_guc_ct *ct, int ret) return false; #define ct_alive(ct) \ - (ct->enabled && !ct->ctbs.h2g.broken && !ct->ctbs.g2h.broken) + (ct->enabled && !ct->ctbs.h2g.info.broken && !ct->ctbs.g2h.info.broken) if (!wait_event_interruptible_timeout(ct->wq, ct_alive(ct), HZ * 5)) return false; #undef ct_alive @@ -821,7 +827,7 @@ static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len) drm_err(&xe->drm, "G2H channel broken on read, origin=%d, reset required\n", origin); - ct->ctbs.g2h.broken = true; + ct->ctbs.g2h.info.broken = true; return -EPROTO; } @@ -840,7 +846,7 @@ static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len) drm_err(&xe->drm, "G2H channel broken on read, type=%d, reset required\n", type); - ct->ctbs.g2h.broken = true; + ct->ctbs.g2h.info.broken = true; ret = -EOPNOTSUPP; } @@ -919,36 +925,37 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path) if (!ct->enabled) return -ENODEV; - if (g2h->broken) + if (g2h->info.broken) return -EPIPE; /* Calculate DW available to read */ tail = desc_read(xe, g2h, tail); - avail = tail - g2h->head; + avail = tail - g2h->info.head; if (unlikely(avail == 0)) return 0; if (avail < 0) - avail += g2h->size; + avail += g2h->info.size; /* Read header */ - xe_map_memcpy_from(xe, msg, &g2h->cmds, sizeof(u32) * g2h->head, sizeof(u32)); + xe_map_memcpy_from(xe, msg, &g2h->cmds, sizeof(u32) * g2h->info.head, + sizeof(u32)); len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN; if (len > avail) { drm_err(&xe->drm, "G2H channel broken on read, avail=%d, len=%d, reset required\n", avail, len); - g2h->broken = true; + g2h->info.broken = true; return -EPROTO; } - head = (g2h->head + 1) % g2h->size; + head = (g2h->info.head + 1) % g2h->info.size; avail = len - 1; /* Read G2H message */ - if (avail + head > g2h->size) { - u32 avail_til_wrap = g2h->size - head; + if (avail + head > g2h->info.size) { + u32 avail_til_wrap = g2h->info.size - head; xe_map_memcpy_from(xe, msg + 1, &g2h->cmds, sizeof(u32) * head, @@ -983,8 +990,8 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path) } /* Update local / descriptor header */ - g2h->head = (head + avail) % g2h->size; - desc_write(xe, g2h, head, g2h->head); + g2h->info.head = (head + avail) % g2h->info.size; + desc_write(xe, g2h, head, g2h->info.head); return len; } @@ -1093,12 +1100,12 @@ static void guc_ct_ctb_print(struct xe_device *xe, struct guc_ctb *ctb, { u32 head, tail; - drm_printf(p, "\tsize: %d\n", ctb->size); - drm_printf(p, "\tresv_space: %d\n", ctb->resv_space); - drm_printf(p, "\thead: %d\n", ctb->head); - drm_printf(p, "\ttail: %d\n", ctb->tail); - drm_printf(p, "\tspace: %d\n", ctb->space); - drm_printf(p, "\tbroken: %d\n", ctb->broken); + drm_printf(p, "\tsize: %d\n", ctb->info.size); + drm_printf(p, "\tresv_space: %d\n", ctb->info.resv_space); + drm_printf(p, "\thead: %d\n", ctb->info.head); + drm_printf(p, "\ttail: %d\n", ctb->info.tail); + drm_printf(p, "\tspace: %d\n", ctb->info.space); + drm_printf(p, "\tbroken: %d\n", ctb->info.broken); head = desc_read(xe, ctb, head); tail = desc_read(xe, ctb, tail); @@ -1114,7 +1121,7 @@ static void guc_ct_ctb_print(struct xe_device *xe, struct guc_ctb *ctb, drm_printf(p, "\tcmd[%d]: 0x%08x\n", head, xe_map_rd(xe, &map, 0, u32)); ++head; - if (head == ctb->size) { + if (head == ctb->info.size) { head = 0; map = ctb->cmds; } else { @@ -1168,12 +1175,12 @@ void xe_guc_ct_selftest(struct xe_guc_ct *ct, struct drm_printer *p) if (!ret) { xe_guc_ct_irq_handler(ct); msleep(200); - if (g2h->space != - CIRC_SPACE(0, 0, g2h->size) - g2h->resv_space) { + if (g2h->info.space != + CIRC_SPACE(0, 0, g2h->info.size) - g2h->info.resv_space) { drm_printf(p, "Mismatch on space %d, %d\n", - g2h->space, - CIRC_SPACE(0, 0, g2h->size) - - g2h->resv_space); + g2h->info.space, + CIRC_SPACE(0, 0, g2h->info.size) - + g2h->info.resv_space); ret = -EIO; } if (ct->g2h_outstanding) { @@ -1185,12 +1192,12 @@ void xe_guc_ct_selftest(struct xe_guc_ct *ct, struct drm_printer *p) /* Check failure path for blocking CTs too */ xe_guc_ct_send_block(ct, bad_action, ARRAY_SIZE(bad_action)); - if (g2h->space != - CIRC_SPACE(0, 0, g2h->size) - g2h->resv_space) { + if (g2h->info.space != + CIRC_SPACE(0, 0, g2h->info.size) - g2h->info.resv_space) { drm_printf(p, "Mismatch on space %d, %d\n", - g2h->space, - CIRC_SPACE(0, 0, g2h->size) - - g2h->resv_space); + g2h->info.space, + CIRC_SPACE(0, 0, g2h->info.size) - + g2h->info.resv_space); ret = -EIO; } if (ct->g2h_outstanding) { diff --git a/drivers/gpu/drm/xe/xe_guc_ct_types.h b/drivers/gpu/drm/xe/xe_guc_ct_types.h index fd27dacf00c5..64e3dd14d4b2 100644 --- a/drivers/gpu/drm/xe/xe_guc_ct_types.h +++ b/drivers/gpu/drm/xe/xe_guc_ct_types.h @@ -19,13 +19,9 @@ struct xe_bo; /** - * struct guc_ctb - GuC command transport buffer (CTB) + * struct guc_ctb_info - GuC command transport buffer (CTB) info */ -struct guc_ctb { - /** @desc: dma buffer map for CTB descriptor */ - struct iosys_map desc; - /** @cmds: dma buffer map for CTB commands */ - struct iosys_map cmds; +struct guc_ctb_info { /** @size: size of CTB commands (DW) */ u32 size; /** @resv_space: reserved space of CTB commands (DW) */ @@ -40,6 +36,18 @@ struct guc_ctb { bool broken; }; +/** + * struct guc_ctb - GuC command transport buffer (CTB) + */ +struct guc_ctb { + /** @desc: dma buffer map for CTB descriptor */ + struct iosys_map desc; + /** @cmds: dma buffer map for CTB commands */ + struct iosys_map cmds; + /** @info: CTB info */ + struct guc_ctb_info info; +}; + /** * struct xe_guc_ct - GuC command transport (CT) layer * From patchwork Wed Apr 26 20:57:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224940 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 ACCEAC7618E for ; Wed, 26 Apr 2023 20:57:50 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3E34610E579; Wed, 26 Apr 2023 20:57:48 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD47F10E1FD; Wed, 26 Apr 2023 20:57:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542663; x=1714078663; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=RT2pcV4mE66+r+8OkHSQOk9Iph/smSRTVpkM9otbiT0=; b=KhFTrY94Iaulis4zEQbGrXpku1jKp/UQG9ufEfujqVe6Bx8V6GW/5+nz 6tyuZYe2iLRZ07RacISKSiGGWVnmb8NICE4YbT+FffZ0UI+yBr4AMXTza Ppb5gHtm19TnjudYLpsO+vLLX4NNoDvKANbZxAwgGJ2LD1rDfnQ5rz7Cq aAazL2mSfTwSSYBiXeoOXyZJcds8xdFYTUmG80ahAk9k59UVkyiISPzOZ qEeiQKNSJDG+85YqkzMHF6x5QRzNA3w6L2E1zdTm0M75+THcYNJnDStVm EbYcGe5xGxfG9GnkxZYxgtO9htVkKFPlfvYBlTr/dC3l7cZQZzSvAGRIU Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="375203549" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="375203549" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="688105075" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="688105075" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 26 Apr 2023 13:57:42 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:42 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:41 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:41 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.40) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jBLgZMLxxsfHvB84oowKWiyqlhIRaXP6oOhyyCih1IWeIrr/jjZwMzhgq6G600+EwxOuewc5ksdntlE3aMpm9bzMSpjzyBIHFUEX/phpipOtiGsmHis+yiLLRYeOp++ivKntPdcvsi6BwPaYE0jjtdyX8oMQT4DCi3341QOApd6GOoAMZjoxccyn3hSHgUMXxQWxqGWvSeXdU/O4oZTJj2ossVAsPqxmsgghRKsxRq/7vQwKmvxnsinbqMCWIHbBifyZdhzPL0Y+z1x8ax7BG60c9OSN2r13V9zoXY2+Rw5qzsiukiyczDVefXUYqELvD/AG9hidaKCEHSDAWc4WDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UYXK7wSloNUM/a3bkwS2xGCZ63PdE0yyWThkEK5cwaI=; b=ni2w4MbQ6IpxgqsB3VX2lMAvCFDyQCXK/sYf07xw6FkK/h5VhAHS9w5d4NeJm8SDqRYz5OiXCGy0TSdFSlI2zcsG7OmAc3RbXZer9qe0y1uiJTjkfbhDfPBWfPxbNaPupNslTdyKfMKbJYwSsvxigHUX2u6rS3qfNnC4JMgDMWYyMUnM4CsKBrswR/gSfGIhqWcyLIIOxfJqeFzX7lw6/sIo/2r2dTycBw8qZpwhhyketff6tn2SW35ZthBFzNDD6xFMSDONbJonoTGlpx7vjpF2Sx/WONauYjwzKAJHoqDXXhwhRyuJ3wRzjj2lIT2AHIkhl/+DJ45g0fxC83gxvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.34; Wed, 26 Apr 2023 20:57:38 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:38 +0000 From: Rodrigo Vivi To: Subject: [PATCH 05/14] drm/xe: Convert GuC CT print to snapshot capture and print. Date: Wed, 26 Apr 2023 16:57:04 -0400 Message-ID: <20230426205713.512695-6-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: BY5PR20CA0024.namprd20.prod.outlook.com (2603:10b6:a03:1f4::37) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: c15ee3da-7b6e-48cc-2a22-08db4698ddfa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tXj9oNkWRqEDF/6cLsVOpiEVa0qijhL/upEpZqG0CYOMpA77z/0pVRAfWOHiBCy4ov+sJY2NjQHaCGA7WMQ7CIIAgcwoIO3RJTzaAWvt6aA1jeMZUHWoIqkkHhRDEWzmelhM59BKc/Do3NqKTIRocWn7wA5ENolH1n9++B8MdqTPlXxAh1rvbzE/eiB/bN5T2/dcKh9phhEPGU7eTSoB6w7dSyY1p3v+haFaGeTcuVnH/yvttskGiCXxPHeD70ufY/QjCp5Fgwi9ixt+xcUurxFTcsLKGHYq//9PrgWMY2nk9XyMyU2qkfSRTrUD1SX/X8WwRlZnoHBVE/gkUXzutZFSjl7aIColbDpCAQVpfgWD7a5PmNK+IQ24qYmnH7neI0NfGW+Eb2FKwBhFLfc9QeL4Qr+Yh/JXLTwNdwQUsMuPDg+GYIGsT1XY7ykpYCUZwreqpuMbyn8HnZouo8vxF/2d9MeQrUu1IwxzfS1L0fTnhvSqu/izSPdgijr/MgCw5Qw3y28d2KS0W9cnTOVFirzrBlduGrdh6qUWYqDkfE57p9DbNaOKyYCUemmB6dD7 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(83380400001)(450100002)(107886003)(478600001)(2616005)(1076003)(6506007)(26005)(186003)(6512007)(6486002)(5660300002)(44832011)(36756003)(82960400001)(66946007)(2906002)(38100700002)(41300700001)(86362001)(66556008)(66476007)(4326008)(6916009)(8676002)(8936002)(316002)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IV9I8bzZmfFSga8sYRYWtvir8eruHxjRqCZ0cugbA16dQb9BcFQ5tIvvP2VGW/xYuVwpy56OP9/+Z2PHt4KTwqPvl+ce0/EEJcqZQhQfsfK3JE21wWEDUnGqmX1VSGathsUgcr/ucdA4nUELVu5SSBjmmtFzTJ1dfuj9IfIMWRlzVOmVinAjMPFkgBSF1PDUl/mrRzlfhRV4uKF3HGxZcQPw3jFFPkTH4Kfqzwg65BmsVFLu8RldOx6naB2ZIqirXKPfogJD+YyN5V1p5JM224j+IoX2aoFnkINQBLAZLggpkbDIu15oiWLwPsGXohZVHuGtq2yFunAaKPftv8o8agYPZMqTadzLs1OznvXuGmDy8XdvFVimdHawCoKVUGaABJlPS3hUfXW6N2whysse8z++1/jZyAYh+OGJcV8HEwN4CzOKFmGkwlIo2oJmUXlQoOs1Jxa+YpWMpJMP8ZjxdjaJ9Ke4yheJm901J8DrFkRHNyYxVm1fitL8JC8d6r+ktskmI0obGmHxMxUhWEVkQaqZ0mrKwBn8Ty4UG5lP9smxtMUTFRF7TeXRS6DUR0ZV6Hwo5xmQKeu/o77QEVxtOEI4wfrsWK6lbdv7YLYE6drbEx5MO0/xGpbRWZNJcG/AN5580WDdjJVo5UR14gtAYBLqly0x770aQgQj+Edg/B6Fg8RaFFjpdec47XNuE2cEVdWLO7MTmS6PvIOZmyoijovu7ylM/cjJjvfSRLGzcbDhacfNRCtxnIfoGDpn0SREOQiU8VHo2HxgW2w52JCAom3NTF53e8kVC6Sw9lSyWXlGnpHR9BEZbw+ZFkk0B4KPyLJX76w1xVnGuXhZiauZe8v/AgkZ/8fW83v8FkB8q1emNmyUyIiIu2y8YeakDZ6dIsFt4NLCxOTfg2Bn0thhs5pWq/md0heJhndlbNIr+HY9iv5QeSIvzPBx3If/Fx6YGs+QxEpXojTCYB1nBEHmjERgsK7tsYsSAtYAXT0T88JFkAA6v3GZ4w68DQ+GZOLY1pK9y7VOxo0HY0pkKO+lBMnwI61jcczdz3i/ovnkEMUPRhBmDceBbiAWYaMBMcFbmX5GgN4cDp3QZOYmCmCHepzDFFqfjbBH7Vo6OROrJdj4KAkP+p5S92/JzV3wGgrMyQqErXrp1nV91WfMWDRpqD33KD3ZEDlvt144ptM0gvm2qOVjZYTtOcbIwgkn83zvy4/5S6P8XphA14y4Mhu/QkPIghVTeEkpsGKJ3FsJEe241vCaUMR1CmyBXPyiRDTMJ2jleOgOMci1iuHK4+K8rEy7hd/s2Hy51kVX0hNWZE7Oy/+jjZkTqxZWqV548Iq5YOQNsPta+Vbd6i0PkIDM1M1p9Q+N1E4PeqAr0PCSDL1l4BD/J+RjH9YIgJVRn6BFXxjjw/g5QWlU6QBog6J344I84UdkWIYiuE1r1R3+3LKlEwB6bJmfmyVbJtJB834pVOl4fN1Y9NhjXmdNc8B1i8RRKmex0BPBu7N5HX68TBgYQlSjJORoR2bcKXmPkY4nkLTMdMyLc4PotFIkiT95Yjp5bXhUZM80l4XTH36tESf73S1jX3NO3uFUUk6Pc8eRiWdfPLWf2S6K1huW+sEj5w== X-MS-Exchange-CrossTenant-Network-Message-Id: c15ee3da-7b6e-48cc-2a22-08db4698ddfa X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:37.9710 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PCOA0NRBQ2fTkhemexmHHp6jfPFckaQ3wJSNJqaDa6Lz6jfTXQD+scc7HSeDa3jpYT3UJHT/lKPlraGJ57fjhA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The goal is to allow for a snapshot capture to be taken at the time of the crash, while the print out can happen at a later time through the exposed devcoredump virtual device. Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/xe/xe_guc_ct.c | 132 +++++++++++++++++++++++---- drivers/gpu/drm/xe/xe_guc_ct.h | 7 +- drivers/gpu/drm/xe/xe_guc_ct_types.h | 26 ++++++ 3 files changed, 145 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c index e16e5fe37ed4..0b7b95dbd9be 100644 --- a/drivers/gpu/drm/xe/xe_guc_ct.c +++ b/drivers/gpu/drm/xe/xe_guc_ct.c @@ -1095,31 +1095,26 @@ static void g2h_worker_func(struct work_struct *w) xe_device_mem_access_put(ct_to_xe(ct)); } -static void guc_ct_ctb_print(struct xe_device *xe, struct guc_ctb *ctb, - struct drm_printer *p) +static void guc_ctb_snapshot_capture(struct xe_device *xe, struct guc_ctb *ctb, + struct guc_ctb_snapshot *snapshot) { u32 head, tail; - drm_printf(p, "\tsize: %d\n", ctb->info.size); - drm_printf(p, "\tresv_space: %d\n", ctb->info.resv_space); - drm_printf(p, "\thead: %d\n", ctb->info.head); - drm_printf(p, "\ttail: %d\n", ctb->info.tail); - drm_printf(p, "\tspace: %d\n", ctb->info.space); - drm_printf(p, "\tbroken: %d\n", ctb->info.broken); + snapshot->cmds = kmalloc_array(ctb->info.size, sizeof(u32), GFP_ATOMIC); - head = desc_read(xe, ctb, head); - tail = desc_read(xe, ctb, tail); - drm_printf(p, "\thead (memory): %d\n", head); - drm_printf(p, "\ttail (memory): %d\n", tail); - drm_printf(p, "\tstatus (memory): 0x%x\n", desc_read(xe, ctb, status)); + xe_map_memcpy_from(xe, &snapshot->desc, &ctb->desc, 0, + sizeof(struct guc_ct_buffer_desc)); + memcpy(&snapshot->info, &ctb->info, sizeof(struct guc_ctb_info)); + + head = snapshot->desc.head; + tail = snapshot->desc.tail; if (head != tail) { struct iosys_map map = IOSYS_MAP_INIT_OFFSET(&ctb->cmds, head * sizeof(u32)); while (head != tail) { - drm_printf(p, "\tcmd[%d]: 0x%08x\n", head, - xe_map_rd(xe, &map, 0, u32)); + snapshot->cmds[head] = xe_map_rd(xe, &map, 0, u32); ++head; if (head == ctb->info.size) { head = 0; @@ -1131,20 +1126,119 @@ static void guc_ct_ctb_print(struct xe_device *xe, struct guc_ctb *ctb, } } -void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p) +static void guc_ctb_snapshot_print(struct guc_ctb_snapshot *snapshot, + struct drm_printer *p) +{ + u32 head, tail; + + drm_printf(p, "\tsize: %d\n", snapshot->info.size); + drm_printf(p, "\tresv_space: %d\n", snapshot->info.space); + drm_printf(p, "\thead: %d\n", snapshot->info.head); + drm_printf(p, "\ttail: %d\n", snapshot->info.tail); + drm_printf(p, "\tspace: %d\n", snapshot->info.space); + drm_printf(p, "\tbroken: %d\n", snapshot->info.broken); + drm_printf(p, "\thead (memory): %d\n", snapshot->desc.head); + drm_printf(p, "\ttail (memory): %d\n", snapshot->desc.tail); + drm_printf(p, "\tstatus (memory): 0x%x\n", snapshot->desc.status); + + head = snapshot->desc.head; + tail = snapshot->desc.tail; + + while (head != tail) { + drm_printf(p, "\tcmd[%d]: 0x%08x\n", head, + snapshot->cmds[head]); + ++head; + if (head == snapshot->info.size) + head = 0; + } +} + +static void guc_ctb_snapshot_free(struct guc_ctb_snapshot *snapshot) +{ + kfree(snapshot->cmds); +} + +/** + * xe_guc_ct_snapshot_capture - Take a quick snapshot of the CT state. + * @ct: GuC CT object. + * + * This can be printed out in a later stage like during dev_coredump + * analysis. + * + * Returns: a GuC CT snapshot object that must be freed by the caller + * by using `xe_guc_ct_snapshot_free`. + */ +struct xe_guc_ct_snapshot *xe_guc_ct_snapshot_capture(struct xe_guc_ct *ct) { + struct xe_guc_ct_snapshot *snapshot; + + snapshot = kzalloc(sizeof(struct xe_guc_ct_snapshot), GFP_ATOMIC); + if (ct->enabled) { + snapshot->ct_enabled = true; + guc_ctb_snapshot_capture(ct_to_xe(ct), &ct->ctbs.h2g, + &snapshot->h2g); + guc_ctb_snapshot_capture(ct_to_xe(ct), &ct->ctbs.g2h, + &snapshot->g2h); + } + + return snapshot; +} + +/** + * xe_guc_ct_snapshot_print - Print out a given GuC CT snapshot. + * @snapshot: GuC CT snapshot object. + * @p: drm_printer where it will be printed out. + * + * This function prints out a given GuC CT snapshot object. + */ +void xe_guc_ct_snapshot_print(struct xe_guc_ct_snapshot *snapshot, + struct drm_printer *p) +{ + if (snapshot->ct_enabled) { drm_puts(p, "\nH2G CTB (all sizes in DW):\n"); - guc_ct_ctb_print(ct_to_xe(ct), &ct->ctbs.h2g, p); + guc_ctb_snapshot_print(&snapshot->h2g, p); drm_puts(p, "\nG2H CTB (all sizes in DW):\n"); - guc_ct_ctb_print(ct_to_xe(ct), &ct->ctbs.g2h, p); - drm_printf(p, "\tg2h outstanding: %d\n", ct->g2h_outstanding); + guc_ctb_snapshot_print(&snapshot->g2h, p); + + drm_printf(p, "\tg2h outstanding: %d\n", + snapshot->g2h_outstanding); } else { drm_puts(p, "\nCT disabled\n"); } } +/** + * xe_guc_ct_snapshot_free - Free all allocated objects for a given snapshot. + * @snapshot: GuC CT snapshot object. + * + * This function free all the memory that needed to be allocated at capture + * time. + */ +void xe_guc_ct_snapshot_free(struct xe_guc_ct_snapshot *snapshot) +{ + guc_ctb_snapshot_free(&snapshot->h2g); + guc_ctb_snapshot_free(&snapshot->g2h); + kfree(snapshot); +} + +/** + * xe_guc_ct_print - GuC CT Print. + * @ct: GuC CT. + * @p: drm_printer where it will be printed out. + * + * This function quickly capture a snapshot and immediately print it out. + */ +void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p) +{ + struct xe_guc_ct_snapshot *snapshot; + + snapshot = xe_guc_ct_snapshot_capture(ct); + xe_guc_ct_snapshot_print(snapshot, p); + xe_guc_ct_snapshot_free(snapshot); +} + #ifdef XE_GUC_CT_SELFTEST /* * Disable G2H processing in IRQ handler to force xe_guc_ct_send to enter flow diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h index 49fb74f91e4d..29e0dff7ad9b 100644 --- a/drivers/gpu/drm/xe/xe_guc_ct.h +++ b/drivers/gpu/drm/xe/xe_guc_ct.h @@ -13,9 +13,14 @@ struct drm_printer; int xe_guc_ct_init(struct xe_guc_ct *ct); int xe_guc_ct_enable(struct xe_guc_ct *ct); void xe_guc_ct_disable(struct xe_guc_ct *ct); -void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p); void xe_guc_ct_fast_path(struct xe_guc_ct *ct); +struct xe_guc_ct_snapshot *xe_guc_ct_snapshot_capture(struct xe_guc_ct *ct); +void xe_guc_ct_snapshot_print(struct xe_guc_ct_snapshot *snapshot, + struct drm_printer *p); +void xe_guc_ct_snapshot_free(struct xe_guc_ct_snapshot *snapshot); +void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p); + static inline void xe_guc_ct_irq_handler(struct xe_guc_ct *ct) { wake_up_all(&ct->wq); diff --git a/drivers/gpu/drm/xe/xe_guc_ct_types.h b/drivers/gpu/drm/xe/xe_guc_ct_types.h index 64e3dd14d4b2..93046d95b009 100644 --- a/drivers/gpu/drm/xe/xe_guc_ct_types.h +++ b/drivers/gpu/drm/xe/xe_guc_ct_types.h @@ -48,6 +48,32 @@ struct guc_ctb { struct guc_ctb_info info; }; +/** + * struct guc_ctb_snapshot - GuC command transport buffer (CTB) snapshot + */ +struct guc_ctb_snapshot { + /** @desc: snapshot of the CTB descriptor */ + struct guc_ct_buffer_desc desc; + /** @cmds: snapshot of the CTB commands */ + u32 *cmds; + /** @info: snapshot of the CTB info */ + struct guc_ctb_info info; +}; + +/** + * struct xe_guc_ct_snapshot - GuC command transport (CT) snapshot + */ +struct xe_guc_ct_snapshot { + /** @ct_enabled: CT enabled info at capture time. */ + bool ct_enabled; + /** @g2h_outstanding: G2H outstanding info at the capture time */ + u32 g2h_outstanding; + /** @g2h: G2H CTB snapshot */ + struct guc_ctb_snapshot g2h; + /** @h2g: H2G CTB snapshot */ + struct guc_ctb_snapshot h2g; +}; + /** * struct xe_guc_ct - GuC command transport (CT) layer * From patchwork Wed Apr 26 20:57:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224941 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 C5FA3C77B60 for ; Wed, 26 Apr 2023 20:57:54 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 115DC10E571; Wed, 26 Apr 2023 20:57:54 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id EB98610E143; Wed, 26 Apr 2023 20:57:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542670; x=1714078670; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=8tCEhFU8D5egYLjxV8SkHwfENznd/1VsDrNDjG/bdJI=; b=OLB2jK/MKTDggEa3r42GF8qgOq+OM67TEZvih9EKxD4gDLJ3KNp7tXnw 5K3+qAtCIYAJjK6YfYyEPOqiHSFZ3oMWHSaKmkKOf59BRNHypWU0QZd6r LoZDt9fbhSgSL4l14zYiy9KC85Qb+WRFajVCIk2UekVud/7TJNMyT8Sxj wsNllGMzh0jty0WHHxxKYzFOVa4gkbO/tEVzgjJUmA2k9CCvIU9Q9vg3D ouAUWs32+0rQpFevyACa9OWgB1H5qYM8W0XLYxMLiANbz1L1zUD+/1E3r tswVNWpjQ+6HURdvM/tugtaPX2ovJ6FqXsjmoJaMBivCmZuQyiU35fZ5z w==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="375203577" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="375203577" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="688105128" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="688105128" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 26 Apr 2023 13:57:49 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:49 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:49 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:49 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.45) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oFYQOtpKnjcUtHKBVRcicQ3tfCZJ53qtJ7pyxuaUQfkt5x1MPRNbFpTbnZlZ1TGi+TE0HSv0zNd3tO9PZn7AcAoRQDu9c3wnLA2jYa1bo714lj6cZ43nLOZnmuAmYsfJvDY8cS8YhdIwbAsst525lNUXkKDKIhpXjRZZKN5w7/abJxKcIANAKONv8GKc7EWMil1CxyoRadrCucsefppN9te0YDl+inXrrRHno0iLnSSTT41XB8DtkPZr/4z30f1KUC99r4sDQ3RW3jfkTKKCysObprzslCSor8XI3N6f/chwoOx6NWTEZ6dEp/iGe/MDTsRSwqI/951twWvC7B4vRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1U3zlc4pimNxypxFQFNkYa9cSpwZdaNzYZ/aGWyvRWs=; b=OfwwXSy0oXC1H6x9OWa75jtYcOwxGhx3i9nv34gyOO2WjFAmAGqZj2fHbwytoJLlRiLLVFd8GaKgkQBgPN/2DzxCeTTPtoCwN2gDBywxZEzZeAu4LYvKY3fzSpEYY5xXENgwUc5imiQAZGRcV5tqubFiquwdsrkfKYObqOZy2cfJDaIVnEqXbA5eKofRxxlUm1wBoJGP5LoP9g9kOneAdlbXgbLl65eohfrpBTSfVVrC/hNZ5gg2yyYdoKFz57xyqUO49CNWshEReG5dNrTI9xEPGNG5/rQAzKqf5pI1q+Ugc39dFGka5r8gDcSyKpM2uHYts+qHz7qZ30ahkftcOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.34; Wed, 26 Apr 2023 20:57:42 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:42 +0000 From: Rodrigo Vivi To: Subject: [PATCH 06/14] drm/xe: Add GuC CT snapshot to xe_devcoredump. Date: Wed, 26 Apr 2023 16:57:05 -0400 Message-ID: <20230426205713.512695-7-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: BYAPR06CA0051.namprd06.prod.outlook.com (2603:10b6:a03:14b::28) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: d3e1f501-7a88-4ad1-2f83-08db4698e042 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zUAaa42Mho5WXQQ0etk4hbKqXlFDwkJe6K64UBo4b7CyFeEawGv/+4nVNEDtHwkwset5uZFWvqzD+Czz38QUcci6N+BIW1L17QkVhHloWrbCFG7LDrdLsg3OytTp9GmqLPx+ukyiuZ5e0xsxmyitzLkA+Ine/4mpXVAlLhc45w7WruAn3sUh02d2httVJowK9ctpwbzyDTbL3yvG1dEYf0Y/hd9RXZuNYBusCi9UpTnRJ1bjfQnA8uSMphObKoF57P0r/3d/AFyGBE9Xb9KXX7/JqfH9bpfJTxSHEZtOrfianR2VoGkDcyFywWK7pfxjKMhfzD8j4vku4MM/f6yrGkJAo4ueITCCzwmnra7IRKft2jZUjx6//mnbsguRGAfLK75W2kZoZ9Yl69qaDRIC7+GhI4NSo4WbBTZ+NL6EVnGoHKPLA/LkTHme0ESrXJ5iGjhTICb4f813jz7scpC0YPIxdUN0oLQNbvxdQx6SPB3rGHbalOYGQq6TqN6tLN3rOsVzjD7ZPBzqpUZ09Yv+AbcxJkgW7L5xhS3LxA+eDfZtv1JA5UO/qgJ/cleYBou5 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(83380400001)(450100002)(107886003)(478600001)(2616005)(1076003)(6506007)(26005)(186003)(6512007)(6486002)(5660300002)(44832011)(36756003)(82960400001)(66946007)(2906002)(38100700002)(41300700001)(86362001)(66556008)(66476007)(4326008)(6916009)(8676002)(8936002)(316002)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: n0WE+bTsTUa2JDkzLwvd0JDbqCvFaEbGgKQSzxJJq5V/M5ChC8GNUJn91MOwpKnts99hFjy8lbZ1lsxnTmvNCSgJx8qPg9Ph2BA67BQaC/tU8UNQQSyBdsNJpKME2tIyKB6rRfMUqXIf2V32LCvTGGiANcHzsklWFhgrVchPIQnVivRY0dZHF8PnxzYC7SxaCyBv0M0I82vWm8izLcWldH3YyNEYHDCQZJAVUMIZASa9dh5OXf/m+rjJXSN8EBs85UU21afqsDX1MMqo+U7FNPFVsrs313j9dOW3dbhXopylZbP3YQ8Id7NtbA0fWr0MlnPsTGTDFaonGpAZmBOJFRgPshETqBnuAqRGPa23frlUlF2mu5KECYgncI9xVbYZrYe/Llv+hxSINWUQzY6xfldBxU/wixTCZ9gNb0qj9meE2yUCmdAyAqN3nqYhOvsWmwi2BcKcwAdOn8FMLn+RI+Y37yiMDHA0T4PLUN3VvjsTgXpV3PsVi9N9ENRzlrPytxjz1R4i7wUsXiUprqtxWXnKoYAyWvZHgfYRIcUFuB9gBFWT60EXIZaz1HC0WlyfIPGZ0lwTCwoQzEzHjSwvcBcRhEHT3qsrHhPnKoRhvCE0U0xd93V6Q549I8Cqyv4/IFtGfp6KvSFDY9RVGEWcCCE5CMX82GurZ1pLLZi30Y0+V8axeckLOLUqIe5Fv7kGw2ZCrlHcT8wbvZip4NGNKUzTuBvvZgT0Kzjq8vLMnbDsKLeYLlT3BjqP1W0IQSx54QvIetTS6Xp+6yb6ioj9Y+ygZ8Wl+q++vald5WqQim/wnHytCqrVP2s7xDccRO5O1mXl7PA467Z0BF2WqvJ0jxLT7uQ3qQVWg2yTsDlFOH+2MyeZnVaXMat/p/qNnEeYbc3EgKpRc5QqTqANBLBjLvG16Jd1uRsHb0ZmKLPk54IcMJDjo86i9XLbhAjwmrs1FZGrda8MZCwj4VEX3NshnDV1YtJyFLlFEiUsURe80kkK4G/tr6Sor0Xujw04e6UwdpomB48o7S4L7nNPrk+kReZjG2JRF3wnScC3dawYPXdASdr4hL3YkiKnSDSD8q5G1m1R+IT1pAgIDvWnMgJcfpzkprbK/MCuwM30a0jv3rrQgmZ9jOfVbqX66GgHrq3TwLai9r6/RQxCiOCKnnkCh9dHlgAjzu8INDN57sOuVZayb+MI7vMPuZzlwjDfovGrAAHce4LMMSA7+j25aBglw1I5FtiRdGz8FJ4TK7b7CS9JEj3O6L6PZ3B4zC8oriQZn2O+8Dv4VdE/Ib5i9G4/Ggx4s0HMHFfMHnlqdhLyCL6HPZhxU2AXaMDCncZ9pciIhhRD/te6vjbimLt4enewMfaL7n6ARYXCxyLmRegABaj5cW/1cQ3YeO4QoIe9xanUf72FcnuTuRreaaBBMGHM4l1irXAqNCRRydO2WUdFKAeGB7zq3HFybENJ32KWEy0F/FKPLZdR9SgyBfrJ1mlNSj9Sr0I7kWvUGmnV9Pa+v0Q53LPBcZkWHmXEpzdYNpZ4T7Ea8wJtotRTYe7M69D59PEuCse+kppivxRPFuMfC6Sn+h8cYisCs1LVpzh/gg3vvUbxIpnrOttColAHX7wckA== X-MS-Exchange-CrossTenant-Network-Message-Id: d3e1f501-7a88-4ad1-2f83-08db4698e042 X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:42.1204 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lqA9/Replcw6qeOKh4KKzF6JcP5Sp0it1Mb2lozTN0ds4mGie0VVGvxSDA0X2thEhBKepXy7goJ30bDLcslGXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Let's start to move our existent logs to devcoredump one by one. Any format change should come on follow-up work. Signed-off-by: Rodrigo Vivi Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_devcoredump.c | 14 ++++++++++++++ drivers/gpu/drm/xe/xe_devcoredump_types.h | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c index a08929c01b75..795581c58d90 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump.c +++ b/drivers/gpu/drm/xe/xe_devcoredump.c @@ -11,6 +11,7 @@ #include "xe_engine.h" #include "xe_gt.h" +#include "xe_guc_ct.h" /** * DOC: Xe device coredump @@ -47,6 +48,11 @@ static struct xe_device *coredump_to_xe(const struct xe_devcoredump *coredump) return container_of(coredump, struct xe_device, devcoredump); } +static struct xe_guc *engine_to_guc(struct xe_engine *e) +{ + return &e->gt->uc.guc; +} + static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, size_t count, void *data, size_t datalen) { @@ -81,6 +87,9 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, ts = ktime_to_timespec64(ktime_sub(ss->snapshot_time, ss->boot_time)); drm_printf(&p, "Uptime: %lld.%09ld\n", ts.tv_sec, ts.tv_nsec); + drm_printf(&p, "\n**** GuC CT ****\n"); + xe_guc_ct_snapshot_print(coredump->snapshot.ct, &p); + mutex_unlock(&coredump->lock); return count - iter.remain; @@ -96,6 +105,8 @@ static void xe_devcoredump_free(void *data) mutex_lock(&coredump->lock); + xe_guc_ct_snapshot_free(coredump->snapshot.ct); + coredump->faulty_engine = NULL; drm_info(&coredump_to_xe(coredump)->drm, "Xe device coredump has been deleted.\n"); @@ -106,10 +117,13 @@ static void xe_devcoredump_free(void *data) static void devcoredump_snapshot(struct xe_devcoredump *coredump) { struct xe_devcoredump_snapshot *ss = &coredump->snapshot; + struct xe_guc *guc = engine_to_guc(coredump->faulty_engine); lockdep_assert_held(&coredump->lock); ss->snapshot_time = ktime_get_real(); ss->boot_time = ktime_get_boottime(); + + coredump->snapshot.ct = xe_guc_ct_snapshot_capture(&guc->ct); } /** diff --git a/drivers/gpu/drm/xe/xe_devcoredump_types.h b/drivers/gpu/drm/xe/xe_devcoredump_types.h index 3f395fa9104e..1e44d5346364 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump_types.h +++ b/drivers/gpu/drm/xe/xe_devcoredump_types.h @@ -23,6 +23,10 @@ struct xe_devcoredump_snapshot { ktime_t snapshot_time; /** @boot_time: Relative boot time so the uptime can be calculated. */ ktime_t boot_time; + + /* GuC snapshots */ + /** @ct_snapshot: GuC CT snapshot */ + struct xe_guc_ct_snapshot *ct; }; /** From patchwork Wed Apr 26 20:57:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224942 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 40117C77B7C for ; Wed, 26 Apr 2023 20:57:56 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3D25D10E689; Wed, 26 Apr 2023 20:57:55 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 65D4F10E143; Wed, 26 Apr 2023 20:57:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542671; x=1714078671; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=ts+9q166jJloFKnnplj6KfEZLA+xJFyjE1FQkWXoCfg=; b=W7F9zxagFQvdhdLZinJ7+SyiBBNlYnMjBGqrpnZcd9goL03y+T7nD9hS BFGO2i59TwPjN8Ts9xyv3yNn/YfBenZSNsYeVMmmYwtxJiSIuedT9uyGG DcT9+1Z+aFdrbl+KRZjppmHI8PHTaDq9anoOJXfyncN74MC9mqPiMJ7pY pJ57xtNjkMk8V1j/chyZbBC+gQmiDQjuP8iFxt4o+EkiIbHxY/HlFUgS6 GrK6ZEUMWKD1+frwE4f8v+erY2VIg4jGCPNE5sXm57DddTf08F9PPrORZ ZF7Z48p4cutJMnb3aWSiF3El4HgxB8+AeUkFiQwe6tnm+ubVzIUD1HNGM g==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="336158336" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="336158336" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="838081044" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="838081044" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga001.fm.intel.com with ESMTP; 26 Apr 2023 13:57:50 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:49 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:49 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.45) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:49 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RcIKZgoNYUf8fVlvuvc3P5gWeBFaJeVsvZoCx+0ITP5sk3ga6bGEg+3E9jekYasvybC+pVIv9kQNcJd1FAR5COruw7YquUQ9G+SQYeug6IYLscQg5F/t25g2Wc6jMtqjZdoL/LqOocYEZYbAVDEfL5k8e3nPJsp6lqwRATozUj6Z8uNShgS0Fbd3BGLZ6VvGB49P+w0aWctHVk8DDOzg+8ycSzGSwFfhK/nhveKn8ezRUF7Q3XGpJR2zSMjxjyUrOrJuTZeXiju2qLUxb4RoCZx6g7C/hAFb4tzMhdm+akJdfXsbvhLNVDYhuZUyHP/r8NRxyozes0d7m98uHiBTuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=knQtoMCnlhQRuX0EFU/xq3+L+bDrHdF5CvgfMZxH+3o=; b=V6oQVsO7V9gwBA7BVcmS/VrV64pElZ8lFsmcfIi8lSJHnPGlhkHDVXrJXV2MQ+nksUJO9vj1drXhu/EZCkuHZ/9jGN0k6jO88d4EqOV6s3gHy0Wl1nbhfO2PSnFMabW1H2djbJZCsTwp+/ODleQV6tycudCIpMk52x7ntLmG/0uFejOib0f5Qtepj3yy68ecnDSH4KqUlkzxI2y5JCKGj2bZwK1h9lAKw4bxksjo5Ne7uS1P9IoT/ZUmGxAxd2oDWtSoR6isxwSl1ZIUrJxtFiE9I0Y5OIeVUde3rxk/JCckWjyqCLuiXdfshaKDDuqiGXy+CCrwt5ZAe66PoPNcrw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.34; Wed, 26 Apr 2023 20:57:45 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:45 +0000 From: Rodrigo Vivi To: Subject: [PATCH 07/14] drm/xe: Introduce guc_submit_types.h with relevant structs. Date: Wed, 26 Apr 2023 16:57:06 -0400 Message-ID: <20230426205713.512695-8-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: BYAPR01CA0054.prod.exchangelabs.com (2603:10b6:a03:94::31) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: 5bb9a13a-98e0-4281-a92c-08db4698e29f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a0aU2TnwKev9qL3NAfZJcbEvOkMZp1sPiC5kGzYKHG5aiifpLdBeU3V6/QCar+P9Wk7neUcjxGVBwuEbdypAs8ylLOtZQWwRO4vjqbNMjplgL4PRV68RKzYX/Ic/HqJ8s8Z6doPnCY7OefTpPtYeMuvkKC4IRE54+PP6Prm0rLiciZoQkQM1hVcHvhMG5CAwuo25oN6sdpqoKvAC3UHSjF1mZw8KZ603blzmN5zVTZUcq3VlpUjRmdlJtT9xZmfbmENCkVtfQDAMPTLSXWQsnVs1r0cHDMnZVOR+B4Rv2blyX3mICGi29eCZ9srrDd4Xp1NRn8lI10RPR8yi0t3otEy6TDrJPudagC+IQDEyZOCeZspevhMr9ss6Fkeb6hoedJlwjDywXYXbOeS2Z6ZeEuZx35coIjCuhB8LkXYIoCeTDAkLZsJA0z/CItoWaxuuj77aHFmgA6FGaeTzoByu34MaQT9k7hz+rmU9UM7I7py84yBRdsghJGpf0GW5hCkYymXQwO4EgcV62vKwDoTjObOsVPkY0SY9IFKzIQfo+myTzzcL6k1YTomso2W7BWaZ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(83380400001)(450100002)(107886003)(478600001)(2616005)(1076003)(6506007)(26005)(186003)(54906003)(6512007)(6486002)(5660300002)(44832011)(36756003)(82960400001)(66946007)(2906002)(38100700002)(41300700001)(86362001)(66556008)(66476007)(4326008)(6916009)(8676002)(8936002)(316002)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?SUth5U3BlAhznoIt3YGu0xbD88Wr?= =?utf-8?q?6BoVnQIkjvZR2Jn6JwPH9mo/okEAQ7lSEWit5x/KpWBOAwMRkIGIsvZ+gd6Cikury?= =?utf-8?q?s+B3/d9SAjxJyeseOcrPpREqEGa9J6eNvF5msEwTEhwRdrwTDUya2uqqUdKh/O/q4?= =?utf-8?q?amvSq2nRd/TyHens7Cf8c+eaMigzrZQlO+Nt7Z4YVUyqFSvLxt5kQHrJ8vxPiP1rQ?= =?utf-8?q?Ry2IhWR/U+PwqKQWYm9QH7StyYmKj9jSeLmb5d9aKoTECKP+JQkA3ZmPBQbh7s8qt?= =?utf-8?q?kSDfFx7b+ixxc2Pmi2IfsqzYmD/7m3C5IvF00j2qWCZvv4JBeSpjkzqlltnbCGFka?= =?utf-8?q?Fpf85JvOT/VCOHJgB229Nu40Q4A3XOqa252uLGq9olnSklDv6plEQv1LuvnFmmltF?= =?utf-8?q?aHHXLQ1koytGk5e7ZyX0vcZJIIFH+cozb+IuacL7yiuzPSicxIJMezFODWMGrPCap?= =?utf-8?q?0KOnfNCnXw3zEc5ucb3qnqP9Hvu9YnQIKws5hYUEZUGYIZKsQCtVmsDCP/yvzXT6m?= =?utf-8?q?FzxpuY8R+d0OE1tEFgc1N4vXdM9gXstxycGlBzdnqN5xEi/IDMDHX9c9KHGYPpufI?= =?utf-8?q?ldulkRl4/5Rob1fEKOCFc/s8WwpYlKhPdGghhc8wPWwC1cq3brO7f0gDW95ell1mi?= =?utf-8?q?Z+lFRVgejbSROMM6e8x5zrSnlRHwkLyl0EIOFhh8oK0GQwo4T+vyqzs4WVHcjdVs1?= =?utf-8?q?aid1fviQh7NjXw6hejJxZY2YP+eerV7JEI+M8k7xFJgTzczszHHzMFd0cGRIl7m9o?= =?utf-8?q?UR4VC9u/lFie6V61nXSZeQ8da10wZAMacp5dsHRLIyHmaISaJBjo4gCyMNR+6Mgap?= =?utf-8?q?L3PAWjUhDFK2BGxjys/BmAwzi6bnbee5CF3btHzxti4ncFW2fsroHgvoX7Mp1fGMn?= =?utf-8?q?cdIYCCz8YUZHXQGOWp4UpxUJ46DVquEmKZ6UmuHI6WICsHMx7G+hXSD0d9YGfSfgs?= =?utf-8?q?Dj+VWIkzTCa3VSy7EWbtnqELomU+y9La7wQrqio+aNTkd40f+TAL5kJ3kMqqQY9E3?= =?utf-8?q?EM8cf1zk2ynKa3jv7m/5KsLOP5acw8oiIfzuXLyCZLPrwtZEKlVst/c0NZvFRrImG?= =?utf-8?q?ncNal6END/y6kO1F1eJ+kVpckaYXasfEQPWBgcNcmFUC69Ui0O8SsIj3OKsXuyjHS?= =?utf-8?q?c49RmCN7Rkdq3/KGi/ft4+y5bilx5Te56Bsu1+M2FPk3RKBCRXZIi4MsJAwHFdKUK?= =?utf-8?q?deH17enMVLRbmq6XXei1ysX25OXV7WIRutTN3rWg9isQTdzdICaBSBQUHLbOe41O4?= =?utf-8?q?LIOUZbaLkWOFcxrOfABvnq9MrE+QQD4+da6AB3L4RfugaTQKFGuYImEzA3O9jXv0Z?= =?utf-8?q?2iE9Sz57zDVwLXEk5Gr5cD/BOVRA61wgopEX4MuM2lKIAWfaPNL31g20KS7xrZMpq?= =?utf-8?q?sa2zsqAWDQ7mtP0FgQBRVV4VtyhzTY/qUlY3zW6KOjKxhdBhVDxTslV8/y4JK0JYZ?= =?utf-8?q?78uCpeR+Y2IUsghJxndUK+q2JRpH1DC/fkdFyHc8qDw9A2r24CIwKwVngQU7SqlWI?= =?utf-8?q?A9SG4p9vgO2mBPAXkAHZA1sYGGtLduF0Dg=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 5bb9a13a-98e0-4281-a92c-08db4698e29f X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:45.6626 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vwtDdOSnAVpxF0fqyGb43KzQomCzfylCCZe5KOuIHwl6COtrK7GuZ9OmUEGGd9UMw48aQQ438CY8hZ8f3hDu/w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Matthew Brost , dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" These structs and definitions are only used for the guc_submit and they were added specifically for the parallel submission. While doing that also delete the unused struct guc_wq_item. Cc: Matthew Brost Signed-off-by: Rodrigo Vivi Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_guc_fwif.h | 29 ----------- drivers/gpu/drm/xe/xe_guc_submit.c | 40 ++++----------- drivers/gpu/drm/xe/xe_guc_submit_types.h | 64 ++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 58 deletions(-) create mode 100644 drivers/gpu/drm/xe/xe_guc_submit_types.h diff --git a/drivers/gpu/drm/xe/xe_guc_fwif.h b/drivers/gpu/drm/xe/xe_guc_fwif.h index 20155ba4ef07..27d132ce2087 100644 --- a/drivers/gpu/drm/xe/xe_guc_fwif.h +++ b/drivers/gpu/drm/xe/xe_guc_fwif.h @@ -46,35 +46,6 @@ #define GUC_MAX_ENGINE_CLASSES 16 #define GUC_MAX_INSTANCES_PER_CLASS 32 -/* Work item for submitting workloads into work queue of GuC. */ -#define WQ_STATUS_ACTIVE 1 -#define WQ_STATUS_SUSPENDED 2 -#define WQ_STATUS_CMD_ERROR 3 -#define WQ_STATUS_ENGINE_ID_NOT_USED 4 -#define WQ_STATUS_SUSPENDED_FROM_RESET 5 -#define WQ_TYPE_NOOP 0x4 -#define WQ_TYPE_MULTI_LRC 0x5 -#define WQ_TYPE_MASK GENMASK(7, 0) -#define WQ_LEN_MASK GENMASK(26, 16) - -#define WQ_GUC_ID_MASK GENMASK(15, 0) -#define WQ_RING_TAIL_MASK GENMASK(28, 18) - -struct guc_wq_item { - u32 header; - u32 context_desc; - u32 submit_element_info; - u32 fence_id; -} __packed; - -struct guc_sched_wq_desc { - u32 head; - u32 tail; - u32 error_offset; - u32 wq_status; - u32 reserved[28]; -} __packed; - /* Helper for context registration H2G */ struct guc_ctxt_registration_info { u32 flags; diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c index 231fb4145297..a5fe7755ce4c 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.c +++ b/drivers/gpu/drm/xe/xe_guc_submit.c @@ -22,6 +22,7 @@ #include "xe_guc.h" #include "xe_guc_ct.h" #include "xe_guc_engine_types.h" +#include "xe_guc_submit_types.h" #include "xe_hw_engine.h" #include "xe_hw_fence.h" #include "xe_lrc.h" @@ -378,32 +379,12 @@ static void set_min_preemption_timeout(struct xe_guc *guc, struct xe_engine *e) __guc_engine_policy_action_size(&policy), 0, 0); } -#define PARALLEL_SCRATCH_SIZE 2048 -#define WQ_SIZE (PARALLEL_SCRATCH_SIZE / 2) -#define WQ_OFFSET (PARALLEL_SCRATCH_SIZE - WQ_SIZE) -#define CACHELINE_BYTES 64 - -struct sync_semaphore { - u32 semaphore; - u8 unused[CACHELINE_BYTES - sizeof(u32)]; -}; - -struct parallel_scratch { - struct guc_sched_wq_desc wq_desc; - - struct sync_semaphore go; - struct sync_semaphore join[XE_HW_ENGINE_MAX_INSTANCE]; - - u8 unused[WQ_OFFSET - sizeof(struct guc_sched_wq_desc) - - sizeof(struct sync_semaphore) * (XE_HW_ENGINE_MAX_INSTANCE + 1)]; - - u32 wq[WQ_SIZE / sizeof(u32)]; -}; - #define parallel_read(xe_, map_, field_) \ - xe_map_rd_field(xe_, &map_, 0, struct parallel_scratch, field_) + xe_map_rd_field(xe_, &map_, 0, struct guc_submit_parallel_scratch, \ + field_) #define parallel_write(xe_, map_, field_, val_) \ - xe_map_wr_field(xe_, &map_, 0, struct parallel_scratch, field_, val_) + xe_map_wr_field(xe_, &map_, 0, struct guc_submit_parallel_scratch, \ + field_, val_) static void __register_mlrc_engine(struct xe_guc *guc, struct xe_engine *e, @@ -486,13 +467,13 @@ static void register_engine(struct xe_engine *e) struct iosys_map map = xe_lrc_parallel_map(lrc); info.wq_desc_lo = lower_32_bits(ggtt_addr + - offsetof(struct parallel_scratch, wq_desc)); + offsetof(struct guc_submit_parallel_scratch, wq_desc)); info.wq_desc_hi = upper_32_bits(ggtt_addr + - offsetof(struct parallel_scratch, wq_desc)); + offsetof(struct guc_submit_parallel_scratch, wq_desc)); info.wq_base_lo = lower_32_bits(ggtt_addr + - offsetof(struct parallel_scratch, wq[0])); + offsetof(struct guc_submit_parallel_scratch, wq[0])); info.wq_base_hi = upper_32_bits(ggtt_addr + - offsetof(struct parallel_scratch, wq[0])); + offsetof(struct guc_submit_parallel_scratch, wq[0])); info.wq_size = WQ_SIZE; e->guc->wqi_head = 0; @@ -594,7 +575,7 @@ static void wq_item_append(struct xe_engine *e) XE_BUG_ON(i != wqi_size / sizeof(u32)); - iosys_map_incr(&map, offsetof(struct parallel_scratch, + iosys_map_incr(&map, offsetof(struct guc_submit_parallel_scratch, wq[e->guc->wqi_tail / sizeof(u32)])); xe_map_memcpy_to(xe, &map, 0, wqi, wqi_size); e->guc->wqi_tail += wqi_size; @@ -1674,6 +1655,7 @@ static void guc_engine_print(struct xe_engine *e, struct drm_printer *p) guc_engine_wq_print(e, p); spin_lock(&sched->job_list_lock); + list_for_each_entry(job, &sched->pending_list, drm.list) drm_printf(p, "\tJob: seqno=%d, fence=%d, finished=%d\n", xe_sched_job_seqno(job), diff --git a/drivers/gpu/drm/xe/xe_guc_submit_types.h b/drivers/gpu/drm/xe/xe_guc_submit_types.h new file mode 100644 index 000000000000..d369ea0bad60 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_guc_submit_types.h @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2023 Intel Corporation + */ + +#ifndef _XE_GUC_SUBMIT_TYPES_H_ +#define _XE_GUC_SUBMIT_TYPES_H_ + +#include "xe_hw_engine_types.h" + +/* Work item for submitting workloads into work queue of GuC. */ +#define WQ_STATUS_ACTIVE 1 +#define WQ_STATUS_SUSPENDED 2 +#define WQ_STATUS_CMD_ERROR 3 +#define WQ_STATUS_ENGINE_ID_NOT_USED 4 +#define WQ_STATUS_SUSPENDED_FROM_RESET 5 +#define WQ_TYPE_NOOP 0x4 +#define WQ_TYPE_MULTI_LRC 0x5 +#define WQ_TYPE_MASK GENMASK(7, 0) +#define WQ_LEN_MASK GENMASK(26, 16) + +#define WQ_GUC_ID_MASK GENMASK(15, 0) +#define WQ_RING_TAIL_MASK GENMASK(28, 18) + +#define PARALLEL_SCRATCH_SIZE 2048 +#define WQ_SIZE (PARALLEL_SCRATCH_SIZE / 2) +#define WQ_OFFSET (PARALLEL_SCRATCH_SIZE - WQ_SIZE) +#define CACHELINE_BYTES 64 + +struct guc_sched_wq_desc { + u32 head; + u32 tail; + u32 error_offset; + u32 wq_status; + u32 reserved[28]; +} __packed; + +struct sync_semaphore { + u32 semaphore; + u8 unused[CACHELINE_BYTES - sizeof(u32)]; +}; + +/** + * Struct guc_submit_parallel_scratch - A scratch shared mapped buffer. + */ +struct guc_submit_parallel_scratch { + /** @wq_desc: Guc scheduler workqueue descriptor */ + struct guc_sched_wq_desc wq_desc; + + /** @go: Go Semaphore */ + struct sync_semaphore go; + /** @join: Joined semaphore for the relevant hw engine instances */ + struct sync_semaphore join[XE_HW_ENGINE_MAX_INSTANCE]; + + /** @unused: Unused/Reserved memory space */ + u8 unused[WQ_OFFSET - sizeof(struct guc_sched_wq_desc) - + sizeof(struct sync_semaphore) * + (XE_HW_ENGINE_MAX_INSTANCE + 1)]; + + /** @wq: Workqueue info */ + u32 wq[WQ_SIZE / sizeof(u32)]; +}; + +#endif From patchwork Wed Apr 26 20:57:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224945 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 736D5C77B60 for ; Wed, 26 Apr 2023 20:58:07 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 615FF10E143; Wed, 26 Apr 2023 20:58:05 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6F94D10E1FD; Wed, 26 Apr 2023 20:58:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542680; x=1714078680; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=J6L5i84sKlEMhvAxlqdPRAX58eVyOsh4vYJ6mNoZn/M=; b=VdfecDy251KBN3nZFdshjvXZKGIzpzV9lrm0R7tpH5ZZXm0/SStX4egy qjYh+3RjZ5Pm08aVhPdY833JY9owJmFbo9xknT3w4hVo+ZLIKkItn070H NVOszXdvT+eMXM6tfBB1C41DaGWyKZvfotUd5LQ61fSVAQ178Dicuz59s ByOdgX3dHhyek1S2x4EOy9Y4dakF2dFWolil8sfQPvqZpVg18mc1acE10 eZNAwKS+gW8t3ZHAEVHDwJZN/pl2bwxp3LKECRrbHtS81+nXDG9iQGAYu hcbzLB7AK3pLe6r2An72DVdeieKyEkf3tqtPw8ECvNyfVcFY2zSkRp1ik A==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="336158362" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="336158362" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="838081083" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="838081083" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga001.fm.intel.com with ESMTP; 26 Apr 2023 13:57:57 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:56 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:56 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.47) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WF8Bac5BjYn0x3nJOu4SObZrJpEpNX+2JsWJNqjVZ0yrYUrtfpLYQXWBjPFonVQp3donrqR2zvObEsZumvcpIJv5nUoqJLau3JnfjGUa5OskaWVzr66o4ce+PwMl7kprgJgC7UqZylLWpek8i8c4HJyljBSRBjjf2estutJCbh+y+w5635NX8E6XrwI3hTqYuuA9NKroiuPGvxyOz5I1P2HSYDN1d4yQz/FGlmyILpHXGW98L+hYrZrBi2QkGRdlreC+8Kn+VblJuPTR+ZcLpzZMGqYxor0jxw56kF/SvhRzGOzjfrIeM8AKWcyc+keoWvEKCTfmebd51Rv6PzCHsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rpJWIkMvzVXblJQ8KvRrjdMIUYA/ubliRIMMwXSS2jo=; b=SbeWcCWAK44x7Lq0KILXIcxlT3ciudMuHI2/6d6JNDRkcG52P02KD5zemaxzm3R3CBmWacdVwPFz4hCSAFxT5Ig+xGUn7jNUegWtoV088tyCXIkA3XKdC2BqsLZ6bN5/MrE/s3IWz4/S5hD3qvq5s8smWHsK4OM1ry37gA3mTRs/511QXO8yJNp5EMkw2Rhck2LVRQR7kSa2v7plekGvv378433/OSCONtLUhQDP8mwQaGn0q7K/QyeTfbUjs8IegGgCh1EDDK+LO2F91aAqn1DIKoPNwVKzv9wSz/WUB0KqsB2HbAgUpnEabrbn1e6JBs6sAL1OXcQCKbxVdOIycA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.34; Wed, 26 Apr 2023 20:57:49 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:49 +0000 From: Rodrigo Vivi To: Subject: [PATCH 08/14] drm/xe: Convert GuC Engine print to snapshot capture and print. Date: Wed, 26 Apr 2023 16:57:07 -0400 Message-ID: <20230426205713.512695-9-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: 1ab85acd-64bf-4a2e-13c3-08db4698e4cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5Yx0xnkJfSUQ9Ntelg7XUpiP57ggcq0GkWaOUQD9y+lPMCFO4kt2UActuQTCYEV3Mh1eN8qkv8/E7+RdZpFzgI+AWkYXf5Bi4bJGTnHdmgEIIqKMnBnPC+JZbvrt9OhT+QLvQvi2etY8Fs6oGRp8Gny3tYs+oFtpLmopdBJfePuu09S2a/LD3bcoTFrJTFyTwcxOpR4pIiTv+MiLvI8DY8WNo7OQxK8/nofGcOmd06vmj3xjE+q8QybgUNvww8tGsHOENn9eZVTTHLwIgY40GAlXmVJJUkoGvWUoQDfwy3HciZa2oWDuAvGYk8HwBc0ywtHSDPzFnHzqah6ZgW4HOGTvImobYRzqGed7qHzO1TcVe/CuEuYSQ5ejdn6JGyhECfpiIFUnCFZmJ0u1y2quuRAUGAMJC0gkUjdVjAcNTra9e+r1BAVe5L2gEf2ja2GiIq5Jdlz1Mp/0jBXCJC1iaZtPl730iupkIzBMPmp4sCBxZHMB5VLpxU14vEOFRa17MvnKvvSZxPDfsqilJCExcCx7XssS7At0Sf1MTcR5Lnt8YyC1MnTya3vOhShr7nUm X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(83380400001)(450100002)(107886003)(45080400002)(478600001)(2616005)(1076003)(6506007)(26005)(186003)(6512007)(6486002)(30864003)(5660300002)(44832011)(36756003)(82960400001)(66946007)(2906002)(38100700002)(41300700001)(86362001)(66556008)(66476007)(4326008)(6916009)(8676002)(8936002)(316002)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: i6DU3S3Ud/tUvEdzReScCfbwm+0gNXn07dtiOo5R6gDJ1br0ja4KtdbaPtnHt1ReB3eCiF8NHkdtulaTimmFl7fHXlDAWFuV7+WUKPzL1x05ad9GTmDnsaC96yIBAYlauFvLxalqsacI29fouwiJEoqxqmBTUUwSKwaypH9YCw+LTQkP0VNeyHAZFMDb4GkUMA3uHx9Fkxtbj9ePXNpGVWRNDMDSSjTOkUvHxdGAnzTso0RJ9P2KNkPGq9DVbyGTbjBBe8+LUpx7+lPdNDYT9Va/vhikNS5DAkIqSTGkyDKjrPVAptgwP/FkJKJZ7El8l5f7iFxhCxtoAwi8pmacJo+xvIRqEU6Q97HI9KET7cQLCuyB13P/5mo+LhZcxS6CNFFfe5ovzWgaV6NrQJsdxE+weYfCDJhGR1wu1yHDJ7De6qbEUk61aP2zX6SR+RvWOFb7OUurdPcGVfI+XEeaskBteqqn9JDyoRy/1RCU2UKStsmEthLz6bUlqTdWRsnbVrstm4VlCvi/fmWxxOm0FCyRWiiUGxLJQrh7Rv29JicJikq3UPvsCNjVAHkzTWwLtsS6fpo/9RgHDadvKjI+yDUb3ElhjPwMsGABhdBor0x0CkuWNPZne3fBn86fQ+oofUdbc2wPIMcZTgqKVwtQYPLRPo5rpwexALoI1OmGOzx1j2nwPWyBUc/2kc09K9dkHcYAfhCZacn8iwQcdx7A1JlMJBGBcDFoAItY9PS1+DCJl9ZT08Mc6zgr6ujDdQlUxiypzc7j4+W6HO/gbtlcLzlR2lq4e1GDqsAhgoroMI+vfnPTZdeS9GEBva1QMiliNC6cHx3U5TOKNbQ+N+YCSm9pf4OqPbeOi8NakSnp2r6OIRBtqM7+j+L7Wm4hhNQ958mYYj12mAUxyngok1gG/kNJ5wQYXdywojmwpn/GyS2LqPsRJrQ2cSSXyMFZHVjgIGtxVEiN20sXVt9ITQ4HJbOf9AHDGReUNuLqRS9oDD/5cKdAHSoO9MI5rQIH25Qg+xJNj2zBQLvkwIycBUfzxCUX4+pHWURbfCGmi1NLuGruX7XMwJXa5kraps/RQaM7cvFgrKg27aKdgmmnOJPfs/mvmoc8FpyIyNp05o2syrRzkqb83+uFKDc4mUWQddf+tdIMzfxdB5JP1ttur8yhkBtBvItI575dZ9r3Zh2HEqSrwCIVZcWCmeIL9jgE5EuCjQfUGNAfOuOl28OjMU+FqIkPSYvClXCYBcCll1dvX8ZQOkzB7Hxmbf9uWhfHEwlBMCNVQoRL0p1oT/ySrIF5taLg3pfkiPlH14anktwMmDGQpN2Ez0m4OsYoZbDT1UhFTWX9c4HxNL/L/nIpuwQ5BqILSK9AgPhspRyJvsVHbwf/pNkFeyG/cMHVm4DefmYzUfKJa4vokigCNP5Ub2Cs8aK6M62n5sCKfeAQr36lCSJ94f5dGpPA/N3zEjUgEbC76BdfjH1Drbkg/Dk6wRvoZQhEaHT8tkFwtL40SbWJIrJE9NRmvhKs2QNPdCYopfhqrr34VP4603a2sGMBEH85JpsnRC14iPwWPMyJfjkzDqndyhccP2f9LEgW0SBNLbWbwAv8oUgmX1HNuxh9RMHKmw== X-MS-Exchange-CrossTenant-Network-Message-Id: 1ab85acd-64bf-4a2e-13c3-08db4698e4cb X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:49.3244 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dJb3AiNkg+aawPNqALn72YQ/+6oYAfU2YuDSnAN+fJnuExExnjZCTHIFwLsGejz+fi60aHVprFOoSmHLKHwbYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The goal is to allow for a snapshot capture to be taken at the time of the crash, while the print out can happen at a later time through the exposed devcoredump virtual device. Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/xe/xe_guc_submit.c | 212 +++++++++++++++++++---- drivers/gpu/drm/xe/xe_guc_submit.h | 10 +- drivers/gpu/drm/xe/xe_guc_submit_types.h | 91 ++++++++++ 3 files changed, 274 insertions(+), 39 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c index a5fe7755ce4c..9c06411f857f 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.c +++ b/drivers/gpu/drm/xe/xe_guc_submit.c @@ -1596,75 +1596,211 @@ int xe_guc_engine_reset_failure_handler(struct xe_guc *guc, u32 *msg, u32 len) return 0; } -static void guc_engine_wq_print(struct xe_engine *e, struct drm_printer *p) +static void +guc_engine_wq_snapshot_capture(struct xe_engine *e, + struct xe_guc_submit_engine_snapshot *snapshot) { struct xe_guc *guc = engine_to_guc(e); struct xe_device *xe = guc_to_xe(guc); struct iosys_map map = xe_lrc_parallel_map(e->lrc); int i; + snapshot->guc.wqi_head = e->guc->wqi_head; + snapshot->guc.wqi_tail = e->guc->wqi_tail; + snapshot->parallel.wq_desc.head = parallel_read(xe, map, wq_desc.head); + snapshot->parallel.wq_desc.tail = parallel_read(xe, map, wq_desc.tail); + snapshot->parallel.wq_desc.status = parallel_read(xe, map, + wq_desc.wq_status); + + if (snapshot->parallel.wq_desc.head != + snapshot->parallel.wq_desc.tail) { + for (i = snapshot->parallel.wq_desc.head; + i != snapshot->parallel.wq_desc.tail; + i = (i + sizeof(u32)) % WQ_SIZE) + snapshot->parallel.wq[i / sizeof(u32)] = + parallel_read(xe, map, wq[i / sizeof(u32)]); + } +} + +static void +guc_engine_wq_snapshot_print(struct xe_guc_submit_engine_snapshot *snapshot, + struct drm_printer *p) +{ + int i; + drm_printf(p, "\tWQ head: %u (internal), %d (memory)\n", - e->guc->wqi_head, parallel_read(xe, map, wq_desc.head)); + snapshot->guc.wqi_head, snapshot->parallel.wq_desc.head); drm_printf(p, "\tWQ tail: %u (internal), %d (memory)\n", - e->guc->wqi_tail, parallel_read(xe, map, wq_desc.tail)); - drm_printf(p, "\tWQ status: %u\n", - parallel_read(xe, map, wq_desc.wq_status)); - if (parallel_read(xe, map, wq_desc.head) != - parallel_read(xe, map, wq_desc.tail)) { - for (i = parallel_read(xe, map, wq_desc.head); - i != parallel_read(xe, map, wq_desc.tail); + snapshot->guc.wqi_tail, snapshot->parallel.wq_desc.tail); + drm_printf(p, "\tWQ status: %u\n", snapshot->parallel.wq_desc.status); + + if (snapshot->parallel.wq_desc.head != + snapshot->parallel.wq_desc.tail) { + for (i = snapshot->parallel.wq_desc.head; + i != snapshot->parallel.wq_desc.tail; i = (i + sizeof(u32)) % WQ_SIZE) drm_printf(p, "\tWQ[%zu]: 0x%08x\n", i / sizeof(u32), - parallel_read(xe, map, wq[i / sizeof(u32)])); + snapshot->parallel.wq[i / sizeof(u32)]); } } -static void guc_engine_print(struct xe_engine *e, struct drm_printer *p) +/** + * xe_guc_engine_snapshot_capture - Take a quick snapshot of the GuC Engine. + * @e: Xe Engine. + * + * This can be printed out in a later stage like during dev_coredump + * analysis. + * + * Returns: a GuC Submit Engine snapshot object that must be freed by the + * caller, using `xe_guc_engine_snapshot_free`. + */ +struct xe_guc_submit_engine_snapshot * +xe_guc_engine_snapshot_capture(struct xe_engine *e) { struct drm_gpu_scheduler *sched = &e->guc->sched; struct xe_sched_job *job; + struct xe_guc_submit_engine_snapshot *snapshot; int i; - drm_printf(p, "\nGuC ID: %d\n", e->guc->id); - drm_printf(p, "\tName: %s\n", e->name); - drm_printf(p, "\tClass: %d\n", e->class); - drm_printf(p, "\tLogical mask: 0x%x\n", e->logical_mask); - drm_printf(p, "\tWidth: %d\n", e->width); - drm_printf(p, "\tRef: %d\n", kref_read(&e->refcount)); - drm_printf(p, "\tTimeout: %ld (ms)\n", sched->timeout); - drm_printf(p, "\tTimeslice: %u (us)\n", e->sched_props.timeslice_us); - drm_printf(p, "\tPreempt timeout: %u (us)\n", - e->sched_props.preempt_timeout_us); + snapshot = kzalloc(sizeof(struct xe_guc_submit_engine_snapshot), + GFP_ATOMIC); + + snapshot->guc.id = e->guc->id; + memcpy(&snapshot->name, &e->name, sizeof(snapshot->name)); + snapshot->class = e->class; + snapshot->logical_mask = e->logical_mask; + snapshot->width = e->width; + snapshot->refcount = kref_read(&e->refcount); + snapshot->sched_timeout = sched->timeout; + snapshot->sched_props.timeslice_us = e->sched_props.timeslice_us; + snapshot->sched_props.preempt_timeout_us = + e->sched_props.preempt_timeout_us; + + snapshot->lrc = kmalloc_array(e->width, sizeof(struct lrc_snapshot), + GFP_ATOMIC); + for (i = 0; i < e->width; ++i ) { struct xe_lrc *lrc = e->lrc + i; + snapshot->lrc[i].context_desc = + lower_32_bits(xe_lrc_ggtt_addr(lrc)); + snapshot->lrc[i].head = xe_lrc_ring_head(lrc); + snapshot->lrc[i].tail.internal = lrc->ring.tail; + snapshot->lrc[i].tail.memory = + xe_lrc_read_ctx_reg(lrc, CTX_RING_TAIL); + snapshot->lrc[i].start_seqno = xe_lrc_start_seqno(lrc); + snapshot->lrc[i].seqno = xe_lrc_seqno(lrc); + + } + + snapshot->schedule_state = atomic_read(&e->guc->state); + snapshot->engine_flags = e->flags; + + snapshot->parallel_execution = xe_engine_is_parallel(e); + if (snapshot->parallel_execution) + guc_engine_wq_snapshot_capture(e, snapshot); + + spin_lock(&sched->job_list_lock); + snapshot->pending_list_size = list_count_nodes(&sched->pending_list); + snapshot->pending_list = kmalloc_array(snapshot->pending_list_size, + sizeof(struct pending_list_snapshot), + GFP_ATOMIC); + i = 0; + list_for_each_entry(job, &sched->pending_list, drm.list) { + snapshot->pending_list[i].seqno = xe_sched_job_seqno(job); + snapshot->pending_list[i].fence = + dma_fence_is_signaled(job->fence) ? 1 : 0; + snapshot->pending_list[i].finished = + dma_fence_is_signaled(&job->drm.s_fence->finished) + ? 1 : 0; + i++; + } + spin_unlock(&sched->job_list_lock); + + return snapshot; +} + +/** + * xe_guc_engine_snapshot_print - Print out a given GuC Engine snapshot. + * @snapshot: GuC Submit Engine snapshot object. + * @p: drm_printer where it will be printed out. + * + * This function prints out a given GuC Submit Engine snapshot object. + */ +void +xe_guc_engine_snapshot_print(struct xe_guc_submit_engine_snapshot *snapshot, + struct drm_printer *p) +{ + int i; + + drm_printf(p, "\nGuC ID: %d\n", snapshot->guc.id); + drm_printf(p, "\tName: %s\n", snapshot->name); + drm_printf(p, "\tClass: %d\n", snapshot->class); + drm_printf(p, "\tLogical mask: 0x%x\n", snapshot->logical_mask); + drm_printf(p, "\tWidth: %d\n", snapshot->width); + drm_printf(p, "\tRef: %d\n", snapshot->refcount); + drm_printf(p, "\tTimeout: %ld (ms)\n", snapshot->sched_timeout); + drm_printf(p, "\tTimeslice: %u (us)\n", + snapshot->sched_props.timeslice_us); + drm_printf(p, "\tPreempt timeout: %u (us)\n", + snapshot->sched_props.preempt_timeout_us); + + for (i = 0; i < snapshot->width; ++i ) { drm_printf(p, "\tHW Context Desc: 0x%08x\n", - lower_32_bits(xe_lrc_ggtt_addr(lrc))); + snapshot->lrc[i].context_desc); drm_printf(p, "\tLRC Head: (memory) %u\n", - xe_lrc_ring_head(lrc)); + snapshot->lrc[i].head); drm_printf(p, "\tLRC Tail: (internal) %u, (memory) %u\n", - lrc->ring.tail, - xe_lrc_read_ctx_reg(lrc, CTX_RING_TAIL)); + snapshot->lrc[i].tail.internal, + snapshot->lrc[i].tail.memory); drm_printf(p, "\tStart seqno: (memory) %d\n", - xe_lrc_start_seqno(lrc)); - drm_printf(p, "\tSeqno: (memory) %d\n", xe_lrc_seqno(lrc)); + snapshot->lrc[i].start_seqno); + drm_printf(p, "\tSeqno: (memory) %d\n", snapshot->lrc[i].seqno); } - drm_printf(p, "\tSchedule State: 0x%x\n", atomic_read(&e->guc->state)); - drm_printf(p, "\tFlags: 0x%lx\n", e->flags); - if (xe_engine_is_parallel(e)) - guc_engine_wq_print(e, p); + drm_printf(p, "\tSchedule State: 0x%x\n", snapshot->schedule_state); + drm_printf(p, "\tFlags: 0x%lx\n", snapshot->engine_flags); - spin_lock(&sched->job_list_lock); + if (snapshot->parallel_execution) + guc_engine_wq_snapshot_print(snapshot, p); - list_for_each_entry(job, &sched->pending_list, drm.list) + for(i = 0; i < snapshot->pending_list_size; i++) drm_printf(p, "\tJob: seqno=%d, fence=%d, finished=%d\n", - xe_sched_job_seqno(job), - dma_fence_is_signaled(job->fence) ? 1 : 0, - dma_fence_is_signaled(&job->drm.s_fence->finished) ? - 1 : 0); - spin_unlock(&sched->job_list_lock); + snapshot->pending_list[i].seqno, + snapshot->pending_list[i].fence, + snapshot->pending_list[i].finished); +} + +/** + * xe_guc_engine_snapshot_free - Free all allocated objects for a given + * snapshot. + * @snapshot: GuC Submit Engine snapshot object. + * + * This function free all the memory that needed to be allocated at capture + * time. + */ +void xe_guc_engine_snapshot_free(struct xe_guc_submit_engine_snapshot *snapshot) +{ + kfree(snapshot->lrc); + kfree(snapshot->pending_list); + kfree(snapshot); +} + +static void guc_engine_print(struct xe_engine *e, struct drm_printer *p) +{ + struct xe_guc_submit_engine_snapshot *snapshot; + + snapshot = xe_guc_engine_snapshot_capture(e); + xe_guc_engine_snapshot_print(snapshot, p); + xe_guc_engine_snapshot_free(snapshot); } +/** + * xe_guc_submit_print - GuC Submit Print. + * @guc: GuC. + * @p: drm_printer where it will be printed out. + * + * This function capture and prints snapshots of **all** GuC Engines. + */ void xe_guc_submit_print(struct xe_guc *guc, struct drm_printer *p) { struct xe_engine *e; diff --git a/drivers/gpu/drm/xe/xe_guc_submit.h b/drivers/gpu/drm/xe/xe_guc_submit.h index 8002734d6f24..4153c2d22013 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.h +++ b/drivers/gpu/drm/xe/xe_guc_submit.h @@ -13,7 +13,6 @@ struct xe_engine; struct xe_guc; int xe_guc_submit_init(struct xe_guc *guc); -void xe_guc_submit_print(struct xe_guc *guc, struct drm_printer *p); int xe_guc_submit_reset_prepare(struct xe_guc *guc); void xe_guc_submit_reset_wait(struct xe_guc *guc); @@ -27,4 +26,13 @@ int xe_guc_engine_memory_cat_error_handler(struct xe_guc *guc, u32 *msg, u32 len); int xe_guc_engine_reset_failure_handler(struct xe_guc *guc, u32 *msg, u32 len); +struct xe_guc_submit_engine_snapshot * +xe_guc_engine_snapshot_capture(struct xe_engine *e); +void +xe_guc_engine_snapshot_print(struct xe_guc_submit_engine_snapshot *snapshot, + struct drm_printer *p); +void +xe_guc_engine_snapshot_free(struct xe_guc_submit_engine_snapshot *snapshot); +void xe_guc_submit_print(struct xe_guc *guc, struct drm_printer *p); + #endif diff --git a/drivers/gpu/drm/xe/xe_guc_submit_types.h b/drivers/gpu/drm/xe/xe_guc_submit_types.h index d369ea0bad60..0b726609dc14 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit_types.h +++ b/drivers/gpu/drm/xe/xe_guc_submit_types.h @@ -61,4 +61,95 @@ struct guc_submit_parallel_scratch { u32 wq[WQ_SIZE / sizeof(u32)]; }; +struct lrc_snapshot { + u32 context_desc; + u32 head; + struct { + u32 internal; + u32 memory; + } tail; + u32 start_seqno; + u32 seqno; +}; + +struct pending_list_snapshot { + u32 seqno; + bool fence; + bool finished; +}; + +/** + * struct xe_guc_submit_engine_snapshot - Snapshot for devcoredump + */ +struct xe_guc_submit_engine_snapshot { + /** @name: name of this engine */ + char name[MAX_FENCE_NAME_LEN]; + /** @class: class of this engine */ + enum xe_engine_class class; + /** + * @logical_mask: logical mask of where job submitted to engine can run + */ + u32 logical_mask; + /** @width: width (number BB submitted per exec) of this engine */ + u16 width; + /** @refcount: ref count of this engine */ + u32 refcount; + /** + * @sched_timeout: the time after which a job is removed from the + * scheduler. + */ + long sched_timeout; + + /** @sched_props: scheduling properties */ + struct { + /** @timeslice_us: timeslice period in micro-seconds */ + u32 timeslice_us; + /** @preempt_timeout_us: preemption timeout in micro-seconds */ + u32 preempt_timeout_us; + } sched_props; + + /** @lrc: LRC Snapshot */ + struct lrc_snapshot *lrc; + + /** @schedule_state: Schedule State at the moment of Crash */ + u32 schedule_state; + /** @engine_flags: Flags of the faulty engine */ + unsigned long engine_flags; + + /** @guc: GuC Engine Snapshot */ + struct { + /** @wqi_head: work queue item head */ + u32 wqi_head; + /** @wqi_tail: work queue item tail */ + u32 wqi_tail; + /** @id: GuC id for this xe_engine */ + u16 id; + } guc; + + /** + * @parallel_execution: Indication if the failure was during parallel + * execution + */ + bool parallel_execution; + /** @parallel: snapshot of the useful parallel scratch */ + struct { + /** @wq_desc: Workqueue description */ + struct { + /** @head: Workqueue Head */ + u32 head; + /** @tail: Workqueue Tail */ + u32 tail; + /** @status: Workqueue Status */ + u32 status; + } wq_desc; + /** @wq: Workqueue Items */ + u32 wq[WQ_SIZE / sizeof(u32)]; + } parallel; + + /** @pending_list_size: Size of the pending list snapshot array */ + int pending_list_size; + /** @pending_list: snapshot of the pending list info */ + struct pending_list_snapshot *pending_list; +}; + #endif From patchwork Wed Apr 26 20:57:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224944 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 25D7CC7EE23 for ; Wed, 26 Apr 2023 20:58:06 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1666110EA32; Wed, 26 Apr 2023 20:58:05 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1161210E1FD; Wed, 26 Apr 2023 20:57:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542679; x=1714078679; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=ZMwmbviybjc8wmkpoL7hmf4i9Gf/cztUam8fqFGFqTk=; b=fN1vLtr8jbfjDCZIgCjj/fi0ORgfGymb/RpLOu7kUsZCHpP8MpqUxmXy FZl67QGdbY9FNrea0PYcgAQTxsKWZaOcnnxhhdOizaeDdAXMI8QjKtkVG VOD1hUXu1qeZ+kV/mMEbtiQT/ih9jNFb4pCmhqayyC2ytnCV3qlcdxscJ CxqbJExTwitnm7Q4w958AXmml9WDc4mkkRP7CbNz5I/OOP/L/BKYzfsKt wZ44W+CuRfm7SQctPEBMF6i6FwjdJib2YmRi9IhrURnhX9mqLU5YSnu6p /39gWq4VcNpbWyn4Tdqcn6YHI+MS2wpqBTRDod66p6R1J5ZJizogFCLdK g==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="375203691" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="375203691" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="688105228" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="688105228" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 26 Apr 2023 13:57:58 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:57 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:57 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:57 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.47) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F7zLPUz+yRgu8phQ9f7jbFrbQZpp5tUSIuzncsbZoJuL6rxcAg013T+zegDriaLnW+HD80rUpYB5uoPxGZ9N9mj7nFiuWhp4I3bpCCup1L1X1QgDbNqnsAEjAMnCd6WCEe1t3BhjYdwQXJ1I5fV59wzPwHzQEK9WsGAINCpso9IpRyDHC70NXBIEJd9ZWsUNpi9X61gQO1v4578Fy/U+IEy58hg2M7cLTUTNJzM/ANsoaqEOQ5laUZkTex6rV7w/UiTETIE9KczzAw0ZwRjItzM3DNR1CiDGbcOMCgOCEics3ki0Vc69fZTBtRboVizL2MNv2hkR1jk+OlLXpUbzkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MGFDCgxRF56vNjOom4nZdt0e97JmY/lRYbx+II7PMlg=; b=cqSpD/0LIBW2MaN3GmN73Qz2vRaGu9qVJOSt7AdNX6DSIoLRUFqIfllg145L3der+VLUKmuaBq+ncIU3n1+sNawqpq4ZNBj658sCp5fLaNVkqDXpe+1UZGbrbRlIt36lf5yLHA+oX6V0iiUevGbsNP49E7v4Iy43Xu0crjifSfx3lIyFHZyMOcsVnHafubZ3x4ymmOZ0WVVAAKAk73CVVkX7ilioM/KNx/V6JXlyFFpLBZ/bAdW4lgIE1DRPSwNyYoiZTLmQlvogG9A8LPwTuky/Y1gTpDkY/+LOidU7mMPi3G1b9QdL+GoNuEtxMmXeupKtHoZm3TYQ2Mv+19LKlw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.34; Wed, 26 Apr 2023 20:57:53 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:53 +0000 From: Rodrigo Vivi To: Subject: [PATCH 09/14] drm/xe: Add GuC Submit Engine snapshot to xe_devcoredump. Date: Wed, 26 Apr 2023 16:57:08 -0400 Message-ID: <20230426205713.512695-10-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: BY5PR03CA0001.namprd03.prod.outlook.com (2603:10b6:a03:1e0::11) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: 6cb941d0-6bda-4db1-b6fd-08db4698e710 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8R4NO0FHH9KMdPDOfgZiZ2R/VnzPptQLVS2np56yfRqDrJ+ptO05ma3+yzK87TuYwZhbDs4Sbp0bnsQeUiXkYsIBQhQksomMrInnuhN23iFobOGSE0ntRVDUebtOr0wtXR96ze8r0jOexCiMHy7QtCxr/CPydWLlZ3mlR2yrBYP9R8MwpMoU16sQtP3lfH2bqU3GldhlfISZMjZwLLzGizbVpkTRF9UROzX4otTk+023tBKtFdVgr9Ac5nVOpyjLi0NLT5eZ2F0ttVa60d7jNFa2yr0qb/OJxZGiO4fpcZs52//BTjJzzJE/5R/DT317MsiLeIHbAKi0Mb+vz/J/a6BavgCgO6UAyR/5Qoax7epNxHBBmIlpUd7hxRHF9qmuCvIP9qYT2i2d3ly/vm7QGw7jk30J1QeE0hGP1gUaUNjkAgqx5tS4N6GrZr8FYZpgxmXB/Y6eQLHwJu2CZsRBam88qRdZX2D2Tti09Ex4/33WDObQRHgdgcZ9f3eWOq4tcBV0sNl3kMWlCtokxmSt81+PlUCoCzMAZ76UT8xPdX8BxeLPVo4htlqDvM0UiIvw X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(83380400001)(450100002)(107886003)(478600001)(2616005)(1076003)(6506007)(26005)(186003)(6512007)(6486002)(5660300002)(44832011)(36756003)(82960400001)(66946007)(2906002)(38100700002)(41300700001)(86362001)(66556008)(66476007)(4326008)(6916009)(8676002)(8936002)(316002)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: VM+QZ/ppJ87iqgYVtJIyp24yfKv7ZIIiBFtRUMKeFIHCueSdNI6AYIB/ygQger/YkuKoGNE2RvBjvrRJBGf07Lq37q0KLI+83oaZDChTly0PKDyO94J9XUDFzURmNJp7JJVTk8dB+rF2/sarfxvYfmHnWUejW5g/Dop1kuHqw0jdr9yhA5Nqye/F10iySFpN7w5PvGOi3rUjQ3dQVWVrsspEDcuo1vUzkv7NDcMtt4zkK6qwUkMiBdSVWhv68VWERFG3Q182DPJxeCO1qSxutvWYUU/T/PHsh6PQk4nvH72zDUKeefJxz6WkKuKiJcOfQePmoLIUBXlwCV51Wyn0loH9wPgpJEl1d+wJ3DtzKEyIj9eUAXdKchJeUs6uBYHeQp7Vw+kLFVmAMMbaeugixm+sisFT896Do+WSbdtiFUp0cXNmauv+QFCIOAo1Tz3CUlDCti+MSG5Z69SJdbat2nO6Rc/y1tz57CqXmwFedEQCGvdOk+bE6KGBapfB8ZekkNdOU4OrEqek2OGMZcSNR6GHEWifeFMxeJj503sXtXh0qG7Bgb8Z0yLPCbkgMj3v81bAXY2QB1wRiIq/0XQMH7liyu7MMnJyn1KKKaEM5sD2gexOK7uuF9tH5duF2UXumZA/IBj7ekEDxrHZc1vJxauYcrhBGU5CctYvbgE8V6kNnKuk1C3mqwzgYPwaUfdKb+RDgTMRQdygOrKqcdOL34r2xNxIdqu+SrxVizZUhhHokGanKEIv7vtbU7YHn6ATncyyZr8b1EC7UmTU/F5CLZlFl4JFN5e/O3o2YrQXycLngVmCbKckOQOeucX+hLR+8WnEHp6uEYrTSU1jqybVMcIGcUTQlIpIDXdEO7N/GFpnipGGkHCIStKfaso8YimsX5hA4g918jpbV48+berfE5lWfWIsZQOW2MUO0bqt72tzr4e/TvYL3vEV6t0dnhfqcASTDMRzUvBNR5zm7PP4WSW+z43Tw5awJzYjPGXMiqQt116Ks8NG0xrEtg3FUT7muuj1erqgMF/kmrG9GlFtf5LzEhRJXR5NBVLY0SUrc6hSVmtFpWzBNdrCkRydxREUVHp50oBcoDnu6PeUZzepvUjH4KIkSnd43ZHL+Vdca/hAlH7a/jdMHF2eBUeqdqJDhWm7v0eKi1qmTz6Kii/W2Sq/NpVoYgaqJay1ffjyYIgUPKmlnt50NuGXK/ZTZsodS4tsicca/T1nquksGrq7EwCu+xOKXFwx/XKjHNrKwNNXor0QabO3Bs5JLz6DdBML0sVJ1F1CmDR1ZkeD+jbb8qtmdwW5pDXTUyABCNCq+ybm2owvJjbMxk67kMinAewzWB64SdeAVIJlBh/eu1tEbcU6Py/BBy8rfF1J4x1rla1hrbKh2apANOUfK86jqN+OvV52aUyHJMRjsK1m5DOoh/eK6x2bVxOcescTa9ttxXAo+Eoz5inLEajGzCQWQmtpdfExz7/bKzYPxGe84ty9A0cQTu7+CdbvNM3mmjzZaBObahLJ73QdW/Whu6ucrLFW+wSYPE8GLfSKs5EWSVLw4PK1tKgxFOVukz/A2A5cQ6unEkevYYhfda3o/7vQ0hDZXDZT6wMx+F/ajcRkQXK8cw== X-MS-Exchange-CrossTenant-Network-Message-Id: 6cb941d0-6bda-4db1-b6fd-08db4698e710 X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:53.2526 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IrQ2R2blIscY71Uvnr9JpzjUkxC4MTOdF2Qv2w8XX7+riqL3OC4Xub2G8TPh3RvuISKxtH1OTTfl3lPw6TFDkA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Let's start to move our existent logs to devcoredump one by one. Any format change should come on follow-up work. Signed-off-by: Rodrigo Vivi Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_devcoredump.c | 7 ++++++- drivers/gpu/drm/xe/xe_devcoredump_types.h | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c index 795581c58d90..0e7ec654a9f2 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump.c +++ b/drivers/gpu/drm/xe/xe_devcoredump.c @@ -12,6 +12,7 @@ #include "xe_engine.h" #include "xe_gt.h" #include "xe_guc_ct.h" +#include "xe_guc_submit.h" /** * DOC: Xe device coredump @@ -89,6 +90,7 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, drm_printf(&p, "\n**** GuC CT ****\n"); xe_guc_ct_snapshot_print(coredump->snapshot.ct, &p); + xe_guc_engine_snapshot_print(coredump->snapshot.ge, &p); mutex_unlock(&coredump->lock); @@ -106,6 +108,7 @@ static void xe_devcoredump_free(void *data) mutex_lock(&coredump->lock); xe_guc_ct_snapshot_free(coredump->snapshot.ct); + xe_guc_engine_snapshot_free(coredump->snapshot.ge); coredump->faulty_engine = NULL; drm_info(&coredump_to_xe(coredump)->drm, @@ -117,13 +120,15 @@ static void xe_devcoredump_free(void *data) static void devcoredump_snapshot(struct xe_devcoredump *coredump) { struct xe_devcoredump_snapshot *ss = &coredump->snapshot; - struct xe_guc *guc = engine_to_guc(coredump->faulty_engine); + struct xe_engine *e = coredump->faulty_engine; + struct xe_guc *guc = engine_to_guc(e); lockdep_assert_held(&coredump->lock); ss->snapshot_time = ktime_get_real(); ss->boot_time = ktime_get_boottime(); coredump->snapshot.ct = xe_guc_ct_snapshot_capture(&guc->ct); + coredump->snapshot.ge = xe_guc_engine_snapshot_capture(e); } /** diff --git a/drivers/gpu/drm/xe/xe_devcoredump_types.h b/drivers/gpu/drm/xe/xe_devcoredump_types.h index 1e44d5346364..e055b266af70 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump_types.h +++ b/drivers/gpu/drm/xe/xe_devcoredump_types.h @@ -27,6 +27,8 @@ struct xe_devcoredump_snapshot { /* GuC snapshots */ /** @ct_snapshot: GuC CT snapshot */ struct xe_guc_ct_snapshot *ct; + /** @ge: Guc Engine snapshot */ + struct xe_guc_submit_engine_snapshot *ge; }; /** From patchwork Wed Apr 26 20:57:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224943 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 C1E78C77B7F for ; Wed, 26 Apr 2023 20:58:04 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 03C7810EA2B; Wed, 26 Apr 2023 20:58:04 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id BDDD410EA29; Wed, 26 Apr 2023 20:58:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542680; x=1714078680; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=QanyT/V+pEzk6badVSca0N+rzQTBnXQbm6iEqrMGTEU=; b=SZZlNZwgNAJE0rnz7VNB6NGUMuE42Go9pBPPWYcdglblRHzjtQ+edgOC RrJUjqP+9KSpibYJI3Mc3Yc/fMWgo+tH3To1b/DiZ+r4ofDDEdBlq2l2O BGxGO2POX6v4zjaAHs6uE+RYOSHzHSbm+ZF6juEOupC7i1QcgNT/7SMY+ 6v/s51N6N8G8Dpx79JakrCIQmodPbXYBQRvHEktT+pB6uXVe+ynN06y10 ayTt21yvx71wnx+XhXVROWAHoPA1Akdf5ndM9H1sUcdheq6vYGcpUMBRd Y+BZI++4B9Sh/ejp/DFPHACO5IVEjem52a4HMyClShTh6tLb9ctWPPvpE w==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="336158364" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="336158364" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:57:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="838081090" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="838081090" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga001.fm.intel.com with ESMTP; 26 Apr 2023 13:57:59 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:59 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:58 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:57:58 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.45) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:57:58 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QtZj8dAl+fnDGmWkUryIUAL1TYn8/HjnmR+Acvsm30vZz7u4hTwjHEeAqFv1Xful6YmQyYPzXXwjdXxw/dQDSBvvHm2+PG0xDx5UGFzuqDGkRcd2EWA+z0z2bmNDDGISORuCHxYBOZBiARgFdnkrAbWQ+XSRjsuDrIRFWWu+8MlYzc9sj0KrbnUKsg8yw5vkE2vcWK5hVJot70eJZf7w5pcwgmJmDRzGTzBRrajqWr6R+riysTwY/Wju2boS9XQcdD4hnV0MGI2EVprh2MvSL39r9QBpsBryT3N5NAVPtaHddIpG/KgATlVluTLcVw9rCX+zEyiFZeCjgS2fwW8pGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1bdkP6fgym5olj+TOS/vN2swGMIOzQRv0q5J+2bQykc=; b=iquC1GPIjHqk8YXJg6MhqeLtCFs68xCDUs8qntkpkEQuz808Xdm+Z4FyCM9cf0mRKMU7uZ/JVszv04Mo6G29Q25CpL4jqceE85qyeqeEXqDXS/8TBYw54/6iGidCwXXsOkLphmBgdtlio806cS7OE+ORl0hRjgTnnq0SGWcHuO4/4Evv1/CLSWIGxXJbAvFpOdoA+Rk1FsW+R0cb11q8Mrw4p5AGsYmtIVLrGEErDes7p+K3e7zjlyboGqiivGUcNuC/wlQ0RTSIKrRZa6nFh9Dut2fTL2dLYmNk2WITrMcmVYIG3uzCif7Qs4epcWqxF+vvThU31rBAm+6LV0q9Fg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.34; Wed, 26 Apr 2023 20:57:56 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:57:56 +0000 From: Rodrigo Vivi To: Subject: [PATCH 10/14] drm/xe: Convert Xe HW Engine print to snapshot capture and print. Date: Wed, 26 Apr 2023 16:57:09 -0400 Message-ID: <20230426205713.512695-11-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: BY5PR17CA0053.namprd17.prod.outlook.com (2603:10b6:a03:167::30) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: 463c0165-35ee-4168-e627-08db4698e940 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u/w3h992pXKvvux6EfFRzrqZWypmh2B+K9F5dh+GnMqdkzlhdu0xKjoD7991/9CoHUw147T/aOrMIQupQdLJH8a9ZXB///OnSI1lLPVJXMstjp/8fddobhiF9kAB/0BTasZpeM37fsXZyrlRpEmLzcrVeW+sJSLCdn2yzgnY0dSL0v+DWFarVfn/9Et9OXMFm7rdtHdYoAg4VlGXQXqFj3ITM2KqsPFRmXLre7o0DisdRiFeL5q+JYSDHunsCwE34wkit8rDtaKfjZmrI7/qwNtPMWmWlo+6S3hn4o3AQ4Eh7X1vJTzXVWK1nNYLHNYZ+TA5gcJZqr506BGne6J7//hofpDRYCsrrXafEqY04f0sTzlGBNi/hmNhppRvqNPIMSvZF50n6Ab8fKONNxUlY+6MxyveqFLETFlw82UvePWGKTjNNAu4j+rpT5GTNrKZvzZJmHqO3sTog7mU2EDlmWfowArTkzuQh0jfP+h8wACTxX8n/JRKAhaVnnsrucwL1A54SIxCQH63jghuoHnkwafBiu3dFG+yRhRz0CeOPZ9PnYvCXTeJ7AncfS2Qr15j X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(83380400001)(450100002)(107886003)(478600001)(2616005)(1076003)(6506007)(26005)(186003)(6512007)(6486002)(30864003)(5660300002)(44832011)(36756003)(82960400001)(66946007)(2906002)(38100700002)(41300700001)(86362001)(66556008)(66476007)(4326008)(6916009)(8676002)(8936002)(316002)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4qdlmDDShp6YiK5svhxGoXympZGcRXsTgIFSRjZmrU7qZmi4s4fSNypIWo/OnYt6k7vjJe21+irnKHeBdtMCZSkOYa2D8p0F8O8iY69GpXOFx/0caPeWOiiQ4qRd2AV7Bdv4x8+alUr1N/y8cBaL3wVXl3irauWW1u2FoyCkgcgy+DyMA2C1IcgrdYSITtA93EGQqzLQ5lqd1x07SCvpP7zPEEo0fEPBQRH3/Mx9hFR0gC1fZfmZ8X7ncfsEMeM4Ahif8WiDbsDoLgKx298Qjw75zcnb0v7jhYD+JZC/Hxq3a5Q4D7PglYkCjqK0MnYHBwjPKtJg+ATtlkDd2yJ6A4kDJGtAI1nuErdF27CH7xKaMF+OHwX7ubxZlD3noM82xo+3K+fFstEEav3Ewol0M6ESOQyqz9GBAhlrhH83P8ZqDDAFObiZyT/6UeUar4KybOyJw7W79ISmy5+9Ee/ZwkKMHsMgzCTQlIHS99kOS1UY770WsnmAZpp8CwfY2Z2efwBFj0kB/Q5cssFTzFP+N6f7sdyfjXEy6LwiCq3kTJHegRAKxcGQ7/mn473R4zhLhFclyx1vUq63pyz0XE5CvG4XtyZlPnfHBaFtu48MNQ+qhcGFe//eX5r+Lj0pubLXc+jmewEtiU1PKj9MVrxlLTN0lExVwEETxSo3B56jQ99mS3IZLj1lYNmJw0Fe/FeOzM9huRkDFzcqAKvO4cOzpmWFC+WpoXQ7ZDUHqCv4P/JmBHJewTWehiOZKa5gp0Z37wbRErRQqIsZ7vdRYw/fIyEYijaz3UlMiCQPUuJTUG9oUpdaSUMmkqZlac15lFvcSG4g8O3UqcUIF883ubX4o8m+GemG/OLnnUKqsSknJdiYM+71u7kFj2qfaY1TzVPQ0RL+9/qY9DGEyXv7X10htZysItC8nqcZafNEO9nYF+hdAaEP0XpyyqGcOp/h34wEiq4gQnh/6c6qwafwvfJehOSi3DrYDcGbClpne9TilomQE8ai/KIOSJ2gasw0vWSq39wqbCtXO5eH+S4w3oh3/yY6V6hqLDlPGWIvszK4U3MGOyWhTpE8+ZjqdHAb2L+DwLjylILLfFfwfDqxfFE47CK9SJlsXsq0JumYbHSbjzHrpG+A0EMR3CH3pJ2xk2LmMQEp7tsxjJiGP10SiTlpVyDRi0d/Li+KEBdpls6Pco3uNk2ZMlvf4UPEmxd5Px8b/4ZmRm8z6wJLia32sm4W6iyxO3K39sOH7zMFptUsScatOLUqNv/Ni+DuQJrKk8+1Uq/D0vNIbRtK+w4JoZayEY4b+dksFFsanI2fxhUqxd2PV1Z+CH0mZtFPBeufT88LYZz2V4ITFhGSE44QbIBGIqq8t+7OSVGX+LQjek3sY3OA64FfJPCRWusAhBtjKeWBZ3CHw+5lFbz0Tv2lEr/nX2coaE6SCloWgZa5t8SYhd6/ZpJ/CgYG+xe+IbcXmoyDmmABoau+y9vDbfK++Vex6Pz2IyGXnwajrXbxZfvbFV39zQI6j2seHfqq4jdfKqnnfuDqpbWSsFConO+cAHUddcUQs1/RpUeqB44kw90xzJ9SF0jJhqGfR0NzJC3N8ER22MztmiFtOUAD0XLyQSIHcQ== X-MS-Exchange-CrossTenant-Network-Message-Id: 463c0165-35ee-4168-e627-08db4698e940 X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:57:56.8485 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kNpViTjx7GOFUdNSMcjfp5tfTi/yhPV1CXoXUlRmlK/GGae+uqqKrSkPkLzTe3XkhpvAgFzm38UuxhAkQAcubQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The goal is to allow for a snapshot capture to be taken at the time of the crash, while the print out can happen at a later time through the exposed devcoredump virtual device. Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/xe/xe_gt_debugfs.c | 2 +- drivers/gpu/drm/xe/xe_guc_submit.c | 2 +- drivers/gpu/drm/xe/xe_hw_engine.c | 210 +++++++++++++++++------- drivers/gpu/drm/xe/xe_hw_engine.h | 8 +- drivers/gpu/drm/xe/xe_hw_engine_types.h | 78 +++++++++ 5 files changed, 241 insertions(+), 59 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_gt_debugfs.c b/drivers/gpu/drm/xe/xe_gt_debugfs.c index c45486c2015a..8bf441e850a0 100644 --- a/drivers/gpu/drm/xe/xe_gt_debugfs.c +++ b/drivers/gpu/drm/xe/xe_gt_debugfs.c @@ -42,7 +42,7 @@ static int hw_engines(struct seq_file *m, void *data) } for_each_hw_engine(hwe, gt, id) - xe_hw_engine_print_state(hwe, &p); + xe_hw_engine_print(hwe, &p); xe_device_mem_access_put(xe); err = xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL); diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c index 9c06411f857f..74659d0a69b3 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.c +++ b/drivers/gpu/drm/xe/xe_guc_submit.c @@ -751,7 +751,7 @@ static void simple_error_capture(struct xe_engine *e) if (hwe->class != e->hwe->class || !(BIT(hwe->logical_instance) & adj_logical_mask)) continue; - xe_hw_engine_print_state(hwe, &p); + xe_hw_engine_print(hwe, &p); } xe_analyze_vm(&p, e->vm, e->gt->info.id); xe_force_wake_put(gt_to_fw(guc_to_gt(guc)), XE_FORCEWAKE_ALL); diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c index 23b9f120c258..eda0666bfa2f 100644 --- a/drivers/gpu/drm/xe/xe_hw_engine.c +++ b/drivers/gpu/drm/xe/xe_hw_engine.c @@ -505,77 +505,175 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec) xe_hw_fence_irq_run(hwe->fence_irq); } -void xe_hw_engine_print_state(struct xe_hw_engine *hwe, struct drm_printer *p) +/** + * xe_hw_engine_snapshot_capture - Take a quick snapshot of the HW Engine. + * @hwe: Xe HW Engine. + * + * This can be printed out in a later stage like during dev_coredump + * analysis. + * + * Returns: a Xe HW Engine snapshot object that must be freed by the + * caller, using `xe_hw_engine_snapshot_free`. + */ +struct xe_hw_engine_snapshot * +xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe) { + struct xe_hw_engine_snapshot *snapshot; + int len; + if (!xe_hw_engine_is_valid(hwe)) - return; + return NULL; + + snapshot = kzalloc(sizeof(struct xe_hw_engine_snapshot), GFP_ATOMIC); + + len = strlen(hwe->name) + 1; + snapshot->name = kzalloc(len, GFP_ATOMIC); + strscpy(snapshot->name, hwe->name, len); + snapshot->class = hwe->class; + snapshot->logical_instance = hwe->logical_instance; + snapshot->forcewake.domain = hwe->domain; + snapshot->forcewake.ref = xe_force_wake_ref(gt_to_fw(hwe->gt), + hwe->domain); + snapshot->mmio_base = hwe->mmio_base; + + snapshot->reg.ring_hwstam = hw_engine_mmio_read32(hwe, + RING_HWSTAM(0).reg); + snapshot->reg.ring_hws_pga = hw_engine_mmio_read32(hwe, + RING_HWS_PGA(0).reg); + snapshot->reg.ring_execlist_status_lo = + hw_engine_mmio_read32(hwe, RING_EXECLIST_STATUS_LO(0).reg); + snapshot->reg.ring_execlist_status_hi = + hw_engine_mmio_read32(hwe, RING_EXECLIST_STATUS_HI(0).reg); + snapshot->reg.ring_execlist_sq_contents_lo = + hw_engine_mmio_read32(hwe, + RING_EXECLIST_SQ_CONTENTS_LO(0).reg); + snapshot->reg.ring_execlist_sq_contents_hi = + hw_engine_mmio_read32(hwe, + RING_EXECLIST_SQ_CONTENTS_HI(0).reg); + snapshot->reg.ring_execlist_control = + hw_engine_mmio_read32(hwe, RING_EXECLIST_CONTROL(0).reg); + snapshot->reg.ring_start = hw_engine_mmio_read32(hwe, + RING_START(0).reg); + snapshot->reg.ring_head = + hw_engine_mmio_read32(hwe, RING_HEAD(0).reg) & HEAD_ADDR; + snapshot->reg.ring_tail = + hw_engine_mmio_read32(hwe, RING_TAIL(0).reg) & TAIL_ADDR; + snapshot->reg.ring_ctl = hw_engine_mmio_read32(hwe, RING_CTL(0).reg); + snapshot->reg.ring_mi_mode = + hw_engine_mmio_read32(hwe, RING_MI_MODE(0).reg); + snapshot->reg.ring_mode_gen7 = + hw_engine_mmio_read32(hwe, RING_MODE_GEN7(0).reg); + snapshot->reg.ring_imr = hw_engine_mmio_read32(hwe, RING_IMR(0).reg); + snapshot->reg.ring_esr = hw_engine_mmio_read32(hwe, RING_ESR(0).reg); + snapshot->reg.ring_emr = hw_engine_mmio_read32(hwe, RING_EMR(0).reg); + snapshot->reg.ring_eir = hw_engine_mmio_read32(hwe, RING_EIR(0).reg); + snapshot->reg.ring_acthd_udw = + hw_engine_mmio_read32(hwe, RING_ACTHD_UDW(0).reg); + snapshot->reg.ring_acthd = hw_engine_mmio_read32(hwe, + RING_ACTHD(0).reg); + snapshot->reg.ring_bbaddr_udw = + hw_engine_mmio_read32(hwe, RING_BBADDR_UDW(0).reg); + snapshot->reg.ring_bbaddr = hw_engine_mmio_read32(hwe, RING_BBADDR(0).reg); + snapshot->reg.ring_dma_fadd_udw = + hw_engine_mmio_read32(hwe, RING_DMA_FADD_UDW(0).reg), + snapshot->reg.ring_dma_fadd = + hw_engine_mmio_read32(hwe, RING_DMA_FADD(0).reg); + snapshot->reg.ipeir = hw_engine_mmio_read32(hwe, IPEIR(0).reg); + snapshot->reg.ipehr = hw_engine_mmio_read32(hwe, IPEHR(0).reg); - drm_printf(p, "%s (physical), logical instance=%d\n", hwe->name, - hwe->logical_instance); - drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n", - hwe->domain, - xe_force_wake_ref(gt_to_fw(hwe->gt), hwe->domain)); - drm_printf(p, "\tMMIO base: 0x%08x\n", hwe->mmio_base); + if (snapshot->class == XE_ENGINE_CLASS_COMPUTE) + snapshot->reg.rcu_mode = xe_mmio_read32(hwe->gt, + GEN12_RCU_MODE.reg); - drm_printf(p, "\tHWSTAM: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_HWSTAM(0).reg)); - drm_printf(p, "\tRING_HWS_PGA: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_HWS_PGA(0).reg)); + return snapshot; +} +/** + * xe_hw_engine_snapshot_print - Print out a given Xe HW Engine snapshot. + * @snapshot: Xe HW Engine snapshot object. + * @p: drm_printer where it will be printed out. + * + * This function prints out a given Xe HW Engine snapshot object. + */ +void xe_hw_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, + struct drm_printer *p) +{ + if (!snapshot) + return; + + drm_printf(p, "%s (physical), logical instance=%d\n", snapshot->name, + snapshot->logical_instance); + drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n", + snapshot->forcewake.domain, snapshot->forcewake.ref); + drm_printf(p, "\tMMIO base: 0x%08x\n", snapshot->mmio_base); + drm_printf(p, "\tHWSTAM: 0x%08x\n", snapshot->reg.ring_hwstam); + drm_printf(p, "\tRING_HWS_PGA: 0x%08x\n", snapshot->reg.ring_hws_pga); drm_printf(p, "\tRING_EXECLIST_STATUS_LO: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_EXECLIST_STATUS_LO(0).reg)); + snapshot->reg.ring_execlist_status_lo); drm_printf(p, "\tRING_EXECLIST_STATUS_HI: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_EXECLIST_STATUS_HI(0).reg)); + snapshot->reg.ring_execlist_status_hi); drm_printf(p, "\tRING_EXECLIST_SQ_CONTENTS_LO: 0x%08x\n", - hw_engine_mmio_read32(hwe, - RING_EXECLIST_SQ_CONTENTS_LO(0).reg)); + snapshot->reg.ring_execlist_sq_contents_lo); drm_printf(p, "\tRING_EXECLIST_SQ_CONTENTS_HI: 0x%08x\n", - hw_engine_mmio_read32(hwe, - RING_EXECLIST_SQ_CONTENTS_HI(0).reg)); + snapshot->reg.ring_execlist_sq_contents_hi); drm_printf(p, "\tRING_EXECLIST_CONTROL: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_EXECLIST_CONTROL(0).reg)); - - drm_printf(p, "\tRING_START: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_START(0).reg)); - drm_printf(p, "\tRING_HEAD: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_HEAD(0).reg) & HEAD_ADDR); - drm_printf(p, "\tRING_TAIL: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_TAIL(0).reg) & TAIL_ADDR); - drm_printf(p, "\tRING_CTL: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_CTL(0).reg)); - drm_printf(p, "\tRING_MODE: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_MI_MODE(0).reg)); + snapshot->reg.ring_execlist_control); + drm_printf(p, "\tRING_START: 0x%08x\n", snapshot->reg.ring_start); + drm_printf(p, "\tRING_HEAD: 0x%08x\n", snapshot->reg.ring_head); + drm_printf(p, "\tRING_TAIL: 0x%08x\n", snapshot->reg.ring_tail); + drm_printf(p, "\tRING_CTL: 0x%08x\n", snapshot->reg.ring_ctl); + drm_printf(p, "\tRING_MODE: 0x%08x\n", snapshot->reg.ring_mi_mode); drm_printf(p, "\tRING_MODE_GEN7: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_MODE_GEN7(0).reg)); - - drm_printf(p, "\tRING_IMR: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_IMR(0).reg)); - drm_printf(p, "\tRING_ESR: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_ESR(0).reg)); - drm_printf(p, "\tRING_EMR: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_EMR(0).reg)); - drm_printf(p, "\tRING_EIR: 0x%08x\n", - hw_engine_mmio_read32(hwe, RING_EIR(0).reg)); - - drm_printf(p, "\tACTHD: 0x%08x_%08x\n", - hw_engine_mmio_read32(hwe, RING_ACTHD_UDW(0).reg), - hw_engine_mmio_read32(hwe, RING_ACTHD(0).reg)); - drm_printf(p, "\tBBADDR: 0x%08x_%08x\n", - hw_engine_mmio_read32(hwe, RING_BBADDR_UDW(0).reg), - hw_engine_mmio_read32(hwe, RING_BBADDR(0).reg)); + snapshot->reg.ring_mode_gen7); + drm_printf(p, "\tRING_IMR: 0x%08x\n", snapshot->reg.ring_imr); + drm_printf(p, "\tRING_ESR: 0x%08x\n", snapshot->reg.ring_esr); + drm_printf(p, "\tRING_EMR: 0x%08x\n", snapshot->reg.ring_emr); + drm_printf(p, "\tRING_EIR: 0x%08x\n", snapshot->reg.ring_eir); + drm_printf(p, "\tACTHD: 0x%08x_%08x\n", snapshot->reg.ring_acthd_udw, + snapshot->reg.ring_acthd); + drm_printf(p, "\tBBADDR: 0x%08x_%08x\n", snapshot->reg.ring_bbaddr_udw, + snapshot->reg.ring_bbaddr); drm_printf(p, "\tDMA_FADDR: 0x%08x_%08x\n", - hw_engine_mmio_read32(hwe, RING_DMA_FADD_UDW(0).reg), - hw_engine_mmio_read32(hwe, RING_DMA_FADD(0).reg)); + snapshot->reg.ring_dma_fadd_udw, + snapshot->reg.ring_dma_fadd); + drm_printf(p, "\tIPEIR: 0x%08x\n", snapshot->reg.ipeir); + drm_printf(p, "\tIPEHR: 0x%08x\n\n", snapshot->reg.ipehr); - drm_printf(p, "\tIPEIR: 0x%08x\n", - hw_engine_mmio_read32(hwe, IPEIR(0).reg)); - drm_printf(p, "\tIPEHR: 0x%08x\n\n", - hw_engine_mmio_read32(hwe, IPEHR(0).reg)); - - if (hwe->class == XE_ENGINE_CLASS_COMPUTE) + if (snapshot->class == XE_ENGINE_CLASS_COMPUTE) drm_printf(p, "\tGEN12_RCU_MODE: 0x%08x\n", - xe_mmio_read32(hwe->gt, GEN12_RCU_MODE.reg)); + snapshot->reg.rcu_mode); +} + +/** + * xe_hw_engine_snapshot_free - Free all allocated objects for a given snapshot. + * @snapshot: Xe HW Engine snapshot object. + * + * This function free all the memory that needed to be allocated at capture + * time. + */ +void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot) +{ + if (!snapshot) + return; + + kfree(snapshot->name); + kfree(snapshot); +} + +/** + * xe_hw_engine_print - Xe HW Engine Print. + * @hwe: Hardware Engine. + * @p: drm_printer. + * + * This function quickly capture a snapshot and immediately print it out. + */ +void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p) +{ + struct xe_hw_engine_snapshot *snapshot; + snapshot = xe_hw_engine_snapshot_capture(hwe); + xe_hw_engine_snapshot_print(snapshot, p); + xe_hw_engine_snapshot_free(snapshot); } u32 xe_hw_engine_mask_per_class(struct xe_gt *gt, diff --git a/drivers/gpu/drm/xe/xe_hw_engine.h b/drivers/gpu/drm/xe/xe_hw_engine.h index ceab65397256..a0514bf859c6 100644 --- a/drivers/gpu/drm/xe/xe_hw_engine.h +++ b/drivers/gpu/drm/xe/xe_hw_engine.h @@ -14,10 +14,16 @@ int xe_hw_engines_init_early(struct xe_gt *gt); int xe_hw_engines_init(struct xe_gt *gt); void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec); void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe); -void xe_hw_engine_print_state(struct xe_hw_engine *hwe, struct drm_printer *p); u32 xe_hw_engine_mask_per_class(struct xe_gt *gt, enum xe_engine_class engine_class); +struct xe_hw_engine_snapshot * +xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe); +void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot); +void xe_hw_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, + struct drm_printer *p); +void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p); + bool xe_hw_engine_is_reserved(struct xe_hw_engine *hwe); static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe) { diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h index 2c40384957da..c15d6c671fbb 100644 --- a/drivers/gpu/drm/xe/xe_hw_engine_types.h +++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h @@ -109,4 +109,82 @@ struct xe_hw_engine { enum xe_hw_engine_id engine_id; }; +/** + * struct xe_hw_engine_snapshot - Hardware engine snapshot + * + * Contains the snapshot of usefull hardware engine info and registers. + */ +struct xe_hw_engine_snapshot { + /** @name: name of the hw engine */ + char *name; + /** @class: class of this hw engine */ + enum xe_engine_class class; + /** @logical_instance: logical instance of this hw engine */ + u16 logical_instance; + /** @forcewake: Force Wake information snapshot */ + struct { + /** @domain: force wake domain of this hw engine */ + enum xe_force_wake_domains domain; + /** @ref: Forcewake ref for the above domain */ + int ref; + } forcewake; + /** @reg: Useful MMIO register snapshot */ + /** @mmio_base: MMIO base address of this hw engine*/ + u32 mmio_base; + struct { + /** @ring_hwstam: RING_HWSTAM */ + u32 ring_hwstam; + /** @ring_hws_pga: RING_HWS_PGA */ + u32 ring_hws_pga; + /** @ring_execlist_status_lo: RING_EXECLIST_STATUS_LO */ + u32 ring_execlist_status_lo; + /** @ring_execlist_status_hi: RING_EXECLIST_STATUS_HI */ + u32 ring_execlist_status_hi; + /** @ring_execlist_sq_contents_lo: RING_EXECLIST_SQ_CONTENTS */ + u32 ring_execlist_sq_contents_lo; + /** @ring_execlist_sq_contents_hi: RING_EXECLIST_SQ_CONTENTS + 4 */ + u32 ring_execlist_sq_contents_hi; + /** @ring_execlist_control: RING_EXECLIST_CONTROL */ + u32 ring_execlist_control; + /** @ring_start: RING_START */ + u32 ring_start; + /** @ring_head: RING_HEAD */ + u32 ring_head; + /** @ring_tail: RING_TAIL */ + u32 ring_tail; + /** @ring_ctl: RING_CTL */ + u32 ring_ctl; + /** @ring_mi_mode: RING_MI_MODE */ + u32 ring_mi_mode; + /** @ring_mode_gen7: RING_MODE_GEN7 */ + u32 ring_mode_gen7; + /** @ring_imr: RING_IMR */ + u32 ring_imr; + /** @ring_esr: RING_ESR */ + u32 ring_esr; + /** @ring_emr: RING_EMR */ + u32 ring_emr; + /** @ring_eir: RING_EIR */ + u32 ring_eir; + /** @ring_acthd_udw: RING_ACTHD_UDW */ + u32 ring_acthd_udw; + /** @ring_acthd: RING_ACTHD */ + u32 ring_acthd; + /** @ring_bbaddr_udw: RING_BBADDR_UDW */ + u32 ring_bbaddr_udw; + /** @ring_bbaddr: RING_BBADDR */ + u32 ring_bbaddr; + /** @ring_dma_fadd_udw: RING_DMA_FADD_UDW */ + u32 ring_dma_fadd_udw; + /** @ring_dma_fadd: RING_DMA_FADD */ + u32 ring_dma_fadd; + /** @ipeir: IPEIR */ + u32 ipeir; + /** @ipehr: IPEHR */ + u32 ipehr; + /** @rcu_mode: GEN12_RCU_MODE */ + u32 rcu_mode; + } reg; +}; + #endif From patchwork Wed Apr 26 20:57:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224947 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 62505C77B7F for ; Wed, 26 Apr 2023 20:58:27 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 20CAD10E135; Wed, 26 Apr 2023 20:58:26 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 38A2D10EA27; Wed, 26 Apr 2023 20:58:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542695; x=1714078695; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=CZ0F39L9qspctKjLyUyWLX6/ddNeNCa5WTb6XFH6CPY=; b=F8R8hJIoln/uBaa2HLEysggyxYdivlfPxPyHslHocDjxXlY89ZZMQRPU gme8TqHFYt+nbuMxh1ktzU3xKHhvzc1/LeUjVwjcZWpCjgvtrIWByYVJn 5j9hEsK54JMOp2YBCIPnDtJ6AwQWXtwak7FNKYaq87u40B+0yZEAY72tA +05nAbbn6nJBcc8WCpQsTd9BV8yG4pNQ1nVDKFzx8Wxa+uy7LIZ9ROjxx FGc4oCy7jqsw6k0vicmXLMr8A9oTkZiPZr7EzA7z3BVM3pwNO7q4lUs7c 60nJAY/QoU+mjedDeA2iQLIIV/GYQUaYCG9PKPitZumHLHh1/XOuVTumr Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="375203780" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="375203780" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:58:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="688105314" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="688105314" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 26 Apr 2023 13:58:06 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:03 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:02 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:58:02 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.40) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bV+t+44GmKKG+Z8EySQ7rHMJVOlMpUQwu+581Iwdj+EhfNIKtotyl90VXqd5z8O2E36nYKtYESD3MgFoLRhjohT9lmF9wO7NWa/+BcL6a00HROi/Nn84r99qvvJvsLtHhadP2fdADnWu9RtrncDpq0aGtFKvnVcUiB4iFBhAZXgL1hto5X6cRXwcgt7pxJnHU7q3sHkRKdiP8HAuPHi7J5bt8CcBZTaLVvY9qMuxGUSe7Q2pi8td1wn0wFICYdKDaENyc2em2Y2eCRCqDX1Rq2BQAT0QinnskG61w61lR3SivGfTH4ZiWlwQdIt6kbtuzAPvx0aGl5v3pY8R8KqorA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=t4eyZ1NSRMJdSiTRaliz7l/a1+bEQUzqnnZ351kLvJw=; b=aad6/zO0Dg7QEclKOysCS4h3zWIbTOPtEED+g4MutuA4XS49NWBCzNkqWqHkBdzxQqIHFBtjB7fqzqb1Sgg8ntlDohFhoHdntMa3v4aELhC4TStg3sebsl3TMdxQJaQBaPonDXefuKwSv1/VqouKZkmGC8qfqOJBhpSAKy0gF1iLG+p7NPhN08ZKR6KXnP+CFV3E1gDlce0uu7q0OZrq+e8Q1gcbBZtYw3SPn51wmjLZB23xzTGhjJKuKzbtl87G/SPPRkauViCE8PMgLMvkiwcKDDJl3t0wfhr5JFyGWaPNrRidt7EO7rzzwBWK9j8nRoCkRUglia/isL3Gphvpyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.34; Wed, 26 Apr 2023 20:58:01 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:58:00 +0000 From: Rodrigo Vivi To: Subject: [PATCH 11/14] drm/xe: Add HW Engine snapshot to xe_devcoredump. Date: Wed, 26 Apr 2023 16:57:10 -0400 Message-ID: <20230426205713.512695-12-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: BYAPR01CA0065.prod.exchangelabs.com (2603:10b6:a03:94::42) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: 32bee399-f1ea-49dc-4afd-08db4698ebaa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z9HyhuhPswA6LIQ4/w5AMNrBwB+yiL0bvCS19O1Lqld9AoeMhbNVudjk+ydqKbcXFImWmJH65pw2xymg8VejtRgFrVkSA1CtmAM5M8Men2JVSotyIyhf3obOUmXj9YJ2lr85VqpYaEmc1ZF+rTNi2BkAdL/ixP5q16ueHmvyGrRjqrCueqlybuqgnSNkcmCP/EpsxQ3z1ter7c88w/UQf1zMXcePpg0ktMhheWDGYgOSJxc0r34ttdM8oIOoXU5RVKp58B9/mvRzdFI91UV/ATuoHaAeT9hcLL6OoK1vSS6PYy5hBVYZLSicalzZ9Wp8vkitn6ajrquO3ZC0gBU3s+Ey1GSp5uWopyuzAU2vW7DsInJjzbA1ON3hk0BX81zN9CCEnu1+TqVgA55ntoCNs3PJhDK+qnKIVLAfIG3V/95JNYEVvDDninmC5MsrJdtTNtikh8RrVPg2qRvBh+J/Ij4Z+N5v1dowqbMybR6WV4OMDiDDfLPu7YaCG9wzy8KPw8q6DNyKIPkJJEu1S4AznpMWSBRRl34uOgsMW0PSTwCWa9R45+yZeeV4m1NUA+Py X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(83380400001)(450100002)(107886003)(478600001)(2616005)(1076003)(6506007)(26005)(186003)(6512007)(6486002)(5660300002)(44832011)(36756003)(82960400001)(66946007)(2906002)(38100700002)(41300700001)(86362001)(66556008)(66476007)(4326008)(6916009)(8676002)(8936002)(316002)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: DIan2MvQwZOu9VFsW9TEhiTD9Xss8yOw5AxW2QuIBqayfpROTpKVFbI2GLYB0FESTs6YpQehueZo1AHJZ0T+mL40upcef7TTw2K6mQQ3YKI0unKu4hKZYXxLEi1XySk5SGG8hSXzti3FbaiQh5jfWgAhnphvjnM2tf3uRjYQ9GFO5UuRinlNSSrOxwy+dCmJ6sXq5tSXKmpsbGtbDJrOlxu4U+qD3eW3uT8ik/5wGzREAoUQM5Qp1kv9VgPt5QWSxPrOwwfUceAhY65AqYcJONzOYVi6As7Q8h1vVgDwC6HWHfWePON9XoSkQ48fXKXC7Sd0x1dt6Et7OuByJhBpmMDPksJq+jgXe2QEp3z51QelbjFLlUBmIyiZMxdznR7i7pLORhH5EwJCx9KMOe54hAi8Tiw2z0hspNqd+ryveRfCCLXhpwTaLKsgDqH9H1RqdJQ2Q0039ZB3sjuU5p7vd3W6qo2VVDp2Jf/VDyi5iKAvWfCiiXwKtwRHPcWlV0b4emrD3CNqcoyFbKAtd6+YKP77Ep1yPfYp8HFUF3mKCODPz4olF/0gcGXLSG7qLY7w05kVvqTuEbr/3xBaDFcsF36VT8MwxXIs58h/cAsILD891oXCU9WzujkZ+V4IyZR17gTh6k0JIBdKzw9A31Dh5sH4BVO2zO0WLyiLvE+j31QT/JjPX11ebQ6sgyb6LCVt3dl2BG9+xj8K2hAPxOOoWds+vZDS/Ln7FQwuiLZskWwpS27C4utlAAZPiNrrNR6ZHS1ibd258ARpEZmTpxG77KIfiX52EIJM51sJAsko6jw3kn+MufCQJq6QlkNH53Z4jPbqHfP/J8Swd4mfvUpUFVmaW+UimTaLM9wlHmzISMtM0fgblf9C0HT6nPURaT3Ge1vByjnKtA+yY00SqDsO0CJ7GyARhFzhqHSKWVMCWyON0ocQd43skiVL4PR8r3Svy28tNbfx48BP3S/0MOksMRUAxXAa475/oD2+TW4HxReRpa5OV6oJZ3pG3RctPTaFkbTYONPF0Y+LVqvxHOsNB8+nKOIkY7IC2J9BaCZEWJu9HUN27mof1rzZMUlezNOsKw9deCCgvlXQ0zGRM8n+Xk420H+GgSXz9DtDaH6GMpfXsRi4BJ+6ucpCRDSLgF2TkeZL414EOH/Jx+v/XrNKlMyV48rNJX3LqmkiPkigJGUxDVxnzfiLT/s1etF074uNdR9bHbNKwi8nAYpabqMH5CKrJlX8BXncEvTENRCHf0VGTnMKX6eS8thU9HCnZC1sSSQzds/fh34J6Lk3rebiWrLwrccoqbN+I4f7ZNCh3X4v/kwq5+r9xeM5zWjLDiCOy/9EZcovx2c4+jMhdrCw+80JrGxjhIFb9XBjNzywmopsyU6DTjvuz1iv2MhjDuHcKsqhRBUFr53R3l3jkRIThFaGi9YQd0Nzcjy4iPa8r6UNmb+B017TF3foEENu1ZN67hisJOWynJm/tPQzeEjtYDSEld7hOnCOlkBO0BCotfaNdYjMu3w8C53LFuWw7SxBTnLKrT3aPWzuTtZ0459RWK+nX7wDL68JkIQlo/77tYSeoqaNaOJztJjIDfku9ZNFtDWcvFMzw+2vnyBEeeBmww== X-MS-Exchange-CrossTenant-Network-Message-Id: 32bee399-f1ea-49dc-4afd-08db4698ebaa X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:58:00.8577 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FgFzMG7If2SKTlxNmGZ57LlLA/qhhjM68Re28tKEH87z6LI0DOk+aAHtvfuqCuXZxGeGcdJAap46+LFT2k6tUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Let's continue to add our existent simple logs to devcoredump one by one. Any format change should come on follow-up work. Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/xe/xe_devcoredump.c | 45 +++++++++++++++++++++++ drivers/gpu/drm/xe/xe_devcoredump_types.h | 4 ++ 2 files changed, 49 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c index 0e7ec654a9f2..1ffd12646a99 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump.c +++ b/drivers/gpu/drm/xe/xe_devcoredump.c @@ -9,10 +9,13 @@ #include #include +#include "xe_device.h" #include "xe_engine.h" +#include "xe_force_wake.h" #include "xe_gt.h" #include "xe_guc_ct.h" #include "xe_guc_submit.h" +#include "xe_hw_engine.h" /** * DOC: Xe device coredump @@ -62,6 +65,9 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, struct drm_printer p; struct drm_print_iterator iter; struct timespec64 ts; + struct xe_engine *e; + struct xe_hw_engine *hwe; + enum xe_hw_engine_id id; /* Our device is gone already... */ if (!data || !coredump_to_xe(coredump)) @@ -75,6 +81,7 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, mutex_lock(&coredump->lock); ss = &coredump->snapshot; + e = coredump->faulty_engine; p = drm_coredump_printer(&iter); drm_printf(&p, "**** Xe Device Coredump ****\n"); @@ -92,6 +99,10 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, xe_guc_ct_snapshot_print(coredump->snapshot.ct, &p); xe_guc_engine_snapshot_print(coredump->snapshot.ge, &p); + drm_printf(&p, "\n**** HW Engines ****\n"); + for_each_hw_engine(hwe, e->gt, id) + xe_hw_engine_snapshot_print(coredump->snapshot.hwe[id], &p); + mutex_unlock(&coredump->lock); return count - iter.remain; @@ -100,6 +111,8 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, static void xe_devcoredump_free(void *data) { struct xe_devcoredump *coredump = data; + struct xe_hw_engine *hwe; + enum xe_hw_engine_id id; /* Our device is gone. Nothing to do... */ if (!data || !coredump_to_xe(coredump)) @@ -109,6 +122,8 @@ static void xe_devcoredump_free(void *data) xe_guc_ct_snapshot_free(coredump->snapshot.ct); xe_guc_engine_snapshot_free(coredump->snapshot.ge); + for_each_hw_engine(hwe, coredump->faulty_engine->gt, id) + xe_hw_engine_snapshot_free(coredump->snapshot.hwe[id]); coredump->faulty_engine = NULL; drm_info(&coredump_to_xe(coredump)->drm, @@ -122,13 +137,43 @@ static void devcoredump_snapshot(struct xe_devcoredump *coredump) struct xe_devcoredump_snapshot *ss = &coredump->snapshot; struct xe_engine *e = coredump->faulty_engine; struct xe_guc *guc = engine_to_guc(e); + struct xe_hw_engine *hwe; + enum xe_hw_engine_id id; + u32 adj_logical_mask = e->logical_mask; + u32 width_mask = (0x1 << e->width) - 1; + int i; + bool cookie; lockdep_assert_held(&coredump->lock); ss->snapshot_time = ktime_get_real(); ss->boot_time = ktime_get_boottime(); + cookie = dma_fence_begin_signalling(); + for (i = 0; e->width > 1 && i < XE_HW_ENGINE_MAX_INSTANCE;) { + if (adj_logical_mask & BIT(i)) { + adj_logical_mask |= width_mask << i; + i += e->width; + } else { + ++i; + } + } + + xe_force_wake_get(gt_to_fw(e->gt), XE_FORCEWAKE_ALL); + coredump->snapshot.ct = xe_guc_ct_snapshot_capture(&guc->ct); coredump->snapshot.ge = xe_guc_engine_snapshot_capture(e); + + for_each_hw_engine(hwe, e->gt, id) { + if (hwe->class != e->hwe->class || + !(BIT(hwe->logical_instance) & adj_logical_mask)) { + coredump->snapshot.hwe[id] = NULL; + continue; + } + coredump->snapshot.hwe[id] = xe_hw_engine_snapshot_capture(hwe); + } + + xe_force_wake_put(gt_to_fw(e->gt), XE_FORCEWAKE_ALL); + dma_fence_end_signalling(cookie); } /** diff --git a/drivers/gpu/drm/xe/xe_devcoredump_types.h b/drivers/gpu/drm/xe/xe_devcoredump_types.h index e055b266af70..8b17ecf1b6e6 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump_types.h +++ b/drivers/gpu/drm/xe/xe_devcoredump_types.h @@ -9,6 +9,8 @@ #include #include +#include "xe_hw_engine_types.h" + struct xe_device; /** @@ -29,6 +31,8 @@ struct xe_devcoredump_snapshot { struct xe_guc_ct_snapshot *ct; /** @ge: Guc Engine snapshot */ struct xe_guc_submit_engine_snapshot *ge; + /** @hwe: HW Engine snapshot array */ + struct xe_hw_engine_snapshot *hwe[XE_NUM_HW_ENGINES]; }; /** From patchwork Wed Apr 26 20:57:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224946 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 D12DFC77B60 for ; Wed, 26 Apr 2023 20:58:25 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 09FE910E112; Wed, 26 Apr 2023 20:58:25 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1678610E204; Wed, 26 Apr 2023 20:58:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542695; x=1714078695; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=9urFVFwcrbkRy/csRlWufYoJUZ+wVRCNLcwJEVoN39A=; b=jPQpPNlw8IFlQD1lPHnEUyHHW3cl7qH1YLcT2Lluv43mXIXp3OrkZY/c cQkGOXWIZ1U+nJxozPSoS2LNtl3gFIFLyshf+tq0h+hQrGU/uSMHCy4BF PDrQMoRuuqhzXxrPGYelQjFkfFNXcqP7OhFP4QA9A4Hz2jPBxY5cX3I0R j/hDd7sYpLfLHJu76GQWsdGkF5/dDIhmjAq8gK9JTfUpTClUbE3XS6ibV Nje+2SX3fJ5Mr6nPi77SV3Mm/Wzp5KTAHrWHXW9xXcyws/JR8ZD1EuTCu T3qEoR/rJrwJu+R6pmF264fE3F57QdZDBwG7vjWHuFVrKUakiVAuYsc02 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="375203778" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="375203778" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:58:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="688105318" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="688105318" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 26 Apr 2023 13:58:07 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:06 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:06 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:58:06 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.41) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:06 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c5lP+BjtZp3gfjm9MmjX+lzU1GptaTQewdve84VyS/10Bp3/74C0pMGwZ1fRcR0uLvda/76UJMeawmEqx+Xt03b464ly8e5hcP/8A1j4kFwnANsp6wdbz+3ixErg4lN0RClNXro531q0L2JfTUfqhZxsImPhm5r2BAwBiburUwekCorMiwjlKtyfqCTkFccwsaOM+g4HADbaJSVWNCDfzHb8rqzvgJKSSh8eUK55G6TXQqtQCBDXF0usswKLBig/Bfpk4AqY9Wlv/LbOslOaRREOaXVy6Gd9+qtP9S14EKV2Mo52Ne+Mn95bdSTos0+5bNQO+8B1N+NihwLNJTC1NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fcjhiJUn26yIQtu8SHVVNuBzp6f//+ibJl4dn0VVZzY=; b=VTtejAvcfD0Y9Gez5+2XbybedFJCgKnogwgnP/khYxSGhYDFhJh17emCKeqq01kDmLBnyyLpvti+jtnkWDno6vOCb55Pjxvkr8/WuyfAbf7oDV8oOJq6NktrQYrflG2plDCAyaKbUxBY5BH3oCt0DEH4+UijbDJSs+jBYPXTvdrWKxb1OJTlhbqbboDwi0BjXoU3YjKldQgl01tONJPM4GSTrB5U7jQCNUif9Y54GytPgqzbRCvzmdVskvSltOKCfI/tSoqVVLgCByEGSnyRFJclK5hEMUtXnm9FCyEBCmrt8o5vG+pzcOTdn+nJBoum1iS8CC+FVU9FTUlW6y994Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.34; Wed, 26 Apr 2023 20:58:04 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:58:04 +0000 From: Rodrigo Vivi To: Subject: [PATCH 12/14] drm/xe: Limit CONFIG_DRM_XE_SIMPLE_ERROR_CAPTURE to itself. Date: Wed, 26 Apr 2023 16:57:11 -0400 Message-ID: <20230426205713.512695-13-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: SJ0PR05CA0061.namprd05.prod.outlook.com (2603:10b6:a03:332::6) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: 975cad1b-ecd9-4684-17d3-08db4698edd8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Eg586XwlHaVSqZAZ4V8oaua/Za8SNNTkLolOx7VPcSL+RgA9N7DNkf+MSUZ+aVVj0KzAYUy4qvUqa/6Wa8r+5QkoqCel9S5U5Qa0tRVJN0yg6EOgq+vhF2v786S3geCJ5inUsEMEDjFsCrwn5Tuubu1mG4mxVdYqmPE5/WxpWQl/CAlPOuMcaJK2qaBtHVZ9aUgN5s+Ie2x8MijdR6NyampOnXOWOH0LNTdVnStd2589HErykIG5yWmsdebRMDLwx1Tr2tfwFsD3O7pcE/Ktz2Uvsku3dRL4mZLDVuGePBhrtc9ZyfqW/O3REMRgZMpPn35h1k4OqUOIjAS/PxmDLljmebwESOUjepTAE52KK/3CmW9kyhbInPsi5qnVAc67Ybzy+rZVU502s7/QxdRnCg1l9qf8uGssNJCna3Pv0sFbY3i0jhfCT4xITYe+3MTvxrXw1xLRuxq+VjxtEl7ZUvGWiiRa4a7obwGLQ8G8qrIplJrNCwboBiTt0XnNc2Az1PgSf7s8s+bE2iTnsPsh/WtXapQKW3TYfKRfdW0CeSAThgI2oyhDQ4pYFf53DFaK X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(83380400001)(450100002)(107886003)(478600001)(2616005)(1076003)(6506007)(26005)(186003)(6512007)(6486002)(5660300002)(44832011)(36756003)(82960400001)(66946007)(2906002)(38100700002)(41300700001)(86362001)(66556008)(66476007)(4326008)(6916009)(8676002)(8936002)(316002)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FhX1Scevdjlm4mNXfaDnYZ2+quA6BJuzmCEbuZ0H73br8eZYyRZVT1gP+dtdZW4r0cspPcwZuz3Ss70+xm6hGMQPVYZqG5NVH27a9XVERX0je4LwKHx/RThW1Kd6We1vAeYvglCMiL2s3Vwr9jo2MSuSoFl3Zmc5tNwV03ZUXapCQhW5BF+vKgJdDpxORsb73t++mhs59BmJUEgUZemdaRJKAFamldyLiIyrYl7l86yLiBwsPrhnILFRzOSc/okBBP78R9tMciPyNEOKlauqz1ocU8hDPTt73F+PrndkeCeaUu3WBPPDU+PqwP8zfpkKN2uJJXysPqCI1mvUzACkiezza+Y2uHTJTcbHcyktDDsj+i40WgNBbh+8mZLpL1DmhDJNZG4UBVLJEezP9GTbs9PUOyJt9bD/KyNdm/us2UWTwPpClw5HBMMc+oaHe17kdiiTBXkvxxNnfU0NWhgrkPnHL5dtBPEdHR+cgLGu/jIXgf9jFw9XcJrlZppLfQXKzsfh2agLNK6t/UeMckZZBJ9rwLaorYmaICGcO5rHxJWJAgy8NuE3Ib5FiFLF+LF7wEq6XJpHWa+PjMdN6RH3kC5zKQgPgPK0du+LFOprc0HeflKhvUeEZx5SzFq4L/9SQ3lFX88ECMAK6jI7ECA05pO+0QeH5nSR3R0Zc2Tbg/uyGL6OokF8TyCKTicjGYUG0wvWV6Ssg4/VfEgSVklm0K238MvcVRhOGtcjzjyPzwk18gxkW+kzemA95musS5ASBVdvSOrDJprHpl78r38zpIsIObHDbmpFpElLupDSfeq0y+FhQpJCABq4oAhNE56eGxAID/+ZFL1EIyKtGaWor+8lM97k6K6HZ8sgDEMFWSMWOPSokmd1PksIolNkDM7f8qkjaScCkElQD0mI5nZTo2boOa/aRYjc3VOiaFu+DnlnIXJLo1CL33RcB6b1qVdyG1EK1iW+1dsc/zNbYaHQ10DFOZN6JFJaEEi4GPfrMMvuMW/mXk4iwMbfFBgYYsgn31jpmDMpMryhiyN0n+pzIfUNh/vLzU6WM0AvAD3yfPxX31Doh/q5w58IwJ6iofDgZPpjcGjNfKUnaVhT8f+YKtqYHFRcszwAWYSgw4sbRJ/IaM2jxq3B4af8qhesBywoWrrlk6hsY5sS4uv5HaCmwzu0D9iqmP2vw2NPUrMTE8zf31ltVuJSuO5TVg9cXsJorcMGe1CtSoLlEryUi1uazfBZ7EMf7GQsz52seQyUeBWBPAF3uaHOXNSNEhnDgMuyHtJFL6ywqGTCQ4jKhOI3Du4PPVcwQw57J/RYp4uCECThn3b0ri22e71AgscH1Y44eP3pDg3+Cwq/x0UUVhafbYeyEbc9m3VDLg38yyGBdIlztrJjRtxIuuKPI9ie0wKQYJWCN0KExhRabYRBV3WCunhPYPXvfXHme7cOfC4jBmkkDQFYYgGpzXUkTCyOpiWYMbwyWzQo8rEEIfX8Ci+ogw0Of/QStmfL80jxtEB9zihVbuWAUww1H0SZRujwiwVnwqsTSw5Qh+nhaJO5KVmtdB4K5gKu6mMBE5Ws+/7v1OiESJ42MsI52zJARWgSis+ncaKAqdQ15uK7PaP9FTig7g== X-MS-Exchange-CrossTenant-Network-Message-Id: 975cad1b-ecd9-4684-17d3-08db4698edd8 X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:58:04.4978 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dJTlb7iZJdxG8AmeH5nLvx1UcLfSo2IWmElmrkvRjxAkBXQKWYRTiJbV0pf0J5JFJ8CCj1Ifv5T8QiaYeQKBIw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" There are multiple kind of config prints and with the upcoming devcoredump there will be another layer. Let's limit the config to the top level functions and leave the clean-up work for the compilers so we don't create a spider-web of configs. No functional change. Just a preparation for the devcoredump. Signed-off-by: Rodrigo Vivi Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_vm.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c index bdf82d34eb66..4cffdb84680a 100644 --- a/drivers/gpu/drm/xe/xe_vm.c +++ b/drivers/gpu/drm/xe/xe_vm.c @@ -3369,7 +3369,6 @@ int xe_vm_invalidate_vma(struct xe_vma *vma) return 0; } -#if IS_ENABLED(CONFIG_DRM_XE_SIMPLE_ERROR_CAPTURE) int xe_analyze_vm(struct drm_printer *p, struct xe_vm *vm, int gt_id) { struct rb_node *node; @@ -3405,9 +3404,3 @@ int xe_analyze_vm(struct drm_printer *p, struct xe_vm *vm, int gt_id) return 0; } -#else -int xe_analyze_vm(struct drm_printer *p, struct xe_vm *vm, int gt_id) -{ - return 0; -} -#endif From patchwork Wed Apr 26 20:57:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224949 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 27A0BC7618E for ; Wed, 26 Apr 2023 20:58:38 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5958710E204; Wed, 26 Apr 2023 20:58:37 +0000 (UTC) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4AEDF10E204; Wed, 26 Apr 2023 20:58:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542715; x=1714078715; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=aH6S+KTs0l5OcCogQ6uiDCexdNs5FG/0PBFcNPzpvQA=; b=We92nB7PjfZsumKFqt4gLQCi/L+3tiUymNnGchI6HBXILxQMGVgH4n6B FRwKpsG+xUVToP9yu9AcueOM3WOFjSvDfG60w9tp4hNxVr/u+w2Qye+KE jC0F0QWjJMClO4F+7ro12FM5YIF099TTqrI6ZkkJvR4dESo8FDZD3nbeD CLJ6kcJPdl38RIHg5Rxt0D0UAY5uts5XwwMBWw5stQ5cLDVqRlmF7cAuT XnSdc98BOvPy1+/2nLXHYNIOglwrMauZgMGj6uO+eC7H7rfMYpfmy9ZPY dQMRKOQuG1v9Nsd877PjetHu3G/oLmDOoAgqRVVdZJiJOL40VULqHqC4T Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="410249628" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="410249628" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:58:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="868435339" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="868435339" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga005.jf.intel.com with ESMTP; 26 Apr 2023 13:58:34 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:34 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:58:34 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.49) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HrHuvAAh8sap+uE8f1yf2rAAdb22M2OO/Bo2Hq32Y4h9MXTu4tCS/mqsdJQx74rl3jLk1p7Q7Yr5WTfpFBghjXhDqMpbfOUg/PzD/yBrhCMte0Y9DTNAS6PElJ/r68PrYCADAB5WqSSQK84tl6lVzYRxwZG5YQsGvcgE7DZDEYU/oYen0MWn3fNg9j0gxsg3tfyjsHkOODCqYo++J2CnWMFCpRKpKWkavf0M4JdMDrje23r0J9Ytf5wxUsg/Mbq7I18thXXwpe9H1tIXxGdP5MNkhxbDMN/d0g6Fg/ZlayrU6kvkj31U3yEdKlEVHZTwt2TW9LwG4G0On1iAchMChQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Vyy5KIMYFXp7q70HIZ/hbDQAVF0bDpiMEqRZxx733uc=; b=fMYGpT5z1sa6AfKQEhE2v2rLXa6WGRB6lk7f22IQtCsefXQC4ThP7kwAS2UmAOOvkjLJHjvPHnuq0+Bi8cGsvAwsXoNGWCSwENdSxV84GCyJGtEyy1GD/nwBUcS/gjrPTLEECCn5rUxKlxr9oJAv3zTYKUqXV7V6ws0al3cbrOO2AGxKIkbJD/3tIIyk84DFIF3qy4LXhrrMKOornzIHX3dzG3xh1oCdpiqcdzkhXEsn7uyRpsnPBaK7dpAsOoIDfKXP5scmQfAkgeTGhgMDFbDmxSIE1xk0ih8xLGBDk8M22RjoGdU0Qby39bL9R5/IMO0SEeAnhcqBUz+CXFyHag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by MN0PR11MB6182.namprd11.prod.outlook.com (2603:10b6:208:3c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21; Wed, 26 Apr 2023 20:58:08 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:58:08 +0000 From: Rodrigo Vivi To: Subject: [PATCH 13/14] drm/xe: Convert VM print to snapshot capture and print. Date: Wed, 26 Apr 2023 16:57:12 -0400 Message-ID: <20230426205713.512695-14-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: SJ0PR13CA0110.namprd13.prod.outlook.com (2603:10b6:a03:2c5::25) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|MN0PR11MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: 86967b94-e522-44b8-fc4d-08db4698efda X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HqL3fJACDjE4SHLgxkKTCnCf/y72k/g56QkT9v2vLP8ooGbzIPKO1pIS2H+NDhfyKZtAjyaXBV9K9pf6qpHbhzQ/yN9xxjWNRdkyIKUA+wLs37wwM658qhleOlXPe1h1ZnUMTZzxD+8f+PLjNBbnZ5GLn99C0iI6c6xdC73BJ5wI5ZiM7wREf4ttvTWj+ZkTerwhg2TeNdtMolUhYIwKBQoj4Y7tov+zN6VS89pIBuvOeZDoQpm/BmgcKzAciab3SRsJUhhkz7iRfJy4/Zr+p8x3OtoTYflxv8UXo1dYPsFXG/4e7WMarQEECcCNuZD5pjvwdSohObFU9OxTJs5IxfD9BSkJ0CUScd2YWxF4V9xVi4/XThJ7uZQRrH9LOzZQMxHkqxaHl9S4KIjVB+Aq8mEIrTHqPFIdsbDK69psXZPPLaFrkajYV8jcFtCOzuBqXK3ZWllTSv1gYedOIkFZ7y251ojzBPTzLJ/DaLccutm68UJsu+Yl8ymopXDIND745Qw7HrawWHSK3OY6DrBp6bxk+7Mql6qI7Cwf2tJgNUm42U+Sd5STuuQRQ7VANqKI X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(39860400002)(366004)(136003)(376002)(396003)(451199021)(2616005)(83380400001)(186003)(1076003)(26005)(6506007)(6512007)(316002)(6916009)(66476007)(86362001)(4326008)(450100002)(38100700002)(82960400001)(66556008)(66946007)(2906002)(44832011)(41300700001)(107886003)(478600001)(5660300002)(36756003)(8676002)(6486002)(6666004)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: iyPJwJmNcpEdsmJ2/M9rGnBEuPafoiQlJ/i9CnJvRdgqvFyzV134bCmuxrxFM6VcbSWl2fjiNu/RRuVfO4P8VG0rYLOKr1ozJ5nl9yeH1VBW9ewLxx90rkV9//bKxPS5jV4Z+oVo9TA73wG02zEmulbkMeLc+WcZDKxFHPBnqMkr+K8KjOlAoPbg3RDeiELxSB4PUtptQPfpw6bCzV6YYBaHWM4dPHpbo7O2w0yZyW9cBOxMvU9s8mjVd3SNOK6zx6ZQIm2bYGoUo2+4YeufAK7IqVvvNuFs4Me2+p3k4PdiIfhEj+IMNdIvzh9sLUcLPP26Z938kqn4tCnhpAx8wG9XC+JAuDJNMQ4t1sWnqQYwGf6CZ24pUf1OvfVpPuLp1LSivZ8fOYpmr/FVat3xrVPlpTl/AjCY0+i6880LZFIo+8p9F3RRwkb7x6R/4C/8OMyeJhrEG9YsQQL9+TD++Gebhu671KziAqmS3PwDUMzND1VB4WZkzllQ86XoSPkTzcZjqIZvAewbp/Bz56zGCreDX4Uq0NM7cVcfZEFoAsKYkuO2K7O++AsnAabTJJkAi/mVqSuEq71UF1yB3AeEUu+LM88rHR3jCX4KTFf4nGn68AJvYTQ/tNJER1L9YJ1ze7fKa+svjFra4DqD6bSTRw+kmo6rTgx/h9iAr56/cS26M37KQ6OZkvqpacyblvF078CGWKKJYDkJodsv+LEHBXaqbueBj4DVjRPM5h4aJtMiBkz11ONT1d6fRj3b/mDkdbo8jx0q7xE4qp7sjNE8B4UKe3ZDrY/4tjnzaOiX6mQYaCEHYN84LKMlP8a3xE2BbBYROWtLeWvvDEWjDWLsxR3WJq7h9frnIfD/e7Znpx+p4VPudJhLaj/SIrNX96yE6K7bqC1xk1J1MoApByUxirIkswDHV5vZeKnYrQe4lz/oN/1tC7JsSLagDQxvmQ40iHfoOxBhxjpjBbwcTB4dz/Qn1so0kIpVC9xGJVYdqWUV1rQjNNXZct/dQviUCZZbWLH885xJcUpkSGBPGrmEnANT8x+ggre9fWxgkZrRRHOsBU3xK63iOa+C7KCuEBZ+OHBl7T/+cbHg7hZjJ/8byWfYe0pdRcL2tGRpClanMkjwKhmNRzoYRNvFOaMCymsgnXYmWvZL14B4nqcnd2/wCExxHcgjECXfmG064EBMONlAYNJUhEqJLcK0qL3NoNWUy8/8V8JK8paHSp/jl9BomW8G2agBsuM8AIBOP3eTKTfZhDiLJnLk7eIb92Bhd+cXnqXu0uOw6tX4C+dn9UYyAx0CJqbCnGtx1d1S+GFLtsppVZgRxM8pZILFVVUC9emVs4GGQKge0a2RERDLKGNW5Qvmpj6NpJ+jn9olZ/NG2oRjdLOKEBO1+NfnchjlLpr1AaAIn2FOrBGAZSZ7nYoHrztY8KADG7yUy4WQfis8pTMWr5fzWgnMVH8/vz7j3oZxXfInbrKawbQGWyPhpb3SvFod2HuvKTTnGQycZAgihozHXXbuWewzGoIu268gbJiwSmZRt3IUpT/Z5IZpD9n/8ZICOYh86KYw4uFQrf6ijsmtdWmjDLqnYnZ3JHn0GOljIsBzm7UhuZ2soRNmEZ91SA== X-MS-Exchange-CrossTenant-Network-Message-Id: 86967b94-e522-44b8-fc4d-08db4698efda X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:58:07.9539 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 18BCWRhg9cMQbFfE0ItkSNlzeMCAib7n8HS+SkYHNdKSUpAXSvtL4nBSsOp6pvU3Vjse2usEX7CLCeh1Uo5MWA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6182 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The goal is to allow for a snapshot capture to be taken at the time of the crash, while the print out can happen at a later time through the exposed devcoredump virtual device. Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/xe/xe_guc_submit.c | 2 +- drivers/gpu/drm/xe/xe_vm.c | 137 +++++++++++++++++++++++++---- drivers/gpu/drm/xe/xe_vm.h | 6 +- drivers/gpu/drm/xe/xe_vm_types.h | 18 ++++ 4 files changed, 143 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c index 74659d0a69b3..ac98bc1843e8 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.c +++ b/drivers/gpu/drm/xe/xe_guc_submit.c @@ -753,7 +753,7 @@ static void simple_error_capture(struct xe_engine *e) continue; xe_hw_engine_print(hwe, &p); } - xe_analyze_vm(&p, e->vm, e->gt->info.id); + xe_vm_print(&p, e->vm, e->gt->info.id); xe_force_wake_put(gt_to_fw(guc_to_gt(guc)), XE_FORCEWAKE_ALL); dma_fence_end_signalling(cookie); } diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c index 4cffdb84680a..075640dbdff0 100644 --- a/drivers/gpu/drm/xe/xe_vm.c +++ b/drivers/gpu/drm/xe/xe_vm.c @@ -3369,38 +3369,139 @@ int xe_vm_invalidate_vma(struct xe_vma *vma) return 0; } -int xe_analyze_vm(struct drm_printer *p, struct xe_vm *vm, int gt_id) +/** + * xe_vm_snapshot_capture - Take a quick snapshot of the HW Engine. + * @vm: Xe VM + * @gt_id: GT id number + * + * This can be printed out in a later stage like during dev_coredump + * analysis. + * + * Returns: a Xe VM snapshot object that must be freed by the + * caller, using `xe_vm_snapshot_free`. + */ +struct xe_vm_snapshot *xe_vm_snapshot_capture(struct xe_vm *vm, int gt_id) { + struct xe_vm_snapshot *snapshot; struct rb_node *node; - bool is_vram; - uint64_t addr; + int i = 0; + + snapshot = kzalloc(sizeof(struct xe_vm_snapshot), GFP_ATOMIC); + + if (!down_read_trylock(&vm->lock)) + return snapshot; + + snapshot->acquired = true; + + for (node = rb_first(&vm->vmas); node; node = rb_next(node)) + snapshot->num_nodes++; + + snapshot->vm_nodes = kmalloc_array(snapshot->num_nodes, + sizeof(struct vm_node_snapshot), + GFP_ATOMIC); - if (!down_read_trylock(&vm->lock)) { - drm_printf(p, " Failed to acquire VM lock to dump capture"); - return 0; - } if (vm->pt_root[gt_id]) { - addr = xe_bo_addr(vm->pt_root[gt_id]->bo, 0, GEN8_PAGE_SIZE, &is_vram); - drm_printf(p, " VM root: A:0x%llx %s\n", addr, is_vram ? "VRAM" : "SYS"); + snapshot->vm_root = kzalloc(sizeof(struct vm_node_snapshot), + GFP_ATOMIC); + snapshot->vm_root->addr = xe_bo_addr(vm->pt_root[gt_id]->bo, 0, + GEN8_PAGE_SIZE, + &snapshot->vm_root->is_vram); } for (node = rb_first(&vm->vmas); node; node = rb_next(node)) { struct xe_vma *vma = to_xe_vma(node); - bool is_userptr = xe_vma_is_userptr(vma); + snapshot->vm_nodes[i].is_userptr = xe_vma_is_userptr(vma); - if (is_userptr) { + if (snapshot->vm_nodes[i].is_userptr) { struct xe_res_cursor cur; - xe_res_first_sg(vma->userptr.sg, 0, GEN8_PAGE_SIZE, &cur); - addr = xe_res_dma(&cur); + xe_res_first_sg(vma->userptr.sg, 0, GEN8_PAGE_SIZE, + &cur); + snapshot->vm_nodes[i].addr = xe_res_dma(&cur); } else { - addr = xe_bo_addr(vma->bo, 0, GEN8_PAGE_SIZE, &is_vram); + snapshot->vm_nodes[i].addr = xe_bo_addr(vma->bo, 0, + GEN8_PAGE_SIZE, + &snapshot->vm_nodes[i].is_vram); } - drm_printf(p, " [%016llx-%016llx] S:0x%016llx A:%016llx %s\n", - vma->start, vma->end, vma->end - vma->start + 1ull, - addr, is_userptr ? "USR" : is_vram ? "VRAM" : "SYS"); + snapshot->vm_nodes[i].vma.start = vma->start; + snapshot->vm_nodes[i].vma.end = vma->end; + i++; } up_read(&vm->lock); - return 0; + return snapshot; +} + +/** + * xe_vm_snapshot_print - Print out a given Xe HW Engine snapshot. + * @snapshot: Xe VM snapshot object. + * @p: drm_printer where it will be printed out. + * + * This function prints out a given Xe HW Engine snapshot object. + */ +void xe_vm_snapshot_print(struct xe_vm_snapshot *snapshot, + struct drm_printer *p) +{ + int i; + + if (!snapshot) + return; + + if (!snapshot->acquired) { + drm_printf(p, " Failed to acquire VM lock to dump capture"); + return; + } + + if (snapshot->vm_root) { + drm_printf(p, " VM root: A:0x%llx %s\n", + snapshot->vm_root->addr, + snapshot->vm_root->is_vram ? "VRAM" : "SYS"); + } + + for (i = 0; snapshot->vm_nodes && i < snapshot->num_nodes; i++) + drm_printf(p, " [%016llx-%016llx] S:0x%016llx A:%016llx %s\n", + snapshot->vm_nodes[i].vma.start, + snapshot->vm_nodes[i].vma.end, + snapshot->vm_nodes[i].vma.end - + snapshot->vm_nodes[i].vma.start + 1ull, + snapshot->vm_nodes[i].addr, + snapshot->vm_nodes[i].is_userptr ? + "USR" : snapshot->vm_nodes[i].is_vram ? + "VRAM" : "SYS"); +} + +/** + * xe_vm_snapshot_free - Free all allocated objects for a given snapshot. + * @snapshot: Xe VM snapshot object. + * + * This function free all the memory that needed to be allocated at capture + * time. + */ +void xe_vm_snapshot_free(struct xe_vm_snapshot *snapshot) +{ + if (!snapshot) + return; + + if (snapshot->vm_root) + kfree(snapshot->vm_root); + if (snapshot->vm_nodes) + kfree(snapshot->vm_nodes); + kfree(snapshot); +} + +/** + * xe_vm_print - Xe VM Print. + * @p: drm_printer + * @vm: Xe VM + * @gt_id: GT id number + * + * This function quickly capture a snapshot and immediately print it out. + */ +void xe_vm_print(struct drm_printer *p, struct xe_vm *vm, int gt_id) +{ + struct xe_vm_snapshot *snapshot; + + snapshot = xe_vm_snapshot_capture(vm, gt_id); + xe_vm_snapshot_print(snapshot, p); + xe_vm_snapshot_free(snapshot); } diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h index 748dc16ebed9..924884b36469 100644 --- a/drivers/gpu/drm/xe/xe_vm.h +++ b/drivers/gpu/drm/xe/xe_vm.h @@ -145,7 +145,11 @@ void xe_vm_unlock_dma_resv(struct xe_vm *vm, void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence, enum dma_resv_usage usage); -int xe_analyze_vm(struct drm_printer *p, struct xe_vm *vm, int gt_id); +struct xe_vm_snapshot *xe_vm_snapshot_capture(struct xe_vm *vm, int gt_id); +void xe_vm_snapshot_print(struct xe_vm_snapshot *snapshot, + struct drm_printer *p); +void xe_vm_snapshot_free(struct xe_vm_snapshot *snapshot); +void xe_vm_print(struct drm_printer *p, struct xe_vm *vm, int gt_id); #if IS_ENABLED(CONFIG_DRM_XE_DEBUG_VM) #define vm_dbg drm_dbg diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h index fada7896867f..18e79b6a2182 100644 --- a/drivers/gpu/drm/xe/xe_vm_types.h +++ b/drivers/gpu/drm/xe/xe_vm_types.h @@ -149,6 +149,24 @@ struct xe_vma { } extobj; }; + +struct vm_node_snapshot { + bool is_userptr; + bool is_vram; + struct { + u64 start; + u64 end; + } vma; + u64 addr; +}; + +struct xe_vm_snapshot { + bool acquired; + struct vm_node_snapshot *vm_root; + struct vm_node_snapshot *vm_nodes; + int num_nodes; +}; + struct xe_device; #define xe_vm_assert_held(vm) dma_resv_assert_held(&(vm)->resv) From patchwork Wed Apr 26 20:57:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Vivi, Rodrigo" X-Patchwork-Id: 13224948 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 475BEC7618E for ; Wed, 26 Apr 2023 20:58:29 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5714010EA33; Wed, 26 Apr 2023 20:58:27 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5BAA610EA29; Wed, 26 Apr 2023 20:58:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682542695; x=1714078695; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=o1rcTlcoEtm7wapAzVpDanA0tOrNCFjUbgUwzCpB1UI=; b=dXkGsAhCIFH4utsEbifrOrJr9tmLA8Ma1A6KZZak/bvH1qmOCfozq0p0 KoS2Dxv/puw25rZc31shRaQURa+eu38BLCvn0g7lAbcCqQ1IB8C6/fCz2 3lmIPsdT6VD5yX/hm5nAyxfQXzetm/EVH7bS4YeBdOwinIIjOpX/1c5gq p1LTBfe7H+uP9oOZoQFsqoeluLxLZxEGNTg6VHO0REfAjcoYgpMEjFlUU KSink0g+loXR7Ef0MGvCX3u+sZwutd96pfx3+vk4n/WdsuVf2xtQIqMAM DyfVseVrw7uAn1Dj3JqBFtCb9c+WCSXAq5jY+TfcxkzQMqaIqQzt+Ylqp w==; X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="375203781" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="375203781" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2023 13:58:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10692"; a="688105337" X-IronPort-AV: E=Sophos;i="5.99,229,1677571200"; d="scan'208";a="688105337" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 26 Apr 2023 13:58:14 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:13 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:13 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 26 Apr 2023 13:58:13 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.44) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 26 Apr 2023 13:58:13 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Znqi3ga4VsA1DSRDmFsVCQtsJgIM/rXdp1VbFvvPcXnUiks/7/NbuzcUJNszo3ujqnXf7C2UPkSVud7L6n2DZsYPA4e1Vn7ELH9m43NnmQCQ9/pZ7hRqfHDez+SxBcFf8Emf/uBGE6sbnVii0rRaEkBp9fhmxOxEun6VTl7MsJZI2dYxFQIOtgORKZh41H8UuNvrfOskNTCvNFnkowVm7lRAi38lNPRIe0tEO5Na8/aR5wV0Tea/EPAtlRetl2SkQ3ik/n/Am00gldCCEOuUk3oLZBSJmy4uEDbU2w3wPE7fxc+eNDCDkXS8/dBbtrm5CRmcNO3MSIDjE3WTZDEn2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JeH1+nIpXj/NNdABSrv+pqx8li1daxxjxvnD2BLWr+E=; b=bHBWe1EZDiSAFBwcIPwtj6jrLvSiNlTb9PJNqWxRvge0jW3oHLwzqoSmgk4CJR9oHIopjSeIzqzGa7ZeGmoYTIu+bHpCD744xKjgAK/SDEs2gItJWuQCeXAAatxfrTPH5GuPptCqEKXQBKmtcgyhV/hiOcL7QmWKUmuL8LYUo6WZimhXoWjTVqWes6viO6ZXC8MBVTH/3mCLByDj78xmQYvXObx4l943wO5FWfHMVYo1DZtPI6BnHSYMCHaQA/BTk+Ynqxja+k9ON+oy0w6Wjn5jk7y6pciJCkqmTUFqkthglSc/b5bXlnpJ5cXmMT/whluJtLNg6sSomps8TZfZSg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.34; Wed, 26 Apr 2023 20:58:11 +0000 Received: from MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004]) by MN0PR11MB6059.namprd11.prod.outlook.com ([fe80::f7ec:aae9:1e7b:e004%6]) with mapi id 15.20.6319.033; Wed, 26 Apr 2023 20:58:11 +0000 From: Rodrigo Vivi To: Subject: [PATCH 14/14] drm/xe: Add VM snapshot to xe_devcoredump. Date: Wed, 26 Apr 2023 16:57:13 -0400 Message-ID: <20230426205713.512695-15-rodrigo.vivi@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230426205713.512695-1-rodrigo.vivi@intel.com> References: <20230426205713.512695-1-rodrigo.vivi@intel.com> X-ClientProxiedBy: BY5PR03CA0023.namprd03.prod.outlook.com (2603:10b6:a03:1e0::33) To MN0PR11MB6059.namprd11.prod.outlook.com (2603:10b6:208:377::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR11MB6059:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b048cec-8564-4c63-c928-08db4698f208 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OyNbgQF2YmzfsTNx2MJ69pJ/q4TbbW1RgsmUyiBex6i0KfFriyXBk/mzytD5scMoUIoECN/ckYn1oY6MuDGf6gVkJSQCgNqGojJ8QmaEtJVibxK9zIwSIcScQQ3U5AyWESA96waCLfA9MOYM45T8MZWENugjqmHpeTjqxTQGVvQQw1zYC6vxQtIIEXNjYwpRB3tjiDVpDNbTLAVtGtr7bZ6PY2A/17WcpqhAC4UKZ7bcJByHRIcTAGrlVzoDddAytjbu/G4beT8DbmVFnkHDvhcN/0Bf7dxsE/6Zd9haF1htzUn7u/sAfbgkVPUoJiYse805H+BRA5iDjtnZjBQyAcTFHVi0yPzs1Ht0AJak77W4ypKWVCkU96c75V6KFP818gEmD68KRu8uXKYHQSM8is+drAFKsRtNS9RBAcYGtBxbLz3rN9vBVeBes6ddqKk/EIsZoPNVD4mitFG3jdCLty/bzuW/9gU1Qfslef6sCg9/Flo17VLAPUSWfH0dUlnoecEm0jcf9CuckWDrqa+myLU1BoljVesy+ZWvMKA3gHuhDifSU2C98vBrn33pf0BE X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR11MB6059.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(396003)(39860400002)(366004)(136003)(451199021)(83380400001)(450100002)(107886003)(478600001)(2616005)(1076003)(6506007)(26005)(186003)(6512007)(6486002)(5660300002)(44832011)(36756003)(82960400001)(66946007)(2906002)(38100700002)(41300700001)(86362001)(66556008)(66476007)(4326008)(6916009)(8676002)(8936002)(316002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: F5+CiYPMjV1a4jh2Nbi9swwmCTgvx3/yvlGwAMjqhyhLyKbWvf19yCD7sBa6bI6sk5Uau7bW16t+F32k3yU3jzW2Q9Fhsz0wk3RkDnol9xhXCHslVS5uPyGE9UJi2S6oK8YcVw511y8bOkciqSihaCTDxL6J0E6VqUV0HhA+E7dC+6KWLQG1qAm0IK+zXqFKEcEffeNY9FdvYlpvLYHWwOEyPFVEAroIn2sXgnqm3063h0Ze9fbd8h/iAmpAB16Rbn1xLsoclCr1/74IBgVE/eR7w4hFoMrgmEgL1d6lmFWaAnk8FRpOGF1UQK56cW84JIkIAAim9XSe3CQH3dq/VlSmT8zsFiHagYSz1+mIg+JaXa/wzegh4ucl+d6clOJgr5zf2TRm0yn2l940bQKoZbFBWI7Sy4w1nOfjxYWd2cwsTXeK4vTXBr/55AnX63wnI+lA6eKnLkjNHKL1PMmcEN2JPN74hCDnvInM60B39VWXgFWP4K1LYHSZZEJhd7Np25enSCt1BrAHQKb29ixJy0u3EzPkqGhL5o0h/P4WyogtGhcXJRFbuQDhIMMYdy7N1r+LidfQyY4IVUHFOqLyHSL6PmJBT6cDjpWfyc9BI+PzDnq4UUuYOELBzQk9G1z11VnHKZ8ohg+J3a4Uz9TQdp1WJJOzXYRsf+9brx9huV4J5wbeNZwNi20biUZQLmNGYLKNdW/ixnoycmcqKfcxhGszQldPAKkxBy0CotFh0lV2KKE1OyujMTjkrujTSL7B71apB9SD+Ry6VFQQ4kjrLsrD1qG0x4xNestoXwMSXPhPe0OAWqxrl56wcHeQLvLIx0PfiOJja9NzbGd3jCPTiSYoSeITVHvDXFQTYqX4UQerDmcmdhz83XJRjUwX7o/etmSxY/f7mQZ9mfVPlWjGoCSDpUS9cFjPo8YEiNyfYT74xZw9f7c82hiQkDVu7UdJpIoiKQPkFNle9zFt2GmXEr3lyPz0Pn7/g0gdMlj5cij8K0tdtI/PctRhpNzYHZapFEOO1hmPOnh8q/d2holAGehjcM0J73kZ7FGA88B4oHapxZPyr72DcBYoe4D8IL3MZb3jayd+usue8K6IkIdxxz6TzC5viRJcq8XPcJKPE08SmOQaxn4ZlmKrcGH9YtunWghnDM7KBG/DXvF+RBLfwjzgytVRaYflXvkycIF+wlz34WwmNmR9CDGUiwsI96MLNsvZ/05l5rvPr7V7QsF+WPWLZUfjLMWfx+aKBzePxKvvUNF4mgleJA1Oi1sgRUEjuEPl7usiy0JZdAVm66NJa/wil7N0e2mdchMj6dnHgk/6UWJr9nUBhosi6Mw1+yA2cubHqryYqjCuUHhcp2hUavcKGIEnFtYZOw/haYhZvpZx9hvQfl3oaXqwGN2hIHDSejx+tO4yEmH1z2hzBHRAVVqs+4QG2QjOlaSW+y5HDGS8jyQkovFBOLbX1AD5G7q66kxC464k2F0p260wmfFrHp52CZUzPnY+yU0vQflpuvY1+Xbt6jh+aEdCnLdHCtvOfJLH5uTg5lWbMvOc4QJxXqOLUJ5GEmRQpymEom7lwxSQ+X8jheAJP6MwYDRz/pTz X-MS-Exchange-CrossTenant-Network-Message-Id: 3b048cec-8564-4c63-c928-08db4698f208 X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6059.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2023 20:58:11.6195 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KDepgED9VMJ+Eo+KwlbnWy4nSOcF4c3DA5jdjd0oojaHjxkyHc7woWledtunk3t2Bh1r6uVmoDeAHw3Im4rppA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org, Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" With this patch, we now have some parity between xe_devcoredump and the simple_error_capture. The only difference is that xe_devcoredump will only stash the 'first' hang, which is the one that we care most and should analyze first, while simple_error_capture will dump them all the kernel log. But this is just a start point to start building a useful and organized crash dump, using standard infrastructure. Later this will be changed to have output that can be parsed by tools and used for error replay. Also, it is important to highlight that the goal is not to replace the simple_error_capture which is still useful for some cases. But simple_error_capture should be protected under DEBUG and EXPERT flags, while the devcoredump has its own production config and will be useful for bug reporting and for error replay. Signed-off-by: Rodrigo Vivi Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_devcoredump.c | 6 ++++++ drivers/gpu/drm/xe/xe_devcoredump_types.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c index 1ffd12646a99..9dbafd586fbd 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump.c +++ b/drivers/gpu/drm/xe/xe_devcoredump.c @@ -16,6 +16,7 @@ #include "xe_guc_ct.h" #include "xe_guc_submit.h" #include "xe_hw_engine.h" +#include "xe_vm.h" /** * DOC: Xe device coredump @@ -103,6 +104,9 @@ static ssize_t xe_devcoredump_read(char *buffer, loff_t offset, for_each_hw_engine(hwe, e->gt, id) xe_hw_engine_snapshot_print(coredump->snapshot.hwe[id], &p); + drm_printf(&p, "\n**** VM ****\n"); + xe_vm_snapshot_print(coredump->snapshot.vm, &p); + mutex_unlock(&coredump->lock); return count - iter.remain; @@ -124,6 +128,7 @@ static void xe_devcoredump_free(void *data) xe_guc_engine_snapshot_free(coredump->snapshot.ge); for_each_hw_engine(hwe, coredump->faulty_engine->gt, id) xe_hw_engine_snapshot_free(coredump->snapshot.hwe[id]); + xe_vm_snapshot_free(coredump->snapshot.vm); coredump->faulty_engine = NULL; drm_info(&coredump_to_xe(coredump)->drm, @@ -172,6 +177,7 @@ static void devcoredump_snapshot(struct xe_devcoredump *coredump) coredump->snapshot.hwe[id] = xe_hw_engine_snapshot_capture(hwe); } + coredump->snapshot.vm = xe_vm_snapshot_capture(e->vm, e->gt->info.id); xe_force_wake_put(gt_to_fw(e->gt), XE_FORCEWAKE_ALL); dma_fence_end_signalling(cookie); } diff --git a/drivers/gpu/drm/xe/xe_devcoredump_types.h b/drivers/gpu/drm/xe/xe_devcoredump_types.h index 8b17ecf1b6e6..f508eca292f7 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump_types.h +++ b/drivers/gpu/drm/xe/xe_devcoredump_types.h @@ -31,8 +31,11 @@ struct xe_devcoredump_snapshot { struct xe_guc_ct_snapshot *ct; /** @ge: Guc Engine snapshot */ struct xe_guc_submit_engine_snapshot *ge; + /** @hwe: HW Engine snapshot array */ struct xe_hw_engine_snapshot *hwe[XE_NUM_HW_ENGINES]; + /** @vm: VM snapshot */ + struct xe_vm_snapshot *vm; }; /**