From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4455532E6B0; Wed, 5 Nov 2025 15:10:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355459; cv=fail; b=BzPP1ZbePtgXzjNasYo4S9Gzpf6zs2bhgZBTALkVfROL3rXHzCkgFkIKzG1oSmrRGZscrEjMSo5CgEwUVJXAdpUnqLPp5+lnPUum0hCnYnKi0fMtjCc7f+pRgV80MCkASKUAjzUWqLESTr46NhfDXQU9Pf+Oi7k0qgWyLRGzdmk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355459; c=relaxed/simple; bh=+NhxtylLy7TfnzanuboPshugMKe4FqSCsalNbdreIz0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rz7SFTQ+BPyi+F+MYXch74J8YPDEv0a0lx+tj9eE2UHh6tTSKvL51WhAb32+aFvo1QMbWdLrZY5NzC9ZLVnYjWAnUKDUwpU1w7QOlhKdR5TIPwFVW3zMta7Q2hLgPmH8sjcsDwEt62VO1tell6mLvPFmsSBBK51QFOaVEKyyRWU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Rl7VOhkL; arc=fail smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Rl7VOhkL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355457; x=1793891457; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=+NhxtylLy7TfnzanuboPshugMKe4FqSCsalNbdreIz0=; b=Rl7VOhkLKQpfl97nxsYYPRWjuupchI8IW3tyn/kUNXld+DE716to+t8z 5fUJ4w0GJRb1pXueWYjvQskQavYSGc2mjiLAhKxk+qfAj0D0MDRFpz58b ujOGphD+bsRAUDglHREmIChtBZAp03P/BLjIQpCGjut5bhPsw3QJhHmER tvmDORwhphBgki/K2Wc70NQqxIRm+lKsM8jdeODtAjKSNjLdFZ4eHleyl TwcZ4apg94/YbtwKBFyQmri/gW+sE8IVF9nAzOdkkb+QpE+KN0qP0tfwC cP9GudDzUKV5j1CnnpazIeD7AyUpK9sF+X9hW7VGJRZjISMHI+kCL7jdT Q==; X-CSE-ConnectionGUID: n7ccbyFOQ/Ot32I/BovNgg== X-CSE-MsgGUID: ErrDu2ztQ02cTJi66P6NeA== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="67088182" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="67088182" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:10:55 -0800 X-CSE-ConnectionGUID: BRUm7Y5WRe+J8ODgnwcHmg== X-CSE-MsgGUID: 9pJNtuo/SCmuy7IwyKUTNw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="187173847" Received: from fmsmsx902.amr.corp.intel.com ([10.18.126.91]) by orviesa009.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:10:55 -0800 Received: from FMSMSX901.amr.corp.intel.com (10.18.126.90) by fmsmsx902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:10:54 -0800 Received: from fmsedg902.ED.cps.intel.com (10.1.192.144) by FMSMSX901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:10:54 -0800 Received: from BL0PR03CU003.outbound.protection.outlook.com (52.101.53.11) by edgegateway.intel.com (192.55.55.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:10:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=da0l64CUyGzET704lzNLCoJkxSHS8R0RFdf6rtumF8URSSRJpoaKhblUWKPpipLr/5BB6Gb1IwQgTOtTRnXXoy1QU9WQ8CCM7tuhZy88dlbuAI0IcDxO4ogJI3ylYJ6Wh9/m/H5JOAPPThLu0q+dVgRF7db8qGlbjeLY/i54aS9zEqggRmteE6r/IktbkN0xhvXt7tgvD+BK8AMiHXy4gjswAH6psqrR9nL3poMco/MJufT58AQ9pGdSoWeQUos4yDy+geZvJHl5tMxku/anZ35lUWiMDL+YfGSC532Xd2ZWJUxDb9yXW5wWsdi5WrVzqmufxeNCccswnBWIfYL1NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=PzzpPRQf/iX0LpgzKSCs2ND/kJqSwgnGmsHsdoLypYY=; b=QmZ3zNSktdDYBJ4ipW+NnhcvLki0F+NrAexVvG1txRtFvHsisOynfNfL0uQoieySHen4U4Rl7pd0oKTMpAs3WadHGQ6JhMtPkDOgnNSmukAw3pMaTYIvpDekYo4gZNzdQC36L/qRMWjjlnwIYCV+Rp3I5yRJpQkynMqug6QprMmrLuOJiBRHOyBO99e7fhc+1oj6k20SaXqG9sSMeh73NPbLR/RotYRy3ecKWvlYY/ytl/4q02fjl03ZIQggZQ7RiPtuiK8+MbzHn06yrM4ytSq/E8aGxJbx92bZnvamINhjPky1WbnOqa7R2bCKczK6cdfOhvzn7o1hzHEI8DUwiQ== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:10:49 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:10:49 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 01/28] drm/xe/pf: Remove GuC version check for migration support Date: Wed, 5 Nov 2025 16:09:59 +0100 Message-ID: <20251105151027.540712-2-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1P191CA0015.EURP191.PROD.OUTLOOK.COM (2603:10a6:800:1ba::8) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: 081c1065-1a1d-4d25-b1e4-08de1c7d809d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VkFqaVY0Z1IwUE5uUVBVN0lwU3JvSENQUHhTT3BCa3NuNTVmektwczFKTXhk?= =?utf-8?B?aDlhVldFUU43a3BKOXJWM2lXYVlld25BeGhLWUo0eTRuQkxQYVc5MisvQmxQ?= =?utf-8?B?MFNoRnRKVFMvRVBvaDRFbWpDeFN4aHdhRmJ0cVRXT2NpY3lUb2tzSmJwa2J0?= =?utf-8?B?dkdQd3VPNmJuOFk1RSs3OHJUR3FTenZ4Y3FibEtlTVRVZ0orVzJzVGRGRjQ3?= =?utf-8?B?bzJOMG45dlpDUVR0YVROcTFCNzlOWlFZK0FpVklNUlpnN2g2S0N6OWdpTitz?= =?utf-8?B?Smp6MzRuaVVwUFJSQVdLRjIzcjM2d2JxbjdTWFY5dmsrNUZyMFg4Y1Z5Ykxv?= =?utf-8?B?K2pEdndwZURRUVNQQnZ5NXVUcy9oRzM2WnlsZ3d3SzU0WDRIaEl0bUsyRExF?= =?utf-8?B?eUhSa29ZVHlGLzF2RlpWVm4wVlIzcDVPdzkrUm84a203dTNvTzZKUmhkQ01O?= =?utf-8?B?WGV1L1hhVmdJWmlxNUM5eUFkNGpCUzF4K01VV1NjbXlra0VGSnNwOGV2c25v?= =?utf-8?B?b2FBdHUvUTF0OUpVMTFoVGJjOW9oSW5QUWczckRvTmMxVG9BYlR2b2pSaDlM?= =?utf-8?B?TlhlUTFHOGlPbU16U2Vwc21yc29HN1pVa0ZaTVRUT1RQckFrY3FVWnIwVXlo?= =?utf-8?B?Q1B5Q2xYZUV2ZmxlTTBOUDFMTmc5WEQ3NUR4N1NFS2pTZ1dLeHQ2Ym5LMTFW?= =?utf-8?B?RU5zZ3BaY1RHM0FFL1VIM1UzdlVidk5lYWJaNlYrR2FYNVQ5MnhYUkdDTE5K?= =?utf-8?B?b3E3R0JsVG1HYmx3VyszemNab1Yrd0ZieFF1WThEaTU0TVRHdWx0Q1k4ZWpu?= =?utf-8?B?b1RFR0JWNlF4bVVHQmdnVkhCRmVrZGZUNFBCKy9vdFRsVnpOUVE1VjR3bHZa?= =?utf-8?B?bEdUNDV2RjZVVUVKemxYdmhZZk40dVFHNmp5b2pFUGZoL2lJVEg3U2grSUNX?= =?utf-8?B?VXhNcXQrSy9Jc0h2VEVLbUVRVElGR1NGMDE1bElrRHpxbkN3REVSWkNBeGRp?= =?utf-8?B?NUZpOTJVSnZLMXRrMVkzRllybTlVR3R1NURMUVVRYWdrcjJrb3JaK0dIK05Y?= =?utf-8?B?ZjVxdkg0MzB0WnEyOHBBUXVldFpXeGRVSXIvSEFBYzVjaUIrUmU5S2xjOGpz?= =?utf-8?B?ZmJsTE81MHVnanRjMlNNRkhpMTN4SmhZbVk5N05XYks1eG1zMWczNFBVdXpV?= =?utf-8?B?UWR1REVUN1RJVDY0N3plNUdwRXAzNzFKVmlqSVIxRTJaNzJqWXc2dkc1SUIx?= =?utf-8?B?ODB6R1lPZXIwbTVtdFJ4VlJidjFNK1MwckN1WUE1VENmQXBxUXlFdk9DRE9E?= =?utf-8?B?TmRyeExWaWV5a05UWFZMVDkzUFN2UmpaTThhZDFSaDZyZEt2VHFMVG41WUFm?= =?utf-8?B?M2tyT3NlT1lxa3FGbUdqS1VGdTdWWEt4V2JZYmlWdzM3TDE1MzJKNFkzZS9k?= =?utf-8?B?cXV2Q0JDRk81cWdlMDIzM3NncVNMZ1N2d3pINis4aVMzRE94aUd4ZXgrS2hs?= =?utf-8?B?eCtIZUhnYXRma3kycDVhbjQ5djdFb0VGTk1PdzNXeWFiaUVacjhDUEJ4NWF3?= =?utf-8?B?TnNrUVNja21KSmFvWkJ2T3NSQUsvMzdzR1RHSUxQZVljNzZvUTl5bGRKbTQ3?= =?utf-8?B?K0UxdHdnQVc2YlFiTkErQ1lwc0JQcUh2aGJZMGhrS0VwdWFxU0JUMzdtZ1dQ?= =?utf-8?B?c0lBdmRqMklsODFVUFhxTTNMemxCaWlESWl1QnUwLzB5SGRkVDVac2NSMncy?= =?utf-8?B?MTV6TlFDUGhTeVliTndyWEUySXhJUDE2aXBxdnBkM1AvbG1rRWp0QTVMVmtG?= =?utf-8?B?dkRnUm5aeDIzNDU5RHZrVi9ObXo4OUJqcHNMZnc0K3hqYTh1YmNuVEtnZXJK?= =?utf-8?B?WkxrVm91dHRkczhEWjRtNHVxd21GZXNhOTd2dVpESXRLb2dhOWdoeHlWQTVv?= =?utf-8?B?aVE1bDVkWU80TXlrWFZEL3dIYWhvRXA3QkwvaVhxM3QwR1NrakYrbTRRQ3M2?= =?utf-8?Q?BP3VS1oGzyHpknc/OiEfbwix4sx2gE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZncrTWRxZmpsWE5wamRyam85NkRPTGh0bDVtTVIzMFN5TWxXMlVnaTNJbndT?= =?utf-8?B?RzQwZkVvYjNlOWJiNFcwL25yUTFiazAyQ2lPTEVEY3V6UDV2Yng2Y3lHSmU0?= =?utf-8?B?NW1IQU5iMWdhemZJcFlTeUxSM1JJNDBLaWN6UUVzOGlXNGxZckoyRTFOck5h?= =?utf-8?B?TnhIL1FKTXBoQlg5emVYSDV6eXk1Sk4zM1FEMFl3QjBIcHhWWjVBWHcxQ242?= =?utf-8?B?Q2EwVWwwdHEvdWlobzJ3VjNNdlFkWVNGQU5WUndrbldlai9zUXN5ZlJLZzB6?= =?utf-8?B?TEtVYmd6L0JYb1l6R2ZpSG9KWEpIeFl1TkxkSHQ4dUJDVmdZVzNxcURSUE00?= =?utf-8?B?NXVVUytUM2RnUnV2aWY5OElWTGdaenRjVUJHVEZXTkYxVE9qUFFJWElPTHpJ?= =?utf-8?B?Y2R4Y0d6ZWt6a0ZBVCtCOW1zek1vYXhFT3h1WFJvQldNSmx1RFFkL3JZWXlE?= =?utf-8?B?Kzk1N1V4ZHNYMWxyYjBFSGNjaEhtdzNUMHlqM0djVnM3VVVSTkpGMzdzT0RN?= =?utf-8?B?M2lrK2NMbDg0c0V6V2tVWEVCRm40NUdRZGkwRE02ZERFMUd1c0RZVHlUQWdN?= =?utf-8?B?VTNkQUMrVFFjMlQ1RE5ZY2JmVjZFZHJtZlNYUjJHVEtmbzdTZnBwWG1WZkFX?= =?utf-8?B?TXhIa3d0L3lLMExIRGJVL0hEYitQd2RsaUdETXRkSllmOUZJTUJjUjBYMFJL?= =?utf-8?B?dzVUZ1d3a2I2WXNJZENHOEg5blUzWjVWYkptU0tFQTZsK2hXYmRWSjd5MkUw?= =?utf-8?B?cElMZjI1YTBEV1B4NGllSXpxOXEyUTYrR1hXSnArdmxHOHhTa1QxbmkvTjZU?= =?utf-8?B?SVNNR2dGK0ZOVnhnRzBVYTlpcko0WlluUVNLZWR6Q01FS1RYNW9CNFRUWE5W?= =?utf-8?B?dHdFNTJ6MUhQdzNlZWhYaTFuZTYzeVFuQ1NaV1dEQk5RSFhqZjlyVmpEYXpR?= =?utf-8?B?TDhKRzlyd3VxTnRtTjdZQThMMXl0WkJVTFRwaDJTUGNqR0FBMlh1M05seXhp?= =?utf-8?B?M3AvMGd2eXhoMkVpeEdLT0FHRjRBTE9IbExtczBrUHljOWNCR2RYeGtPbFpU?= =?utf-8?B?VXNwM2dZRmI1Q2huTTdUMDMxa1MzT01Ib3lWcDlSK0t5dFRYaFZodm92VDIr?= =?utf-8?B?ckdZL1FzOHp4MXRpdFZMS3h4c1luV0xFcTdVOXZRaWF5R0k1QjVBUlBpZWI2?= =?utf-8?B?SXkxV3kvbGRPa0JsK0ZGZzluRWhMK2xSL1FtQkl4U2w1em14L0x1MnpsdDZS?= =?utf-8?B?c0dJNlc2cjJYOW1iTjFQS2N4VG01WTVCUGFlbnZzejBDenlZMDVSR2Nlbys0?= =?utf-8?B?R3M5YUlKbXB0OHVkUm1EeFppYkdJQTlOdnFPVjZ4UThqRkRSdUxVLzBlNllq?= =?utf-8?B?NWJmamFIc1VlNG5xazJwVjYyd3FxM0xkVDFDSklGY2NyaVBITTFvRUNPM29u?= =?utf-8?B?UzVLZVMwQXBhTXZMMGY4WTFwcFdhT0NHRUFWbWYxOG00TjJZTlBhcmFiTnNT?= =?utf-8?B?bmh6aUI4YkdYK1ZvU0dodFQrZlRKZlhoSFdpL3dwSTZNM1hOZkFZVEdjYWlS?= =?utf-8?B?RGlMZWErb09iL01raHRKMmU4eDRBZW5OMjIvSjk0bXh1UThlTGRMaVczK3pl?= =?utf-8?B?MkxudWhVWkNzVjNadkpkbk9qQnF5Q3NBYk4yN2d2M2MwUkQ0OER4d1NEbkhB?= =?utf-8?B?RnE4ZFBzbDhXN1NRTjkzVkxqQ2Fmc090L2U0MG1lTUR1QnhzZTNkc0lhaXNu?= =?utf-8?B?ZVZaZVBVOTR6WjFsS1FyVkVtQmJRT2YzZFhKRU1ScS9yNGdxSDlTTmZ6clVt?= =?utf-8?B?MVJsZUk0U1lXZlo3Z1UzL015NTFndC8vWWJHVHAyWWNWc29lZmpSUjlXbzl0?= =?utf-8?B?VFBoNTdBbzFVZnBobjE5T0FUNVJkbStlcVR3SENuK0l6VXQ0dVFLaTlEcCtY?= =?utf-8?B?UkwwbnJzelRCMnNLVlI3cFBOUzJwVUNxWks2bEJHRUxiWnR5T29BT1pVa1g2?= =?utf-8?B?WE16eUMrdmVoT3E5bDAxaHpZUFVod1pKSHN0aG9qNkI2UFY0U2Z2eENWWGR1?= =?utf-8?B?aXNFN3NWTy9QeHlNbmlCbzZwSktxcUNYQzBZQWFkdG4yMmZsKzYrdElXVFNl?= =?utf-8?B?ZVJ2cC9Bc1UzOXFlWkFkNjBObk9Rb293Rlp6VERJNHRWdW9vVXUvOXhxL3Vu?= =?utf-8?B?MVE9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 081c1065-1a1d-4d25-b1e4-08de1c7d809d X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:10:49.0905 (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: 7LiObCwQuAA3fqpmbYHNE8Ab2X4+NQ34dYwV9mdZ4lOMUWo2v2NmbAKLgzvlk1JHuWUluXPisqs11NFPcQ4WsQl+DcQ6TCRClf/j8CEna40= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com Since commit 4eb0aab6e4434 ("drm/xe/guc: Bump minimum required GuC version to v70.29.2"), the minimum GuC version required by the driver is v70.29.2, which should already include everything that we need for migration. Remove the version check. Suggested-by: Michal Wajdeczko Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index 44cc612b0a752..a5bf327ef8889 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -384,9 +384,6 @@ ssize_t xe_gt_sriov_pf_migration_write_guc_state(struct= xe_gt *gt, unsigned int =20 static bool pf_check_migration_support(struct xe_gt *gt) { - /* GuC 70.25 with save/restore v2 is required */ - xe_gt_assert(gt, GUC_FIRMWARE_VER(>->uc.guc) >=3D MAKE_GUC_VER(70, 25, = 0)); - /* XXX: for now this is for feature enabling only */ return IS_ENABLED(CONFIG_DRM_XE_DEBUG); } --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0866632E698; Wed, 5 Nov 2025 15:10:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.10 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355459; cv=fail; b=gfVDlaMyORGtEyzLw0JJc1viqHpRBEP98zRk+JyxN+uu+jqj5/ExgNIs/ogQokfxwfMy5Qf5P0x3QvuBROvYGDsV1gGVG4MuHzQFI0p9eWySrTs245wLqeS6eAi2Khvxzq7mh3CveIJC15AaKkCm6Pab5t9LlZv2gTlIoaQEniM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355459; c=relaxed/simple; bh=iLI8JrHHVQ2cYjhscbGAx5Lh+VTaODeQh/bwkTRrP8o=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qrZGreR949k2PSiJXxYUDSrojI77dEyQi/i0RT+1uvHRdWfU52dAUEjNH9iO0umk21c4BzMYo9fzXhNgM3g9RjWS0lCboamkfBOWLVnUavL9vvWfiB5b5g9e0wc18Zxm/M+WPoYW4Nxtx6OpMGaMV1eKdC8CObG4fCvDnZfcO1w= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=E4hA2EJZ; arc=fail smtp.client-ip=198.175.65.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="E4hA2EJZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355457; x=1793891457; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=iLI8JrHHVQ2cYjhscbGAx5Lh+VTaODeQh/bwkTRrP8o=; b=E4hA2EJZlRH+5M+cz1XQtKuUPFO1pIKYhAwqPpuN/fp6OAzZoKZisFuD mUZtmkvP8l4CXj25Z3NL2m6YjzytN9c5PcJ8FyWaN72Kf654xPg098aWQ CCyhHQQYFwoEnt4aVRLo8wHqb74A4OoMWDfmxN+Kxk5U80+tmSLH7lIfR rx44vWzr9Y5yszgk9Hpvr/8ajywqzNF8F/QGC0g9p6FdNVPAS8bDTvIc5 oq5qoTn7gNJFIm6tF1ZMeuBZXFUlJVgCoy+9T08Fze8UbMt8fKuqi5ICn 3KZAZ7CWdAlqXOBKHwJrk+L8MFbrblFwmQzY0fXlvmRGiC6SEOD9y4qRk w==; X-CSE-ConnectionGUID: QQ4q+luOR/+SrFQJICiFgw== X-CSE-MsgGUID: oj1mGh0sTFWyCP+DOxhxKQ== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="81875710" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="81875710" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:10:57 -0800 X-CSE-ConnectionGUID: cROY3iu7S1C9YJUk9XYCsQ== X-CSE-MsgGUID: LquYTGl1Rta67UShdKY+bA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="224725349" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:10:57 -0800 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:10:56 -0800 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:10:56 -0800 Received: from SN4PR2101CU001.outbound.protection.outlook.com (40.93.195.67) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:10:55 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SUBD6Du7pNPrif+ulboVWxf6pJfMTTCWgHKFdFNtzjaOXZnqppGBHSEskwFPVpxtcUbPhsKWBT8TT2AXjGafQAHUOIh2Qa2SFEZLZmtKndMdX6YJQ68VZ9216C6NFkJ5A8FbMzBlayD3TMF68cmwLYKuFR0PtTfChKG7FsnN57p9UWxQUxfvvzogTy9q6bTaca96E+zZwM8xzpL2uHAbh7Vap3AETIiRN2Oje9566+HDhGeXo3BOX5Rpr38S8RfOOSZaW2IaE/n9+L+sH3S8t0/qyAqKh0ySGbphTPzFrOcxZcaPWs5rEiR6CxPoP47epZtx3flOlwfZZ8qqDjA11Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=1uqQJQhkv31wXmqP5UoOVV2fWguWHzqPsmRB5Q2ru+w=; b=pGxK8wAr6dkMqQdHwnKjhYufBQrwO0PgNcKlREoMV4bIZTVNLaQIIB8LCCj0v+UVAHBEdz3L7uJRb5PtWWkaHZorXDuG2flGRQkIqN+7tOc32bWgh5/PSNy9ukkhssDKPWZHsdtTa9ix+fx2C3zIuv4cUYnOGPh6GbAcyedUaNXyOokmN9SLpXlE909PBHWYUAmN2UrVJ+l3YBtq5VvbhQ1b6wWfTYvnVcHURdfy9hQ+CL9xLlgHbdrQARSgMWzh7a4my5dM2t/vGSgFrAP4cYHVQPiWaPIHWkoAOx06qW6qwRXdCcLktO+GvA/6DZVWc+h1wqwcQEBoyRmoph6chg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:10:54 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:10:53 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 02/28] drm/xe: Move migration support to device-level struct Date: Wed, 5 Nov 2025 16:10:00 +0100 Message-ID: <20251105151027.540712-3-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0192.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::14) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: 7f612888-39aa-4798-d7eb-08de1c7d8389 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?L0Q0SmxCdlJhWXRySndPN3lZblJ1UTYvbGg3TVloYS9sQ2pHQnFmcjBjalpn?= =?utf-8?B?RnBIaGE3T1NpdVUvd2N1NWZ6dGFqbCs1Z1ZWR2JzK3BveldXT01pQmQvV2dZ?= =?utf-8?B?QzBTVTBzdTN5aGdENG9yZCs0MU0rZElzQWh6MHY2U1Jxd2hrQ0kxNmxBZlU0?= =?utf-8?B?aGYzd0tKQktPNFFrTys2QXloZWgxK3ZzYnhBa2RtWW80S1JoMnIyRDZJc1Nv?= =?utf-8?B?RlU0TXplRkdXWk9pNHE3WG5GWE50RzhjbFJ6THJ5VE5rOE1RRFNQNWtmR3oy?= =?utf-8?B?eWFKQW1INnpnblhvcVQva2F5L0doQXhoRHVXK2ViMGxqV0FvWDQ4VW9XVjQx?= =?utf-8?B?NEZabWhVOG55RHpKVmxxalIyR1RrbzEra3F4azJ4ZDRUaEJJbm1VLzQ3aElZ?= =?utf-8?B?TUdEcU9ZUnNkSm1OSWdlaTRsZmRrZ3NoWmdYelZ4dlJqKzZYTUcrRHJOQ3FX?= =?utf-8?B?RnhGZkhyaFZZR09IQmNnNUlXL3pROG5OdWd1VzNCN2xXM0gxNzBBclA2Qkhv?= =?utf-8?B?N1l3NkNzTDFDRlh4MkdPZFI5RVQxMCtkbzhIbEtDSnNISkpFRjUxNnBCZkgw?= =?utf-8?B?YytRK205eHIrQ0diYWpoMllGNVdBUlh1Z3Jxcjd0UnQrY1o5bnp3dGtjMVZI?= =?utf-8?B?MEMrdzVDWnhueUQyS2RoQnNLS1U2RzhtUnVBMnN4MU9BeDUzRUZGUkt5dFhp?= =?utf-8?B?UCtnV0pjd0VERThzTnZNRko2OENueG1XVk9oN3g1ZUNqemlZeWg0YStZMXN6?= =?utf-8?B?ZmJLM1ZReUJJTFpwclVGeHEyb1ZMcnErc1BONmowUHQxY0xyQnlTbmtpZFhw?= =?utf-8?B?eW1JNGtraFlLZGo0WDZOd0x6NDdLRXNhZVNZY09lVkxzUFZwRWZRd1FxT3Vm?= =?utf-8?B?VGRDTTJuRy9aYTlYMENsMHdOTldMSGJ6TnVrUnFPUTFhZE53Y2dUdmV2Mk9o?= =?utf-8?B?OENOZFlxRjZoM1JxQzRFejhOWmRUNnJ1SkJpUjlYY3NuUlIvRElVWWMxSVQr?= =?utf-8?B?OEtQT043Zm1QRm5jK2xHV3Q2elRWSWljV2djSmxITzErMElPK2QzdUpGL0VP?= =?utf-8?B?bWZuM2M4NDV2aTdJLzBKN1FScEVhQmJuaGRzUldONkhQak9qNzZNSUl0RVJW?= =?utf-8?B?Z3hBU09FTExGV2tvNDlkVHhINkloemZISUg3d3NucldacngxRit3STZrdGNr?= =?utf-8?B?WFUvdytpQTRSdzlLc05WY3ZWWWJnY3hJRlVMb2t5ekdBcnViWHVPOHE2M1NG?= =?utf-8?B?YjBTcVRyc3ZFL2dFQno4MDJBT2l3ak1sbEkrbFgyMUs2YUluSkQwOFh4ci83?= =?utf-8?B?UFRkYmxsT3J6eGdWUjVpOXVqWnlVUGU0cW1saklwR3BhdzN6SmtoOEFONVNH?= =?utf-8?B?NXdOd0dHaEFkZGlibmlncGlFdzRwc1ByZlNXSUJCamQ2MTFkQXBxRHNhcWpi?= =?utf-8?B?bGh5ekVnc050WkdDWWFTbXR3dC9vWlhwdzdPaWJRWXV1alNWbTkzN0dRbnhN?= =?utf-8?B?R3NjUDRBUmJJRmZhVTROL3p3NmpQTlVlS2R3VUxDR3N4clVZUUV0Z3BkQWtq?= =?utf-8?B?dFdPSnAvUUNEYktiV1RKVStyTzlHS0VRdUJvdW9XdVlLcHdXcDlXQy9pRjdL?= =?utf-8?B?S0ZHNmoyWnNnWDNCcm5ncWw4ZnRCZWQ4UFk0ZE90S284cklwbUpROVVUZ001?= =?utf-8?B?am14NmFyc2FTaU4zcE5yQ0JnWlQvdnVHNDlPM1I5VkovVnZybCtqYXFrY2tm?= =?utf-8?B?QjRqTUdYeVBuS1RaZzNGS1lYbW1Nd0l5RVJXMGx2WmllOXRYd1ZiRW9aUmRk?= =?utf-8?B?SHlFVUZvc1hLYzdPdmN0b2RlNHloajlHN2hxSTR1Z0hrYUNxT1pkb0dXbVgx?= =?utf-8?B?V0R2NUQ0RmMwTWowaWpqd0tpTHE5ZUtRelRHb2pGVHc1K1VhREk5Z1JHZURX?= =?utf-8?B?UXN3aDZLM2VPcm9Zd0t4TmpEM2FkbDVaMTNKWUNWdS9OeERrSjk1emNPYWZt?= =?utf-8?Q?dXyjJj4dzwpDKqZlT9ziCLO2z013Bc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RzU2LzlycmdvSDBjZkVvZVF2LzY5S2V0ZnF0U0ZkazRQeGRaL1VCa1lNMnd3?= =?utf-8?B?aXZqNjJsWVZaaWhGL2pUOFZGQkkrSUVDcXBlOHNFWVlPWG9TSFZuUlhpUkxX?= =?utf-8?B?ajFhMnVnL0xydWw2SWlzZk5ONE8zY21zbERORzdZNk1IejlnVitBY3BaNXdy?= =?utf-8?B?Z2pOZ25SYjJ5NEdZeHlSbDBlU2l3TXJoTnNxWkJ1VzdEVW9MaGcxeWdGRUJE?= =?utf-8?B?cHZrMHRoVmJDWW1Sb2hLRzNTTUlkenE4SnR2aGw0NTc0a2o1bFhJWWlhYkRI?= =?utf-8?B?WkFyRDA5a21VNEdSUUk2SXFFci9GcElveTRRVHNERjdLQk1VNTFheWhBZERt?= =?utf-8?B?WDFDZnJBOTNxM0kvTjM1QnFrdHQ1MGM2aFBpd1FwL0ZUQ3pEaCtWVDcyalB1?= =?utf-8?B?UldrNFdjM3VYNXk5YmJFQnBaWklMV2R0blVVOUNBN0xpM3JISElIT2IvZnM2?= =?utf-8?B?VU1xYXFueGlMNFp5aHBvZTdERDdSSnl0RmVyb3lWWCt1SS9SVUZKczd3c041?= =?utf-8?B?eklkRGw3cXljRi9UbXhGcDlmUGNhWjcvdHpkYVBKdFRwS3V6R3dEK2VPcUw1?= =?utf-8?B?SnFydGxjeE93Z1NmTG9LL2o4bXZlcXZCTUxuQnE5R21vaVF2c2ZSTm9LS1Bw?= =?utf-8?B?dnkwZC9ySCttcUFxb0tkNkx0SUlJRzdEUllFRk54enFzUmR4QTBEL0w2Mmwr?= =?utf-8?B?VE9UcTRjaWEyRkFmenZZUzlXZ242OTVtQnZONzNHUGdMU0g5Q3F4aStwOVpi?= =?utf-8?B?dWFRd0VwdHFBTGttcVBOUWF1SGdHcUl0Wkd0MjMrZDFDWENUV1BQTWh5VXdm?= =?utf-8?B?UjVIM0JlL2cvWk8rZXZwbzBZVUdFZXI4U1VLSmJBV2hUSHl2a3BZK2tKVE5O?= =?utf-8?B?Wi9vaGQ5eHlVSncvY2lCV00rdmxLb244QmU5YnEyRUZBMWdobUpWdVNKd0VQ?= =?utf-8?B?QTcvVzVXTXBsblpSdlFWckxKc1U1MXpRdXpzUmx0N1FGNll6c2YvN2hTNjhO?= =?utf-8?B?V0duY0xybHd1RWJuUXIrNGhPeDdUVWZmZWFFamgwOXc1L0ZmL0xVS0lsOVdq?= =?utf-8?B?c0VUamtqT2M1dVpWcjQ3czVrSUNlWjh1UWZITE1SMXJlcThQWXVDcVZiK0Fu?= =?utf-8?B?dnlOWWhLL3hNK0p3YjdJNlNzSnBjNmJ2QjJzUHNXZkxrWm5NTnRTOWxzMVRr?= =?utf-8?B?WVJkZEhtaG9ISFZEK0VjU3A2ZkpOV1dRUDlmSW9iWXluLzArdk9mUUU1S1dk?= =?utf-8?B?WExraTRXNVh6Tjd2bUp6eEVxWFpNOEpXT1JQdDJZNzJKTWJqOHZtY3FPZmpk?= =?utf-8?B?QU1vZVJwY0hncUlzY05qaTYzd2xXNmNLS21NYnpSdCtNSklkZmwxZWVTaVJY?= =?utf-8?B?QXhGOXAxQ2NXWldySG05eE1LMWkvY1hLTHN4UlRkaW1pRC92Qzl3anBCL2Er?= =?utf-8?B?R2dtY1g4NDczcnVXUFkwaE41UExYUkVhRndKOVJraFBaMzJOS2FZUEx5UWh1?= =?utf-8?B?Q24wdWJqZDF0N2J1WWRJSlBBTFBsMjlKRWw1eUJoOGRDemZrNDg4dG1WaHlF?= =?utf-8?B?WWxaeEtFYy84aVp6MnpyOGpWQVNieWdhTWVJdDFxMVNvYUdBVFlDZmVxNmtu?= =?utf-8?B?ci9jUmNNU3dSRWFGYmxjTk5ucS8weHFjMkxQUjdnMTBHT2w5eEVQUWxkNmZw?= =?utf-8?B?QWo0OXdvZktDU016dUZRUjc1b2tMVmhGODJZN0VqeEZrdWlBWUlGNUl6UEFW?= =?utf-8?B?L2gzV3FHYkNOWGRRUmNoY3lRUjVtaTFzaExZZlg4b04vV2FDVFN4OGhXTjE0?= =?utf-8?B?ZjVCcG5ERU02NzQ1ZUd6dHpRME92QTcyUjFUK3Zrck5WSjQvNnluM2JuZ3hZ?= =?utf-8?B?REt1ZjVxMU1JN01EZms0Z0p2S1pmT3VWcSsrSzVqVlZaWUFiWXY0d1VyRTZN?= =?utf-8?B?RVVZVHZmVHd2VHBMV2ZRdFpCaHgzR1J6akdnNE4vWGp4TUVHVlBlcGRUR3o4?= =?utf-8?B?ditCVGFYZHp6QjNqR1pqSnFWdTh5MXBVQVdXcitwSEJndVJaOVhSNjZnYWQ3?= =?utf-8?B?K09oRk04WVc5TkZ5ZUk4bzdKallHL1N5YW44M1VKNEd4dlBiRkhTQXFybUNn?= =?utf-8?B?c2NKOGdSWlA1MjZ1dUZFZjBsZXkwTlMxbUhqTW5kdml2YzRRQ29oSlVRM2JP?= =?utf-8?B?eWc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 7f612888-39aa-4798-d7eb-08de1c7d8389 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:10:53.8149 (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: Qd8kuUprzLdfbPQyAsURRtalDEncWf8zPETpjAdzPMUmeTbo2QGXOmePXKX9bGgNgd8dU30ze/aY7UoRICt4wjdFmsU+s8MKzr8AV8kvRcs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com Upcoming changes will allow users to control VF state and obtain its migration data with a device-level granularity (not tile/gt). Change the data structures to reflect that and move the GT-level migration init to happen after device-level init. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/Makefile | 1 + drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 12 +----- .../drm/xe/xe_gt_sriov_pf_migration_types.h | 3 -- drivers/gpu/drm/xe/xe_sriov_pf.c | 5 +++ drivers/gpu/drm/xe/xe_sriov_pf_migration.c | 41 +++++++++++++++++++ drivers/gpu/drm/xe/xe_sriov_pf_migration.h | 16 ++++++++ .../gpu/drm/xe/xe_sriov_pf_migration_types.h | 19 +++++++++ drivers/gpu/drm/xe/xe_sriov_pf_types.h | 4 ++ 8 files changed, 88 insertions(+), 13 deletions(-) create mode 100644 drivers/gpu/drm/xe/xe_sriov_pf_migration.c create mode 100644 drivers/gpu/drm/xe/xe_sriov_pf_migration.h create mode 100644 drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile index 7b4ca591a4ae3..cb6b30fd8c2d8 100644 --- a/drivers/gpu/drm/xe/Makefile +++ b/drivers/gpu/drm/xe/Makefile @@ -177,6 +177,7 @@ xe-$(CONFIG_PCI_IOV) +=3D \ xe_sriov_pf.o \ xe_sriov_pf_control.o \ xe_sriov_pf_debugfs.o \ + xe_sriov_pf_migration.o \ xe_sriov_pf_provision.o \ xe_sriov_pf_service.o \ xe_sriov_pf_sysfs.o \ diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index a5bf327ef8889..ca28f45aaf481 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -13,6 +13,7 @@ #include "xe_guc.h" #include "xe_guc_ct.h" #include "xe_sriov.h" +#include "xe_sriov_pf_migration.h" =20 /* Return: number of dwords saved/restored/required or a negative error co= de on failure */ static int guc_action_vf_save_restore(struct xe_guc *guc, u32 vfid, u32 op= code, @@ -115,8 +116,7 @@ static int pf_send_guc_restore_vf_state(struct xe_gt *g= t, unsigned int vfid, =20 static bool pf_migration_supported(struct xe_gt *gt) { - xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); - return gt->sriov.pf.migration.supported; + return xe_sriov_pf_migration_supported(gt_to_xe(gt)); } =20 static struct mutex *pf_migration_mutex(struct xe_gt *gt) @@ -382,12 +382,6 @@ ssize_t xe_gt_sriov_pf_migration_write_guc_state(struc= t xe_gt *gt, unsigned int } #endif /* CONFIG_DEBUG_FS */ =20 -static bool pf_check_migration_support(struct xe_gt *gt) -{ - /* XXX: for now this is for feature enabling only */ - return IS_ENABLED(CONFIG_DRM_XE_DEBUG); -} - /** * xe_gt_sriov_pf_migration_init() - Initialize support for VF migration. * @gt: the &xe_gt @@ -403,8 +397,6 @@ int xe_gt_sriov_pf_migration_init(struct xe_gt *gt) =20 xe_gt_assert(gt, IS_SRIOV_PF(xe)); =20 - gt->sriov.pf.migration.supported =3D pf_check_migration_support(gt); - if (!pf_migration_supported(gt)) return 0; =20 diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h b/drivers/= gpu/drm/xe/xe_gt_sriov_pf_migration_types.h index 1f3110b6d44fa..9d672feac5f04 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h @@ -30,9 +30,6 @@ struct xe_gt_sriov_state_snapshot { * Used by the PF driver to maintain non-VF specific per-GT data. */ struct xe_gt_sriov_pf_migration { - /** @supported: indicates whether the feature is supported */ - bool supported; - /** @snapshot_lock: protects all VFs snapshots */ struct mutex snapshot_lock; }; diff --git a/drivers/gpu/drm/xe/xe_sriov_pf.c b/drivers/gpu/drm/xe/xe_sriov= _pf.c index b8af93eb5b5f5..a6023c2e4b12d 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf.c @@ -15,6 +15,7 @@ #include "xe_sriov.h" #include "xe_sriov_pf.h" #include "xe_sriov_pf_helpers.h" +#include "xe_sriov_pf_migration.h" #include "xe_sriov_pf_service.h" #include "xe_sriov_pf_sysfs.h" #include "xe_sriov_printk.h" @@ -102,6 +103,10 @@ int xe_sriov_pf_init_early(struct xe_device *xe) if (err) return err; =20 + err =3D xe_sriov_pf_migration_init(xe); + if (err) + return err; + xe_sriov_pf_service_init(xe); =20 return 0; diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.c new file mode 100644 index 0000000000000..8c523c392f98b --- /dev/null +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.c @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright =C2=A9 2025 Intel Corporation + */ + +#include "xe_sriov.h" +#include "xe_sriov_pf_migration.h" + +/** + * xe_sriov_pf_migration_supported() - Check if SR-IOV VF migration is sup= ported by the device + * @xe: the &xe_device + * + * Return: true if migration is supported, false otherwise + */ +bool xe_sriov_pf_migration_supported(struct xe_device *xe) +{ + xe_assert(xe, IS_SRIOV_PF(xe)); + + return xe->sriov.pf.migration.supported; +} + +static bool pf_check_migration_support(struct xe_device *xe) +{ + /* XXX: for now this is for feature enabling only */ + return IS_ENABLED(CONFIG_DRM_XE_DEBUG); +} + +/** + * xe_sriov_pf_migration_init() - Initialize support for SR-IOV VF migrati= on. + * @xe: the &xe_device + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_pf_migration_init(struct xe_device *xe) +{ + xe_assert(xe, IS_SRIOV_PF(xe)); + + xe->sriov.pf.migration.supported =3D pf_check_migration_support(xe); + + return 0; +} diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.h b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.h new file mode 100644 index 0000000000000..d2b4a24165438 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright =C2=A9 2025 Intel Corporation + */ + +#ifndef _XE_SRIOV_PF_MIGRATION_H_ +#define _XE_SRIOV_PF_MIGRATION_H_ + +#include + +struct xe_device; + +int xe_sriov_pf_migration_init(struct xe_device *xe); +bool xe_sriov_pf_migration_supported(struct xe_device *xe); + +#endif diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h b/drivers/gpu= /drm/xe/xe_sriov_pf_migration_types.h new file mode 100644 index 0000000000000..43ca60b8982c7 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright =C2=A9 2025 Intel Corporation + */ + +#ifndef _XE_SRIOV_PF_MIGRATION_TYPES_H_ +#define _XE_SRIOV_PF_MIGRATION_TYPES_H_ + +#include + +/** + * struct xe_sriov_pf_migration - Xe device level VF migration data + */ +struct xe_sriov_pf_migration { + /** @supported: indicates whether VF migration feature is supported */ + bool supported; +}; + +#endif diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_types.h b/drivers/gpu/drm/xe/xe= _sriov_pf_types.h index b3cd9797194b0..b15d8ca2894c2 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_types.h +++ b/drivers/gpu/drm/xe/xe_sriov_pf_types.h @@ -9,6 +9,7 @@ #include #include =20 +#include "xe_sriov_pf_migration_types.h" #include "xe_sriov_pf_provision_types.h" #include "xe_sriov_pf_service_types.h" =20 @@ -44,6 +45,9 @@ struct xe_device_pf { /** @provision: device level provisioning data. */ struct xe_sriov_pf_provision provision; =20 + /** @migration: device level migration data. */ + struct xe_sriov_pf_migration migration; + /** @service: device level service data. */ struct xe_sriov_pf_service service; =20 --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B17D332D7C7; Wed, 5 Nov 2025 15:11:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355466; cv=fail; b=IIp/EeTFH6vzaY2yogsW0H3JwLvX+BHHsTOC3zyjCGkqWdMQvnCaUxz99F2LvzP7Skc7kRrhagMAjavzn+KqQhQiSl3DaguQ6ScaGR2GWWbUhkPzVhdDA/It9RM+V9ImyDhDRsvWz69vlkx3Sd/T8iTDdJCTU5AKS+wFXiyAQFI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355466; c=relaxed/simple; bh=zErL3GnVD94eZOnii4wcvnlntZUYz8gisQlkrFDmHDI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=keFIfF33DFpTXfUhJylEzHBYo6ODPDDmRjSIoKhdl5jvSldeYS7NkjQcJf+p/2hQMhH44xa8uuMirv/ycPBTRqwsGh7wDqOvlp3vOFSSfJsWCVzV/ABBK1cAgmLYliwPDTxA88LakCh52a9WsYxIZ37jhTlTCMKSeueaMItP7jA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=JC6ZkMyA; arc=fail smtp.client-ip=198.175.65.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="JC6ZkMyA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355464; x=1793891464; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=zErL3GnVD94eZOnii4wcvnlntZUYz8gisQlkrFDmHDI=; b=JC6ZkMyAsH2VzNRRzGd+6rLY6BtsitMYwXwt0GC+0NY6eiLsgqrkUFgt sDwmjouprAsIrCC5E5cKCIc+zhBJtxLtgXG1AGSYMgLoYYzxQh3k9cohc mpxHQCF7XMtCEkL50I7pmBH9m1yozOi8CFhCvFd1AtB8ZN9XpStbQxIhA wRolJyjDKBOk11t+RjVaZ7NDKCtuK4vLBa/i4495KvJYkyjNUEQ0P96Zv ez/gMQHm333FddKb48FY8OT86KoNU+hN96KTQN5kLodYRy5QORR70RnK9 xHAH7Lthenean8P3ZF5c3UBXxEBmUVw8mG09N9+rJcyhCzuH3mW/FXAc1 g==; X-CSE-ConnectionGUID: jlqw6d+QS+K9wdXOXtRoKg== X-CSE-MsgGUID: wnb+YaocQLCSxNS8yKI0mg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64354393" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="64354393" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:04 -0800 X-CSE-ConnectionGUID: NtYEALKpQL6lfuqyqF/YgA== X-CSE-MsgGUID: CFN5/d6iTv6/1FuTJOs6mQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="187928872" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa009.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:04 -0800 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:03 -0800 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:03 -0800 Received: from SN4PR2101CU001.outbound.protection.outlook.com (40.93.195.14) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:03 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aKDWRNoLPK00kdt3mi0BL3QPWNg90QEf5yQz3v7RAibFjWZCGeaq4sCm2BEO930p9lvzRtSJ2Z3H3Xzo/P/zUR81Zd5u/MSGDPxPBuYKjdqKIg/yCKWw4wwa9/xPmSm4wDk1Pgec458xCJrACyiK9Sa/3zJE8f42u75YQSLhUZLuKEqAF0WTaa+bEXOzwvxmVk33mhNwJSpmynqYbxLwWMh/C0FGpNcu010QlUKY9uBXaq24yOTh210JfvulOC/bUL8V1XILDoW7QMzAQa0j2gGx8qlnneKGBu+mFW4fG92GJQE1HrjO0oMK8b6WYp33Hup+avA6sqsx4RilGtsCng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=UIxhayoW+jc4Px1hjlj3r2IhdUR+X+7S9qezWs85BNs=; b=lvr8cPZII3+xvrGYNk00Qn7jrmzNt3h9AqXob0Cb9vY2bEjmLAyhTmF5bpOkI6J7hD6Mk+gjeZY3hv6egQ0E62i+bdD5w92dnee7Wk0Wvuu4jKSfTeNsNrrKcoKaG6+cSVpdjlMB+V6t8mK8eUDT8UY0RfQt+9q8zMIangKUNdzkTzsTqhCuYr3jaNf4VZ4hNd+uQedBv/SC6qyM8v05+DdfGoZDk/B8waF1kCap1IgpHv5GlaWGBD5pc33+z5U5OTKGtWSUBlFikRWPbf7edlfqWedTb1g6gjh1WX1GSx0WlK7lVfFukHPjwZ7Km6swENxmcEYiY3R/rH1xCMEBRA== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:10:59 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:10:59 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= , "kernel test robot" Subject: [PATCH v4 03/28] drm/xe/pf: Convert control state to bitmap Date: Wed, 5 Nov 2025 16:10:01 +0100 Message-ID: <20251105151027.540712-4-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0188.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:8d::7) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: b4dda3f5-2a8c-4d66-e072-08de1c7d86c0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?a01yNUZzNVE0cEtRMEp5akwwWVpzelNJS3FuUy9WRk15Mk9ubWdWNFkvaU45?= =?utf-8?B?eG1GeHBWbE9XajNrZmlibytPdm10Z2U3YmIxV0t3dnZkemw2TzBWUklKVkdY?= =?utf-8?B?KzBEYVhvazBJa3lMamp1cXdUNlI0TnVmZjVMb1hiY1l0SGZlYVVkSld1ZTY1?= =?utf-8?B?aWNWcjhLRTB2QjR4YVZTa0N5WllFaElueWxCWFZsd0xaMFZHRVNyUzlTdVRO?= =?utf-8?B?U2QzYlk3MHFUcjdYZWVWNGN2ZzBTd3hGUWlRdjJZaG5TMHA4RHJwN2FXWGls?= =?utf-8?B?Z09LR0laNi9ENUFrOUNMeFlHZlQ4Z2VMWExHUDdkamVaR2NRdFg2cEZCQ0s5?= =?utf-8?B?a1pqVGYrRGg3bjNYSi83NGszRzRmTVp0b0t3RGE3cU1XSFpGNnFVeFMydVVn?= =?utf-8?B?VENvdmp2UXhwK1dBZys1bVRsVHNRK2tXR1lBNERqUnppRzdpNEh2aDJKc2Vv?= =?utf-8?B?ajdYazg4VkQ2Y1FzSXN3L05ZS0FUOXRzU0R3M0Roa3VCMGhnVWxMdkFrZWtQ?= =?utf-8?B?QTU1bEVLUUszV3NkMkM5aUJIYXRKOXBmUGY0MU1ySVc2RU9INzRzT3RxMno5?= =?utf-8?B?QWxpbWhNNXRDZXhzU1JRMUVxN3hWQXE1UjJlTmtwUzJZS3NHdmFGSTVtWFla?= =?utf-8?B?WjBLOUV3N2o3NjFBUzFVaklHTWx6QjNLaFR6eFhGclRHdmxWcXpZQVkxZEtq?= =?utf-8?B?OHgyZm4rSFZFNHcra1p6cTJmUFg0ckRQUTNyenlyV1pHOTJYVWV6WmQ5SjVW?= =?utf-8?B?ZWx5cnJIZTI1Y1h1ODB4eDAxZ2xtSm42UGVYZEl0WkdZT1BTNFc0RExCT3Er?= =?utf-8?B?dmllQnhOYkN5YU9jVnVkejVJMld4UVFVc09Qc0ZkaC9kTzZkY3JzYVVEZ21w?= =?utf-8?B?NU1Ec09ucUd0dG5odVpzclZaYnF6YUo4Q0JRSzJqRlcrVGwrTlgxTnVhZnR4?= =?utf-8?B?SU9ybzlDV09VYXpvN2NlUnZGbFo3Ym44a1M2SmNLb05NQU5Kc1hycnZpN3Y0?= =?utf-8?B?NFU0aHUyMmdiNUdQeUNUM2pIRU5tTmNJSXYyM0U3aGF2bTlrd2F6eUh5bnZi?= =?utf-8?B?NVEzQ050c3h1c1ZFMmJWUFJqSDNQRXp5allJdjdWQTBCTTVwdWJ6bjlveFhB?= =?utf-8?B?dDNwTEoxWjVLV2FEazJHS1BVKzB3cVJhUGhpcEFjRmc0VFVmUTI3aEE0M1hE?= =?utf-8?B?VlV3TW1yZHdraEgrancybmxJLzlUSDkzd0hwTVlDcXBZYUhaS05kVUhtaWZv?= =?utf-8?B?UEIxMzhibFNxZk5zWTRXQVRIZG52WmhUSDNJLzBFWW9tTy9kaytKdytjNUEw?= =?utf-8?B?ZWRSVEJEQnJHVFU3dHVJMGViZG9wMExSVTRMelZpdElqNUNPSnc5RlN1M0x0?= =?utf-8?B?NWpqcWNSR3VPd1hFQ0tiV2NsOGkyWm1aZDZsY3B2amd6b0NyZ3Z4a2JmNUZn?= =?utf-8?B?WUt5dTViUFdkZjZJMm4zald3YzU4ckxsYkdvVXZNNDdIMThhR0FLc2VQS3B1?= =?utf-8?B?ZEJVNlVrTUVFaGxYaDl0K3NaV21uTnk0RHJMcTNlUTRaeE5GY3hGRXg0WnZQ?= =?utf-8?B?LzM2bjhSMWJrL1NCNDRqSDdTWk41b0lOZXRRT1dad0tQUTY2Vk0yZWtGRnR6?= =?utf-8?B?NDJGVCtLVVpkU3EvMVhQeE5tczgyRkRrMk1xLzUvMDhkSlk1YXB5aVhnQ3dL?= =?utf-8?B?YWhDdEtlRDdCOU9Fdk5naTBXN1JlOURqekZWUy9oOGliR2JvZ2U4NVN5Zkc0?= =?utf-8?B?eWh3L0tubnBWem0yQityVDV0QzI1ZkxrYmFQOTJCYTdXY1kzQmNJbFNFOHZ3?= =?utf-8?B?QmVBbHEwdDBZenBWclpVNlkzMlQ5MGJjYUorRkR1Wmk3RExSMXJWcUJMbjEx?= =?utf-8?B?K0F4K3VzYjNlUC9BdUlac2tuUGwzS1l6OXNLL2FDNy9uYVVhUmJwN1pOd1Av?= =?utf-8?B?dXNZYStUYjF3RVRXWVlQMjZiSDhpVkNTSi83cE1yVmhtYmJhUUFqWG9yL1Zj?= =?utf-8?B?N2tSVlI2V2lnemZmaDcvbW5yeE9nelp6alEzdk8xQXpycFJBUDRrUjJoNFVU?= =?utf-8?Q?m6UyBF?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Lzl6VkEwcklQalBmNUNsUHdjRU5RVzVSWDh0U2pncVhVTk96Wnp1eW51K0ZH?= =?utf-8?B?LzZpL0xSb0Ivb29UUzM5SjdUM0Zpb2RJamdKeWpHeFphVllXVFJSSXJ6eGlX?= =?utf-8?B?bm8vQk5HUFpsVkxXeGQzbkNuRTJseDl6OXRwZU5ab3dTd0pjc21zZTkyNVJE?= =?utf-8?B?ZTZsblVLTnNRU1FTRG8yS1FjTDBDZVFoZWl6ZGUrcDJtTDZCVHNYbkVoWTNF?= =?utf-8?B?b3REdzI0a242ZEJMQ2UxbFdkOFd5RnBFWkp6UG1mUkdINzlVeDFwOGx1YnhV?= =?utf-8?B?NFVKRURJYTFzZ0hwWW5VN2h5VVhVZU5tYzQvTEl6bmtNMnc5NEtWYjdwdmNT?= =?utf-8?B?K1ZYRWFaQ2x2Z1BJcGVPYndQSkoza29XRU04RVQwdytkd0VsN2p0MEZreVBD?= =?utf-8?B?ZGNYZjRkMUN4SlAzbGpJaTcrUTA4R2lZOUdidlYvbm9HMnhKSEthdHgzSHZX?= =?utf-8?B?bHlRZ0ZLTktEYXJVUjRKMElYc3FRbDFHK2Z5WjlTWWJnVU1Oa1VZQVBEMHpu?= =?utf-8?B?UDVuVTVnVzZnajhJM2VIbnlDcjgvZTZKeTk1UWNlODR1dlA1SXQxZXlaOTBr?= =?utf-8?B?QmJTVk8wc0VWV1U2eXpHblJ4QnFOcnpYbC9vc3BBbTl6dXpuRjNZUWJsV0RT?= =?utf-8?B?ZjhJeWNUTUg1cVdneVRqakZHKzRzcmUyazI1RFR5cUhNbmJ6TVQyUzU5VEpI?= =?utf-8?B?SHEraktRcWdWYmt6TzlpVXJqNlk3Zm1XV0xvcEdwVFp4QWtzcXIxK29QTWVq?= =?utf-8?B?Y0d4cTJVcVFlZm5taXlTTTVGTjkxNUdxa2dHdnE1RUVhRjBOVlVkZzA2TFpi?= =?utf-8?B?cXZJa3Z0elp4YVlYcFJwU1h4K2Jqd1Y5SjZtYU8zdHF2bUlBNTBZVi9iTUZO?= =?utf-8?B?bkdXZWpzQVhQWTJtM0I0OE1lVmFOZWRmMGtsVjlQSGJ5U3F4bEVreUQvMllq?= =?utf-8?B?SG9ySUZjbkFkeUR6dkFnR1lMRGRISW5wUU55RE5kLzEyN1ZnVEZ6OFhBRktW?= =?utf-8?B?dlVFZjhKTk5kNWN6WFZ5RUFZanJlKzNxU1o4K01hRGVOTXloR1IvTnNycGUr?= =?utf-8?B?SE9NWnlXSExNUHp0UlVEQ1JYQmhIaGdjZnA0WUJSam8wcUdkYXVVc1JpWFlZ?= =?utf-8?B?UHd3b3B1RmVqRGlyU0NaOVEwZUNLTzRIcjl0WWJNVWhjOEoxZ1oyRUtsZnpS?= =?utf-8?B?dVJXbW5JMUlBbUFBdjdnU0xESEtkMDEvRGlEOC82elF0M2Vzb3RteWxaTlZF?= =?utf-8?B?cUtYaXd4Y0xnR280Z2hlbDdqSHFjT1Uza3MrMXdveEhyT1RyZDdpQW5QdC9j?= =?utf-8?B?VXJ2S1djZG1XbDdRNHdRN3Jibk5aQlh5V2dCMXNPWUZHL0ZqdjcvZVE5YnZX?= =?utf-8?B?SFJqRElPbDZwVmpIYktFUTlkWXQ5K1JxcDFERzRBcjlqNWdsQ1F1eG51aHQ5?= =?utf-8?B?d3p3eEVvZ3RNYkFFdUYzSkllTFIzMFkvbDVEK2lwcks0b2ROQm5qSUZPZzJy?= =?utf-8?B?Q01TTFpDcDhwbTl0ZzRFbVVuM29rUS9Xb2VETVRUQTBpQzcxUVo1QXJZSzdi?= =?utf-8?B?MFA2YnJCMnZYajBucDV6aEhIdWdxNnE0Ui9aaVpKNEpmL09EdGR1MldwYlZL?= =?utf-8?B?THk2WXBLbHBjTEpNdmNLOEREU1dvNmVuQ0d4bVlRTlNQTVlkODE4Wk5kdFg1?= =?utf-8?B?RWlHTERjNEpXWitVWGJKMFZxdDNRVU1oVGs2U0dhd1V6bmxyOUN1Q21tYy9k?= =?utf-8?B?UGRCM0NhdGxQbzdzNlprN0RBcXFTbThBbVpZWHQyNmQyVmVRbUtsTi9YV29n?= =?utf-8?B?aWV5bTNPNjB2bnpLTWQwYWpHM3pvTktCVTVpMzNCMUFCU2NHYWVqekxKYzN4?= =?utf-8?B?S29MNGVBZEQ5QmNyWFNObm5CRStuYmJsWS9NT1Q0NllSVE9Felo5ODR1VHBE?= =?utf-8?B?TVlacGZmMTNjU0tZdTBXV0MrQU84SHM5N2tMVjRLZUpTdS9VZzNTcUxzRy9S?= =?utf-8?B?VWZJUG9rQTF6aHNYeWRMZEpMeVNEZVBHdFhCU1d2dnE3anlYNHpyQjQ2UHJk?= =?utf-8?B?QUQ2VzNnRjJ5R1ZiRkhVMmxMb0xBUUg1b1Vpc0hkdzlpQVZ4Y2JUb2dXMkdT?= =?utf-8?B?Zmw2a1NQOTZaemE3Vkp6cWRRWjNQVWFvWmVNRGZMWU5OZ0lweExkVFFpMkhF?= =?utf-8?B?dXc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: b4dda3f5-2a8c-4d66-e072-08de1c7d86c0 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:10:59.1864 (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: WAbUYFIPdX2PLSzUXewQHr5SFlVRqDf1sE/i3LkzJ8DPorp6LKlmD0kBD1K5KbgbvinzPT+MYNpiPJtdPomTwfe6vHYZpKOiXIiknUdKPmg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com In upcoming changes, the number of states will increase as a result of introducing SAVE and RESTORE states. This means that using unsigned long as underlying storage won't work on 32-bit architectures, as we'll run out of bits. Use bitmap instead. Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202510231918.XlOqymLC-lkp@int= el.com/ Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 2 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.c index 9de05db1f0905..8a2577fda4198 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c @@ -225,7 +225,7 @@ static unsigned long *pf_peek_vf_state(struct xe_gt *gt= , unsigned int vfid) { struct xe_gt_sriov_control_state *cs =3D pf_pick_vf_control(gt, vfid); =20 - return &cs->state; + return cs->state; } =20 static bool pf_check_vf_state(struct xe_gt *gt, unsigned int vfid, diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h b/drivers/gp= u/drm/xe/xe_gt_sriov_pf_control_types.h index c80b7e77f1ad2..d9282eb259727 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h @@ -73,9 +73,11 @@ enum xe_gt_sriov_control_bits { XE_GT_SRIOV_STATE_STOP_FAILED, XE_GT_SRIOV_STATE_STOPPED, =20 - XE_GT_SRIOV_STATE_MISMATCH =3D BITS_PER_LONG - 1, + XE_GT_SRIOV_STATE_MISMATCH, /* always keep as last */ }; =20 +#define XE_GT_SRIOV_NUM_STATES (XE_GT_SRIOV_STATE_MISMATCH + 1) + /** * struct xe_gt_sriov_control_state - GT-level per-VF control state. * @@ -83,7 +85,7 @@ enum xe_gt_sriov_control_bits { */ struct xe_gt_sriov_control_state { /** @state: VF state bits */ - unsigned long state; + DECLARE_BITMAP(state, XE_GT_SRIOV_NUM_STATES); =20 /** @done: completion of async operations */ struct completion done; --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ED9AD30FC2A; Wed, 5 Nov 2025 15:11:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355469; cv=fail; b=PnZGK2Bi73V9RQvmuHU/aSNmeET8pp8OplTrHr0Ojnjpm6Dk5rA0J32iVXTxGiZ2M65BRF1ASTSVX+ucbXHug98hHfg+ljui2sTjR2/VvwUrWSwk5lH3e7AnHLWCDFJPoASceF1vda8ZoqpaDICmrSWbNAcRXMHlKT8/hsDUp9o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355469; c=relaxed/simple; bh=OEz4I1kY9hayeVPj5nR830x7hOsbU+y68eOFejL/64Y=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=twCH8DC4fe64j1AlqDanhp7XPZqJlLKTknq+H6qzRLfmS0/fr9yKNbg7ioBjWdMHWst11T0AaU8DJcLPFCjhPoe13AFlOd7YitTNF2b0jCaJyLxhK3MbAWKrNOImiE2gB7ntVPUYsxLIXtpcypp36j1R04mcwd86xgn8hwbgopw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=XmsNzTr+; arc=fail smtp.client-ip=198.175.65.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="XmsNzTr+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355467; x=1793891467; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=OEz4I1kY9hayeVPj5nR830x7hOsbU+y68eOFejL/64Y=; b=XmsNzTr+gab7o4gnmXQkbe5Jsur2aXV/ac9ybpDJJkSGo39uuFoULiVG s9oKFm6V1yW6P/QDcLoXwjX8G42dOGvK6QKP0cByJl50rmmF1weRLVsA1 5JuqAyK7U3xLxrrugOMnd+gCebwgsqxIRI+HEnoy/oVyygLgxPuXFBZhD 90qWZjVsdBlv7DP+6d1CT3nkqDrupcuqb550FQvfwvWGJY7fiUNUmaYxf pIw3SoV4adkIv0X03SGZJXyShPKcATeK0SQ3ryooOrBkePqeYOXtWJ0Mt 268Pree/Yq7AFSt/aRch6H3P/63Zp62KUhFBYmGf0mG18osKXUnAajsuc A==; X-CSE-ConnectionGUID: /z8qRoGrSYm3y5fecUNG9w== X-CSE-MsgGUID: NW0Ylo1MQI+xf5L9/ghsbg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64354401" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="64354401" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:06 -0800 X-CSE-ConnectionGUID: +B0GzmNwTYWG4mQ87hXx3A== X-CSE-MsgGUID: s43XTvxXSPORo4mNgqLszQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="192649331" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by orviesa005.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:07 -0800 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:06 -0800 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:06 -0800 Received: from SN4PR2101CU001.outbound.protection.outlook.com (40.93.195.23) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:06 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PURKxgd/p7Fa6sxx/5MrsmcKIyo20IfKMJnUQBhzXHn+4wkWzGjwmJIX2mSr0Hk9c207nfM9zLGvGPfJR4kpz0klgjqSHE58iy1OCvIP3l9aIv3r76+wFWIe3+RjH6h5tDnPIjJlJO5ppV5ZM1WghTBkv8HSGTYxvEdTyRfXg+jTEcMOqFvVw6nM8Z+IW9lSTzXLJf2cbta2KJ2i1WPzOOFGBK724S/ZRORI3AcB+mzLjT5tPYqvWFd82LKQeza6JiJFe3AOmfoWwmALfWrL9JR2fEbHIRd5bGKgu/qdl2otMSvg2Ps1zJCEW3c4JqO02lnX+xMvarBks/wfUuK6lA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=t2P5II2UBd9xQeSNqCW8ktN5I1ZSK5ldkFSI1j5haeU=; b=nje8WERHWzIc23hzez0OHKG8wsT4k//YDHjo7i0MrLEzzWNm6EETG/gCokbCTVFQruAyaphWxKqSN7F84n+BJ5OgyBVXWmJ3Pib1EqbnbYCk9IWSZm8pIGT1GrtCurC7KK51MuGJK0ZsnDL3C8QtL9r/UmJ4k77qRQ6JdzU3sTMv5Gy7AffkcnU9NqkLbpVOPbxqRz247c0AUZ+8OKhY9F8mP+xXEH3T6ssyLN5UNjsf6rdUa9iyZxmF/oeuZwkxFTPizvtPs1i6KnoqWaWhFofs+VbllvANzAwZnFlCVRN85I2d8tK7YDbva1ooQzsX0KsivOLA3VJZhMTBaPzZRg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:04 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:03 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 04/28] drm/xe/pf: Add save/restore control state stubs and connect to debugfs Date: Wed, 5 Nov 2025 16:10:02 +0100 Message-ID: <20251105151027.540712-5-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0385.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:80::21) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: 26c9d2d1-3285-4d57-3a8e-08de1c7d8979 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?eEZsempGbXdDV2M4bk95NDhiT3NLRDA4NHJiNWZDQVRZRmN4UGV6dWdPV3JX?= =?utf-8?B?NUQzWWdNdkIvbFB6NFR4cFA3QUp1aEhmYmtUeGNCcjZQdUVsTVVpR1BNcDhL?= =?utf-8?B?Sm5LZzdiUmJWbEEyZlhNZWxLUG5VdzZUazJTUEJxQklKV2s2bjE2Wk9XTXpJ?= =?utf-8?B?YmtXZVV4NlFTZ0VKOW50aFlzVGdaKzJqRDlKcGo3djMrR3ZpZHdacnhQdE5r?= =?utf-8?B?UklVOU9HZGo1c01vejhILzE1M3R3TjgyUGxwQVRkZ0FDdnJjMEY4Vks0U2NR?= =?utf-8?B?eWI5U1NoSWJ5NkNrL2xrbkxnQjNZY0JQNXJUM0NZUDZCYWFFRWlxSGdrM3o1?= =?utf-8?B?N1hMWTNKYzRaWXhkMktoMW1sZmhtVVZZU0RsSk1TYmt1UndXc095WDRPWnJm?= =?utf-8?B?T1hGaEV4RkhLbjk5Tlc1MmRyMElwdlRBUUdCcVdDZHhzancxeUZHNzYzalJs?= =?utf-8?B?djdMQlorZTZIZjNxdUhSVDNydXRKb3RhaVdpa0N2MldSN09FanNjcmdFRzE4?= =?utf-8?B?WWZvaGhSa20xYXlDUjRjT1Job0lhY3cxZUVQcWFidnAvOW9qcVpwK3NTOU1z?= =?utf-8?B?RFVuMWh2cTJWdTMweEZMcXhjTGRiZCtoaHZTRzMrMlg4VHJMYTEwT0xHYThm?= =?utf-8?B?NmE0dVNyV2llR25zOFNSN2FoN0ZRWTE1SGdudFZZN3BySVAxb0g3c2VtdHlw?= =?utf-8?B?UFZjR2pDbnZ6U2IybklFYnAyaWlscmpLY2lGVVc2a0lEWitYckFzRWxGb08v?= =?utf-8?B?STlzeEJpTmVzR2ltK1hLem1NeFRqWFQ4cG5xSjlyaStuY3h3TTROSjV3K3Rq?= =?utf-8?B?Q1NiSmV1dDZlK3M3QWduTU5YenZ2YUc2Y0VUaERhdHpEVllxNS9hQ2pkb25Q?= =?utf-8?B?RDlaSVF0M1FrZjhaZDlWZUZkQTVIOGRISEpGOFcwUW1USkFEdXhPZUR5eHZP?= =?utf-8?B?blRsMGgxSE5nQkI3TGlNSXBCM0M5c2srSHNlTUJHWUozbXFhK3hBOTNJTFhs?= =?utf-8?B?Yk90WHRTSzVqMXRZOWtHQ0l5RWNRRnZNYTFZR2g5UUd3dUY4b1BONTVQWG9h?= =?utf-8?B?ZWRFdzQ1MFBmMHBjcWdDcFAxTXRJSy81UmtUeWRkM0pPWHJ1N25MZFZxcTl4?= =?utf-8?B?dFV1eDVnSjJ3blp2KzRUVEVOZmtSNVprRFphSW95MzN5WXptQVNhWUZZcnpl?= =?utf-8?B?NHhVWHJlTTh2VW44T1ZaVUJ4NzZhMjJKU2pUbWJWTjg4MGIvMXFPekRDRnhR?= =?utf-8?B?aDc1Q0ZpK3hYZDBFWVlPcjZYQXdNVXIxQ0dTZWZIT2l0YzBTYWJnVUFlOGxv?= =?utf-8?B?cnAycVlVTlNoZzNRbEtaeHpvTGdabDd3dG4yS2k4Y3ZIQUtLaEpLNzd6RGxQ?= =?utf-8?B?Y2VzU3k4SmFNMUJabXB3Yit2UU9HY3NuRTR2eURSSkxlVXJyNDZtazdsQzZx?= =?utf-8?B?WTlJNXlMR3Bsc0U5VFZHUUIzRERIemdVZE80bkV6Y1lpWm9Hbi9WTlZ1aitF?= =?utf-8?B?TXFZL0ZwNzVwOS9wd25DNlJla0dQQk5kNmExdlpZVlBlUXNyM3ExS1ZEajdn?= =?utf-8?B?NnJQY1VKeXFObFFCeHB5eUVHaFhXaEtudFZsUm01djNrYi9ZNzI2WWlqOGZ3?= =?utf-8?B?eExZUXh1OEhEZm43T01QbHE2bE55NFRzOTQ2WTVHbjdvUDNtNUhYbHVOREVi?= =?utf-8?B?SVhyOW9iK0lLMXh5alBUVWw5NWdHTm5VRHBNRHNyNkRxRU1YSUQ2Y0ZIUlB2?= =?utf-8?B?dDdTbHlMdVNGKytLNlFLZHU3d3VBdEhSNm5sbkxTS2FVM05HbFpGT3Q2T0Mv?= =?utf-8?B?b3VIcTZLcGpwS1ZUbElpb1JEbmp3cXNuVlRrZ2dHQmhyMllNY3NySVBLN2I4?= =?utf-8?B?VGY5bS9pUTZDenU2V2xKT05JMUcvakFPb3lRNW5YbmhETE5sSmpSdThuaFNT?= =?utf-8?B?bWFJVkNzcUJncEwvdHZRbFJlOU5uS0U4ZGdZQ0dtb3ZaZEV6d1lreTBXMnc3?= =?utf-8?Q?XFv06Qq+haLLu0DAYC/F5IPCipFND4=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SW9Ca2VKcVdyczBvMXo2OEQ5Z1dnSWRCbUJSd3R2dmNvYS9ORlpIdWk5Nmgx?= =?utf-8?B?QVhZOFFmVUw4OXRKci9aTlY1aHhIaTdoTFN0QzlpN0IyS252ODNvL2EyTjhq?= =?utf-8?B?R0k5T2NHVTlON0hXTUdMRU1RYzlFOFFOQ1R4TkExNVpWL2FTU2NaN0QxSkly?= =?utf-8?B?MVdQakp4cm5VWHl1S3ZBbTI3QjkyNmp0VTg4VWxJbFhHRHVLd3M3eEZ3TDhQ?= =?utf-8?B?SUV0cHRmNk1Md3FBSVJ3TWxhRTBLYW1SMmxPMlo0SFVCdDdXQlVkTDVXNitv?= =?utf-8?B?YjIySlFkSW0ydyt1Y0Zia3FBVUlGcENkVjhTQS94U1R6dDQrTTEwUGZoK2wy?= =?utf-8?B?S25kYUVTOFJLMGM3dmtoZ1NRTGNCNGZuWng4a0RjQlk0RnU3czFkMHZkUG44?= =?utf-8?B?eXJVeUd1dU5mV0tkK1cxazMyRUI2ZXBrczRMbiszeGtvcnRrbHZRRnMrRitp?= =?utf-8?B?YUxJNW5QUUpTUzdIdUl2d0FrVmF2bzZ6NXd1dDJLMTdvKytVSzdQdDNlQXB0?= =?utf-8?B?eSt2WmV2SFlSdDR0L3YzYng1a2tNOVhTKzA2R2ZKYTVITUdaQnVvbG9iRFlE?= =?utf-8?B?Yk1SdUFwSW9mUzlZZnpJeXNmZytUYjhjL2ZFTEZOdFpMMnVMc3FwdG5mT2cz?= =?utf-8?B?b2ttRm1RS1MzZ1QzK0pacUZzR0RIUzRjVXBWRkhuWkxzOWpoRS9pdGlBKzRa?= =?utf-8?B?QkN0a0hrSmV2eG1vVElHY3V0d256ZHo5aTNwbVB0bDVvTDNOZllGK2lGeGJU?= =?utf-8?B?ZlJlTGNPbTVnQmRLa21rUnY5cW5DYkVaTnpCNVVZdHppUkZxa2VvbWVUc1pS?= =?utf-8?B?em5LWmNHN0U1R1ZXMFZnSTg1TFZoV3QzYzBiZ2JSM1NFdTdGN0VXSXRGWkFN?= =?utf-8?B?anE3aGRPODNUbFk3RW9TTFA2RjRPVVFscmZJTDN1TWs0Z05VT0JMUGxLWTky?= =?utf-8?B?eFRzVnlDRENlckI1Ym5aS3Vud1Y1cFpiS2xZa3dqWG5RRTdZZzV5T2JWejN4?= =?utf-8?B?MnJ3RXZwMU4vZGJDZzBPdnlsZUZDd3l1dkRZcHRqMldhNXdvSzA5RjUzUWpy?= =?utf-8?B?VFhkYWYvTW4xV3JpR0RDOXBOOTN1Wm1OcTd3TUpmdUM0REgycjNCYmMyNXgw?= =?utf-8?B?bjZHZ1BhVlhueUkvYXQxaFVQYVN6UkIzTXhpQlg0WGJJTG44VkE4K0pURFQ3?= =?utf-8?B?c0o0M3VFaXRpSndVSDIrdTBuSGJNV0EwcUNTTWV4YWM2MDVHVUdlazF1RzVJ?= =?utf-8?B?cCtVM1FPTGttZzRJY1IrbFREK0ZBMXVGb2lrWlVvT1BLQU1nOVhLTnNTekdN?= =?utf-8?B?akFTMXpKY0x0Tjkwc2xxMW5Ra0NpQVBkdUlGQXhPejhhMURUNnlCbUVtcm96?= =?utf-8?B?RW13N1B6bmUwdm8ybjZiOGJGeWV2cXNjWXhaN3llMkdodm1GRDByazhiNlYx?= =?utf-8?B?a2haWjQ2MkxtamZseitURFk2dUhsSmdwSXNlc1M5cHlhS2VVQ0pnaE54ZGxo?= =?utf-8?B?c1BkMGR5R3hsTm16SmN4bFM2NW55NW53QWREUHFEQWYvV1c0allReTl3Umx1?= =?utf-8?B?MDNwdzlxZFRDd2FNOVY4RE5KOXhKOGVTSmFpL0ttWGFYcklwK0grYnJYMnhk?= =?utf-8?B?WjVxUlVXY0I0NkpQalpESkIzNEpPeitJR0c4YlAzeVQrcVp1SjgrelprQis4?= =?utf-8?B?TlhzMlV0S2dKZG8rOE1zRkVjU3NmQmNuZzJhWmV1MjdQNTFOMGJwY3hYczQw?= =?utf-8?B?VUJvNG1FQnJkRjhSWUJiTGdybk56dGpibTk3S3JCM0l6UGNJUkJxYXhneGRR?= =?utf-8?B?WjdMdWhxS2JJNXhGSmhJSUw3ckZRd285czIwaE1xTWhBT3pRaVNmaTA0ek8v?= =?utf-8?B?NzE0aTRCUnhLWmYzek1uNTZQekY2Mklkb1BJdmdTWUcyVFBFUzl3OXFpVity?= =?utf-8?B?ekRXWjZTejM2YTZnbWdMMytPUG1adExpNEl2eDV5WmROTTBPWnFHdk1iRnAr?= =?utf-8?B?VkNqeVVrSS8rbng3NElia2d6ellGT3phYWxSenVvM1VzdGh5TUUrb3gvWDB5?= =?utf-8?B?ejFpOEVUMnJQUHhpZHdGZXVsNHB0NTlqZWhHcS9IL1BnMFNra21WY0t2RENv?= =?utf-8?B?aGlMRXd3NndGTjEwelNud1ZJQTUyRFVLOHdmdEczZXdYMURTVU1sY2c0dWt2?= =?utf-8?B?YlE9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 26c9d2d1-3285-4d57-3a8e-08de1c7d8979 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:03.8879 (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: z8qfpI4pUX1uJ5SoCtIi3/Euoix+NjIBshEnBjKbLRypr9+Hb9/w6hUDSPjZVfqmMMO+MKHJ5SGvAkwPcnhpdml8xfHULWV3TQxiS1/vbtw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com The states will be used by upcoming changes to produce (in case of save) or consume (in case of resume) the VF migration data. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 248 ++++++++++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h | 4 + .../gpu/drm/xe/xe_gt_sriov_pf_control_types.h | 14 + drivers/gpu/drm/xe/xe_sriov_pf_control.c | 96 +++++++ drivers/gpu/drm/xe/xe_sriov_pf_control.h | 4 + drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c | 38 +++ 6 files changed, 404 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.c index 8a2577fda4198..a571e1c02a3b4 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c @@ -184,6 +184,12 @@ static const char *control_bit_to_string(enum xe_gt_sr= iov_control_bits bit) CASE2STR(PAUSE_SAVE_GUC); CASE2STR(PAUSE_FAILED); CASE2STR(PAUSED); + CASE2STR(SAVE_WIP); + CASE2STR(SAVE_FAILED); + CASE2STR(SAVED); + CASE2STR(RESTORE_WIP); + CASE2STR(RESTORE_FAILED); + CASE2STR(RESTORED); CASE2STR(RESUME_WIP); CASE2STR(RESUME_SEND_RESUME); CASE2STR(RESUME_FAILED); @@ -208,6 +214,8 @@ static unsigned long pf_get_default_timeout(enum xe_gt_= sriov_control_bits bit) case XE_GT_SRIOV_STATE_FLR_WIP: case XE_GT_SRIOV_STATE_FLR_RESET_CONFIG: return 5 * HZ; + case XE_GT_SRIOV_STATE_RESTORE_WIP: + return 20 * HZ; default: return HZ; } @@ -329,6 +337,8 @@ static void pf_exit_vf_mismatch(struct xe_gt *gt, unsig= ned int vfid) pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_FAILED); pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESUME_FAILED); pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_FLR_FAILED); + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_FAILED); + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_FAILED); } =20 #define pf_enter_vf_state_machine_bug(gt, vfid) ({ \ @@ -359,6 +369,8 @@ static void pf_queue_vf(struct xe_gt *gt, unsigned int = vfid) =20 static void pf_exit_vf_flr_wip(struct xe_gt *gt, unsigned int vfid); static void pf_exit_vf_stop_wip(struct xe_gt *gt, unsigned int vfid); +static void pf_exit_vf_save_wip(struct xe_gt *gt, unsigned int vfid); +static void pf_exit_vf_restore_wip(struct xe_gt *gt, unsigned int vfid); static void pf_exit_vf_pause_wip(struct xe_gt *gt, unsigned int vfid); static void pf_exit_vf_resume_wip(struct xe_gt *gt, unsigned int vfid); =20 @@ -380,6 +392,8 @@ static void pf_exit_vf_wip(struct xe_gt *gt, unsigned i= nt vfid) =20 pf_exit_vf_flr_wip(gt, vfid); pf_exit_vf_stop_wip(gt, vfid); + pf_exit_vf_save_wip(gt, vfid); + pf_exit_vf_restore_wip(gt, vfid); pf_exit_vf_pause_wip(gt, vfid); pf_exit_vf_resume_wip(gt, vfid); =20 @@ -399,6 +413,8 @@ static void pf_enter_vf_ready(struct xe_gt *gt, unsigne= d int vfid) pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED); pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_STOPPED); pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESUMED); + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVED); + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORED); pf_exit_vf_mismatch(gt, vfid); pf_exit_vf_wip(gt, vfid); } @@ -675,6 +691,8 @@ static void pf_enter_vf_resumed(struct xe_gt *gt, unsig= ned int vfid) { pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESUMED); pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED); + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVED); + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORED); pf_exit_vf_mismatch(gt, vfid); pf_exit_vf_wip(gt, vfid); } @@ -753,6 +771,16 @@ int xe_gt_sriov_pf_control_resume_vf(struct xe_gt *gt,= unsigned int vfid) return -EPERM; } =20 + if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP)) { + xe_gt_sriov_dbg(gt, "VF%u save is in progress!\n", vfid); + return -EBUSY; + } + + if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) { + xe_gt_sriov_dbg(gt, "VF%u restore is in progress!\n", vfid); + return -EBUSY; + } + if (!pf_enter_vf_resume_wip(gt, vfid)) { xe_gt_sriov_dbg(gt, "VF%u resume already in progress!\n", vfid); return -EALREADY; @@ -776,6 +804,218 @@ int xe_gt_sriov_pf_control_resume_vf(struct xe_gt *gt= , unsigned int vfid) return -ECANCELED; } =20 +static void pf_exit_vf_save_wip(struct xe_gt *gt, unsigned int vfid) +{ + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP); +} + +static void pf_enter_vf_saved(struct xe_gt *gt, unsigned int vfid) +{ + if (!pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVED)) + pf_enter_vf_state_machine_bug(gt, vfid); + + xe_gt_sriov_dbg(gt, "VF%u saved!\n", vfid); + + pf_expect_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED); + pf_exit_vf_mismatch(gt, vfid); + pf_exit_vf_wip(gt, vfid); +} + +static bool pf_handle_vf_save(struct xe_gt *gt, unsigned int vfid) +{ + if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP)) + return false; + + pf_enter_vf_saved(gt, vfid); + + return true; +} + +static bool pf_enter_vf_save_wip(struct xe_gt *gt, unsigned int vfid) +{ + if (pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP)) { + pf_enter_vf_wip(gt, vfid); + pf_queue_vf(gt, vfid); + return true; + } + + return false; +} + +/** + * xe_gt_sriov_pf_control_trigger_save_vf() - Start an SR-IOV VF migration= data save sequence. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_control_trigger_save_vf(struct xe_gt *gt, unsigned int = vfid) +{ + if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_STOPPED)) { + xe_gt_sriov_dbg(gt, "VF%u is stopped!\n", vfid); + return -EPERM; + } + + if (!pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED)) { + xe_gt_sriov_dbg(gt, "VF%u is not paused!\n", vfid); + return -EPERM; + } + + if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) { + xe_gt_sriov_dbg(gt, "VF%u restore is in progress!\n", vfid); + return -EBUSY; + } + + if (!pf_enter_vf_save_wip(gt, vfid)) { + xe_gt_sriov_dbg(gt, "VF%u save already in progress!\n", vfid); + return -EALREADY; + } + + return 0; +} + +/** + * xe_gt_sriov_pf_control_finish_save_vf() - Complete a VF migration data = save sequence. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_control_finish_save_vf(struct xe_gt *gt, unsigned int v= fid) +{ + if (!pf_expect_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVED)) { + pf_enter_vf_mismatch(gt, vfid); + return -EIO; + } + + pf_expect_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED); + + return 0; +} + +static void pf_exit_vf_restore_wip(struct xe_gt *gt, unsigned int vfid) +{ + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP); +} + +static void pf_enter_vf_restored(struct xe_gt *gt, unsigned int vfid) +{ + if (!pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORED)) + pf_enter_vf_state_machine_bug(gt, vfid); + + xe_gt_sriov_dbg(gt, "VF%u restored!\n", vfid); + + pf_expect_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED); + pf_exit_vf_mismatch(gt, vfid); + pf_exit_vf_wip(gt, vfid); +} + +static bool pf_handle_vf_restore(struct xe_gt *gt, unsigned int vfid) +{ + if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) + return false; + + pf_enter_vf_restored(gt, vfid); + + return true; +} + +static bool pf_enter_vf_restore_wip(struct xe_gt *gt, unsigned int vfid) +{ + if (pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) { + pf_enter_vf_wip(gt, vfid); + pf_queue_vf(gt, vfid); + return true; + } + + return false; +} + +/** + * xe_gt_sriov_pf_control_trigger restore_vf() - Start an SR-IOV VF migrat= ion data restore sequence. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_control_trigger_restore_vf(struct xe_gt *gt, unsigned i= nt vfid) +{ + if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_STOPPED)) { + xe_gt_sriov_dbg(gt, "VF%u is stopped!\n", vfid); + return -EPERM; + } + + if (!pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED)) { + xe_gt_sriov_dbg(gt, "VF%u is not paused!\n", vfid); + return -EPERM; + } + + if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP)) { + xe_gt_sriov_dbg(gt, "VF%u save is in progress!\n", vfid); + return -EBUSY; + } + + if (!pf_enter_vf_restore_wip(gt, vfid)) { + xe_gt_sriov_dbg(gt, "VF%u restore already in progress!\n", vfid); + return -EALREADY; + } + + return 0; +} + +static int pf_wait_vf_restore_done(struct xe_gt *gt, unsigned int vfid) +{ + unsigned long timeout =3D pf_get_default_timeout(XE_GT_SRIOV_STATE_RESTOR= E_WIP); + int err; + + err =3D pf_wait_vf_wip_done(gt, vfid, timeout); + if (err) { + xe_gt_sriov_notice(gt, "VF%u RESTORE didn't finish in %u ms (%pe)\n", + vfid, jiffies_to_msecs(timeout), ERR_PTR(err)); + return err; + } + + if (!pf_expect_vf_not_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_FAILED)) + return -EIO; + + return 0; +} + +/** + * xe_gt_sriov_pf_control_finish_restore_vf() - Complete a VF migration da= ta restore sequence. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_control_finish_restore_vf(struct xe_gt *gt, unsigned in= t vfid) +{ + int ret; + + if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) { + ret =3D pf_wait_vf_restore_done(gt, vfid); + if (ret) + return ret; + } + + if (!pf_expect_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORED)) { + pf_enter_vf_mismatch(gt, vfid); + return -EIO; + } + + pf_expect_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED); + + return 0; +} + /** * DOC: The VF STOP state machine * @@ -817,6 +1057,8 @@ static void pf_enter_vf_stopped(struct xe_gt *gt, unsi= gned int vfid) =20 pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESUMED); pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED); + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVED); + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORED); pf_exit_vf_mismatch(gt, vfid); pf_exit_vf_wip(gt, vfid); } @@ -1463,6 +1705,12 @@ static bool pf_process_vf_state_machine(struct xe_gt= *gt, unsigned int vfid) if (pf_exit_vf_pause_save_guc(gt, vfid)) return true; =20 + if (pf_handle_vf_save(gt, vfid)) + return true; + + if (pf_handle_vf_restore(gt, vfid)) + return true; + if (pf_exit_vf_resume_send_resume(gt, vfid)) return true; =20 diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.h index 8a72ef3778d47..0286536375d17 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h @@ -16,6 +16,10 @@ void xe_gt_sriov_pf_control_restart(struct xe_gt *gt); =20 int xe_gt_sriov_pf_control_pause_vf(struct xe_gt *gt, unsigned int vfid); int xe_gt_sriov_pf_control_resume_vf(struct xe_gt *gt, unsigned int vfid); +int xe_gt_sriov_pf_control_trigger_save_vf(struct xe_gt *gt, unsigned int = vfid); +int xe_gt_sriov_pf_control_finish_save_vf(struct xe_gt *gt, unsigned int v= fid); +int xe_gt_sriov_pf_control_trigger_restore_vf(struct xe_gt *gt, unsigned i= nt vfid); +int xe_gt_sriov_pf_control_finish_restore_vf(struct xe_gt *gt, unsigned in= t vfid); int xe_gt_sriov_pf_control_stop_vf(struct xe_gt *gt, unsigned int vfid); int xe_gt_sriov_pf_control_trigger_flr(struct xe_gt *gt, unsigned int vfid= ); int xe_gt_sriov_pf_control_sync_flr(struct xe_gt *gt, unsigned int vfid, b= ool sync); diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h b/drivers/gp= u/drm/xe/xe_gt_sriov_pf_control_types.h index d9282eb259727..c0ce05818e24f 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h @@ -31,6 +31,12 @@ * @XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC: indicates that the PF needs to save = the VF GuC state. * @XE_GT_SRIOV_STATE_PAUSE_FAILED: indicates that a VF pause operation ha= s failed. * @XE_GT_SRIOV_STATE_PAUSED: indicates that the VF is paused. + * @XE_GT_SRIOV_STATE_SAVE_WIP: indicates that VF save operation is in pro= gress. + * @XE_GT_SRIOV_STATE_SAVE_FAILED: indicates that VF save operation has fa= iled. + * @XE_GT_SRIOV_STATE_SAVED: indicates that VF data is saved. + * @XE_GT_SRIOV_STATE_RESTORE_WIP: indicates that VF restore operation is = in progress. + * @XE_GT_SRIOV_STATE_RESTORE_FAILED: indicates that VF restore operation = has failed. + * @XE_GT_SRIOV_STATE_RESTORED: indicates that VF data is restored. * @XE_GT_SRIOV_STATE_RESUME_WIP: indicates the a VF resume operation is i= n progress. * @XE_GT_SRIOV_STATE_RESUME_SEND_RESUME: indicates that the PF is about t= o send RESUME command. * @XE_GT_SRIOV_STATE_RESUME_FAILED: indicates that a VF resume operation = has failed. @@ -63,6 +69,14 @@ enum xe_gt_sriov_control_bits { XE_GT_SRIOV_STATE_PAUSE_FAILED, XE_GT_SRIOV_STATE_PAUSED, =20 + XE_GT_SRIOV_STATE_SAVE_WIP, + XE_GT_SRIOV_STATE_SAVE_FAILED, + XE_GT_SRIOV_STATE_SAVED, + + XE_GT_SRIOV_STATE_RESTORE_WIP, + XE_GT_SRIOV_STATE_RESTORE_FAILED, + XE_GT_SRIOV_STATE_RESTORED, + XE_GT_SRIOV_STATE_RESUME_WIP, XE_GT_SRIOV_STATE_RESUME_SEND_RESUME, XE_GT_SRIOV_STATE_RESUME_FAILED, diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_control.c b/drivers/gpu/drm/xe/= xe_sriov_pf_control.c index 416d00a03fbb7..8d8a01faf5291 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_control.c @@ -149,3 +149,99 @@ int xe_sriov_pf_control_sync_flr(struct xe_device *xe,= unsigned int vfid) =20 return 0; } + +/** + * xe_sriov_pf_control_trigger_save_vf - Start a VF migration data SAVE se= quence on all GTs. + * @xe: the &xe_device + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_pf_control_trigger_save_vf(struct xe_device *xe, unsigned int= vfid) +{ + struct xe_gt *gt; + unsigned int id; + int ret; + + for_each_gt(gt, xe, id) { + ret =3D xe_gt_sriov_pf_control_trigger_save_vf(gt, vfid); + if (ret) + return ret; + } + + return 0; +} + +/** + * xe_sriov_pf_control_finish_save_vf - Complete a VF migration data SAVE = sequence on all GTs. + * @xe: the &xe_device + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_pf_control_finish_save_vf(struct xe_device *xe, unsigned int = vfid) +{ + struct xe_gt *gt; + unsigned int id; + int ret; + + for_each_gt(gt, xe, id) { + ret =3D xe_gt_sriov_pf_control_finish_save_vf(gt, vfid); + if (ret) + break; + } + + return ret; +} + +/** + * xe_sriov_pf_control_trigger_restore_vf - Start a VF migration data REST= ORE sequence on all GTs. + * @xe: the &xe_device + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_pf_control_trigger_restore_vf(struct xe_device *xe, unsigned = int vfid) +{ + struct xe_gt *gt; + unsigned int id; + int ret; + + for_each_gt(gt, xe, id) { + ret =3D xe_gt_sriov_pf_control_trigger_restore_vf(gt, vfid); + if (ret) + return ret; + } + + return ret; +} + +/** + * xe_sriov_pf_control_wait_restore_vf - Complete a VF migration data REST= ORE sequence in all GTs. + * @xe: the &xe_device + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_pf_control_finish_restore_vf(struct xe_device *xe, unsigned i= nt vfid) +{ + struct xe_gt *gt; + unsigned int id; + int ret; + + for_each_gt(gt, xe, id) { + ret =3D xe_gt_sriov_pf_control_finish_restore_vf(gt, vfid); + if (ret) + break; + } + + return ret; +} diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_control.h b/drivers/gpu/drm/xe/= xe_sriov_pf_control.h index 2d52d0ac1b28f..30318c1fba34e 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_control.h +++ b/drivers/gpu/drm/xe/xe_sriov_pf_control.h @@ -13,5 +13,9 @@ int xe_sriov_pf_control_resume_vf(struct xe_device *xe, u= nsigned int vfid); int xe_sriov_pf_control_stop_vf(struct xe_device *xe, unsigned int vfid); int xe_sriov_pf_control_reset_vf(struct xe_device *xe, unsigned int vfid); int xe_sriov_pf_control_sync_flr(struct xe_device *xe, unsigned int vfid); +int xe_sriov_pf_control_trigger_save_vf(struct xe_device *xe, unsigned int= vfid); +int xe_sriov_pf_control_finish_save_vf(struct xe_device *xe, unsigned int = vfid); +int xe_sriov_pf_control_trigger_restore_vf(struct xe_device *xe, unsigned = int vfid); +int xe_sriov_pf_control_finish_restore_vf(struct xe_device *xe, unsigned i= nt vfid); =20 #endif diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c b/drivers/gpu/drm/xe/= xe_sriov_pf_debugfs.c index a81aa05c55326..e0e6340c49106 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c @@ -136,11 +136,31 @@ static void pf_populate_pf(struct xe_device *xe, stru= ct dentry *pfdent) * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 reset * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 resume * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 stop + * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 save + * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 restore * =E2=94=82 =E2=94=82 : * =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 vf2 * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 ... */ =20 +static int from_file_read_to_vf_call(struct seq_file *s, + int (*call)(struct xe_device *, unsigned int)) +{ + struct dentry *dent =3D file_dentry(s->file)->d_parent; + struct xe_device *xe =3D extract_xe(dent); + unsigned int vfid =3D extract_vfid(dent); + int ret; + + xe_pm_runtime_get(xe); + ret =3D call(xe, vfid); + xe_pm_runtime_put(xe); + + if (ret < 0) + return ret; + + return 0; +} + static ssize_t from_file_write_to_vf_call(struct file *file, const char __= user *userbuf, size_t count, loff_t *ppos, int (*call)(struct xe_device *, unsigned int)) @@ -179,10 +199,26 @@ static ssize_t OP##_write(struct file *file, const ch= ar __user *userbuf, \ } \ DEFINE_SHOW_STORE_ATTRIBUTE(OP) =20 +#define DEFINE_VF_CONTROL_ATTRIBUTE_RW(OP) \ +static int OP##_show(struct seq_file *s, void *unused) \ +{ \ + return from_file_read_to_vf_call(s, \ + xe_sriov_pf_control_finish_##OP); \ +} \ +static ssize_t OP##_write(struct file *file, const char __user *userbuf, \ + size_t count, loff_t *ppos) \ +{ \ + return from_file_write_to_vf_call(file, userbuf, count, ppos, \ + xe_sriov_pf_control_trigger_##OP); \ +} \ +DEFINE_SHOW_STORE_ATTRIBUTE(OP) + DEFINE_VF_CONTROL_ATTRIBUTE(pause_vf); DEFINE_VF_CONTROL_ATTRIBUTE(resume_vf); DEFINE_VF_CONTROL_ATTRIBUTE(stop_vf); DEFINE_VF_CONTROL_ATTRIBUTE(reset_vf); +DEFINE_VF_CONTROL_ATTRIBUTE_RW(save_vf); +DEFINE_VF_CONTROL_ATTRIBUTE_RW(restore_vf); =20 static void pf_populate_vf(struct xe_device *xe, struct dentry *vfdent) { @@ -190,6 +226,8 @@ static void pf_populate_vf(struct xe_device *xe, struct= dentry *vfdent) debugfs_create_file("resume", 0200, vfdent, xe, &resume_vf_fops); debugfs_create_file("stop", 0200, vfdent, xe, &stop_vf_fops); debugfs_create_file("reset", 0200, vfdent, xe, &reset_vf_fops); + debugfs_create_file("save", 0600, vfdent, xe, &save_vf_fops); + debugfs_create_file("restore", 0600, vfdent, xe, &restore_vf_fops); } =20 static void pf_populate_with_tiles(struct xe_device *xe, struct dentry *de= nt, unsigned int vfid) --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0523533345F; Wed, 5 Nov 2025 15:11:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.20 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355479; cv=fail; b=NM8GOQFe8iXXCik+CSuCkIutO6+DL9rO19sJ6pByq+Fyus9w6CunairkJT9mkTmKMEhZaJqw33+ZWmpubuggHMDUW9dMpi9VZxz8CCC4GkLFtWYaWYVbFY32ugmLKhnP2JkC9KtVpz4JQjTGKiQpTQB8ydRDAXOrpOc/iYhs1sc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355479; c=relaxed/simple; bh=rMy5E5r+Nd+iuypfK54DFoohWplb6zFMBaXKjFRBhpo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=DeXIcncKnpjorafoQYOeIExjzG9gGHc9EIwQ3x2OipldMaPNxC1MoCOTXPKhmHg6vX72OXTDiN3gspktKBMAnR1vYPoavUgvB02cFOHtGBVj818ELRqvPXsv12MQKttJPCC8en8UhcZl/VfmaLOqUnp/H8AW0RzLE0I3VSRlcAU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=mIKMMGHg; arc=fail smtp.client-ip=198.175.65.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="mIKMMGHg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355474; x=1793891474; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=rMy5E5r+Nd+iuypfK54DFoohWplb6zFMBaXKjFRBhpo=; b=mIKMMGHgtxONH1WfkceDAXQ58DTDT9AmVrT2gvuQTn+IaBTQEFP/p9zx Qs7rISVEFkYrZw89gdidPjEmLZtcstneRZ43I+8/KJ9zybqYURdo9TlER 8vmbqsoAJ/F1urGmVK9TGuwsZFKa7ZP8gmZeRfEjtvq7xSBmzh7WQ5ASe K3wYYwLhjOmRURl0gsrZuiBX0d5JiEGJ5Y/A9aWnvkP0otU9APrFCuY55 fU0NM8iW0CtEj5LgrHBrbGp6uK8+bM9yk8p8LDkyi5wGoQ8mvstvislOm RrlI617/KtwsSIXdqqhAhbvsG8oTdghFJsedJIDeI+svRwRsrdspAP7Ly w==; X-CSE-ConnectionGUID: PwbqlAtYQRmTx5zxMcu/QA== X-CSE-MsgGUID: EM6YrRMJTJ69EifPFPrkgw== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64168901" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="64168901" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by orvoesa112.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:12 -0800 X-CSE-ConnectionGUID: 5vT7RyVRS7+wzJ+Wp5Mv9w== X-CSE-MsgGUID: oD4jg558SV+3tZhhxcdAfg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="210957089" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa002.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:12 -0800 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:11 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:11 -0800 Received: from MW6PR02CU001.outbound.protection.outlook.com (52.101.48.33) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:11 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vdiRgEMrjV1tN0oIECeN7NDQMKoaZqHKAAtoHiylbXcLJIQvQuv6fMBltNWE3QuRqCsVzqvlUizLUnKXQRplVBfkMDX02DZt/MILjF0HB9Xkhe1P4fQKvAV8apy1L7H7rEtTJzZGkfakXbLIEef4xwIBwFCRcHXgVLHx/Lk/nRQiudASUxZiYjbBuc53m1gfeUT5Li+qvSdB2ZKXEUWVZT2aToxLxGvAsvTyVhm3b2C1A5kCA5AGZvapuyT5pOlW4kasGEkz/wN4FyBiMFC3ClGYtryVW+fsw/Lp99Nu05rvHnFOh4GtRJri2JpnfhnFQJPEv4rMqwoTRFvt7ruZDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=mQPlXmOo7juDdbaHD33ZgJjE8vTKzt4lmYGOUl7WHcQ=; b=Br1687dklb5zg6xSKs4NAvI+mjYizhzdqK0DhB8tCtBDV21hISCUNOnCrEqyLPhk4alTxgXUzlav7rrY+tG727pmQSM2firxky+IbvpypFoV9UDkXFA61TZTYErwNw/5XHt1F60MlZF1X4uDrB2fGKu0zI1njz6xccs8+FqEldTHemVKlgwmEXttBzXk18Hee8lKoYtISuzNcohkfxcqAPf6EoByDUuvldVNKdiipO1+fDfvlXpgjssEHwsxIBsFicZiaVpVTAhB1fDIfEHyvTNjDnb8wFATmCAuvG3vVAegv01m2Dzar5m93zG8x5c+lypLZQ7ARYpDolQzxhZUcg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:09 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:09 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 05/28] drm/xe/pf: Add data structures and handlers for migration rings Date: Wed, 5 Nov 2025 16:10:03 +0100 Message-ID: <20251105151027.540712-6-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: WA2P291CA0007.POLP291.PROD.OUTLOOK.COM (2603:10a6:1d0:1e::10) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: d04aca56-0299-485b-6627-08de1c7d8c3f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SFlNYTJkMFVMMW9aWlVLeThITFBZa3dBY2lKN1dtclpUZ01YQjZEc2dvZ1JI?= =?utf-8?B?dmxPZzhLM1RkV0lqZ0UwYUJGUjJBT2xiazhyUVhTd0djaTEwNmRJcDMxdmI0?= =?utf-8?B?Vk00VkorWTJrMzZscytqbjBPOUEwTXNkZ2xFOUxvakNaMkJNSzMzVS80bU80?= =?utf-8?B?UmpXVkE2bldrS2JpY21idHRZZDZMa2srOE9zMUJFSndwRjFZSENWV0xRd2V0?= =?utf-8?B?bWNqenRVVlZxYmhvT0hwQ0R6dG1kTVFsb0Y2a002S1diWVFpZW1KMGtrdXNN?= =?utf-8?B?NVBzQ0JKMjVId3VGZUlZb1dXS3JxdWFLcUc0WGNaZlBKVkxOREFjTlY5K2Q0?= =?utf-8?B?dlhBZlB1MWlRc2Y5K0w0UUhzMU1mNkxGS01NdjBvb2FPRWhvdG1YdWl6ZkhI?= =?utf-8?B?a05tdlUxZVlCd3VQQys5MEt6d1JiWFh0UXY2QjlhSzBwc3NmS21lTW1wNWZQ?= =?utf-8?B?Qk9HZGI0RnYyL0FuN2dtRlMvRVdSL0VJS1ZDelJaY2NNM25RUDU5TlE1clMz?= =?utf-8?B?UlBFeFY0L1hQSURCNjUrVERmaWRwcWZYWG51MmtTRWg0K1pEb05LWFJmSkpD?= =?utf-8?B?TEFXd0pLVHM5QU9QVFBzV1lCZXpxOC8ydTdLVHdoalZUSHZUY3hVU0x2MEdh?= =?utf-8?B?M25sQWpjS21kaXB4dGV3cU5RTmpjaS81RXhhRUhTbEVqTnVTUEpEVWhoRWtj?= =?utf-8?B?WkdoV1VCU2xhTUpsS2JsRXgzeWwrWFAxcUV5bEYzSXg1Z2xLNGNTSmVXY0g2?= =?utf-8?B?eXJzM09lK2ZlQ3ZMaGxYcnZTd2ZrZXdsN1h3Z0NCTGRPK0FVNjEzQm9XODhX?= =?utf-8?B?dHhPNWhvZWpTTmZyZWNabmcwNDdqcHZweStpaSs3Ujc2Z1d4QW1vNC9ZazI5?= =?utf-8?B?ZXJiRWtTOTNEZm5yYU5ZSVNsYTZ1dmMzZ09RczdKaU9WYmJ1TFVHbUFnSGcw?= =?utf-8?B?cksvdG9iSzNJUk1HT2lTMzBKejFYRUU4TGxpN0tXcjNFbUdkb2dlbHRrR0Fr?= =?utf-8?B?RVVReGd6QURUcXM0WHprVDFHWFBwVTBvbnVkdUhHMkdMdGhXVlJZdVFxZGkz?= =?utf-8?B?MTRxbWdYQ1BTQjFHdFdERmJEblgyYm9ySzllQmRIM0k1RVlmdEc4RXd4RDRu?= =?utf-8?B?VzhvS0RIa0JMcUQzYmNnUmY4M0xKZ25laGx6T3R3eXMwemUxeVI4ZWNOazhM?= =?utf-8?B?OGh1OTdhYVdYN1lZVklHb3p1STZpSHF3eHZOT0thMFJjSWNIbTFuVjRhQlAr?= =?utf-8?B?RU4rcUVRT2N6MElEaS91U0d5U05IcGNqY2pBVTc1bFluYVlBMGlFZU1GWFNo?= =?utf-8?B?a3EyRDF5MFppc09tVzI5ZkJkTkFoZjY0VmpHUzY0S2dGQnE3bnJEaHpsbWhm?= =?utf-8?B?Kzl4aTdRRmlzemdIb04wbTB3RURjSWdNbHZMVjYzSW1UM2VFU0RZL05IYVRw?= =?utf-8?B?UVRUN1l4YlhWRGd0Z0RQKzZRL1B0TzBIK293L2dkMEx2SW9YemlOOEVhMDhX?= =?utf-8?B?M2JCVUI2aXozNGdqakdTZmdlUFNmTjRCbWpyUFZuTHhMQktCRWx5WGFmSWRW?= =?utf-8?B?b3VuK1dBSm90c0JtRXJkUkY1N0NkUEpsY05DSjdYTVVybkRkTE5jdlN6V1dU?= =?utf-8?B?YUR2bGhrVU5ibXFodEFwS2VQOXZUMWpzQUVnQkpzcVp6UGVreGtUbFNwZThD?= =?utf-8?B?UTE5UmI5K2NiTElDZGhnNWFHdFVRZUNTL0JvYmloamwvbTJyR2FTSFRqR3Ar?= =?utf-8?B?RktqY1VVUCs3SlIwVUM1TWJDbzQ4V3EwY1dFMVp1VlhNV3hpaGtXcmYxOGZD?= =?utf-8?B?RVFsYVI5WElsRHhmQ1BKUkNFVnNIcUFwY01NZVZDYW1SUVFsZkZGeEFpOUF4?= =?utf-8?B?QzRxbjhxMjVCUHRJZW1CZWc2TFdKYTh5aXdDWk5RdnVBcEJDdll6U3JSNXJQ?= =?utf-8?B?V1ZKU1ZmRXJJTCtuWlp4OTBHTVRWVkxMUFptNW04VGdXYlVjQ2Zmb1BSbjFQ?= =?utf-8?Q?enIcU8vHMJq+wr7sH7OHf8GbpgntZ0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dDlHQ0sxMkpYVFEzOEFEMjJ2TWlybzE5cW91SXJIc0NYQlpKS2JIZWw3U0Vi?= =?utf-8?B?enFFd1ExTTMwU21oZklIbHBUQWVOTmtYZ2ttZktqUElaVG1oZHZHbHlvUHFz?= =?utf-8?B?d0NGbURHeXRDT1BCVTVteHpFRDU4T29IOG43S1dPWTZRZXdxSGd1RkcxbXVF?= =?utf-8?B?WW1HcDl5OUZDSFcySExza21qc0xNOTRsVVRkbTIzWlA2cFI4ZXBBSzlXT004?= =?utf-8?B?VytuQ1g2Q0UwWHZ6SWxDNzhvSTAxZlh3MDBJYnhjY0R2Tm5KN2FjK3FsRFZz?= =?utf-8?B?SUkrVFFDUUpWV1RnejEvQ2xVRDFmRmNScjYxdGlMTkg5MHd5WWp0UmhPT1Nw?= =?utf-8?B?M0JGSEM1NlNFUHNwSGQ5UVpFZy96bTJCVjQwYmlKRWlBL05vRm0wWjFTRGxo?= =?utf-8?B?Wm9YblVPYmN4L2NKNzdIL3EzMVd2Y2RLdk5CMFNCcXc3WGUvRFNJTzNpY0JP?= =?utf-8?B?ZGxhanU0dlJhaERqcyt0dXhlSk1BS0RnbTlsSjdEYzJLaWhTekpwS0F0NzN1?= =?utf-8?B?MDdnQzN5ME0xTTJKQTVZVlk3RFluL3IyMU03alpPekgvdUNzQjZYWjlDOUJD?= =?utf-8?B?R2wvc0dTYjNPWjc0TEU4QUF2eDBFUXoyRStLenRmU3Vka2lXYVlzbHVEMW0v?= =?utf-8?B?czEzaXJ3YU9LVElpbkJ1dTVwaWU4MWFVNGpIVlBlRUpiUFVLcXFDRm0zaysv?= =?utf-8?B?N0ltaFZXTUVvZ09YVVpyOWx6WHNYWEE0aytiUFJWY3FEcUVRc3B0dmx2dzZn?= =?utf-8?B?Zm45T1dkNGxJUlNyUXVvYktPSG1LODZFdzQveHM3S0hyUXNiVmVaZnlUTnN1?= =?utf-8?B?MnRnYnhMc3hCWUxIdHFMczYwTjNxK0hEWEs4eDE3RHFmc3JjcksrM2R1MWRj?= =?utf-8?B?NldrSk9EcHUxOFJIVU1ZM3NGd0dGUTl5ZVE5a0FXdEplUU55eG9vNlBsM2ly?= =?utf-8?B?eUdUNWFZTUNadGxQL0hZMW5yem9LY09OMEMyVTJIcmRFalZUd004dE9rQnl5?= =?utf-8?B?SVB5TW5PTmpuUitodStWbmMvdDdIQThmbHNrTGhGU2xNcXMxTTNyOU5qU1Jr?= =?utf-8?B?MDNhakN5SHFldFQ5dE9IRXdHbk5QcURSM1l3c2dXSURQM04yQ1EwWDc0RTVZ?= =?utf-8?B?a1BTbVd2UTMxakJYNFRQWmlFWEs0cU1EQWpTRHBRQVJiTzlDbGZDdkowaFFk?= =?utf-8?B?YWl0aXdTVFNkOVIzVC9rcmRUWng5cmhkdUo4UmtPYmhOa3NUTGxZQUNFM0JU?= =?utf-8?B?S0FGcnBQc2R4QkRyUGM2OUhsUVl6UjgzU2NtT3FTbG5GOVdjdkFnek1EU1BF?= =?utf-8?B?USsySWZ6UUI1M1FVNlRwSFVvaCthRkkvME5UbkNKVjV0cDVtLzhsUWtrYUJy?= =?utf-8?B?UVVZK1RnM3AxaHJSVjBDcHpsVEtjUUtlRmhmSFBYMGtaWGtoNWpjbWJWbDJi?= =?utf-8?B?QmErNXNRaFBocFBNTEFHVGlOakZRSE1PaTUyamw2THR6RGV4b0xEeTFwZlhN?= =?utf-8?B?T2xiQ3ovSjcxNWw5aFZyVGd6L3RaQmY5K00wVVpQUDQ3SDRtWEJKT1E1K2FL?= =?utf-8?B?Y01mcTZvVFlUQTM2SEJBSk5nRnJJQ3A2bHcvQVpvUUJzOThRemdYNFpFY01N?= =?utf-8?B?b2tuK1N2TENMVWlPaGVOQ3pMb1drclZSaVF6RFpvUGtUellISEc4RTZoOFhr?= =?utf-8?B?UnBmbWFwaCtZdHhuM3JTNVVsMjlWYVA4Y0pqMmZQKy9YRmxycm1hMTY0VE1y?= =?utf-8?B?UGhqMzBEV1VMRlVLR2RjSS9HR3hiSk44eW9xclo4SHB5TkN4NUFSU0ZQbGlQ?= =?utf-8?B?dlA3eGo1OHBwdlVseEtrREZYODAwRTFhRGszVEJrZUg3V3NNTkUvVWF6Q1RC?= =?utf-8?B?WUg3UjhhemNKMHdJdlEwTUZ6VS85d3k1NXlWZmNHNVFONG54b0Mwb2ExOXls?= =?utf-8?B?Tms5ajhlbnh2NjVaamVtVTNOemVtd0pXL2xIaVVqQjFhKy9NZ3BNYUFXOHU4?= =?utf-8?B?K2tydk5FdVA0eS9OY2Flc1hvbTJVRXI2VXlTb1NiT2xyTlJ3V25qbVVkOU9m?= =?utf-8?B?b09SaFNoV0F3Umh3UkJRVFErYzVHV0VUc1ZsRzRURnRoN1hMaUdpbzRoSzhS?= =?utf-8?B?UGl3NUJHMTRoa1Mzam42a3d6U3hZc3U5anVRckY3OVpDTjF5UGZDV01GRVky?= =?utf-8?B?aHc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: d04aca56-0299-485b-6627-08de1c7d8c3f X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:09.0686 (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: EG8WhmXD8MBPk2FfqdHYuR8Av5+ECa5QrR1wm7nIxEPPVfHIOEzxUj/Y7XoV6pZquFRcmMXcPu7FjUY+9LHxtv8QAonngLdYjRYVD5R6MfY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com Migration data is queued in a per-GT ptr_ring to decouple the worker responsible for handling the data transfer from the .read() and .write() syscalls. Add the data structures and handlers that will be used in future commits. Signed-off-by: Micha=C5=82 Winiarski --- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 310 +++++++++++++++++- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h | 6 + .../gpu/drm/xe/xe_gt_sriov_pf_control_types.h | 12 + drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 199 +++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h | 14 + .../drm/xe/xe_gt_sriov_pf_migration_types.h | 11 + drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h | 3 + drivers/gpu/drm/xe/xe_sriov_pf_migration.c | 143 ++++++++ drivers/gpu/drm/xe/xe_sriov_pf_migration.h | 7 + .../gpu/drm/xe/xe_sriov_pf_migration_types.h | 47 +++ drivers/gpu/drm/xe/xe_sriov_pf_types.h | 2 + 11 files changed, 741 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.c index a571e1c02a3b4..db57f9d9b491f 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c @@ -19,6 +19,7 @@ #include "xe_guc_ct.h" #include "xe_sriov.h" #include "xe_sriov_pf_control.h" +#include "xe_sriov_pf_migration.h" #include "xe_sriov_pf_service.h" #include "xe_tile.h" =20 @@ -185,9 +186,15 @@ static const char *control_bit_to_string(enum xe_gt_sr= iov_control_bits bit) CASE2STR(PAUSE_FAILED); CASE2STR(PAUSED); CASE2STR(SAVE_WIP); + CASE2STR(SAVE_PROCESS_DATA); + CASE2STR(SAVE_WAIT_DATA); + CASE2STR(SAVE_DATA_DONE); CASE2STR(SAVE_FAILED); CASE2STR(SAVED); CASE2STR(RESTORE_WIP); + CASE2STR(RESTORE_PROCESS_DATA); + CASE2STR(RESTORE_WAIT_DATA); + CASE2STR(RESTORE_DATA_DONE); CASE2STR(RESTORE_FAILED); CASE2STR(RESTORED); CASE2STR(RESUME_WIP); @@ -804,9 +811,51 @@ int xe_gt_sriov_pf_control_resume_vf(struct xe_gt *gt,= unsigned int vfid) return -ECANCELED; } =20 +/** + * DOC: The VF SAVE state machine + * + * SAVE extends the PAUSED state. + * + * The VF SAVE state machine looks like:: + * + * ....PAUSED.................................................... + * : : + * : (O)<---------o : + * : | \ : + * : save (SAVED) (SAVE_FAILED) : + * : | ^ ^ : + * : | | | : + * : ....V...............o...........o......SAVE_WIP......... : + * : : | | | : : + * : : | empty | : : + * : : | | | : : + * : : | | | : : + * : : | DATA_DONE | : : + * : : | ^ | : : + * : : | | error : : + * : : | no_data / : : + * : : | / / : : + * : : | / / : : + * : : | / / : : + * : : o---------->PROCESS_DATA<----consume : : + * : : \ \ : : + * : : \ \ : : + * : : \ \ : : + * : : ring_full----->WAIT_DATA : : + * : : : : + * : :......................................................: : + * :............................................................: + * + * For the full state machine view, see `The VF state machine`_. + */ + static void pf_exit_vf_save_wip(struct xe_gt *gt, unsigned int vfid) { - pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP); + if (pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP)) { + pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_PROCESS_DATA); + pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WAIT_DATA); + pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_DATA_DONE); + } } =20 static void pf_enter_vf_saved(struct xe_gt *gt, unsigned int vfid) @@ -821,20 +870,58 @@ static void pf_enter_vf_saved(struct xe_gt *gt, unsig= ned int vfid) pf_exit_vf_wip(gt, vfid); } =20 +static void pf_enter_vf_save_failed(struct xe_gt *gt, unsigned int vfid) +{ + if (!pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_FAILED)) + pf_enter_vf_state_machine_bug(gt, vfid); + + wake_up_all(xe_sriov_pf_migration_waitqueue(gt_to_xe(gt), vfid)); + + pf_exit_vf_wip(gt, vfid); +} + +static int pf_handle_vf_save_data(struct xe_gt *gt, unsigned int vfid) +{ + return 0; +} + static bool pf_handle_vf_save(struct xe_gt *gt, unsigned int vfid) { - if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP)) + int ret; + + if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_PROCESS_DATA)) return false; =20 - pf_enter_vf_saved(gt, vfid); + if (xe_gt_sriov_pf_migration_ring_full(gt, vfid)) { + pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WAIT_DATA); + return true; + } + + ret =3D pf_handle_vf_save_data(gt, vfid); + if (ret =3D=3D -EAGAIN) + pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_PROCESS_DATA); + else if (ret) + pf_enter_vf_save_failed(gt, vfid); + else + pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_DATA_DONE); =20 return true; } =20 +static void pf_exit_vf_save_wait_data(struct xe_gt *gt, unsigned int vfid) +{ + if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WAIT_DATA)) + return; + + pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_PROCESS_DATA); + pf_queue_vf(gt, vfid); +} + static bool pf_enter_vf_save_wip(struct xe_gt *gt, unsigned int vfid) { if (pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP)) { pf_enter_vf_wip(gt, vfid); + pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_PROCESS_DATA); pf_queue_vf(gt, vfid); return true; } @@ -842,6 +929,53 @@ static bool pf_enter_vf_save_wip(struct xe_gt *gt, uns= igned int vfid) return false; } =20 +/** + * xe_gt_sriov_pf_control_check_save_data_done() - Check if all save migra= tion data was produced. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: true if all migration data was produced, false otherwise. + */ +bool xe_gt_sriov_pf_control_check_save_data_done(struct xe_gt *gt, unsigne= d int vfid) +{ + return pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_DATA_DONE); +} + +/** + * xe_gt_sriov_pf_control_check_save_failed() - Check if save processing h= as failed. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: true if save processing failed, false otherwise. + */ +bool xe_gt_sriov_pf_control_check_save_failed(struct xe_gt *gt, unsigned i= nt vfid) +{ + return pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_FAILED); +} + +/** + * xe_gt_sriov_pf_control_process_save_data() - Queue VF save migration da= ta processing. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_control_process_save_data(struct xe_gt *gt, unsigned in= t vfid) +{ + if (!pf_expect_vf_not_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_FAILED)) + return -EIO; + + pf_exit_vf_save_wait_data(gt, vfid); + + return 0; +} + /** * xe_gt_sriov_pf_control_trigger_save_vf() - Start an SR-IOV VF migration= data save sequence. * @gt: the &xe_gt @@ -887,19 +1021,63 @@ int xe_gt_sriov_pf_control_trigger_save_vf(struct xe= _gt *gt, unsigned int vfid) */ int xe_gt_sriov_pf_control_finish_save_vf(struct xe_gt *gt, unsigned int v= fid) { - if (!pf_expect_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVED)) { - pf_enter_vf_mismatch(gt, vfid); + if (!pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_DATA_DONE)) { + xe_gt_sriov_err(gt, "VF%u save is still in progress!\n", vfid); return -EIO; } =20 pf_expect_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSED); + pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_DATA_DONE); + pf_enter_vf_saved(gt, vfid); =20 return 0; } =20 +/** + * DOC: The VF RESTORE state machine + * + * RESTORE extends the PAUSED state. + * + * The VF RESTORE state machine looks like:: + * + * ....PAUSED.................................................... + * : : + * : (O)<---------o : + * : | \ : + * : restore (RESTORED) (RESTORE_FAILED) : + * : | ^ ^ : + * : | | | : + * : ....V...............o...........o......RESTORE_WIP...... : + * : : | | | : : + * : : | empty | : : + * : : | | | : : + * : : | | | : : + * : : | DATA_DONE | : : + * : : | ^ | : : + * : : | | error : : + * : : | trailer / : : + * : : | / / : : + * : : | / / : : + * : : | / / : : + * : : o---------->PROCESS_DATA<----produce : : + * : : \ \ : : + * : : \ \ : : + * : : \ \ : : + * : : ring_empty---->WAIT_DATA : : + * : : : : + * : :......................................................: : + * :............................................................: + * + * For the full state machine view, see `The VF state machine`_. + */ + static void pf_exit_vf_restore_wip(struct xe_gt *gt, unsigned int vfid) { - pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP); + if (pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) { + pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_PROCESS_DATA); + pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WAIT_DATA); + pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_DATA_DONE); + } } =20 static void pf_enter_vf_restored(struct xe_gt *gt, unsigned int vfid) @@ -914,20 +1092,64 @@ static void pf_enter_vf_restored(struct xe_gt *gt, u= nsigned int vfid) pf_exit_vf_wip(gt, vfid); } =20 +static void pf_enter_vf_restore_failed(struct xe_gt *gt, unsigned int vfid) +{ + if (!pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_FAILED)) + pf_enter_vf_state_machine_bug(gt, vfid); + + wake_up_all(xe_sriov_pf_migration_waitqueue(gt_to_xe(gt), vfid)); + + pf_exit_vf_wip(gt, vfid); +} + +static int pf_handle_vf_restore_data(struct xe_gt *gt, unsigned int vfid) +{ + struct xe_sriov_packet *data =3D xe_gt_sriov_pf_migration_restore_consume= (gt, vfid); + + xe_gt_sriov_notice(gt, "Skipping VF%u unknown data type: %d\n", vfid, dat= a->type); + + return 0; +} + static bool pf_handle_vf_restore(struct xe_gt *gt, unsigned int vfid) { - if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) + int ret; + + if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_PROCESS_DATA)) return false; =20 - pf_enter_vf_restored(gt, vfid); + if (xe_gt_sriov_pf_migration_ring_empty(gt, vfid)) { + if (pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_DATA_DONE)) + pf_enter_vf_restored(gt, vfid); + else + pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WAIT_DATA); + + return true; + } + + ret =3D pf_handle_vf_restore_data(gt, vfid); + if (ret) + pf_enter_vf_restore_failed(gt, vfid); + else + pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_PROCESS_DATA); =20 return true; } =20 +static void pf_exit_vf_restore_wait_data(struct xe_gt *gt, unsigned int vf= id) +{ + if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WAIT_DATA)) + return; + + pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_PROCESS_DATA); + pf_queue_vf(gt, vfid); +} + static bool pf_enter_vf_restore_wip(struct xe_gt *gt, unsigned int vfid) { if (pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) { pf_enter_vf_wip(gt, vfid); + pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_PROCESS_DATA); pf_queue_vf(gt, vfid); return true; } @@ -935,6 +1157,58 @@ static bool pf_enter_vf_restore_wip(struct xe_gt *gt,= unsigned int vfid) return false; } =20 +/** + * xe_gt_sriov_pf_control_check_restore_failed() - Check if restore proces= sing has failed. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: true if restore processing failed, false otherwise. + */ +bool xe_gt_sriov_pf_control_check_restore_failed(struct xe_gt *gt, unsigne= d int vfid) +{ + return pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_FAILED); +} + +/** + * xe_gt_sriov_pf_control_restore_data_done() - Indicate the end of VF mig= ration data stream. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_control_restore_data_done(struct xe_gt *gt, unsigned in= t vfid) +{ + if (!pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_DATA_DONE)) { + pf_enter_vf_state_machine_bug(gt, vfid); + return -EIO; + } + + return xe_gt_sriov_pf_control_process_restore_data(gt, vfid); +} + +/** + * xe_gt_sriov_pf_control_process_restore_data() - Queue VF restore migrat= ion data processing. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_control_process_restore_data(struct xe_gt *gt, unsigned= int vfid) +{ + if (!pf_expect_vf_not_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_FAILED)) + return -EIO; + + pf_exit_vf_restore_wait_data(gt, vfid); + + return 0; +} + /** * xe_gt_sriov_pf_control_trigger restore_vf() - Start an SR-IOV VF migrat= ion data restore sequence. * @gt: the &xe_gt @@ -1000,11 +1274,9 @@ int xe_gt_sriov_pf_control_finish_restore_vf(struct = xe_gt *gt, unsigned int vfid { int ret; =20 - if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) { - ret =3D pf_wait_vf_restore_done(gt, vfid); - if (ret) - return ret; - } + ret =3D pf_wait_vf_restore_done(gt, vfid); + if (ret) + return ret; =20 if (!pf_expect_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORED)) { pf_enter_vf_mismatch(gt, vfid); @@ -1705,9 +1977,21 @@ static bool pf_process_vf_state_machine(struct xe_gt= *gt, unsigned int vfid) if (pf_exit_vf_pause_save_guc(gt, vfid)) return true; =20 + if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WAIT_DATA)) { + xe_gt_sriov_dbg_verbose(gt, "VF%u in %s\n", vfid, + control_bit_to_string(XE_GT_SRIOV_STATE_SAVE_WAIT_DATA)); + return false; + } + if (pf_handle_vf_save(gt, vfid)) return true; =20 + if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WAIT_DATA)) { + xe_gt_sriov_dbg_verbose(gt, "VF%u in %s\n", vfid, + control_bit_to_string(XE_GT_SRIOV_STATE_RESTORE_WAIT_DATA)); + return false; + } + if (pf_handle_vf_restore(gt, vfid)) return true; =20 diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.h index 0286536375d17..c36c8767f3adc 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h @@ -16,8 +16,14 @@ void xe_gt_sriov_pf_control_restart(struct xe_gt *gt); =20 int xe_gt_sriov_pf_control_pause_vf(struct xe_gt *gt, unsigned int vfid); int xe_gt_sriov_pf_control_resume_vf(struct xe_gt *gt, unsigned int vfid); +bool xe_gt_sriov_pf_control_check_save_data_done(struct xe_gt *gt, unsigne= d int vfid); +bool xe_gt_sriov_pf_control_check_save_failed(struct xe_gt *gt, unsigned i= nt vfid); +int xe_gt_sriov_pf_control_process_save_data(struct xe_gt *gt, unsigned in= t vfid); int xe_gt_sriov_pf_control_trigger_save_vf(struct xe_gt *gt, unsigned int = vfid); int xe_gt_sriov_pf_control_finish_save_vf(struct xe_gt *gt, unsigned int v= fid); +int xe_gt_sriov_pf_control_restore_data_done(struct xe_gt *gt, unsigned in= t vfid); +bool xe_gt_sriov_pf_control_check_restore_failed(struct xe_gt *gt, unsigne= d int vfid); +int xe_gt_sriov_pf_control_process_restore_data(struct xe_gt *gt, unsigned= int vfid); int xe_gt_sriov_pf_control_trigger_restore_vf(struct xe_gt *gt, unsigned i= nt vfid); int xe_gt_sriov_pf_control_finish_restore_vf(struct xe_gt *gt, unsigned in= t vfid); int xe_gt_sriov_pf_control_stop_vf(struct xe_gt *gt, unsigned int vfid); diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h b/drivers/gp= u/drm/xe/xe_gt_sriov_pf_control_types.h index c0ce05818e24f..0bee910bdf07e 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h @@ -32,9 +32,15 @@ * @XE_GT_SRIOV_STATE_PAUSE_FAILED: indicates that a VF pause operation ha= s failed. * @XE_GT_SRIOV_STATE_PAUSED: indicates that the VF is paused. * @XE_GT_SRIOV_STATE_SAVE_WIP: indicates that VF save operation is in pro= gress. + * @XE_GT_SRIOV_STATE_SAVE_PROCESS_DATA: indicates that VF migration data = is being produced. + * @XE_GT_SRIOV_STATE_SAVE_WAIT_DATA: indicates that PF awaits for space i= n migration data ring. + * @XE_GT_SRIOV_STATE_SAVE_DATA_DONE: indicates that all migration data wa= s produced by Xe. * @XE_GT_SRIOV_STATE_SAVE_FAILED: indicates that VF save operation has fa= iled. * @XE_GT_SRIOV_STATE_SAVED: indicates that VF data is saved. * @XE_GT_SRIOV_STATE_RESTORE_WIP: indicates that VF restore operation is = in progress. + * @XE_GT_SRIOV_STATE_RESTORE_PROCESS_DATA: indicates that VF migration da= ta is being consumed. + * @XE_GT_SRIOV_STATE_RESTORE_WAIT_DATA: indicates that PF awaits for data= in migration data ring. + * @XE_GT_SRIOV_STATE_RESTORE_DATA_DONE: indicates that all migration data= was produced by the user. * @XE_GT_SRIOV_STATE_RESTORE_FAILED: indicates that VF restore operation = has failed. * @XE_GT_SRIOV_STATE_RESTORED: indicates that VF data is restored. * @XE_GT_SRIOV_STATE_RESUME_WIP: indicates the a VF resume operation is i= n progress. @@ -70,10 +76,16 @@ enum xe_gt_sriov_control_bits { XE_GT_SRIOV_STATE_PAUSED, =20 XE_GT_SRIOV_STATE_SAVE_WIP, + XE_GT_SRIOV_STATE_SAVE_PROCESS_DATA, + XE_GT_SRIOV_STATE_SAVE_WAIT_DATA, + XE_GT_SRIOV_STATE_SAVE_DATA_DONE, XE_GT_SRIOV_STATE_SAVE_FAILED, XE_GT_SRIOV_STATE_SAVED, =20 XE_GT_SRIOV_STATE_RESTORE_WIP, + XE_GT_SRIOV_STATE_RESTORE_PROCESS_DATA, + XE_GT_SRIOV_STATE_RESTORE_WAIT_DATA, + XE_GT_SRIOV_STATE_RESTORE_DATA_DONE, XE_GT_SRIOV_STATE_RESTORE_FAILED, XE_GT_SRIOV_STATE_RESTORED, =20 diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index ca28f45aaf481..d9ca9ea737dcc 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -7,6 +7,7 @@ =20 #include "abi/guc_actions_sriov_abi.h" #include "xe_bo.h" +#include "xe_gt_sriov_pf_control.h" #include "xe_gt_sriov_pf_helpers.h" #include "xe_gt_sriov_pf_migration.h" #include "xe_gt_sriov_printk.h" @@ -15,6 +16,17 @@ #include "xe_sriov.h" #include "xe_sriov_pf_migration.h" =20 +#define XE_GT_SRIOV_PF_MIGRATION_RING_SIZE 5 + +static struct xe_gt_sriov_migration_data *pf_pick_gt_migration(struct xe_g= t *gt, unsigned int vfid) +{ + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid !=3D PFID); + xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); + + return >->sriov.pf.vfs[vfid].migration; +} + /* Return: number of dwords saved/restored/required or a negative error co= de on failure */ static int guc_action_vf_save_restore(struct xe_guc *guc, u32 vfid, u32 op= code, u64 addr, u32 ndwords) @@ -382,6 +394,178 @@ ssize_t xe_gt_sriov_pf_migration_write_guc_state(stru= ct xe_gt *gt, unsigned int } #endif /* CONFIG_DEBUG_FS */ =20 +/** + * xe_gt_sriov_pf_migration_ring_empty() - Check if a migration ring is em= pty. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * Return: true if the ring is empty, otherwise false. + */ +bool xe_gt_sriov_pf_migration_ring_empty(struct xe_gt *gt, unsigned int vf= id) +{ + return ptr_ring_empty(&pf_pick_gt_migration(gt, vfid)->ring); +} + +/** + * xe_gt_sriov_pf_migration_ring_full() - Check if a migration ring is ful= l. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * Return: true if the ring is full, otherwise false. + */ +bool xe_gt_sriov_pf_migration_ring_full(struct xe_gt *gt, unsigned int vfi= d) +{ + return ptr_ring_full(&pf_pick_gt_migration(gt, vfid)->ring); +} + +/** + * xe_gt_sriov_pf_migration_save_produce() - Add VF save data packet to mi= gration ring. + * @gt: the &xe_gt + * @vfid: the VF identifier + * @data: the &xe_sriov_packet + * + * Called by the save migration data producer (PF SR-IOV Control worker) w= hen + * processing migration data. + * Wakes up the save migration data consumer (userspace), that is potentia= lly + * waiting for data when the ring was empty. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_migration_save_produce(struct xe_gt *gt, unsigned int v= fid, + struct xe_sriov_packet *data) +{ + int ret; + + ret =3D ptr_ring_produce(&pf_pick_gt_migration(gt, vfid)->ring, data); + if (ret) + return ret; + + wake_up_all(xe_sriov_pf_migration_waitqueue(gt_to_xe(gt), vfid)); + + return 0; +} + +/** + * xe_gt_sriov_pf_migration_restore_consume() - Get VF restore data packet= from migration ring. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * Called by the restore migration data consumer (PF SR-IOV Control worker= ) when + * processing migration data. + * Wakes up the restore migration data producer (userspace), that is + * potentially waiting to add more data when the ring is full. + * + * Return: Pointer to &xe_sriov_packet on success, + * NULL if ring is empty. + */ +struct xe_sriov_packet * +xe_gt_sriov_pf_migration_restore_consume(struct xe_gt *gt, unsigned int vf= id) +{ + struct xe_gt_sriov_migration_data *migration =3D pf_pick_gt_migration(gt,= vfid); + struct wait_queue_head *wq =3D xe_sriov_pf_migration_waitqueue(gt_to_xe(g= t), vfid); + struct xe_sriov_packet *data; + + data =3D ptr_ring_consume(&migration->ring); + if (data) + wake_up_all(wq); + + return data; +} + +static bool pf_restore_data_ready(struct xe_gt *gt, unsigned int vfid) +{ + if (xe_gt_sriov_pf_control_check_restore_failed(gt, vfid) || + !ptr_ring_full(&pf_pick_gt_migration(gt, vfid)->ring)) + return true; + + return false; +} + +/** + * xe_gt_sriov_pf_migration_restore_produce() - Add VF restore data packet= to migration ring. + * @gt: the &xe_gt + * @vfid: the VF identifier + * @data: the &xe_sriov_packet + * + * Called by the restore migration data producer (userspace) when processi= ng + * migration data. + * If the ring is full, waits until there is space. + * Queues the restore migration data consumer (PF SR-IOV Control worker), = that + * is potentially waiting for data when the ring was empty. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_migration_restore_produce(struct xe_gt *gt, unsigned in= t vfid, + struct xe_sriov_packet *data) +{ + int ret; + + xe_gt_assert(gt, data->tile =3D=3D gt->tile->id); + xe_gt_assert(gt, data->gt =3D=3D gt->info.id); + + for (;;) { + if (xe_gt_sriov_pf_control_check_restore_failed(gt, vfid)) + return -EIO; + + ret =3D ptr_ring_produce(&pf_pick_gt_migration(gt, vfid)->ring, data); + if (!ret) + break; + + ret =3D wait_event_interruptible(*xe_sriov_pf_migration_waitqueue(gt_to_= xe(gt), vfid), + pf_restore_data_ready(gt, vfid)); + if (ret) + return ret; + } + + return xe_gt_sriov_pf_control_process_restore_data(gt, vfid); +} + +/** + * xe_gt_sriov_pf_migration_save_consume() - Get VF save data packet from = migration ring. + * @gt: the &xe_gt + * @vfid: the VF identifier + * + * Called by the save migration data consumer (userspace) when + * processing migration data. + * Queues the save migration data producer (PF SR-IOV Control worker), tha= t is + * potentially waiting to add more data when the ring is full. + * + * Return: Pointer to &xe_sriov_packet on success, + * NULL if ring is empty and there's no more data available, + * ERR_PTR(-EAGAIN) if the ring is empty, but data is still produced. + */ +struct xe_sriov_packet * +xe_gt_sriov_pf_migration_save_consume(struct xe_gt *gt, unsigned int vfid) +{ + struct xe_gt_sriov_migration_data *migration =3D pf_pick_gt_migration(gt,= vfid); + struct xe_sriov_packet *data; + int ret; + + data =3D ptr_ring_consume(&migration->ring); + if (data) { + ret =3D xe_gt_sriov_pf_control_process_save_data(gt, vfid); + if (ret) + return ERR_PTR(ret); + + return data; + } + + if (xe_gt_sriov_pf_control_check_save_data_done(gt, vfid)) + return NULL; + + if (xe_gt_sriov_pf_control_check_save_failed(gt, vfid)) + return ERR_PTR(-EIO); + + return ERR_PTR(-EAGAIN); +} + +static void action_ring_cleanup(void *arg) +{ + struct ptr_ring *r =3D arg; + + ptr_ring_cleanup(r, NULL); +} + /** * xe_gt_sriov_pf_migration_init() - Initialize support for VF migration. * @gt: the &xe_gt @@ -393,6 +577,7 @@ ssize_t xe_gt_sriov_pf_migration_write_guc_state(struct= xe_gt *gt, unsigned int int xe_gt_sriov_pf_migration_init(struct xe_gt *gt) { struct xe_device *xe =3D gt_to_xe(gt); + unsigned int n, totalvfs; int err; =20 xe_gt_assert(gt, IS_SRIOV_PF(xe)); @@ -404,5 +589,19 @@ int xe_gt_sriov_pf_migration_init(struct xe_gt *gt) if (err) return err; =20 + totalvfs =3D xe_sriov_pf_get_totalvfs(xe); + for (n =3D 1; n <=3D totalvfs; n++) { + struct xe_gt_sriov_migration_data *migration =3D pf_pick_gt_migration(gt= , n); + + err =3D ptr_ring_init(&migration->ring, + XE_GT_SRIOV_PF_MIGRATION_RING_SIZE, GFP_KERNEL); + if (err) + return err; + + err =3D devm_add_action_or_reset(xe->drm.dev, action_ring_cleanup, &migr= ation->ring); + if (err) + return err; + } + return 0; } diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.h index 09faeae00ddbb..b29d34a835b71 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h @@ -9,11 +9,25 @@ #include =20 struct xe_gt; +struct xe_sriov_packet; =20 int xe_gt_sriov_pf_migration_init(struct xe_gt *gt); int xe_gt_sriov_pf_migration_save_guc_state(struct xe_gt *gt, unsigned int= vfid); int xe_gt_sriov_pf_migration_restore_guc_state(struct xe_gt *gt, unsigned = int vfid); =20 +bool xe_gt_sriov_pf_migration_ring_empty(struct xe_gt *gt, unsigned int vf= id); +bool xe_gt_sriov_pf_migration_ring_full(struct xe_gt *gt, unsigned int vfi= d); + +int xe_gt_sriov_pf_migration_save_produce(struct xe_gt *gt, unsigned int v= fid, + struct xe_sriov_packet *data); +struct xe_sriov_packet * +xe_gt_sriov_pf_migration_restore_consume(struct xe_gt *gt, unsigned int vf= id); + +int xe_gt_sriov_pf_migration_restore_produce(struct xe_gt *gt, unsigned in= t vfid, + struct xe_sriov_packet *data); +struct xe_sriov_packet * +xe_gt_sriov_pf_migration_save_consume(struct xe_gt *gt, unsigned int vfid); + #ifdef CONFIG_DEBUG_FS ssize_t xe_gt_sriov_pf_migration_read_guc_state(struct xe_gt *gt, unsigned= int vfid, char __user *buf, size_t count, loff_t *pos); diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h b/drivers/= gpu/drm/xe/xe_gt_sriov_pf_migration_types.h index 9d672feac5f04..84be6fac16c8b 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h @@ -7,6 +7,7 @@ #define _XE_GT_SRIOV_PF_MIGRATION_TYPES_H_ =20 #include +#include #include =20 /** @@ -24,6 +25,16 @@ struct xe_gt_sriov_state_snapshot { } guc; }; =20 +/** + * struct xe_gt_sriov_migration_data - GT-level per-VF migration data. + * + * Used by the PF driver to maintain per-VF migration data. + */ +struct xe_gt_sriov_migration_data { + /** @ring: queue containing VF save / restore migration data */ + struct ptr_ring ring; +}; + /** * struct xe_gt_sriov_pf_migration - GT-level data. * diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h b/drivers/gpu/drm/xe= /xe_gt_sriov_pf_types.h index a64a6835ad656..812e74d3f8f80 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h @@ -33,6 +33,9 @@ struct xe_gt_sriov_metadata { =20 /** @snapshot: snapshot of the VF state data */ struct xe_gt_sriov_state_snapshot snapshot; + + /** @migration: per-VF migration data. */ + struct xe_gt_sriov_migration_data migration; }; =20 /** diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.c index 8c523c392f98b..ed44eda9418cc 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.c @@ -3,8 +3,36 @@ * Copyright =C2=A9 2025 Intel Corporation */ =20 +#include + +#include "xe_device.h" +#include "xe_gt_sriov_pf_control.h" +#include "xe_gt_sriov_pf_migration.h" +#include "xe_pm.h" #include "xe_sriov.h" +#include "xe_sriov_pf_helpers.h" #include "xe_sriov_pf_migration.h" +#include "xe_sriov_printk.h" + +static struct xe_sriov_migration_state *pf_pick_migration(struct xe_device= *xe, unsigned int vfid) +{ + xe_assert(xe, IS_SRIOV_PF(xe)); + xe_assert(xe, vfid <=3D xe_sriov_pf_get_totalvfs(xe)); + + return &xe->sriov.pf.vfs[vfid].migration; +} + +/** + * xe_sriov_pf_migration_waitqueue - Get waitqueue for migration. + * @xe: the &xe_device + * @vfid: the VF identifier + * + * Return: pointer to the migration waitqueue. + */ +wait_queue_head_t *xe_sriov_pf_migration_waitqueue(struct xe_device *xe, u= nsigned int vfid) +{ + return &pf_pick_migration(xe, vfid)->wq; +} =20 /** * xe_sriov_pf_migration_supported() - Check if SR-IOV VF migration is sup= ported by the device @@ -33,9 +61,124 @@ static bool pf_check_migration_support(struct xe_device= *xe) */ int xe_sriov_pf_migration_init(struct xe_device *xe) { + unsigned int n, totalvfs; + xe_assert(xe, IS_SRIOV_PF(xe)); =20 xe->sriov.pf.migration.supported =3D pf_check_migration_support(xe); + if (!xe_sriov_pf_migration_supported(xe)) + return 0; + + totalvfs =3D xe_sriov_pf_get_totalvfs(xe); + for (n =3D 1; n <=3D totalvfs; n++) { + struct xe_sriov_migration_state *migration =3D pf_pick_migration(xe, n); + + init_waitqueue_head(&migration->wq); + } =20 return 0; } + +static bool pf_migration_data_ready(struct xe_device *xe, unsigned int vfi= d) +{ + struct xe_gt *gt; + u8 gt_id; + + for_each_gt(gt, xe, gt_id) { + if (xe_gt_sriov_pf_control_check_save_failed(gt, vfid) || + xe_gt_sriov_pf_control_check_save_data_done(gt, vfid) || + !xe_gt_sriov_pf_migration_ring_empty(gt, vfid)) + return true; + } + + return false; +} + +static struct xe_sriov_packet * +pf_migration_consume(struct xe_device *xe, unsigned int vfid) +{ + struct xe_sriov_packet *data; + bool more_data =3D false; + struct xe_gt *gt; + u8 gt_id; + + for_each_gt(gt, xe, gt_id) { + data =3D xe_gt_sriov_pf_migration_save_consume(gt, vfid); + if (data && PTR_ERR(data) !=3D EAGAIN) + return data; + if (PTR_ERR(data) =3D=3D -EAGAIN) + more_data =3D true; + } + + if (!more_data) + return NULL; + + return ERR_PTR(-EAGAIN); +} + +/** + * xe_sriov_pf_migration_save_consume() - Consume a VF migration data pack= et from the device. + * @xe: the &xe_device + * @vfid: the VF identifier + * + * Called by the save migration data consumer (userspace) when + * processing migration data. + * If there is no migration data to process, wait until more data is avail= able. + * + * Return: Pointer to &xe_sriov_packet on success, + * NULL if ring is empty and no more migration data is expected, + * ERR_PTR value in case of error. + * + * Return: 0 on success or a negative error code on failure. + */ +struct xe_sriov_packet * +xe_sriov_pf_migration_save_consume(struct xe_device *xe, unsigned int vfid) +{ + struct xe_sriov_migration_state *migration =3D pf_pick_migration(xe, vfid= ); + struct xe_sriov_packet *data; + int ret; + + xe_assert(xe, IS_SRIOV_PF(xe)); + + for (;;) { + data =3D pf_migration_consume(xe, vfid); + if (PTR_ERR(data) !=3D -EAGAIN) + break; + + ret =3D wait_event_interruptible(migration->wq, + pf_migration_data_ready(xe, vfid)); + if (ret) + return ERR_PTR(ret); + } + + return data; +} + +/** + * xe_sriov_pf_migration_restore_produce() - Produce a VF migration data p= acket to the device. + * @xe: the &xe_device + * @vfid: the VF identifier + * @data: Pointer to &xe_sriov_packet + * + * Called by the restore migration data producer (userspace) when processi= ng + * migration data. + * If the underlying data structure is full, wait until there is space. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_pf_migration_restore_produce(struct xe_device *xe, unsigned i= nt vfid, + struct xe_sriov_packet *data) +{ + struct xe_gt *gt; + + xe_assert(xe, IS_SRIOV_PF(xe)); + + gt =3D xe_device_get_gt(xe, data->gt); + if (!gt || data->tile !=3D gt->tile->id) { + xe_sriov_err_ratelimited(xe, "VF%d Invalid GT - tile:%u, GT:%u\n", + vfid, data->tile, data->gt); + return -EINVAL; + } + + return xe_gt_sriov_pf_migration_restore_produce(gt, vfid, data); +} diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.h b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.h index d2b4a24165438..d48ff2ecc2308 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.h @@ -7,10 +7,17 @@ #define _XE_SRIOV_PF_MIGRATION_H_ =20 #include +#include =20 struct xe_device; +struct xe_sriov_packet; =20 int xe_sriov_pf_migration_init(struct xe_device *xe); bool xe_sriov_pf_migration_supported(struct xe_device *xe); +int xe_sriov_pf_migration_restore_produce(struct xe_device *xe, unsigned i= nt vfid, + struct xe_sriov_packet *data); +struct xe_sriov_packet * +xe_sriov_pf_migration_save_consume(struct xe_device *xe, unsigned int vfid= ); +wait_queue_head_t *xe_sriov_pf_migration_waitqueue(struct xe_device *xe, u= nsigned int vfid); =20 #endif diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h b/drivers/gpu= /drm/xe/xe_sriov_pf_migration_types.h index 43ca60b8982c7..3177ca24215cb 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h @@ -7,6 +7,7 @@ #define _XE_SRIOV_PF_MIGRATION_TYPES_H_ =20 #include +#include =20 /** * struct xe_sriov_pf_migration - Xe device level VF migration data @@ -16,4 +17,50 @@ struct xe_sriov_pf_migration { bool supported; }; =20 +/** + * struct xe_sriov_migration_state - Per VF device-level migration related= data + */ +struct xe_sriov_migration_state { + /** @wq: waitqueue used to avoid busy-waiting for snapshot production/con= sumption */ + wait_queue_head_t wq; +}; + +/** + * struct xe_sriov_packet - Xe SR-IOV VF migration data packet + */ +struct xe_sriov_packet { + /** @xe: Xe device */ + struct xe_device *xe; + /** @vaddr: CPU pointer to payload data */ + void *vaddr; + /** @remaining: payload data remaining */ + size_t remaining; + /** @hdr_remaining: header data remaining */ + size_t hdr_remaining; + union { + /** @bo: Buffer object with migration data */ + struct xe_bo *bo; + /** @buff: Buffer with migration data */ + void *buff; + }; + __struct_group(xe_sriov_pf_migration_hdr, hdr, __packed, + /** @hdr.version: migration data protocol version */ + u8 version; + /** @hdr.type: migration data type */ + u8 type; + /** @hdr.tile: migration data tile id */ + u8 tile; + /** @hdr.gt: migration data gt id */ + u8 gt; + /** @hdr.flags: migration data flags */ + u32 flags; + /** @hdr.offset: offset into the resource; + * used when multiple packets of given type are used for migration + */ + u64 offset; + /** @hdr.size: migration data size */ + u64 size; + ); +}; + #endif diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_types.h b/drivers/gpu/drm/xe/xe= _sriov_pf_types.h index b15d8ca2894c2..d1af2c0aef866 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_types.h +++ b/drivers/gpu/drm/xe/xe_sriov_pf_types.h @@ -24,6 +24,8 @@ struct xe_sriov_metadata { =20 /** @version: negotiated VF/PF ABI version */ struct xe_sriov_pf_service_version version; + /** @migration: migration state */ + struct xe_sriov_migration_state migration; }; =20 /** --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EA4732FCC02; Wed, 5 Nov 2025 15:11:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355483; cv=fail; b=Cxfl7qmC+JbH+ljdJ4+9Xe9e4BxPogIQNP5Q08dr9Gx6MbcqBmDLOdG7Ki7m/Nye5a8BaQ9wwfbXtujoGUv6SzSazURTT9A881ER8fft2j1ywyCo8fJMrRSkjTZJ1Re06wwM1w6WE//xJWmLXjNwAQowyG5JEen3lIfPkKIqqh0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355483; c=relaxed/simple; bh=GvgbyE8nFxGVHOfY00Di/Yl/nZnw7doh4L7QAzouJu0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=IG7u5xKBpMKmq+O7BAlWUtSloLP0+93QCiCAm/fUUkmcT/QYHWxNOgyHoHOZf2sbHZKzPVK2Y2olhlfNVuszfBo678JZF4Sf6115v6feXsr75ey2ugZr0Jp3rK/DajbrllysDuGnb3np331JQtdad1ZPKIH3DPaibE3iLdQyDCU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=gOofxXMC; arc=fail smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="gOofxXMC" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355479; x=1793891479; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=GvgbyE8nFxGVHOfY00Di/Yl/nZnw7doh4L7QAzouJu0=; b=gOofxXMCPGh9ORth3H66b3eRHv+NXuFpEcc336eQOsWYRb7JqDQYXlCw g+MFMNY4DfpW2XVNdre1Xdur70a6cfQrJgRih7a+FmgG2tFxEO6MCC6KO NgNm5h4uufYz2NdTo+iXjnJaMshad4m3qXvt80xZMf2oZzZOre2GF5EC7 dozNMAVi8ZV3w7FuQHnTLsEtd/2xNpucW1aoYtd0qz5UniFr0SvUNOf1I efAwVntY/Z/r7p2HnLEn/+UPzxbQX2Fh5Hq5oa8oA5s6lJkpagZpsjMAe UpFypGnGb0aKwzQKQDjKYIuIYnxiHTAiGOGOJ9TR/YnFHGLYYwpmVd0zV A==; X-CSE-ConnectionGUID: YuybmVBcTm++qP8OGabHag== X-CSE-MsgGUID: C5FZURpLT1CGLR31krZh4Q== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="52041769" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="52041769" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:16 -0800 X-CSE-ConnectionGUID: lZzi9WKKTKy5ilMfRUEehA== X-CSE-MsgGUID: zrrfqqTaTrG4lWNbDOthsA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="192649388" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by orviesa005.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:17 -0800 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:16 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:16 -0800 Received: from MW6PR02CU001.outbound.protection.outlook.com (52.101.48.31) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:16 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JIQO93TSj2bS4Ol0tfQlghai8meLvgvrbkFYajkL7t6aSb02ALhj+BA12pbEN+9T+0ih9hyp7VckdvJYMUfHj3HOUomuesPA6MpgfWJaxosTIoh2vjFb9mwqzymw6vhhKHLHLu5flMiTBDU/ZFUYoFKX+hc5QMrqkPiCx2TvdE5rth83MUaAwKXc3RN6gxaBuBfHpdRpGWoQS0uVLQlzUi5Atc6mC+nppS4tVxcyupMZTZibfieGGLkhluVs4wv44pE8Dzx4GD0Q12BKz1ZkSa9Hz1HMjFCt9UBK+xjwUxll+YrRWdUZHu2P8tAF4s81Miygvii0jUbo/cr74URKuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=x8pZ43Tt6Ko6obd1CNjLgoXSsAWwtsO7KhyNYA4uiik=; b=N/6lUlRZNuoB9iUkqCzF50tA1x0xWBHHgeVm39utmYibLDkFWi6frPhzwOdM6j4WfTJebjF1IdRMVlmF2xv2kg13/UAlNL+Gw8YLA0Qbmu5PCExtI2BNflKkYZ4+5i0QDWSJFFHuX6/6DuMG2IsvXNyC5X+OrYuqRu/ZJnnjT0yS/uulHOkTf+kM14aSWY7PhS/5JiqV9IQL7c6jP+VdASX8BWgf7vRWmab2QiIjdluX7aPmgTC3GP/ycWe3JYhDKPFMXvLYRqov5oseZoXjpKWHPWkj1fqhmk7yB9pSNiEOA370BTO3C7QKJAorWPrEDyjz6zIUxRvNN1+ARNRTFg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:14 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:14 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 06/28] drm/xe/pf: Add helpers for migration data packet allocation / free Date: Wed, 5 Nov 2025 16:10:04 +0100 Message-ID: <20251105151027.540712-7-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0045.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:22::14) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: b67da808-a921-4892-80f7-08de1c7d8fb5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bVlkVW9xSXV6M2U0WmxjTWF6Sm91c1JCNEowQTUybWQ3eE1NaHFHa3g1RHBI?= =?utf-8?B?NFkrMU50K3dTYk9WbUNCbTJQSnRIZ0oyZklpZVhMUmU0YWJDSktEN1hSdGtp?= =?utf-8?B?U25NM3I0bUVIQjdpREVvcDlXY2xrdWRVbVZzS0d3RHNNSUhRZERJNjFYYzhk?= =?utf-8?B?VFlvZG11aDhySlBDd1pubnpUSmFNdGlFZjJidlh3LzA4Ry9MZFA4RVdGOU4r?= =?utf-8?B?amlKd25PK1QvaDFYR0FodWZnRlBUQ1BJVmoyZHgybDF3Ym1GajArbWN4WWpI?= =?utf-8?B?VTdJY3U1V2hGTzllMEtWRDhpMEZ0MzhyYnVzelRhRGg4bENwQ3Y1ZzM5bWJv?= =?utf-8?B?WHBPN3l4SWlHNHdvUVNjenpReE1SRTVjemJtLzV3VDdJVG1rQWRWWHljTmxB?= =?utf-8?B?RytWYllzMnpldXlqOGlraktlcWVFUE5PYU51UkxFZUhPenVraDk0U3VFRWps?= =?utf-8?B?SGxJOFYrK2crU2MxT2NYbFFJd2ZCcGs4QjBKYlRGbzZxWUx4QWdNakNDcSty?= =?utf-8?B?aDFhMzZlZFVPc3dUVzdibnhJcU84SVI1WVA2VExDSGJSQjdVaTFWUUNldElW?= =?utf-8?B?aUNnYmZISE5NME5CZnU0bUVadXF4ZWMybXlKYlAxMnE3WnJPL3BXS0N5NCtF?= =?utf-8?B?Uml3UnNadmwxR3NabXRGTmVwZ0NNUnBZdENXVDFTTzl1K0p1WXY1cXNHVHJ2?= =?utf-8?B?WkNBRVlsNjJKKzRSdDMvaDg5bUU3UVMxYkdBSE4yOVhnTGZSWmh6OGYrUGNL?= =?utf-8?B?M0Y0eFZZZDlUdUgyK0Ruems0RDgvSDRsTVMvc1c4a1IzL2NTVi9oaFFsNTdN?= =?utf-8?B?Zi9FL0xXdjBZZFlIRzk2Z1lsM1dxck51Z1B0UCtqbjNISHRvdVd4K1BWYnEw?= =?utf-8?B?aDh2STBSMldVZUpkaXJaNzJOZS9lZDVQOGxteG9yOVVXdzJISWNPSGhCb2lG?= =?utf-8?B?RXBXZ3FpNHc4aWhrYkN4RTJ0ZVdheU9SbGdsOHVRTkhMaTR3cDRuUHVpbXZr?= =?utf-8?B?Qm9qemhxMmJway81bjd2TElJL2VUdHJpZktiR0tmZzVmUkFOUG9hak1CNlli?= =?utf-8?B?L1JQYjdlaWlDb2pJKzFvQ2lFUmtKN0ZSOXV2bmt5SDByT2xwaUlkY1BDNWVD?= =?utf-8?B?bmJHcGRXQTFmMUhTOVZmQ2lQVFJvdVVSd0dzQ1g3dlhVTW8vejNKdGZnSzdk?= =?utf-8?B?bEowd1JnLzgvVVVnOGQxNTh2WHFFUGJ5UHUzeW4zOVJJanJRWDFPYU5RbTht?= =?utf-8?B?a3pNd2N6UEZ2RkFoSHdoUmx3Q0YwbXViYWU1MkxnRThoSnBZbFVBTGRDNTAy?= =?utf-8?B?SFU5VSttSWQvNjJmVFBrWjN1SUpIa0dHK0NxSHdveXovZ2xZdWlLS2oybUJ3?= =?utf-8?B?dGJnN0tmVVNrQVRNZlhxOGtkYTc3RHMxbFM1MHUrSFB4N01DQS9OQ1c4YVJw?= =?utf-8?B?NVI2Zkd2WE1UYXZnZ3prSThlbncyTU55TXFrSFhrUTBCeHBaT0ZHZ3hiQVRu?= =?utf-8?B?ckljT0V4Yk9ZdTd5bHpKYUdGYnRGVlcwWitha0VpN2VzOCtnK1oxTVZRcEc0?= =?utf-8?B?RUU4SC84eGZ2R3lNK3RWYWEwczVHNlhlSVlzOVlNT3puS0g1U2xDRWJwS2Nj?= =?utf-8?B?Uk52VUpXaVh0T0RNS3VmZGNKR3hsWHJTdnRQK3BvY1FPSWV0d1dpZ0NOdkVv?= =?utf-8?B?RThDVDdTTTEyVFFtNitMYnZick5sNnNNMXJJMy8rVnRYTERUWnRPMFovcUJ0?= =?utf-8?B?dWEvd2RFZFZoaEFPRURvWVFWTW9wNmRFR09aU2l4ZEFzS0ErNEUyRmpPUjdv?= =?utf-8?B?dDhjV0tjbHdQS1IyZnJxc0lacE1TZllheGFFOCtrMUtTZFZpUm01bGllYUpq?= =?utf-8?B?eWNLNWhJWWtnNjVqTmNuNmU3VFdFUU1ac2huS3RxV0ZrZUhEbzVHMkJjVlJs?= =?utf-8?B?VGZFSFUvaGdxbVNtUFhnd3BzcGtxTWdGbzJyNkFmbEUyOEtwL3BRd2pCd3ds?= =?utf-8?Q?shqdZM9Cb9KVw14qmxKRVopDVeL18I=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VGk2dWdBNEM1MGMzU2FmOE16ZUF3ckFLK2lOVDJPUFM2TDJ2TkxXWlpKQ01D?= =?utf-8?B?Nk83T0hMaEowZ0lHK2pvSnFNZ0FUbSt3ODdOa0d1dnM4MW5iZGpNZkw5Q05m?= =?utf-8?B?UURqL0Vld2UwOEFMNEt4SEZDTHdpQWRjRmNxeUtsMXNOQVVaeWNHSlF0L2U4?= =?utf-8?B?a0dRcmJnbTdxTDJ0aWRoWW1iV2RoMmJIamlhSnpWQlVaSlhmZCtzS2E5c2dP?= =?utf-8?B?RWw5SHJCTXFDVFNNWXRHUmJ1TUNjN3k5cjRXUW4yaFF4dS9PamZ6QytWVkxW?= =?utf-8?B?ZnBpbjlUM3JOdFdJNHBGODVxNkpUc2QxQ3VqaXY3cGg5aFFoeHMxWnFwamgr?= =?utf-8?B?WkVudVdRYS9SSXBBVFZZbmxqYnVIS2ttQWtRaDdReGEvUU01YXJxY3ZTU0FP?= =?utf-8?B?SjJUcVJsNnRGYjhjR1I2b2VJMjB3ZGNOT2VUTnVJRVlFSWtKUlZvZy80ZW51?= =?utf-8?B?eEpueFJZa3Zxc3dSTnZvMlpEeEo1bzZXTkViOXprQXliOVorRlhUQnZTWFNP?= =?utf-8?B?b3VMa3MzRVZoVEVpZk1qSGl5NUhMd01STmtGOXdCTVNkdXRyMjU5Z2p0cmNU?= =?utf-8?B?dks3WlBHKzNBVTRrOTF2czJpckRjUjJISElUamlWYkN6MDJob1hGVzYwek0w?= =?utf-8?B?NTBFR0w0MlZpRXZ0OVZWeThjRGlHTW5DOUhFUU9xdGwvbkJsd1hEU1hBbmY5?= =?utf-8?B?aTI3MDNCajFJci9TMXR2RjlNMjhucTZiZVF1azlaUDRDeHNNNGdsYXZQUWg2?= =?utf-8?B?S2JOR285M0VuRXkrU1FiZFdPNXlWZnpHekRnVWhrNlkvVkppOFJISk1YbVp4?= =?utf-8?B?aXVRL1ozRFIxRWhLaWh1akJER1JDMGpXdGF3UFVsQ1craWFUUUZtMVU2OWJI?= =?utf-8?B?WGtmS2VyeVhMa2w3WXhJenRzdnY5ck1lejEzY1o5YTkrOEhBbHhSQ2lXVDRM?= =?utf-8?B?SjdRd3lrSW1oSU13K3BoazdZN015Wlptc2ZnNnE4THVZeHl3cDN3Z3REbkhl?= =?utf-8?B?YVg1N3B1UGtkUEpFU2Rsdm9TNDZWS3hFT0cxNXZUQXpueXpyMmprc1ArWHlK?= =?utf-8?B?Zkp4aVNXdVVXVlVuWnl2RXlWL2lCZzlFRU5INWJGeWRGS2dNMUhwWjEycFEr?= =?utf-8?B?WkVoNy9tSktTQVJacFFEZTZ5cEtLODV1MlR4ZnQ4dmprbE9qNEFrNUJhVXNw?= =?utf-8?B?UnZzVDVEVTFoWnQ1ZXIwbXJ6NnZZR1lmQVgvNUlpdkErNXR2U0tqRW9pMXB5?= =?utf-8?B?R0xmdmdMbXhrQklQV0g5Z0xlais0aW14ZzluSVBwM2NHYkZIVjRBOTlLUHkv?= =?utf-8?B?QWhXUi9aeXF4d0pScU11d3BnemJ6L1d0MUpKbEdxMTNmbVRtZ0pSRHJsK211?= =?utf-8?B?WEFYQjF0alpZUktSYlFLUXAxK01UUnVVMGNmSHhwTjdMS3dKdFpuS0NPblo2?= =?utf-8?B?S01Gc1pyUDJnTlp5RFlZVnEyS2Y0Zy9KdWtmVXFSRGdrUTFUdnFpbCt1bi95?= =?utf-8?B?NXVyU0t0NTJiSWMzU0YvQzJwVUF4eWJCdk1tenkwSDErajd5WUhoRlRMM1RU?= =?utf-8?B?RVppdHFnSnF1N0FscVpSQ0NXOXVvNkFzU3hKZ255Q1lVcllvbG5Cb28wUzVX?= =?utf-8?B?ai9LU2lnZ0hHdzQ0bjJGakN1K3c0SHFCaTArWjlsNHpJZ2ozN0lmbVpwczNn?= =?utf-8?B?Q1ZqcCs5QUN4bmFjd2lSaE5Ubkg1OGNTRjY5Mnovb09xMzhVVU03NFZXb0VX?= =?utf-8?B?SlgveTJoU29ZOXV0dktBeVhUemNBeHd2ZVNFVFo2ZnpYR0dFa2xjL2dYL0Rx?= =?utf-8?B?N0REL1RJTEQzeC9XdUhDTkFuMDNoSkt3MVBXZmtQS0Q0Q09qUHpuWnRwK1Vl?= =?utf-8?B?RHJhenBURnFDTll0REhTSlNNTk0wUmJCQzR5T3QrWDlYdVBCVGN6ekxQN2Ri?= =?utf-8?B?SGRJOXBhN3MwTDdxSVNEMXVWZUhUTlQxNzNkNU55ZHRlNStTdDBmTlU2TTZP?= =?utf-8?B?Z2N3SEZQUkNtUk9DdmxreXlVMkFTbWhhQXpUTEtTOEVvdGNKZFVlRXc2QndB?= =?utf-8?B?d2hkYkVOS2JTVWRsNk1vYmtuMG5LRTIrcWcveG9hRGpDeEtMWUpabmkzRitD?= =?utf-8?B?akFvZzdYNlEzYnVTWnhhakpMaUxRcmJxbDVYdGxuajMxSG01dnJPZDFWTnlh?= =?utf-8?B?RWc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: b67da808-a921-4892-80f7-08de1c7d8fb5 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:14.3919 (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: kMTRll406gH/p9O+i8EItXwhvp6H9H8bXc91wc2E+DErTp9+rtc3gD6+umW/1N1MiXgKe3g9L2L09kjzjL/5Xj28kAIwGnI5a6AXeh2fQVI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com Now that it's possible to free the packets - connect the restore handling logic with the ring. The helpers will also be used in upcoming changes that will start producing migration data packets. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/Makefile | 1 + drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 11 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 33 ++++- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h | 1 + drivers/gpu/drm/xe/xe_sriov_packet.c | 129 ++++++++++++++++++ drivers/gpu/drm/xe/xe_sriov_packet.h | 30 ++++ 6 files changed, 202 insertions(+), 3 deletions(-) create mode 100644 drivers/gpu/drm/xe/xe_sriov_packet.c create mode 100644 drivers/gpu/drm/xe/xe_sriov_packet.h diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile index cb6b30fd8c2d8..e4b273b025d2a 100644 --- a/drivers/gpu/drm/xe/Makefile +++ b/drivers/gpu/drm/xe/Makefile @@ -174,6 +174,7 @@ xe-$(CONFIG_PCI_IOV) +=3D \ xe_lmtt_2l.o \ xe_lmtt_ml.o \ xe_pci_sriov.o \ + xe_sriov_packet.o \ xe_sriov_pf.o \ xe_sriov_pf_control.o \ xe_sriov_pf_debugfs.o \ diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.c index db57f9d9b491f..25937592bc42f 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c @@ -18,6 +18,7 @@ #include "xe_gt_sriov_printk.h" #include "xe_guc_ct.h" #include "xe_sriov.h" +#include "xe_sriov_packet.h" #include "xe_sriov_pf_control.h" #include "xe_sriov_pf_migration.h" #include "xe_sriov_pf_service.h" @@ -852,6 +853,8 @@ int xe_gt_sriov_pf_control_resume_vf(struct xe_gt *gt, = unsigned int vfid) static void pf_exit_vf_save_wip(struct xe_gt *gt, unsigned int vfid) { if (pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP)) { + xe_gt_sriov_pf_migration_ring_free(gt, vfid); + pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_PROCESS_DATA); pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WAIT_DATA); pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_DATA_DONE); @@ -1074,6 +1077,8 @@ int xe_gt_sriov_pf_control_finish_save_vf(struct xe_g= t *gt, unsigned int vfid) static void pf_exit_vf_restore_wip(struct xe_gt *gt, unsigned int vfid) { if (pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WIP)) { + xe_gt_sriov_pf_migration_ring_free(gt, vfid); + pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_PROCESS_DATA); pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_WAIT_DATA); pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_DATA_DONE); @@ -1108,6 +1113,8 @@ static int pf_handle_vf_restore_data(struct xe_gt *gt= , unsigned int vfid) =20 xe_gt_sriov_notice(gt, "Skipping VF%u unknown data type: %d\n", vfid, dat= a->type); =20 + xe_sriov_packet_free(data); + return 0; } =20 @@ -1201,8 +1208,10 @@ int xe_gt_sriov_pf_control_restore_data_done(struct = xe_gt *gt, unsigned int vfid */ int xe_gt_sriov_pf_control_process_restore_data(struct xe_gt *gt, unsigned= int vfid) { - if (!pf_expect_vf_not_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_FAILED)) + if (!pf_expect_vf_not_state(gt, vfid, XE_GT_SRIOV_STATE_RESTORE_FAILED)) { + xe_gt_sriov_pf_migration_ring_free(gt, vfid); return -EIO; + } =20 pf_exit_vf_restore_wait_data(gt, vfid); =20 diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index d9ca9ea737dcc..c492677db28d9 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -14,6 +14,7 @@ #include "xe_guc.h" #include "xe_guc_ct.h" #include "xe_sriov.h" +#include "xe_sriov_packet.h" #include "xe_sriov_pf_migration.h" =20 #define XE_GT_SRIOV_PF_MIGRATION_RING_SIZE 5 @@ -418,6 +419,25 @@ bool xe_gt_sriov_pf_migration_ring_full(struct xe_gt *= gt, unsigned int vfid) return ptr_ring_full(&pf_pick_gt_migration(gt, vfid)->ring); } =20 +/** + * xe_gt_sriov_pf_migration_ring_free() - Consume and free all data in mig= ration ring + * @gt: the &xe_gt + * @vfid: the VF identifier + */ +void xe_gt_sriov_pf_migration_ring_free(struct xe_gt *gt, unsigned int vfi= d) +{ + struct xe_gt_sriov_migration_data *migration =3D pf_pick_gt_migration(gt,= vfid); + struct xe_sriov_packet *data; + + if (ptr_ring_empty(&migration->ring)) + return; + + xe_gt_sriov_notice(gt, "VF%u unprocessed migration data left in the ring!= \n", vfid); + + while ((data =3D ptr_ring_consume(&migration->ring))) + xe_sriov_packet_free(data); +} + /** * xe_gt_sriov_pf_migration_save_produce() - Add VF save data packet to mi= gration ring. * @gt: the &xe_gt @@ -544,8 +564,10 @@ xe_gt_sriov_pf_migration_save_consume(struct xe_gt *gt= , unsigned int vfid) data =3D ptr_ring_consume(&migration->ring); if (data) { ret =3D xe_gt_sriov_pf_control_process_save_data(gt, vfid); - if (ret) + if (ret) { + xe_sriov_packet_free(data); return ERR_PTR(ret); + } =20 return data; } @@ -559,11 +581,18 @@ xe_gt_sriov_pf_migration_save_consume(struct xe_gt *g= t, unsigned int vfid) return ERR_PTR(-EAGAIN); } =20 +static void pf_mig_packet_destroy(void *ptr) +{ + struct xe_sriov_packet *data =3D ptr; + + xe_sriov_packet_free(data); +} + static void action_ring_cleanup(void *arg) { struct ptr_ring *r =3D arg; =20 - ptr_ring_cleanup(r, NULL); + ptr_ring_cleanup(r, pf_mig_packet_destroy); } =20 /** diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.h index b29d34a835b71..b4c7b5dc9e914 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h @@ -17,6 +17,7 @@ int xe_gt_sriov_pf_migration_restore_guc_state(struct xe_= gt *gt, unsigned int vf =20 bool xe_gt_sriov_pf_migration_ring_empty(struct xe_gt *gt, unsigned int vf= id); bool xe_gt_sriov_pf_migration_ring_full(struct xe_gt *gt, unsigned int vfi= d); +void xe_gt_sriov_pf_migration_ring_free(struct xe_gt *gt, unsigned int vfi= d); =20 int xe_gt_sriov_pf_migration_save_produce(struct xe_gt *gt, unsigned int v= fid, struct xe_sriov_packet *data); diff --git a/drivers/gpu/drm/xe/xe_sriov_packet.c b/drivers/gpu/drm/xe/xe_s= riov_packet.c new file mode 100644 index 0000000000000..2cdcfb2073d00 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_sriov_packet.c @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright =C2=A9 2025 Intel Corporation + */ + +#include "xe_bo.h" +#include "xe_device.h" +#include "xe_sriov_packet.h" + +static bool pkt_needs_bo(struct xe_sriov_packet *data) +{ + return data->type =3D=3D XE_SRIOV_PACKET_TYPE_VRAM; +} + +/** + * xe_sriov_packet_alloc() - Allocate migration data packet + * @xe: the &xe_device + * + * Only allocates the "outer" structure, without initializing the migration + * data backing storage. + * + * Return: Pointer to &xe_sriov_packet on success, + * NULL in case of error. + */ +struct xe_sriov_packet *xe_sriov_packet_alloc(struct xe_device *xe) +{ + struct xe_sriov_packet *data; + + data =3D kzalloc(sizeof(*data), GFP_KERNEL); + if (!data) + return NULL; + + data->xe =3D xe; + data->hdr_remaining =3D sizeof(data->hdr); + + return data; +} + +/** + * xe_sriov_packet_free() - Free migration data packet. + * @data: the &xe_sriov_packet + */ +void xe_sriov_packet_free(struct xe_sriov_packet *data) +{ + if (IS_ERR_OR_NULL(data)) + return; + + if (pkt_needs_bo(data)) + xe_bo_unpin_map_no_vm(data->bo); + else + kvfree(data->buff); + + kfree(data); +} + +static int mig_pkt_init(struct xe_sriov_packet *data) +{ + struct xe_gt *gt =3D xe_device_get_gt(data->xe, data->gt); + + if (data->size =3D=3D 0) + return 0; + + if (pkt_needs_bo(data)) { + struct xe_bo *bo; + + bo =3D xe_bo_create_pin_map_novm(data->xe, gt->tile, PAGE_ALIGN(data->si= ze), + ttm_bo_type_kernel, + XE_BO_FLAG_SYSTEM | XE_BO_FLAG_PINNED, false); + if (IS_ERR(bo)) + return PTR_ERR(bo); + + data->bo =3D bo; + data->vaddr =3D bo->vmap.vaddr; + } else { + void *buff =3D kvzalloc(data->size, GFP_KERNEL); + + if (!buff) + return -ENOMEM; + + data->buff =3D buff; + data->vaddr =3D buff; + } + + return 0; +} + +#define XE_SRIOV_PACKET_SUPPORTED_VERSION 1 +/** + * xe_sriov_packet_init() - Initialize migration packet header and backing= storage. + * @data: the &xe_sriov_packet + * @tile_id: tile identifier + * @gt_id: GT identifier + * @type: &xe_sriov_packet_type + * @offset: offset of data packet payload (within wider resource) + * @size: size of data packet payload + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_packet_init(struct xe_sriov_packet *data, u8 tile_id, u8 gt_i= d, + enum xe_sriov_packet_type type, loff_t offset, size_t size) +{ + data->version =3D XE_SRIOV_PACKET_SUPPORTED_VERSION; + data->type =3D type; + data->tile =3D tile_id; + data->gt =3D gt_id; + data->offset =3D offset; + data->size =3D size; + data->remaining =3D size; + + return mig_pkt_init(data); +} + +/** + * xe_sriov_packet_init_from_hdr() - Initialize migration packet backing s= torage based on header. + * @data: the &xe_sriov_packet + * + * Header data is expected to be filled prior to calling this function. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_packet_init_from_hdr(struct xe_sriov_packet *data) +{ + if (data->version !=3D XE_SRIOV_PACKET_SUPPORTED_VERSION) + return -EINVAL; + + data->remaining =3D data->size; + + return mig_pkt_init(data); +} diff --git a/drivers/gpu/drm/xe/xe_sriov_packet.h b/drivers/gpu/drm/xe/xe_s= riov_packet.h new file mode 100644 index 0000000000000..2c5a49897d763 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_sriov_packet.h @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright =C2=A9 2025 Intel Corporation + */ + +#ifndef _XE_SRIOV_PACKET_H_ +#define _XE_SRIOV_PACKET_H_ + +#include + +struct xe_device; + +enum xe_sriov_packet_type { + /* Skipping 0 to catch uninitialized data */ + XE_SRIOV_PACKET_TYPE_DESCRIPTOR =3D 1, + XE_SRIOV_PACKET_TYPE_TRAILER, + XE_SRIOV_PACKET_TYPE_GGTT, + XE_SRIOV_PACKET_TYPE_MMIO, + XE_SRIOV_PACKET_TYPE_GUC, + XE_SRIOV_PACKET_TYPE_VRAM, +}; + +struct xe_sriov_packet *xe_sriov_packet_alloc(struct xe_device *xe); +void xe_sriov_packet_free(struct xe_sriov_packet *data); + +int xe_sriov_packet_init(struct xe_sriov_packet *data, u8 tile_id, u8 gt_i= d, + enum xe_sriov_packet_type, loff_t offset, size_t size); +int xe_sriov_packet_init_from_hdr(struct xe_sriov_packet *data); + +#endif --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 175EA330315; Wed, 5 Nov 2025 15:11:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.9 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355496; cv=fail; b=aWisGBV50HYIKkju6+OraDL6jzWdJ9qxCBbYQPWzXOY9MQEW+QhsXEr8EiZiIzVZ/+8cmLFBdR/vGFhREYXiHlukl56d7vg1KHdEgLXsKiy5Hb+jY7iWWirJKO+uFwaW3boZHCiwL0/8Lcg5GwRV9iaMnJpCuBDTlzRFCWOXZT4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355496; c=relaxed/simple; bh=efv6c3U2961QKtNlUYk58zacG89RCML1gi2ehUucSno=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=q9eJ2uXpbFVia+2X7jRFF6TpARkUL+PK8nxhTliBYOatsaDOIU/zGouHdLg1EeNZ6GumCMiYEG1vRj9ayN3BJZmHZHliW6SnTs+PEzbC/R2Nt1mi4FJy3GvNBX0NgpFrurF6ZCTTlec+kC7B2AAVyXfuBkrWfM6OIAJmcxtW1VM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=JCkWIKZB; arc=fail smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="JCkWIKZB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355490; x=1793891490; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=efv6c3U2961QKtNlUYk58zacG89RCML1gi2ehUucSno=; b=JCkWIKZBS8SSJF2gEswmNmczN6uDW7kxXYqP4Q0DAYIdMzYnrWTksiAO tm4J+ffvfAr0UtzUGafJNgdmJB1kfbxCgXPdib3uR3uEnVJ1BvmKGAokB onkckZTF3eR2t/e0S9FjbMje1a/XSflCh56ccUlkQ8T4sndSNabJsOji/ XdQcML2ICY0XleIo9kvddBJQwAq/b440edQFN0PgHHqBLEtvKAYaIu5dc cMpr6v62fv6bmfsUZxWhIWkPDV49jWh4o0vxw03UGf/U+BKXeTVjIemhn VBLBi3r7emOHXk7xC3rqziioGl8N48ZxnjgCTz3U/D/8T8x15SNsk+KFB Q==; X-CSE-ConnectionGUID: rGhCsplWT76xTnYwI5ElWg== X-CSE-MsgGUID: liLwkgyuSnGnUfnAcReZfg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="75153059" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="75153059" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:28 -0800 X-CSE-ConnectionGUID: lQmK/gCrTpm1yA+KpCvNOw== X-CSE-MsgGUID: /4flGeIJTdaowUOgV4Q46A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="224725505" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:29 -0800 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:28 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:28 -0800 Received: from MW6PR02CU001.outbound.protection.outlook.com (52.101.48.65) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:27 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MlKPEq39pTNvTXSoFiKtPfFGjVjygDd5GRP7xuOzQDtbEF6tnnar28fPQO8nmw8pnHI3XunSHnpphnRIBkG+arBnI7Q/4ClPLlcqGEvQpt7PDBnDKj2Efl7L84zApbhbD3C8dsXpvZuzOk92cz7/NnrYljjvf1nWmqM0U9c4Kxmle3bM2COQH5R5D3ODR4HHicNvw+ONSl/doVqbMD8QTw39U2gIYvH1zDm+hJJfgqsqnGEyGLC7xqJXKrWjmvqIeivvnkVV7KBg7e01wGb35vVVSPSukdjlJa9Mqng2nluK09WeIuoOD3Gl04jg3ENsQw71y1Hb7OsqdWE5T6hj3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Lfra+tlBYvD7blmmCXlM90PiYC1zAF+FD2lRtBrxSYs=; b=EJ/cYgxnI2LdlJ2fnG4EckE1el43y8zSfgmc4lcFpI6nq4fykfXkzRt5YmqcJ3gTHAd7ZBPOJFuh7JGsdXaBpPXm9hr8QPmEk03/PuNY00y4LNaRzjr3Btwa9FszR3h8A4QDUYoXCQOeAMK/L7h2A1tQVlFy47O+BdMjvouDTcE5HvXKaXRG675AFLG2b9aoKcPoGzVjtmW2niHg+juflmiSsbTbCOpc/VDxMBzA7KSPvdx7+bGSskTapKeN0Ohx3H9qaLltA9FL6FtvnvS0dqtR+/WpyUxRSDkd8kwgfmynupFktKfweqWxydQJymnQlx9Ppv6zxBMXxf24A+iy4w== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:19 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:19 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 07/28] drm/xe/pf: Add support for encap/decap of bitstream to/from packet Date: Wed, 5 Nov 2025 16:10:05 +0100 Message-ID: <20251105151027.540712-8-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0171.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:66::14) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: 289a6d0c-f3a8-4a89-1a8f-08de1c7d92e8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?K2FDeHpBVkU5TG1wblFLU0E0ZS9GQ05ldGprOERWY1FId0JyMzEwWGhEWGlt?= =?utf-8?B?ZWswakpSREkvcjlRdGtmYWd4TmNNQUVCeUcvQUpKRDR5TjI4L2N0WjNuOXJ2?= =?utf-8?B?bFFDbUgrdEZFbkwxMGo4aGk4dGJHUVdleDVUaDh3bWhsUGcwbldjTmJVMVBR?= =?utf-8?B?U0pkbHl6cWxoT3BVUjArb3cxOTdGY2xPUHJ6aEN6eDhNUzZReFprU2tJN21Y?= =?utf-8?B?Q0RyT2VFenVvU29mZVhENXp2TWJvVXpKNkFNMURwMzE2eUM4MG1EaTcvU2c4?= =?utf-8?B?b3N5ZytoZm9uN3NyYVlYcS9jV2wrZW1DZDZnTlBOck1SS09DbXpkdGg5RFJN?= =?utf-8?B?cE9GaEU3eXdLVTlzYTRGY3ZwMDNZcHhsUFlIeGJBOEtlQklYVFFBdUNnamp2?= =?utf-8?B?clFZMWx5WXA2WFZjU0JiUWlNQUZ4RDhabW5OdktJeXlVV0JrNE9PL3VQUXpS?= =?utf-8?B?UEY2bWJvWVZBKzNKbTVXNjBNS1lQM2ozUzlqWTVobUdkVDVHVVNUUElnZEZz?= =?utf-8?B?N0xOb0o5VFlqSUx1N1ZGSXVpTEkrQWxzaHQ0Nm45dHB4RW5jUzNPTExkSzlK?= =?utf-8?B?ODRmdDJtZHlYRnVleWVoMGJ1cEdiamlVYWdraVN3eld5dHg5cmtZQ05wcWNT?= =?utf-8?B?NTlsUlFVU0tIcStQRHFSRmdQZTdNYTdubll3OVFKQVEwL09Pa3FtVkJleDZM?= =?utf-8?B?bGRNTjVDZHhGRVhwb0xLcVB5OUpsRkdVbEVEZkQ0YWJ2Tk05RjBwMldGeURP?= =?utf-8?B?aWJRWVQyYVh0MXZpajlndCs4bmFlNW84MWZoY1JTN3IrZGZpaDNURk1xWjNv?= =?utf-8?B?SnE2UFN2TkpEeERwcnV1dHoxVlIyN2Nuc1VDZ291dy96UlVmckZBczZzaVgz?= =?utf-8?B?cG1kcjlqTUw2alpLYTg1MVhxZTZTcXIvdjdhRll6b0M3ZGJydTNteDRQS0gz?= =?utf-8?B?aUY5QTlGcXFBMFVuTTlYR29rT3hjeFcxbUxqVnBxTUtqaU5HOTZQbWtPV1lD?= =?utf-8?B?TWxPUktwQXlkNUIxSDdLcDJ2KythYzdlbmVTMGl3MVJMYXB4ZnpGSHo0eDRM?= =?utf-8?B?bWp4RmRhaTY1dkplOEZNeWxGYm5OUjFoTFlDRUxjL3ZTU2d0N1VoL01tNWNl?= =?utf-8?B?cUpleEhyNWpHclZBdmhmRVNuTDNNUmlvVDBtUWlLUVJNYUQyMWYxRUlPUWJI?= =?utf-8?B?RG9WTHh4RDNnbGM2b28rb0hjMHR4UXBYMmJscmU2a3BGYVN5KzVYWGVVOTB5?= =?utf-8?B?Wm5NdW5uSHpJTE1LbVRsU0c5V05MTThNSXlwdzlNVXJwQUZVOXVFYTVCRWpW?= =?utf-8?B?aTJHdEE5UVA0bmpGYzNzbEwyWTlWTXRvSHBzcjRiNEdHdjl5T1Y0cUdHOCs4?= =?utf-8?B?bjdiVzVWVk84TkZmZFFNd3oyRWN6OERha2N5NFRCLzhwVWsvZTlLMmJ1UVN5?= =?utf-8?B?a2FkSXB3MVZ1RVlzUnpuMVVJZ2YzYi9pU1NIb2ZyR1hCNW5KOTNvc0E2aGZQ?= =?utf-8?B?WWVQdk9kR0xCM0FHNUkvVFFhZ1BPOU9oY3ZHSHZOcjllS294cGVJUHprd2RJ?= =?utf-8?B?Z2NSajZCNmQ2M0RjME1iYlZUY2ltRFU2M2RRcjJQU2VqVXZQSW94cmxwRExY?= =?utf-8?B?bUxIODBTa3dBdmtmTTNidFNGb0pzOTVtVDBuNkR4NjNtQkNsYWZ6c0VobUF0?= =?utf-8?B?WkpWbFB4UUVKRldMc0Y1S2NIY3hGc2hsbkVXREIyMmttUVd3dTYydGsxZjZL?= =?utf-8?B?QkFLbE5KWGNza3BNTnB4T0QzSFRNb1hIdFV4TVpSWTkzbWRxdG5KdzBtUGRP?= =?utf-8?B?R2l0YUJaYW5CWU9qS21oaVFkVkxUMTBJUmRaSy9id0JkcmVTTSt6STV0RERH?= =?utf-8?B?NVJNb3JNRVAxR3Z4aGoySmZVT0k4ZDBwa0VSdWJNYjRCcUkwZzFaczAwOVdt?= =?utf-8?B?bUVTZjlGTC9RbjBxbVVRUjlWRTdXUXJsdkQyV0lMZVpQeW9UU1cyTHdCVVJH?= =?utf-8?Q?u8JZtAiECOOlcQciN23Zz0GgkQ4zqg=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cEd2bUlJYWpzU2t3bFk0UTRvaEQrRmM4c0wzZXB3YjJWcWQvK3FOdHBOcW1E?= =?utf-8?B?dU1nSm85amU4TlM5aWlSY213R2d4cEgyTW0wWXBXRWM4V2k3SmIzcHg4V05R?= =?utf-8?B?eXI4U3I2d2pVeTF4dERTRHZ6a3QzcDc0ZTJ0TzF6UldBUWpmd29XcVJDanZC?= =?utf-8?B?MXhub3Y2QyszWVRsS1JFRGZid3pwemxUYzU4c3RaVG5UbDF6VXl3cUxLdXZR?= =?utf-8?B?UG1IS0RBM29TN2pvOFV2Qkg1ZXlLd1Y2VU9uOFJYZmpaSTJLZkkzS3oranll?= =?utf-8?B?MTBHMzZIY2sxT29KdWZ1Zk1oRmF4a3lYU1BuKy9yVmliZGpJK2xGYUY5dCs3?= =?utf-8?B?dDNJYlA0cW1FUkxQODJVcGUwN040bnB2QmRVTUZSTExydFEzK2djNUF4eEUz?= =?utf-8?B?RXE5bXgwTDVkRmFGTk9oZ1NqekZaSFRxMDlCMkJ4MXhObHBuNVFOS1doWlll?= =?utf-8?B?UzNYRTlMTWg4eVB3SXNHQUdpSmxUTXBSVE5EVzFmNkthVTRxZFZ6U2xwUWNj?= =?utf-8?B?dG1mOFE5eHh1RWgxNFhEeTAvbE5raEx2WVhoTTlLTFFWWkdGQVoybGhYZzBo?= =?utf-8?B?cWNPTE82Sk1IZFdnRzJyZ0FpeEl5ekdYMjExaWpTSmFSU0dJOXpKMnk2UGxG?= =?utf-8?B?dGxMWDlnakJMU1dVWkRSUHd6U1d2Y09IYVNoaEZ2UXgzdUR2QWc2c01wNEEx?= =?utf-8?B?WHFYOUovdnVHMFV6SlJveFVmaVo4dTdYOHBwTUdXTGdUazdSTWtPcW43TStS?= =?utf-8?B?UVdOSFBZUmc1ODUyai9OOU5hQkdVRlFIOGxtZ3dULzRLUGJHLzJBS0lBdlgy?= =?utf-8?B?VnhFU3lxS1FWanJpNE9aTEh0NDN6em9abGE4OE5TMlB3aHp6NGdoQzZmU25F?= =?utf-8?B?aFo4SlhFc0gyaWhybFd1aUdDeUF3YXQ3LzlHWHRjL1U0akl4d25aRjU4djcw?= =?utf-8?B?QWxyM0ZpUDVzZFFmOXAvRDBLdjY2U2doYndZWVlZdXBqZnl5MUo4ZXIvNUJn?= =?utf-8?B?TVpPRk5henYwM25UU3htd0JGMk50M0R6akh5bnZ5Z2g1b3hhRFI3K3MySThl?= =?utf-8?B?NVdFMHV3a0dTNlluTEVhMXFSWmJqN1VId0FySkxlSDRqNzJRbzYySnZlNmFQ?= =?utf-8?B?eEpPTVhQOWVNbG1aZVpMQWFwNEFJSW5FSlZQeCtGVDBBQTZnZ3BIYkRKaEUw?= =?utf-8?B?SDZJUWxoVG8rS2NSL294QlFwODZBb0VONHh4ckx4YXEwSGliNlYrN3YzVWc5?= =?utf-8?B?OWhJRUF1OVRhbFN5YTg5MTEzTzFBM0ZSRlo0T0ttR1gvOWNjb3FPTzlHNTE1?= =?utf-8?B?V1lsR2hJNWt3cUtrMjJVSi9DYlpSZ1ZwcWxNTjNCeWdSMUtDeVE5RDh4MXdu?= =?utf-8?B?aUJvY1JINmpzbG9XOWFxclh3QWxxUWJxaTlRTkdEazBCclZiYnRuWVcrZWxM?= =?utf-8?B?Uk5JU25rUk1TZmdnbklHUFFIR1l1WTdkSUUwd05aSU1DVUJYUU1MNTAvaEhy?= =?utf-8?B?RHI5ZjFkNDlFTmFLN0g2ZUFGZy9nWDZLUEdySFpBWnVPTHNkSHRjQVM0ZVRU?= =?utf-8?B?WVhSU25WWkpmN1F4cEJzSjNCM3R1Q0pVRERHdVFYL3hFTnNERlVhb3p6b1pP?= =?utf-8?B?dm1JUVA1MUMxZmp1WVZSbmhJQnUzRGs4bE11Qm1ybjA3ZUk1dDRqQnVCUmpO?= =?utf-8?B?Z25SeXNuNU5iUDZDTHZqK3YwNVVySVcvUERINmhnTE93NnR4MFNmOGtIVXJx?= =?utf-8?B?UEFEZHFxNVhyLzZUeGVxMUszL3lJMGdKdkVmNkZlN3dPUEpKZ05KRVdLU085?= =?utf-8?B?c0ZRbERDQmk5akpwVGNuLy9WMm5ZRDREUEpJNWhMdlFtRXlVZW9JZGdhT2l1?= =?utf-8?B?Q1QzVE1ob2lOd1g5SFFpZzVKaTQ3aTBFQzJ1UmNhNGdTbjBqQzU3NmY2T2xT?= =?utf-8?B?N3pNL3kwN2hqTlExdDhEVDd3LzlxR2k2ZHh2Z1R5TWRYTHRpaGpGUGNJbk01?= =?utf-8?B?NXZMWTlJc1dWYnJuRzRERTVNQmVsdUpaMktNZnhRdEFMejd1WmlpYm9maGp6?= =?utf-8?B?YVhGdERPOTBxNjR2NDFNazhueitmczVwSFV5Z3ZLZXRtanVsd0F0NFNUMC9u?= =?utf-8?B?UDVtMlJlNXhpRkM3dCtJcFE0Q0wyWnBCSVpZRm1POGR4Yi9qZTZuTUVNQzFD?= =?utf-8?B?Snc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 289a6d0c-f3a8-4a89-1a8f-08de1c7d92e8 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:19.6606 (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: 9WW+ZKwVjBu2sp3ZEW05LqVdvTpdZ1dxpdzAKXH08dLOroeTyhElXpzM/EJH6f84puSvmsVtYobS/tC9ggwnLO0b2EUQMCxcDKbBi50oNPs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com Add debugfs handlers for migration state and handle bitstream .read()/.write() to convert from bitstream to/from migration data packets. As descriptor/trailer are handled at this layer - add handling for both save and restore side. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_sriov_packet.c | 291 ++++++++++++++++++ drivers/gpu/drm/xe/xe_sriov_packet.h | 6 + drivers/gpu/drm/xe/xe_sriov_pf_control.c | 5 + drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c | 35 +++ drivers/gpu/drm/xe/xe_sriov_pf_migration.c | 121 ++++++++ drivers/gpu/drm/xe/xe_sriov_pf_migration.h | 5 + .../gpu/drm/xe/xe_sriov_pf_migration_types.h | 9 + 7 files changed, 472 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_sriov_packet.c b/drivers/gpu/drm/xe/xe_s= riov_packet.c index 2cdcfb2073d00..220c36c52e99b 100644 --- a/drivers/gpu/drm/xe/xe_sriov_packet.c +++ b/drivers/gpu/drm/xe/xe_sriov_packet.c @@ -6,6 +6,45 @@ #include "xe_bo.h" #include "xe_device.h" #include "xe_sriov_packet.h" +#include "xe_sriov_pf_helpers.h" +#include "xe_sriov_pf_migration.h" +#include "xe_sriov_printk.h" + +static struct mutex *pf_migration_mutex(struct xe_device *xe, unsigned int= vfid) +{ + xe_assert(xe, IS_SRIOV_PF(xe)); + xe_assert(xe, vfid <=3D xe_sriov_pf_get_totalvfs(xe)); + + return &xe->sriov.pf.vfs[vfid].migration.lock; +} + +static struct xe_sriov_packet **pf_pick_pending(struct xe_device *xe, unsi= gned int vfid) +{ + xe_assert(xe, IS_SRIOV_PF(xe)); + xe_assert(xe, vfid <=3D xe_sriov_pf_get_totalvfs(xe)); + lockdep_assert_held(pf_migration_mutex(xe, vfid)); + + return &xe->sriov.pf.vfs[vfid].migration.pending; +} + +static struct xe_sriov_packet ** +pf_pick_descriptor(struct xe_device *xe, unsigned int vfid) +{ + xe_assert(xe, IS_SRIOV_PF(xe)); + xe_assert(xe, vfid <=3D xe_sriov_pf_get_totalvfs(xe)); + lockdep_assert_held(pf_migration_mutex(xe, vfid)); + + return &xe->sriov.pf.vfs[vfid].migration.descriptor; +} + +static struct xe_sriov_packet **pf_pick_trailer(struct xe_device *xe, unsi= gned int vfid) +{ + xe_assert(xe, IS_SRIOV_PF(xe)); + xe_assert(xe, vfid <=3D xe_sriov_pf_get_totalvfs(xe)); + lockdep_assert_held(pf_migration_mutex(xe, vfid)); + + return &xe->sriov.pf.vfs[vfid].migration.trailer; +} =20 static bool pkt_needs_bo(struct xe_sriov_packet *data) { @@ -127,3 +166,255 @@ int xe_sriov_packet_init_from_hdr(struct xe_sriov_pac= ket *data) =20 return mig_pkt_init(data); } + +static ssize_t vf_mig_hdr_read(struct xe_sriov_packet *data, + char __user *buf, size_t len) +{ + loff_t offset =3D sizeof(data->hdr) - data->hdr_remaining; + + if (!data->hdr_remaining) + return -EINVAL; + + if (len > data->hdr_remaining) + len =3D data->hdr_remaining; + + if (copy_to_user(buf, (void *)&data->hdr + offset, len)) + return -EFAULT; + + data->hdr_remaining -=3D len; + + return len; +} + +static ssize_t vf_mig_data_read(struct xe_sriov_packet *data, + char __user *buf, size_t len) +{ + if (len > data->remaining) + len =3D data->remaining; + + if (copy_to_user(buf, data->vaddr + (data->size - data->remaining), len)) + return -EFAULT; + + data->remaining -=3D len; + + return len; +} + +static ssize_t __vf_mig_packet_read_single(struct xe_sriov_packet **data, + unsigned int vfid, char __user *buf, size_t len) +{ + ssize_t copied =3D 0; + + if ((*data)->hdr_remaining) + copied =3D vf_mig_hdr_read(*data, buf, len); + else + copied =3D vf_mig_data_read(*data, buf, len); + + if ((*data)->remaining =3D=3D 0 && (*data)->hdr_remaining =3D=3D 0) { + xe_sriov_packet_free(*data); + *data =3D NULL; + } + + return copied; +} + +static struct xe_sriov_packet **vf_mig_pick_packet(struct xe_device *xe, + unsigned int vfid) +{ + struct xe_sriov_packet **data; + + data =3D pf_pick_descriptor(xe, vfid); + if (*data) + return data; + + data =3D pf_pick_pending(xe, vfid); + if (!*data) + *data =3D xe_sriov_pf_migration_save_consume(xe, vfid); + if (*data) + return data; + + data =3D pf_pick_trailer(xe, vfid); + if (*data) + return data; + + return ERR_PTR(-ENODATA); +} + +/** + * xe_sriov_packet_read_single() - Read migration data from a single packe= t. + * @xe: the &xe_device + * @vfid: the VF identifier + * @buf: start address of userspace buffer + * @len: requested read size from userspace + * + * Return: number of bytes that has been successfully read, + * 0 if no more migration data is available, + * -errno on failure. + */ +ssize_t xe_sriov_packet_read_single(struct xe_device *xe, unsigned int vfi= d, + char __user *buf, size_t len) +{ + struct xe_sriov_packet **data =3D vf_mig_pick_packet(xe, vfid); + + if (IS_ERR(data)) + return PTR_ERR(data); + + return __vf_mig_packet_read_single(data, vfid, buf, len); +} + +static ssize_t vf_mig_hdr_write(struct xe_sriov_packet *data, + const char __user *buf, size_t len) +{ + loff_t offset =3D sizeof(data->hdr) - data->hdr_remaining; + int ret; + + if (len > data->hdr_remaining) + len =3D data->hdr_remaining; + + if (copy_from_user((void *)&data->hdr + offset, buf, len)) + return -EFAULT; + + data->hdr_remaining -=3D len; + + if (!data->hdr_remaining) { + ret =3D xe_sriov_packet_init_from_hdr(data); + if (ret) + return ret; + } + + return len; +} + +static ssize_t vf_mig_data_write(struct xe_sriov_packet *data, + const char __user *buf, size_t len) +{ + if (len > data->remaining) + len =3D data->remaining; + + if (copy_from_user(data->vaddr + (data->size - data->remaining), buf, len= )) + return -EFAULT; + + data->remaining -=3D len; + + return len; +} + +/** + * xe_sriov_packet_write_single() - Write migration data to a single packe= t. + * @xe: the &xe_device + * @vfid: the VF identifier + * @buf: start address of userspace buffer + * @len: requested write size from userspace + * + * Return: number of bytes that has been successfully written, + * -errno on failure. + */ +ssize_t xe_sriov_packet_write_single(struct xe_device *xe, unsigned int vf= id, + const char __user *buf, size_t len) +{ + struct xe_sriov_packet **data =3D pf_pick_pending(xe, vfid); + int ret; + ssize_t copied; + + if (IS_ERR_OR_NULL(*data)) { + *data =3D xe_sriov_packet_alloc(xe); + if (!*data) + return -ENOMEM; + } + + if ((*data)->hdr_remaining) + copied =3D vf_mig_hdr_write(*data, buf, len); + else + copied =3D vf_mig_data_write(*data, buf, len); + + if ((*data)->hdr_remaining =3D=3D 0 && (*data)->remaining =3D=3D 0) { + ret =3D xe_sriov_pf_migration_restore_produce(xe, vfid, *data); + if (ret) { + xe_sriov_packet_free(*data); + return ret; + } + + *data =3D NULL; + } + + return copied; +} + +#define MIGRATION_DESCRIPTOR_DWORDS 0 +static size_t pf_descriptor_init(struct xe_device *xe, unsigned int vfid) +{ + struct xe_sriov_packet **desc =3D pf_pick_descriptor(xe, vfid); + struct xe_sriov_packet *data; + int ret; + + data =3D xe_sriov_packet_alloc(xe); + if (!data) + return -ENOMEM; + + ret =3D xe_sriov_packet_init(data, 0, 0, XE_SRIOV_PACKET_TYPE_DESCRIPTOR, + 0, MIGRATION_DESCRIPTOR_DWORDS * sizeof(u32)); + if (ret) { + xe_sriov_packet_free(data); + return ret; + } + + *desc =3D data; + + return 0; +} + +static void pf_pending_init(struct xe_device *xe, unsigned int vfid) +{ + struct xe_sriov_packet **data =3D pf_pick_pending(xe, vfid); + + *data =3D NULL; +} + +#define MIGRATION_TRAILER_SIZE 0 +static int pf_trailer_init(struct xe_device *xe, unsigned int vfid) +{ + struct xe_sriov_packet **trailer =3D pf_pick_trailer(xe, vfid); + struct xe_sriov_packet *data; + int ret; + + data =3D xe_sriov_packet_alloc(xe); + if (!data) + return -ENOMEM; + + ret =3D xe_sriov_packet_init(data, 0, 0, XE_SRIOV_PACKET_TYPE_TRAILER, + 0, MIGRATION_TRAILER_SIZE); + if (ret) { + xe_sriov_packet_free(data); + return ret; + } + + *trailer =3D data; + + return 0; +} + +/** + * xe_sriov_packet_save_init() - Initialize the pending save migration pac= kets. + * @xe: the &xe_device + * @vfid: the VF identifier + * + * Return: 0 on success, -errno on failure. + */ +int xe_sriov_packet_save_init(struct xe_device *xe, unsigned int vfid) +{ + int ret; + + scoped_cond_guard(mutex_intr, return -EINTR, pf_migration_mutex(xe, vfid)= ) { + ret =3D pf_descriptor_init(xe, vfid); + if (ret) + return ret; + + ret =3D pf_trailer_init(xe, vfid); + if (ret) + return ret; + + pf_pending_init(xe, vfid); + } + + return 0; +} diff --git a/drivers/gpu/drm/xe/xe_sriov_packet.h b/drivers/gpu/drm/xe/xe_s= riov_packet.h index 2c5a49897d763..03ab8edd99374 100644 --- a/drivers/gpu/drm/xe/xe_sriov_packet.h +++ b/drivers/gpu/drm/xe/xe_sriov_packet.h @@ -27,4 +27,10 @@ int xe_sriov_packet_init(struct xe_sriov_packet *data, u= 8 tile_id, u8 gt_id, enum xe_sriov_packet_type, loff_t offset, size_t size); int xe_sriov_packet_init_from_hdr(struct xe_sriov_packet *data); =20 +ssize_t xe_sriov_packet_read_single(struct xe_device *xe, unsigned int vfi= d, + char __user *buf, size_t len); +ssize_t xe_sriov_packet_write_single(struct xe_device *xe, unsigned int vf= id, + const char __user *buf, size_t len); +int xe_sriov_packet_save_init(struct xe_device *xe, unsigned int vfid); + #endif diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_control.c b/drivers/gpu/drm/xe/= xe_sriov_pf_control.c index 8d8a01faf5291..87205f0505ad0 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_control.c @@ -5,6 +5,7 @@ =20 #include "xe_device.h" #include "xe_gt_sriov_pf_control.h" +#include "xe_sriov_packet.h" #include "xe_sriov_pf_control.h" #include "xe_sriov_printk.h" =20 @@ -165,6 +166,10 @@ int xe_sriov_pf_control_trigger_save_vf(struct xe_devi= ce *xe, unsigned int vfid) unsigned int id; int ret; =20 + ret =3D xe_sriov_packet_save_init(xe, vfid); + if (ret) + return ret; + for_each_gt(gt, xe, id) { ret =3D xe_gt_sriov_pf_control_trigger_save_vf(gt, vfid); if (ret) diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c b/drivers/gpu/drm/xe/= xe_sriov_pf_debugfs.c index e0e6340c49106..4ca86ff4b7dae 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c @@ -13,6 +13,7 @@ #include "xe_sriov_pf_control.h" #include "xe_sriov_pf_debugfs.h" #include "xe_sriov_pf_helpers.h" +#include "xe_sriov_pf_migration.h" #include "xe_sriov_pf_provision.h" #include "xe_sriov_pf_service.h" #include "xe_sriov_printk.h" @@ -132,6 +133,7 @@ static void pf_populate_pf(struct xe_device *xe, struct= dentry *pfdent) * /sys/kernel/debug/dri/BDF/ * =E2=94=9C=E2=94=80=E2=94=80 sriov * =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 vf1 + * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 migration_data * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 pause * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 reset * =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 resume @@ -220,6 +222,38 @@ DEFINE_VF_CONTROL_ATTRIBUTE(reset_vf); DEFINE_VF_CONTROL_ATTRIBUTE_RW(save_vf); DEFINE_VF_CONTROL_ATTRIBUTE_RW(restore_vf); =20 +static ssize_t data_write(struct file *file, const char __user *buf, size_= t count, loff_t *pos) +{ + struct dentry *dent =3D file_dentry(file)->d_parent; + struct xe_device *xe =3D extract_xe(dent); + unsigned int vfid =3D extract_vfid(dent); + + if (*pos) + return -ESPIPE; + + return xe_sriov_pf_migration_write(xe, vfid, buf, count); +} + +static ssize_t data_read(struct file *file, char __user *buf, size_t count= , loff_t *ppos) +{ + struct dentry *dent =3D file_dentry(file)->d_parent; + struct xe_device *xe =3D extract_xe(dent); + unsigned int vfid =3D extract_vfid(dent); + + if (*ppos) + return -ESPIPE; + + return xe_sriov_pf_migration_read(xe, vfid, buf, count); +} + +static const struct file_operations data_vf_fops =3D { + .owner =3D THIS_MODULE, + .open =3D simple_open, + .write =3D data_write, + .read =3D data_read, + .llseek =3D default_llseek, +}; + static void pf_populate_vf(struct xe_device *xe, struct dentry *vfdent) { debugfs_create_file("pause", 0200, vfdent, xe, &pause_vf_fops); @@ -228,6 +262,7 @@ static void pf_populate_vf(struct xe_device *xe, struct= dentry *vfdent) debugfs_create_file("reset", 0200, vfdent, xe, &reset_vf_fops); debugfs_create_file("save", 0600, vfdent, xe, &save_vf_fops); debugfs_create_file("restore", 0600, vfdent, xe, &restore_vf_fops); + debugfs_create_file("migration_data", 0600, vfdent, xe, &data_vf_fops); } =20 static void pf_populate_with_tiles(struct xe_device *xe, struct dentry *de= nt, unsigned int vfid) diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.c index ed44eda9418cc..4e0ca2fd7fd77 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.c @@ -10,6 +10,7 @@ #include "xe_gt_sriov_pf_migration.h" #include "xe_pm.h" #include "xe_sriov.h" +#include "xe_sriov_packet.h" #include "xe_sriov_pf_helpers.h" #include "xe_sriov_pf_migration.h" #include "xe_sriov_printk.h" @@ -53,6 +54,15 @@ static bool pf_check_migration_support(struct xe_device = *xe) return IS_ENABLED(CONFIG_DRM_XE_DEBUG); } =20 +static void pf_migration_cleanup(void *arg) +{ + struct xe_sriov_migration_state *migration =3D arg; + + xe_sriov_packet_free(migration->pending); + xe_sriov_packet_free(migration->trailer); + xe_sriov_packet_free(migration->descriptor); +} + /** * xe_sriov_pf_migration_init() - Initialize support for SR-IOV VF migrati= on. * @xe: the &xe_device @@ -62,6 +72,7 @@ static bool pf_check_migration_support(struct xe_device *= xe) int xe_sriov_pf_migration_init(struct xe_device *xe) { unsigned int n, totalvfs; + int err; =20 xe_assert(xe, IS_SRIOV_PF(xe)); =20 @@ -73,7 +84,15 @@ int xe_sriov_pf_migration_init(struct xe_device *xe) for (n =3D 1; n <=3D totalvfs; n++) { struct xe_sriov_migration_state *migration =3D pf_pick_migration(xe, n); =20 + err =3D drmm_mutex_init(&xe->drm, &migration->lock); + if (err) + return err; + init_waitqueue_head(&migration->wq); + + err =3D devm_add_action_or_reset(xe->drm.dev, pf_migration_cleanup, migr= ation); + if (err) + return err; } =20 return 0; @@ -154,6 +173,36 @@ xe_sriov_pf_migration_save_consume(struct xe_device *x= e, unsigned int vfid) return data; } =20 +static int pf_handle_descriptor(struct xe_device *xe, unsigned int vfid, + struct xe_sriov_packet *data) +{ + if (data->tile !=3D 0 || data->gt !=3D 0) + return -EINVAL; + + xe_sriov_packet_free(data); + + return 0; +} + +static int pf_handle_trailer(struct xe_device *xe, unsigned int vfid, + struct xe_sriov_packet *data) +{ + struct xe_gt *gt; + u8 gt_id; + + if (data->tile !=3D 0 || data->gt !=3D 0) + return -EINVAL; + if (data->offset !=3D 0 || data->size !=3D 0 || data->buff || data->bo) + return -EINVAL; + + xe_sriov_packet_free(data); + + for_each_gt(gt, xe, gt_id) + xe_gt_sriov_pf_control_restore_data_done(gt, vfid); + + return 0; +} + /** * xe_sriov_pf_migration_restore_produce() - Produce a VF migration data p= acket to the device. * @xe: the &xe_device @@ -173,6 +222,11 @@ int xe_sriov_pf_migration_restore_produce(struct xe_de= vice *xe, unsigned int vfi =20 xe_assert(xe, IS_SRIOV_PF(xe)); =20 + if (data->type =3D=3D XE_SRIOV_PACKET_TYPE_DESCRIPTOR) + return pf_handle_descriptor(xe, vfid, data); + if (data->type =3D=3D XE_SRIOV_PACKET_TYPE_TRAILER) + return pf_handle_trailer(xe, vfid, data); + gt =3D xe_device_get_gt(xe, data->gt); if (!gt || data->tile !=3D gt->tile->id) { xe_sriov_err_ratelimited(xe, "VF%d Invalid GT - tile:%u, GT:%u\n", @@ -182,3 +236,70 @@ int xe_sriov_pf_migration_restore_produce(struct xe_de= vice *xe, unsigned int vfi =20 return xe_gt_sriov_pf_migration_restore_produce(gt, vfid, data); } + +/** + * xe_sriov_pf_migration_read() - Read migration data from the device. + * @xe: the &xe_device + * @vfid: the VF identifier + * @buf: start address of userspace buffer + * @len: requested read size from userspace + * + * Return: number of bytes that has been successfully read, + * 0 if no more migration data is available, + * -errno on failure. + */ +ssize_t xe_sriov_pf_migration_read(struct xe_device *xe, unsigned int vfid, + char __user *buf, size_t len) +{ + struct xe_sriov_migration_state *migration =3D pf_pick_migration(xe, vfid= ); + ssize_t ret, consumed =3D 0; + + xe_assert(xe, IS_SRIOV_PF(xe)); + + scoped_cond_guard(mutex_intr, return -EINTR, &migration->lock) { + while (consumed < len) { + ret =3D xe_sriov_packet_read_single(xe, vfid, buf, len - consumed); + if (ret =3D=3D -ENODATA) + break; + if (ret < 0) + return ret; + + consumed +=3D ret; + buf +=3D ret; + } + } + + return consumed; +} + +/** + * xe_sriov_pf_migration_write() - Write migration data to the device. + * @xe: the &xe_device + * @vfid: the VF identifier + * @buf: start address of userspace buffer + * @len: requested write size from userspace + * + * Return: number of bytes that has been successfully written, + * -errno on failure. + */ +ssize_t xe_sriov_pf_migration_write(struct xe_device *xe, unsigned int vfi= d, + const char __user *buf, size_t len) +{ + struct xe_sriov_migration_state *migration =3D pf_pick_migration(xe, vfid= ); + ssize_t ret, produced =3D 0; + + xe_assert(xe, IS_SRIOV_PF(xe)); + + scoped_cond_guard(mutex_intr, return -EINTR, &migration->lock) { + while (produced < len) { + ret =3D xe_sriov_packet_write_single(xe, vfid, buf, len - produced); + if (ret < 0) + return ret; + + produced +=3D ret; + buf +=3D ret; + } + } + + return produced; +} diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.h b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.h index d48ff2ecc2308..dbf8094900df8 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.h @@ -20,4 +20,9 @@ struct xe_sriov_packet * xe_sriov_pf_migration_save_consume(struct xe_device *xe, unsigned int vfid= ); wait_queue_head_t *xe_sriov_pf_migration_waitqueue(struct xe_device *xe, u= nsigned int vfid); =20 +ssize_t xe_sriov_pf_migration_read(struct xe_device *xe, unsigned int vfid, + char __user *buf, size_t len); +ssize_t xe_sriov_pf_migration_write(struct xe_device *xe, unsigned int vfi= d, + const char __user *buf, size_t len); + #endif diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h b/drivers/gpu= /drm/xe/xe_sriov_pf_migration_types.h index 3177ca24215cb..7396c86a6e0f8 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h @@ -7,6 +7,7 @@ #define _XE_SRIOV_PF_MIGRATION_TYPES_H_ =20 #include +#include #include =20 /** @@ -23,6 +24,14 @@ struct xe_sriov_pf_migration { struct xe_sriov_migration_state { /** @wq: waitqueue used to avoid busy-waiting for snapshot production/con= sumption */ wait_queue_head_t wq; + /** @lock: Mutex protecting the migration data */ + struct mutex lock; + /** @pending: currently processed data packet of VF resource */ + struct xe_sriov_packet *pending; + /** @trailer: data packet used to indicate the end of stream */ + struct xe_sriov_packet *trailer; + /** @descriptor: data packet containing the metadata describing the devic= e */ + struct xe_sriov_packet *descriptor; }; =20 /** --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7AA3333030F; Wed, 5 Nov 2025 15:11:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.9 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355499; cv=fail; b=V7xMrI9J6Im8sqHHfRKdlooSb0F02tuBIOpnHc1ujz5sN/xtC6EgJtXRwgnFoENbipJd/P0Ts9oRkV5urPS1r1lZDdi5kQy7ZrrbTF6IoaZCtWm40kDSrK17qxfKBvGr6vTzdGXCCAjeKYQOjjRgNjEQt65SQuwavf3+2QHKPwo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355499; c=relaxed/simple; bh=IIzsa+dbwkUkytyP1fyV5tjkrYuryPhh+Bw/pb726Is=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Al0Mt1U4r6ujeI4CHBwz54rFXfxLwWhZ6KrR3/xW7gnGzlA3Q33b5XgMtS8+AQw6KryWNR7uYxqzly0xzxbxtRAQWUWFyHgEw5znFk+FjBRPPQVJKpYKV2E2OCI1Klyh4kdvXWwTcgU95iZc+hpClOpJQacGu6MDj+01KaSc0+Q= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Q0TvCutY; arc=fail smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Q0TvCutY" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355496; x=1793891496; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=IIzsa+dbwkUkytyP1fyV5tjkrYuryPhh+Bw/pb726Is=; b=Q0TvCutYp4IsVTduwjmB7o+MrzzvTA2MI4lH1PVE8DlNJu2yFU6c/b5a uHbo2F1zM+bTOjhFdSC4TJO/WhIY5Fxr1Og315DKFOKJZy2oB1BlBbBOO GbNfFY06+9FRdx5WLYRlj4M4fQKaA6nAPD9vXWzOY774JyUI8BjzJ6aZ6 s5mrSXuPZxVIw59eO846W14yr9XGDMtgwStuzOfKQaKdSC7zSGiuk2TOt f0FWqtIL1/4EmhqryJf9uf8biT7cc123XzrBYF96cY7JgM4szZmGDXZrQ WR2vrf5IdsxAtol3hNICRUfu2YeK/pYxeFaSF2u7M6wRrNnNYiYUNZ+uY A==; X-CSE-ConnectionGUID: f5f0mMd0SoqopTHkGq/eNA== X-CSE-MsgGUID: R/AiFP3LRSuyxOb0We1Ocg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="75153061" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="75153061" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:29 -0800 X-CSE-ConnectionGUID: YLNsiz/aRPudUI7gIyrOqg== X-CSE-MsgGUID: RR/hm3vMRr6vjKeQNSDFgg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="224725507" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:29 -0800 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:28 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:28 -0800 Received: from MW6PR02CU001.outbound.protection.outlook.com (52.101.48.65) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:28 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=o3VyIGTDNyD5Ecj4uttoqp9tWmy/QPFn31jdU1wbYxZBA1OVj+jE8VSbdUTygQEnpJXZXzGxMAEEr3aE2U5hIPi14x0KHvMFjUGFjDQUwaT2x1vvQ8Juv7Oysg2aOxDP15UU1I6qk4CgT0lcDSa5ojBi7X7THvVGNvJuCMmc6VMZDiikK66AYLzG1vl3IzgVM0YWo5uVNQLGhkD7ANnFuSshTnfQwotwFXTjvouSbYSIPalljDfhVIVj3NZZRJAAGtLdYE/25LAGpDPIGAGb8LVVBDyHJaf7iCy8jZJKGze1S7hnuIJmksTiU4SSdodx+vGjoFC+wa7oiV27bEo8eA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=fQ34IHwrfPrwJIzs+sRXla91IJaoIdPzYdDK/jHOoLg=; b=GoOqdmTB2zdYm+m2BfW01BR2eeIif4dtiEjmPMFAddhdsQlscBGm9j5LR5Nflw/VyS2dYZaWXaNdnpMZPjPo5lVGdDOpI14lYjvGlwfnByHXnHTRJJDnd/4u3mXM1utav3xQIbCujwlBHNNXvZ0MdM2HfUXyztxNH0DIPwMBPSyTfIyQTBzH8UYxxQDV+nHi9BsS5T3n58ST6feT8GSkKHP+uIUu4+Yy8A686QMjEM9rKvZMJHPNOoFwJfvHaiKKUXSTTdbkHAyHPl82PQAurYsvopVz4s4jM1d+IEl3e0EQfyNofy44Aoo4TX+gx3ssmf4UG53vg1JJy+VymCegeQ== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:25 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:25 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 08/28] drm/xe/pf: Add minimalistic migration descriptor Date: Wed, 5 Nov 2025 16:10:06 +0100 Message-ID: <20251105151027.540712-9-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0434.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:81::10) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: 39a59741-3c59-47fc-acb8-08de1c7d963e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?V3lwOEJxSkpFUW5xcURmZFFLWm9kdGxqcTJPNFVkaFIyY202UFJZZzNrcjRo?= =?utf-8?B?aUhRSWVmcGp5UW5RbXlBdEc3UXJ4djFxQkM4Yjd4eTlhd3lIQmk1dVl6c3ow?= =?utf-8?B?cGJZcGYybTlYVU9UNGRkQjJRaVhYb1RiWjNVOTZ1SnJSdFFtU0NJTmxtWlVy?= =?utf-8?B?Q0lMQjJjN053Nkl2WkJ3SmpjaHd2VHRWNXZuc1BPa0ZsTUsvaC8rdjcxSG9x?= =?utf-8?B?dUtNUk9vZUt6MW5PUGQ4THpiMS9pTkI0TSt6TG1OaFV1TzZhOFFKWjlqYkJ5?= =?utf-8?B?UnI5eGtwOVZvUEkybHNVZVM5c0NneUVwNDZYOExLYkVrOC9GbWxFTjZoS2t4?= =?utf-8?B?SHlzVXpzdVlqckU4UTNvK1doL2NMOUU5elFwR2hZOTZSYk54RXJRb2txMGh5?= =?utf-8?B?bHpuTnQwelJlQWhPNGlDVjRWSU5NU0hXVTVGODZxRVdJdG5Edk1OTGwwb25B?= =?utf-8?B?THd6ditXZ0Z6ell2OEdqaGlvVUJyQVRQUUF4a1BDUUxaVVMrMVBIYWlkanlY?= =?utf-8?B?eHV5NmEwZFJkS0p3OUEzUktSMXNxalhid0VUZERhTUhWcW04RzlRbThWUTA5?= =?utf-8?B?VHJJdWkvc0FhaUhOSTcxalhHNHpmQ1Q2V1lxOU1Ca0I4QjlKNnhTeDUzN2VT?= =?utf-8?B?YUVDdWU1Z0RkSjZFd2NlZzdsKytUdGZycjlXUlN0TEhWQUZNNFlQdHBLS1kv?= =?utf-8?B?OGp4UVN5U3RiQnRwbDhsbGc1TFdYOUZpMkJDNTlSRStEajNHNDcvbHZWRVFD?= =?utf-8?B?d2RDTmg0d3hlTDhVaUVVQ0d2b3ZiUVp2bFg5M2VlVmNvSzZOa3RwMmdnSVc1?= =?utf-8?B?ekcrQk9vTmQwT0FSVC9vOHp3N2d3QjBMU2VmL2svZWdwQnpjVGtyMHdWR1Nk?= =?utf-8?B?djQyU2VaWGp4QlZjK3ZuU1BlS0lJREJtcDlmakhrM2QyQ24vcmJHdm12dXAv?= =?utf-8?B?YmxHYkNUMXBROTMwZkM3bmZnOXZoL3REejlSL0xQeEFBY01jWkRSd0lqSVUy?= =?utf-8?B?Q09Ic2ZtWklhSEFpYytzbzJCVTBXc00vVTJNcGt4UE5VTncwQWJpa2E0VldI?= =?utf-8?B?RDZzaEowcVlwcXFoSzFwM3pDcC9sUmhuNnh3SVdacnFuZWh0NzUrNlFaWWRS?= =?utf-8?B?aldONmhhYTMrZUs3eDdydmkweUJncHdTMG1GNjFoYk5paWV0aThnc0VHWVJW?= =?utf-8?B?b096Q0VreXUwTTI2eWEvTXczU2FOa1ZwdDcrd29KdHVlWStsR1hncGloSEt0?= =?utf-8?B?bkw4SmtJRDZnZWJiUmVvaHZIMmJBL25DRVd0M1hrZEE4eXBXVGtNVGw3TW0x?= =?utf-8?B?NEg0UHNSUzVwWldkZHI0VzE3alpnNytjRnhlbHVKZHUyZldoS0ZZZlovV2No?= =?utf-8?B?Qk5pZlBrb1MycVBYK1k3cVZtYkZFbDVDMlZ0WGNaTzdYYkcra21iS1pWYVJP?= =?utf-8?B?bG5qTkFnMkZOc1RWdlUzUkpPcE9IVTkvTWRxSWJmZlJJbUhNZHdNVDBTeloz?= =?utf-8?B?ZWpyczJiWEdGSmw2U0Zyd2x4QlNVaFVJRnhQTEV1SlFMZmU1TWNwUnlBZko4?= =?utf-8?B?UUZYeHFaZnIza0dVM1BpUmQ2eG9ONkZNWVFlb1k4QndxSnFmWVF4V09aTnY5?= =?utf-8?B?RExXS3djV0pyRjRTbHlKTlFlSEpTUmRDOWY5M0tKazhtOTNxeUlIRk5DMHBo?= =?utf-8?B?cDVWZ2lYNFBQQkFPdE45bTFrWU5VbE8wQXlHYmpBbDB4NnN0WlpTN05JcW94?= =?utf-8?B?alM5b2ZaT0IraUIrVTErOWxQT1JFWk5nczE2UFp4NlBnZzR6SnFyclAvRTdL?= =?utf-8?B?ZVlrRGVvUzlzSGtOYkV6WHExb3ZhK1VJVXdMNEtCd2xvalFwN2xXZURPZVla?= =?utf-8?B?OEtzV2NqbFVOV3oyTXZUMXY0bXlqbmNjZTJpbUoybVJTeC8rTjVaUUdheWFm?= =?utf-8?B?UTZQa3BRUGM1ZHRKM3pCQ1VTVTZLbCtpNUVPYnZRV25iZEJHd0RRMFR2aDdh?= =?utf-8?Q?zpRr2p/dh3woLq62YZbIAMFkWfksEg=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ek5XWTdiL0lhYk9yVkRPbDRsZXhicG01WFdhSUZXVHpzSS9LKzlhRXBQcXlq?= =?utf-8?B?RnVLM2p5YlU3Z0NuTTRmMmhkNGdyTmRaRTE2WE9oSmNTZW0zRlhSOHAvVmM4?= =?utf-8?B?T0pXOThMaUs0cnd4NTJnaXdkWEtVVVRkSmJETS9yTUhBcjRCSFVQUWxaeTJk?= =?utf-8?B?WFhrK004YTQzMTVrUDB2YXlJR25xMDFMTG85R3l3Q0pvVUtnZDJkeWVqajVi?= =?utf-8?B?S0RFdzVYeklGbXlscmRmajZvaWo1Nktxd0xRTlpiTWJXNG80ek4xV1phVUlQ?= =?utf-8?B?b1dsNUhwSHU3V3JVZGJENmplUGxCTEU1RE5xZWpQYTdURXVjV0Jwc1I3enJS?= =?utf-8?B?ckpDZ1B1K1Zyb3UyZlhtRUhZU2ZKUExoN2pja095WVVXWFM5NWZoOWdCM2Nu?= =?utf-8?B?YUk4VGhPY1hwR0hNUFM4Vzk3MERzSXNYenpudGcvQkdnZmMyMXI5R3RtcEx4?= =?utf-8?B?b1R5bHkyeHZ2WmhDUXdidTA3ek9zcDV6N3F3Z3N0cHlLNDg2WGhreUhMRUZp?= =?utf-8?B?aTRoRXVobnp0cFFCbFl0NmhJTGx4d2NMUzA3d05OcWZTNVRuQ0JLOXZ1SVFU?= =?utf-8?B?Qm41WlcrWlB6UlJoRTk2YUN6SktGMitvb1JWNURWSm9sYzFnUy90dlRtaVo0?= =?utf-8?B?K0NzbC9LR2lxU1d5SDVIU0hYdlB0OENPQUxlVitlMzFhSHo1MW55bjNXRlNO?= =?utf-8?B?WFI2QnVTanV4UHp1bjI4blV5L3gzNEIydFhWWlE2RjlmR3I2Qmk1ZkhiZm5T?= =?utf-8?B?RzRSZGxTbjNBd0RCWUlkdGJEd0xBSmxaeDFNTmRQTnJuWTRoUCtIeW82ckZk?= =?utf-8?B?WHVTRFp2M2wvblFrV05rNGR4N3IvejQ3c1FsY1NVam9PL0xvUTdqcVFXcjRq?= =?utf-8?B?eFgxVlRZbVRZRGVsYnlZenE1WFBGUlhBSG1FMk0vSnZnd0VZUmpXSWxCL2Jy?= =?utf-8?B?ZEsxajExNTh5VEprdXd5UlNDc0J1RUM0S2E2aVRCa0kySWVacXlqNnlFSytX?= =?utf-8?B?ZXhEazNzaVBWblY2akk5bHcyUE1OMDNNdmEwMkd6bDVNZFM3OENjSDhENTlQ?= =?utf-8?B?SVU4SUtUYzE5Z0liajdrUTc3bHViZFM0aCtxVkJURVo3NjhTNHF0bTErU3NC?= =?utf-8?B?WVgva2l0c0Y2SmtQTmF6SmpYdEdPNUh1UktBaXVCQU5pSTIwc1h6TlAzSWhV?= =?utf-8?B?MVhzSmdxRTZnb1g3amo2M3I0VGJJdy9USUNNR0lFSUY0OUx0bW51TVpDNWVU?= =?utf-8?B?RFg5RlR4SEtQSWxzbmllMEo4eUY1RW1uZDZIWVVURHgyM1dOY1JrTEQ4REND?= =?utf-8?B?b3k2bGVkODVXOHlDMHA4L21UQkxLeG9GNEVXUVZjbXlWdHFkbDc1QUgwMWhL?= =?utf-8?B?V2NwKzVhQWtPdGdpSjJyYnpPcnZJZE9GdGd6cmVPdUJqZk1MNXArODd4Z2ZS?= =?utf-8?B?K1BjcmhmWDRpMmZMdXk0bkhqNVorR0NvOHpnV0Q3OEFkbi9OY1lVU2FVMjBp?= =?utf-8?B?RHZKbVB0MjdvNzZBZGR6VE1uaHEyZHR5S2orZjg0ZkdDR0ZSZmo5NFdIZW9U?= =?utf-8?B?N2tDUzdyVUtlcmQ3RXkzd0lJUDBJaFBPVXMyQmN6QStXdUZXeTNZRnViY2s3?= =?utf-8?B?cmR0TDFYNVNrSFJrbnA4NnZXZldDUzk4UFlvdk05bnBkcGh6eDBhVUd1TEF2?= =?utf-8?B?Y2pkQ09nRE9xd2NNTlVGc3doeVJvZEZVNDZjRW5lSkFCK0pJejRkWXh6bGNI?= =?utf-8?B?Q3Bpcm9MR013cG9PRGhNVzdtdnZzVHhXaUxBSE5qS1QvVUlOZm8xRUtUQjhG?= =?utf-8?B?WmtzeC9EaElZeEhVakRpbVRRMDlBWS9JZkxNTnVXODdEYTBnckQyOHFoS2pm?= =?utf-8?B?L0RUbDNybXhqWWY1SlljWXcxQVdhZEtlLzdzYW45UkdvQVA3ZjN1WkRyWFM2?= =?utf-8?B?NE51eGJCRGZ0aVJiVS91bDZqM2tnV3phNVF3NjllVC9hSGx2NHNxbi8vdi84?= =?utf-8?B?bXhzODhhTS9mTW9NYXJMbmpjd2RWSFdNdWZlMENkb2hZWlh0ZGtQNTVzRkRu?= =?utf-8?B?S3JuWTRIdnNYU3c2Sm1Hb25uVVNyWDZ4T3JOSE5PdEdiUk9NNFhlRU1QUUpB?= =?utf-8?B?TU5jbnZ4T2xjdVdFVk1rWXU3S1dkWDhhY1ZiKzZYZlZIRnIvL0pSNStCc0VE?= =?utf-8?B?Y3c9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 39a59741-3c59-47fc-acb8-08de1c7d963e X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:25.4886 (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: IceNFJSvMFfL3Ldq9uEUGVFZkMjOUJvmfh23yCEw+rHM924ogrZJcDUBD9mWT6iDbWie/OiI+9TP9pa2uQSaHmeCCvYVOW4OepskmG2jgoQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com The descriptor reuses the KLV format used by GuC and contains metadata that can be used to quickly fail migration when source is incompatible with destination. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_sriov_packet.c | 92 +++++++++++++++++++++- drivers/gpu/drm/xe/xe_sriov_packet.h | 2 + drivers/gpu/drm/xe/xe_sriov_pf_migration.c | 6 ++ 3 files changed, 99 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/xe_sriov_packet.c b/drivers/gpu/drm/xe/xe_s= riov_packet.c index 220c36c52e99b..c39d9a0c5df52 100644 --- a/drivers/gpu/drm/xe/xe_sriov_packet.c +++ b/drivers/gpu/drm/xe/xe_sriov_packet.c @@ -5,6 +5,7 @@ =20 #include "xe_bo.h" #include "xe_device.h" +#include "xe_guc_klv_helpers.h" #include "xe_sriov_packet.h" #include "xe_sriov_pf_helpers.h" #include "xe_sriov_pf_migration.h" @@ -340,11 +341,19 @@ ssize_t xe_sriov_packet_write_single(struct xe_device= *xe, unsigned int vfid, return copied; } =20 -#define MIGRATION_DESCRIPTOR_DWORDS 0 +#define MIGRATION_KLV_DEVICE_DEVID_KEY 0xf001u +#define MIGRATION_KLV_DEVICE_DEVID_LEN 1u +#define MIGRATION_KLV_DEVICE_REVID_KEY 0xf002u +#define MIGRATION_KLV_DEVICE_REVID_LEN 1u + +#define MIGRATION_DESCRIPTOR_DWORDS (GUC_KLV_LEN_MIN + MIGRATION_KLV_DEVIC= E_DEVID_LEN + \ + GUC_KLV_LEN_MIN + MIGRATION_KLV_DEVICE_REVID_LEN) static size_t pf_descriptor_init(struct xe_device *xe, unsigned int vfid) { struct xe_sriov_packet **desc =3D pf_pick_descriptor(xe, vfid); struct xe_sriov_packet *data; + unsigned int len =3D 0; + u32 *klvs; int ret; =20 data =3D xe_sriov_packet_alloc(xe); @@ -358,11 +367,92 @@ static size_t pf_descriptor_init(struct xe_device *xe= , unsigned int vfid) return ret; } =20 + klvs =3D data->vaddr; + klvs[len++] =3D PREP_GUC_KLV_CONST(MIGRATION_KLV_DEVICE_DEVID_KEY, + MIGRATION_KLV_DEVICE_DEVID_LEN); + klvs[len++] =3D xe->info.devid; + klvs[len++] =3D PREP_GUC_KLV_CONST(MIGRATION_KLV_DEVICE_REVID_KEY, + MIGRATION_KLV_DEVICE_REVID_LEN); + klvs[len++] =3D xe->info.revid; + + xe_assert(xe, len =3D=3D MIGRATION_DESCRIPTOR_DWORDS); + *desc =3D data; =20 return 0; } =20 +/** + * xe_sriov_packet_process_descriptor() - Process migration data descripto= r packet. + * @xe: the &xe_device + * @vfid: the VF identifier + * @data: the &xe_sriov_packet containing the descriptor + * + * The descriptor uses the same KLV format as GuC, and contains metadata u= sed for + * checking migration data compatibility. + * + * Return: 0 on success, -errno on failure. + */ +int xe_sriov_packet_process_descriptor(struct xe_device *xe, unsigned int = vfid, + struct xe_sriov_packet *data) +{ + u32 num_dwords =3D data->size / sizeof(u32); + u32 *klvs =3D data->vaddr; + + xe_assert(xe, data->type =3D=3D XE_SRIOV_PACKET_TYPE_DESCRIPTOR); + + if (data->size % sizeof(u32)) { + xe_sriov_warn(xe, "Aborting migration, descriptor not in KLV format (siz= e=3D%llu)\n", + data->size); + return -EINVAL; + } + + while (num_dwords >=3D GUC_KLV_LEN_MIN) { + u32 key =3D FIELD_GET(GUC_KLV_0_KEY, klvs[0]); + u32 len =3D FIELD_GET(GUC_KLV_0_LEN, klvs[0]); + + klvs +=3D GUC_KLV_LEN_MIN; + num_dwords -=3D GUC_KLV_LEN_MIN; + + if (len > num_dwords) { + xe_sriov_warn(xe, "Aborting migration, truncated KLV %#x, len %u\n", + key, len); + return -EINVAL; + } + + switch (key) { + case MIGRATION_KLV_DEVICE_DEVID_KEY: + if (*klvs !=3D xe->info.devid) { + xe_sriov_warn(xe, + "Aborting migration, devid mismatch %#06x!=3D%#06x\n", + *klvs, xe->info.devid); + return -ENODEV; + } + break; + case MIGRATION_KLV_DEVICE_REVID_KEY: + if (*klvs !=3D xe->info.revid) { + xe_sriov_warn(xe, + "Aborting migration, revid mismatch %#06x!=3D%#06x\n", + *klvs, xe->info.revid); + return -ENODEV; + } + break; + default: + xe_sriov_dbg(xe, + "Skipping unknown migration KLV %#x, len=3D%u\n", + key, len); + print_hex_dump_bytes("desc: ", DUMP_PREFIX_OFFSET, klvs, + min(SZ_64, len * sizeof(u32))); + break; + } + + klvs +=3D len; + num_dwords -=3D len; + } + + return 0; +} + static void pf_pending_init(struct xe_device *xe, unsigned int vfid) { struct xe_sriov_packet **data =3D pf_pick_pending(xe, vfid); diff --git a/drivers/gpu/drm/xe/xe_sriov_packet.h b/drivers/gpu/drm/xe/xe_s= riov_packet.h index 03ab8edd99374..6cd0918f2bc33 100644 --- a/drivers/gpu/drm/xe/xe_sriov_packet.h +++ b/drivers/gpu/drm/xe/xe_sriov_packet.h @@ -32,5 +32,7 @@ ssize_t xe_sriov_packet_read_single(struct xe_device *xe,= unsigned int vfid, ssize_t xe_sriov_packet_write_single(struct xe_device *xe, unsigned int vf= id, const char __user *buf, size_t len); int xe_sriov_packet_save_init(struct xe_device *xe, unsigned int vfid); +int xe_sriov_packet_process_descriptor(struct xe_device *xe, unsigned int = vfid, + struct xe_sriov_packet *data); =20 #endif diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.c index 4e0ca2fd7fd77..54a2c0f9d5933 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.c @@ -176,9 +176,15 @@ xe_sriov_pf_migration_save_consume(struct xe_device *x= e, unsigned int vfid) static int pf_handle_descriptor(struct xe_device *xe, unsigned int vfid, struct xe_sriov_packet *data) { + int ret; + if (data->tile !=3D 0 || data->gt !=3D 0) return -EINVAL; =20 + ret =3D xe_sriov_packet_process_descriptor(xe, vfid, data); + if (ret) + return ret; + xe_sriov_packet_free(data); =20 return 0; --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 26428334696; Wed, 5 Nov 2025 15:11:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.17 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355498; cv=fail; b=kfwn6nBBFdnWBe6L8CE+QZD17dQGXhqQdcm+7LZtyAnJR02zXLSBmROcsHWMg/IDhCO0rViJyug3sqIlbhkkSgBveclrEhzrC7PUSFH2o1lS9ReQeIgJgjysFK8b9gKMTpgrjBEaJ2JcvozqK6YG+Udv0PWDiqiJCTp/PNRCtGA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355498; c=relaxed/simple; bh=UYbyamX1/5Ip4MXH74m7zlm3HGrez08+gQD46Mv4Qr8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=euXI1m++IzOJ/sV+IP7VYg9HRk1EcfM5jCSoj2a4Qe+c1kxHkCytR7H5D5JLa0zvGC3BUmp/FXxJBIrakY6nYWTLfZ9GARjTBNvhhKI398E/1slg00BEfADu0/LxvUIPCnHzdBfprBd82lhlS+R1UlXkF53Cw53PHrMn1oM4YLI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=l5l0LPfu; arc=fail smtp.client-ip=192.198.163.17 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="l5l0LPfu" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355495; x=1793891495; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=UYbyamX1/5Ip4MXH74m7zlm3HGrez08+gQD46Mv4Qr8=; b=l5l0LPfusPho6+KbW1STE3nrcwzyl7NqJCqza13fmCQxk4qoYGWTeUab /k6roBYzFx7BDuG234Ja7OYkyQM+9IBSWBgWkSLymf7WnFpKTaaYPi7NT V2XCMzdN6mxlhAEjB1KDKP9fG2csAs62c3LadjNh9grRsUl6D/bMDl4xf rUVIcq4G7B3ngIrAhHPX5RabseWPukfJS0ZZwZESO36ccTrucl88ppo3S ea52b1CpkXXdDoiz8Aa/jhaBYhHjpTNwsdc54Zk37+F+O7J0Nmk2Vwg2g WI/SXk3tqBGg82wKFRuo1Ql6DeoqaalV6hzAtbX0womRCeL2598mOEGUe Q==; X-CSE-ConnectionGUID: FuWOUo3CQ7Wd8yJFLn3uaA== X-CSE-MsgGUID: cSnVUrGwTTaPc3yUskAf1g== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64386984" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="64386984" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:34 -0800 X-CSE-ConnectionGUID: G5q6lcRwRECLToWEX8sdyA== X-CSE-MsgGUID: H/oO9XCXRzmpAJzTM/oKmQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="192649504" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by orviesa005.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:34 -0800 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:33 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:33 -0800 Received: from MW6PR02CU001.outbound.protection.outlook.com (52.101.48.16) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:32 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XBj59cZqXLTO38XcPm4evUUpPJaRWWkzG5eAAkP5VApgxozlafuOukG2kamhdSze6lBYT0kzHmPOIrNXj3OCEicWhe6PvVC+ipATpnXJhxqNH9gWd3QHtjM4plNmQ7Iw3UHUy+VdJebIJAw/T7UUzvVa/x/PZNqGJFKtx/ev2WdR7k2rBxUzuNx/+Vage5o9F47ccSWYKe5Bcg7kYr4G7QzS4ii86r3sEEleddW/StBtvpNnhiyLT+paxZ7CCh5QJuthvq9gPwTqNQW5bliIV5aZSDk3n/G8OR3AHxUt2t6r2/pAMJ9qucr+M/L+22WwqY9NdqisGg9JjA7wRUXRWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Ua+RU3HyqphpB8LuK+eSQg7ZIzp1WQa6oBVPzUomHpA=; b=mbp2N7/kXZC7jfYNKBI9qm11/SXGgraz+KtXQrl1vvS+KI4pTUdwgwHahnv30qdloXOO5q11kczJ3pDsutEb8IffuxN1ebGrIO0HnN4gUwGoQJp+NILBGQPrRFZwVvb58W0JSNjhHijxxJCHMZ5YAf/GA09ufrm0XxJDdqBHQ4X9TD16qQO9QxEzDOmTAH8TtHf1WT8RUBcV9lgnUksHWDxbkexFkFwo02HwmgFPRfhCPQjGArp1Gmx2BrgRuux+o170hLozHCHGBeLteUFdhE4ZtyCxV3/9gToIE2v+29JBD0FxO/jbiv63N0bg34/NoV537QU8B2tviiDYP1p1yw== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:31 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:31 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 09/28] drm/xe/pf: Expose VF migration data size over debugfs Date: Wed, 5 Nov 2025 16:10:07 +0100 Message-ID: <20251105151027.540712-10-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0278.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:84::13) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: dd554d14-029c-44fc-2095-08de1c7d99ae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?T3E1QWUvTDZkTDc4eXh4VkRJRE03UXpQT1pmdFNLM1Z3eUZwU3NwMk1jalli?= =?utf-8?B?b1EyUzRaQjFuQlhjc1VMc0p1TWZ5UUhPM0N1WTN4ZkdsT0NuN3B1c3ZGdDdy?= =?utf-8?B?ekhRdEZnelRhcWphZE9UWTJwcHA4MFhnYitVKzVzU2RXcENUWEtPMFVUSHRl?= =?utf-8?B?U0dFZWx2SWdnOEE0dGhIdFhXN3IzK21CY2VkcU96T1VpVmduQXo5NHl5QWlu?= =?utf-8?B?OXhKTllFcWpNS3VwV05XZEgvdW1sZEpiNVZ2eVMxUk02K1dPZHZNK3QzdlVH?= =?utf-8?B?bkdUWkVSbHpmbDRDRHRDbmUyVkk0NmVFUVg2enNSRWdQNjNwWXhRTnpGb0tK?= =?utf-8?B?NW5POU5pa0VlN0FERlVQYTUxRWxYQVptK3NhT2tvOU9Qelc5LzZvbmhUWGZh?= =?utf-8?B?YUJvZUNoVHNCazFzWS9XM3BrVVVOT3JNWGRTS1AxVkJPQmM0a3lkMThBYjVG?= =?utf-8?B?OWNOTHZqWnFzNWdrNG1vUHVxV3AvQjhLcGlqcGRpWDVNdGFFektDa2taVUZU?= =?utf-8?B?N2U3a2VuN2wwMWI4TTI5clBaNkQxZEZDanRqQ1NqT1d6Vzl1U1B4TVN6dEVp?= =?utf-8?B?RnZBMmQ0RDd6b25TeWgweE1La1FEK3R3aENLY05zVFFDMWRQTHpCL2FBSWo3?= =?utf-8?B?ZDE5Qi94RWU0ZEFya09DMFdRYnpYWDQ3bHo4dWZTMERKMWFOVUFSbENHTVBY?= =?utf-8?B?VHJDam9nUElJdzhpU1NWZGc2VE0xL1BtMHlXUUk4N2JkR01aYWJWWlZmaWJv?= =?utf-8?B?cm83VVM3aTIza1B2Tm9tWlA2SVhFSjR1THA1eTkxaGorekVVY1pnc1RqaEZs?= =?utf-8?B?ZmJGZnB5OGMxK2hwVkwyendYcW9QL01GK1pOZDEvcXltK2xnSnBkbzhDc1NE?= =?utf-8?B?QldXbTl3TXpET3dEejMrY3BRaFZhbCtmWHFxWk80ekJWeFB0SzhDRmNmQXJO?= =?utf-8?B?RVlLV2k4UnlVYlVSa1c5TndkU0hhNzZDb2RBK1kvOElQMzFOS2hqalhyaXVS?= =?utf-8?B?SThDeHN3N2RoTzFjRTRRVE9TZFhjdFlSUmV6OE83NEJWdDVZNlczdk1qUFlQ?= =?utf-8?B?UTI2VkZtYWMwZVNycEZoTGZBNFFPSGxXTlk4ZlRoZU5NajQrTVBqbi92WXFN?= =?utf-8?B?QU4xQkVtaVN4VDFFOXRPcHI1TWVBMStReFR1cGY3SzdSUjNIblRtektTQzh0?= =?utf-8?B?WUl3cjNVUTdBTTUyclVyN1JwcmVQN2VNcnBNbFBiK2x5UUxJUWM1TnRpc3Bj?= =?utf-8?B?MjBlYnBNQ1JEbkYwNDNuRW1TaC9mMXA4WitNS3AvZ2U1ZC9HWGhidEJ0dGxj?= =?utf-8?B?OVBia0NhTE9DSjNmdXhsSGlUZXlRcTh0dTR0YTFTVFkyS3NDOTFJMXp5WHpY?= =?utf-8?B?WjNMc3IvSHRhVmJCTWgxSm5mZk9mTHB2QjBhNHBkK2w0d3c2NjhQTlBjdXkr?= =?utf-8?B?enZQWWRKd1JqTkZhanoveFpKRHBCazQ4Nm1BdlArb0tXMy83T2hJWE1MQzFD?= =?utf-8?B?cVBrci9XY2lkcnRPUDBrSW9SNkRQL0pBeFYxL2h2WGxvQWJZVmk5dU53NVJk?= =?utf-8?B?Y3dMMW5mbXFaUUlqcHQrS29vN3R4OHhYYU5xYVAyTUZzblQvTHhWak03MEtp?= =?utf-8?B?YWRodnhrWmdSYXNCRkdoKzNZbm9KUXVTdkI5amlGNWhvREE3Q21JMCtJSUhn?= =?utf-8?B?ZjlyN3F3Um5reEhtbDVUY1ZHN3F5MnZ1anl6UDNFVWVpOVFsU2VteS9SNUE5?= =?utf-8?B?VzlsZlduZkFBNVpoeURYQ3NBTndkaFMxeTRRQkdRVWRYbGhLNEI5S1d6aWdz?= =?utf-8?B?OEZpTHhJZTMvc1R2R3F1bXlYQ3RJUHluUnBvVFp0a0MvV09QZ3N1ck9hSisz?= =?utf-8?B?YXh4aENQeU0zWGhtNjh3WU14ajVZMVJOVmJNb3ZxZVNMRzMxd0Jwc3V0TCts?= =?utf-8?B?Q1BhMDdIRmJGVFljMndTaktTeUxNdklTazk0QWE5cU1WQzNVMmFSbUw4U1Ju?= =?utf-8?Q?IA8OO66Et7BJowVb2yMtB415um/WNs=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aDk1S0Q4Z3J3YjhLZnBaVGFQSmxQQWY4ZElVKzYxdkY0UmY5aGdybW5nSUZP?= =?utf-8?B?UUVReEhjWmN0Y3NvTlY4YWVScks1YUZhMExIUk10YlhWaGRJdXFDVFFBVmM3?= =?utf-8?B?L0FUZjg3TE9Rd0l5dWNRaVRrdEIxRmQzdGRBVWg1dW0zeTl6NExGUW96SWNO?= =?utf-8?B?NWhxZHh3b2MzcVhqNDNUbStZNjdZdWRIRVM4V1crVDJCdjVVcWZWYmpHc1F3?= =?utf-8?B?eWdzUjlRbGdYcStNMEthVnEreGZmejl2VXlqUUVBVi9WZEdoenVleksvbURE?= =?utf-8?B?ZXFYUEFWZ1NkYy9xWFVhQk5tS0RCdEExbDFISVBkelVnYW1VSzdTVlIwT0dm?= =?utf-8?B?MXQ0WkZKdjZNVTE4RUV3Ujc0czhsRndObzBGZGtVZDNjdVd1UW9sd3RFSUpz?= =?utf-8?B?NXN6V0VweThNQ29LOUkySVhYOWJpRnlVamJBS1lObUdqUTZUbVlKaks0ODYw?= =?utf-8?B?UFpydDdJRFVyM2NMTTFNUVlNNFRHM3NJOGsxYWZqWm9nVzNYUmRDMUFkRzk4?= =?utf-8?B?dTZaaVNsVm5sc0FrVTd6MWxBTzJpMVNzQkJ3dXpXQkVocFhKSzFESGdobDBW?= =?utf-8?B?ZEhZdDUzTUhQZ1puWE0rb2tQUGt3eFJnS3p6bU5mLzhpaklDbzJDb213WVVj?= =?utf-8?B?cGpXQnBPNmpFd0pVSms4dUgxWEtKOU42ZFEwREp3bzBsaHpaREEyM05rekVP?= =?utf-8?B?Myt0RW5rdHB2Mk5DUDNQOUN3eFYyZnVvQndzTUZaVkdSeGg1QkkxeXNseXRv?= =?utf-8?B?WTZSaWZIM3hWQjlRMHRCSllBcHpETnpvSEsreFJFQjBUdlV6bjZOZDdsSDdh?= =?utf-8?B?aHdySEQvb2tuOFhUUXM1TVVzYWJHV240dkhUcmdRZXJROFpYMUpsNW9QeWJQ?= =?utf-8?B?MW16Lzd6b3hUZGpuR3NScVJUZWNCNExoYWIxRmR6TTNlVTY1bmlsbW1KbXVH?= =?utf-8?B?Yk1yMUVqMkNSVWt0RHNmc2x4a051WTA0UjFvaWhZWnJxZkdLbFpuNUl4dkhT?= =?utf-8?B?ZTJsMHM1OUdycmp0MnFMeWJFZXB5Y2RRcU1kV1BRTFVLakpHZ2FwMkVNQkhW?= =?utf-8?B?UGtoY3V3eU85K0pERDUvSGtyN1pIQzdvajRDVmJKYXh0cGJHYkV0eTM5VFVC?= =?utf-8?B?WG02YlNvNmIxQkJVeTlmMDNuM1NseHRxMmpCcEFtRVlTL1VEWG5yYnJEaDE1?= =?utf-8?B?K01SQ3l4cHN5NmJKK1l0ZW55dkVramQ4WndobWNKNFVWRC9RTWV5YktiWVpq?= =?utf-8?B?Y2VJNk9sdEtyWXo0aGQ3MlZZSXpRWWptZ211WXI3YkxYcTBZT2xta2J2RlFZ?= =?utf-8?B?WWtxeVo2NG96SW5HS2JHMTR0N3hvQ3JxUURNNGpTdkw0ZDhidFpidWJBelpD?= =?utf-8?B?Z3dUVVNYZXRCaGNLTk5jVXJZQ2R6UzROSDAwcHg2Z3BBNGFMcXlmcHFUSzhK?= =?utf-8?B?RlFldjFUYjRER29YQm9TQkNicEJmeEl2bGJGVWZKUHhXbmM4TS9xSk9MNldZ?= =?utf-8?B?Y0haYStMdDVja0RBVHgyNWh6RWRQUUpqQXJLWUR4ZGRQTnhmelJERlVJdWZK?= =?utf-8?B?bXJnNFNKTVdjTkhLS0JMRjZCM2wySEhXWHhCT1NmNktHcG5NdUh6ZTV2d2VX?= =?utf-8?B?Q3A1ZW9FNCtMTWRIYW5OcGNUZGN4ZlBZYWJXUkNFS2lxb3hQT3VnNEN6VEIr?= =?utf-8?B?U29WWEZFQ3Rvdk1RNUpxdDRIM2lxVDhpVXBHQ1FQMEphVThwTkx2K1J3bnZY?= =?utf-8?B?d3ByUUMvUU9hQit4S3UySm14d01PMVZteXE5MERhd0VZa0lKeEJQdFdGQkxL?= =?utf-8?B?R2FacGJsYnk3ZFV0Sk16RWxrOUc4UC9FNHhGcURuR3FHMTU0QXJGcmZ2cXh6?= =?utf-8?B?Q1NScUQrVjZERVhHSnh2UE5VZmdTaExhYmhVWFZ2enVmaE1SQ3hDNkNEUVNs?= =?utf-8?B?ZjljZmtpaUZYZEIwTzdseGN3Y2lUZVEyMUpFeVh6a281NExwWTJxSHo5RnNk?= =?utf-8?B?RHJUeEVra1BHQVlkYkh3RGMzaFgrYWN6SnlxNzdtVjRHVXpmT2hFVFhhRWtz?= =?utf-8?B?RFhRalNrV09WVVNTVjF3bmtLUEd6L3djMGo4emkwNzc0ZkZkRzJleExrK1Rh?= =?utf-8?B?ZEExNjkrNTYyc1F2Y2hCcGhlZnIwVzRWNDlSMVZrSkh2dEc3a0JqSTNLTmtN?= =?utf-8?B?dHc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: dd554d14-029c-44fc-2095-08de1c7d99ae X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:30.9847 (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: HWrSChdCCVYUopM5LB5KOZNlDDfD8XmhmEb3+1tkMZ902nRi7XN8X4XgTCjfIsAgdOqFZRrfFudCX6s0BPzZxckYxYSqJUVcgzDGLls84gc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com The size is normally used to make a decision on when to stop the device (mainly when it's in a pre_copy state). Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 21 +++++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h | 2 ++ drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c | 28 +++++++++++++++++ drivers/gpu/drm/xe/xe_sriov_pf_migration.c | 30 +++++++++++++++++++ drivers/gpu/drm/xe/xe_sriov_pf_migration.h | 1 + 5 files changed, 82 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index c492677db28d9..0f56dbc04865d 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -395,6 +395,27 @@ ssize_t xe_gt_sriov_pf_migration_write_guc_state(struc= t xe_gt *gt, unsigned int } #endif /* CONFIG_DEBUG_FS */ =20 +/** + * xe_gt_sriov_pf_migration_size() - Total size of migration data from all= components within a GT. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * + * This function is for PF only. + * + * Return: total migration data size in bytes or a negative error code on = failure. + */ +ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt, unsigned int vfid) +{ + ssize_t total =3D 0; + + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid !=3D PFID); + xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); + + /* Nothing to query yet - will be updated once per-GT migration data type= s are added */ + return total; +} + /** * xe_gt_sriov_pf_migration_ring_empty() - Check if a migration ring is em= pty. * @gt: the &xe_gt diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.h index b4c7b5dc9e914..3ad3c3609b415 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h @@ -15,6 +15,8 @@ int xe_gt_sriov_pf_migration_init(struct xe_gt *gt); int xe_gt_sriov_pf_migration_save_guc_state(struct xe_gt *gt, unsigned int= vfid); int xe_gt_sriov_pf_migration_restore_guc_state(struct xe_gt *gt, unsigned = int vfid); =20 +ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt, unsigned int vfid); + bool xe_gt_sriov_pf_migration_ring_empty(struct xe_gt *gt, unsigned int vf= id); bool xe_gt_sriov_pf_migration_ring_full(struct xe_gt *gt, unsigned int vfi= d); void xe_gt_sriov_pf_migration_ring_free(struct xe_gt *gt, unsigned int vfi= d); diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c b/drivers/gpu/drm/xe/= xe_sriov_pf_debugfs.c index 4ca86ff4b7dae..00fe73bd86dfe 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c @@ -254,6 +254,33 @@ static const struct file_operations data_vf_fops =3D { .llseek =3D default_llseek, }; =20 +static ssize_t size_read(struct file *file, char __user *ubuf, size_t coun= t, loff_t *ppos) +{ + struct dentry *dent =3D file_dentry(file)->d_parent; + struct xe_device *xe =3D extract_xe(dent); + unsigned int vfid =3D extract_vfid(dent); + char buf[21]; + ssize_t ret; + int len; + + xe_pm_runtime_get(xe); + ret =3D xe_sriov_pf_migration_size(xe, vfid); + xe_pm_runtime_put(xe); + if (ret < 0) + return ret; + + len =3D scnprintf(buf, sizeof(buf), "%zd\n", ret); + + return simple_read_from_buffer(ubuf, count, ppos, buf, len); +} + +static const struct file_operations size_vf_fops =3D { + .owner =3D THIS_MODULE, + .open =3D simple_open, + .read =3D size_read, + .llseek =3D default_llseek, +}; + static void pf_populate_vf(struct xe_device *xe, struct dentry *vfdent) { debugfs_create_file("pause", 0200, vfdent, xe, &pause_vf_fops); @@ -263,6 +290,7 @@ static void pf_populate_vf(struct xe_device *xe, struct= dentry *vfdent) debugfs_create_file("save", 0600, vfdent, xe, &save_vf_fops); debugfs_create_file("restore", 0600, vfdent, xe, &restore_vf_fops); debugfs_create_file("migration_data", 0600, vfdent, xe, &data_vf_fops); + debugfs_create_file("migration_size", 0400, vfdent, xe, &size_vf_fops); } =20 static void pf_populate_with_tiles(struct xe_device *xe, struct dentry *de= nt, unsigned int vfid) diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.c index 54a2c0f9d5933..30bda27b0b2ab 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.c @@ -309,3 +309,33 @@ ssize_t xe_sriov_pf_migration_write(struct xe_device *= xe, unsigned int vfid, =20 return produced; } + +/** + * xe_sriov_pf_migration_size() - Total size of migration data from all co= mponents within a device + * @xe: the &xe_device + * @vfid: the VF identifier (can't be 0) + * + * This function is for PF only. + * + * Return: total migration data size in bytes or a negative error code on = failure. + */ +ssize_t xe_sriov_pf_migration_size(struct xe_device *xe, unsigned int vfid) +{ + size_t size =3D 0; + struct xe_gt *gt; + ssize_t ret; + u8 gt_id; + + xe_assert(xe, IS_SRIOV_PF(xe)); + xe_assert(xe, vfid); + + for_each_gt(gt, xe, gt_id) { + ret =3D xe_gt_sriov_pf_migration_size(gt, vfid); + if (ret < 0) + return ret; + + size +=3D ret; + } + + return size; +} diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.h b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.h index dbf8094900df8..b806298a0bb62 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.h @@ -18,6 +18,7 @@ int xe_sriov_pf_migration_restore_produce(struct xe_devic= e *xe, unsigned int vfi struct xe_sriov_packet *data); struct xe_sriov_packet * xe_sriov_pf_migration_save_consume(struct xe_device *xe, unsigned int vfid= ); +ssize_t xe_sriov_pf_migration_size(struct xe_device *xe, unsigned int vfid= ); wait_queue_head_t *xe_sriov_pf_migration_waitqueue(struct xe_device *xe, u= nsigned int vfid); =20 ssize_t xe_sriov_pf_migration_read(struct xe_device *xe, unsigned int vfid, --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C0FF2C21DE; Wed, 5 Nov 2025 15:11:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355503; cv=fail; b=I/LyCalRJFp1mIX8IU8drL5C3PGj92j2ss/0uqoAtO3pzMMAkt+TdMFsNUmPDOi7LbZMxKApGjvDEP8bq2KRAvWovrT7GSFlqKLuhqE8crO9jhI1K/00gC0P/BymrAonumGsCAag2vhP1uTRpOQH7YC0LoZbrAl4vghDy7kNff8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355503; c=relaxed/simple; bh=PPQAx4DeEJiFg2ORqs8oWjlULiyKgbS0+qQGGLDmU4U=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=S9MSO1YAZ7LrGH1jvuaxglux4mTrs8L8cdIhKpSLFajqxh5UNwduS5D8h5OpsvcUVU7N4ulomLjsgBMHHPYTJ6byIizmgxAQ5u8J4EmGAJWwO7rIApL4tHGZ/prDC8nxS6O/1/CW0OO5HegZgACDJUoXCT9IoD70K6VNPuRxKwQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=NyAXMBOv; arc=fail smtp.client-ip=198.175.65.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="NyAXMBOv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355501; x=1793891501; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=PPQAx4DeEJiFg2ORqs8oWjlULiyKgbS0+qQGGLDmU4U=; b=NyAXMBOvv5e7IGyGB84GeouBAFrMxgMDYkBL/pKunZx6sGEi1V5MSYI2 ajIyQ0OhIe3z6jcjRdtKbad9/Kj3GQ+cwlMcR6IUe6jk666sIvbGP8KQd HnZ0DsTbEEZzNK4dEw1MuI4ysMjCAQaHqWOBd6rVy8zSgQCxa/KTVcfIp LGALKkUe8Rnc0mCGeEAcRbv6WI0+5UPntGr8lrDleeoKb/87hTTZsCgaI kYujL11DJWaAUJiG+7QW7sNzPxO2Qll/s1xgt384wKj6V+zUzKn9GFIHZ g69eX2sO8TDQ5VYn6LNI++6znp8wSuvlUGD9OE5D+EnGw+nb/mOjBNjDG A==; X-CSE-ConnectionGUID: kdZRUVDOTty+RXYR3xsrYw== X-CSE-MsgGUID: tb2p9sjgQQm7V7GXkk2ngA== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="68125482" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="68125482" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:40 -0800 X-CSE-ConnectionGUID: CAGB2WqvTUWw8cEaNaY4oQ== X-CSE-MsgGUID: zbYSSYPQSTqSOBbASowCVQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="187426628" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by orviesa007.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:40 -0800 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:39 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:39 -0800 Received: from SN4PR2101CU001.outbound.protection.outlook.com (40.93.195.17) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:39 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yh12YDKO0CgJSOFDJLpPzXnCKCl+WkaXTAdQtX/B+IuuJpW1/tvPTbRfQSA5HTgxrFPruC063aMArFgZq9Ww086YSX+Hd6IgL7otPTP9uf0IyOTZwS5j+xQ6EnqO9knIA4N7LygXdLdsYr5aETR42VVadzC7HJMAKBjcOPJZH+8Vr+Kwq/I+yAiNEC4/xp7XUwLREtpkcaMusCKI05tIZ0nyp0cO4CAIMHWfbyFqypS5dDPzyw02zlXpV6+uuYmP5V4wKEcsbUoN9VwPceJyQioohVgSXVEOen802ov5dg9EP1CWjAYBiCd/Xss2DtzPaSuZf63t6CLVGxL2d9qhng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=1aDp9rQ7TgdszQJc0aFTs7fQW8DNiLThtbjj9Xt1hyY=; b=HV1OQoVSwl8BSadGaPe2zo+7c7tNz/lFLUJKX05NjeL3jbUj8MNNtFFlibVULjEmZu5VRu8VGymmsJYmUssJyxIAKEJpZvQWuy2Jsl8oGm9Uux57eobmTZIddpAjkl7PG+LlIfPo/oRrnuY428oUieIyqITtbEyRhURAsoQhIcUZ8ydqZdcLIXdOB7tkXfbBRZZmZ0aacnKZmnCf5Fr1rGjMbtC5Lsik7F3A9Hf0x45fHFodav/fpwAQzRpbGCxfQLaA+cxX6zZ5t5wsPBSX7GqicrRfy22YAo/f/Nyf+FBAaVYoFSus/v8Q19NT6rcmpTRKdCrJITwuQQnOqz+k+g== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:37 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:37 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 10/28] drm/xe: Add sa/guc_buf_cache sync interface Date: Wed, 5 Nov 2025 16:10:08 +0100 Message-ID: <20251105151027.540712-11-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0058.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:23::14) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: c4ff0d73-8d00-4055-4e21-08de1c7d9d7e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?djRTZkJOck9FYm45VG9MeUdQNStNSnRDNDVmMEd0KzNlSHdXcUtSUWRlckxs?= =?utf-8?B?TWdwKzIzdlYvbGViMHIwUnMwSmp2NkMxaXNHTXVqbzYvelIveUR3UG56dzVo?= =?utf-8?B?Vk9DVGZHL0E3eHpNekcrSWNRczEzeHljdHNGL1hDcHZkdi80aDB1c05TcjNY?= =?utf-8?B?K2hXZVlubWo1NVoyU1c0aDZVb2dEWGlHclJTeWo4R0VnTkFUZjFqd0ZIbFhB?= =?utf-8?B?SlkrM0hsYjQvREhlWjVEVkh3bDQ5azdjUlhEQnJ1dEN2bjYxMElXaGJocmh3?= =?utf-8?B?VlVVRTN0WmpwUHdkMmNHVnB2bUZqWi9ZQUc5MnpwZnN2T3JEWjJKT2YzMEMx?= =?utf-8?B?L1pDU2FVakNpVS9qcE9jcHhUaDVEVHovUXA5dk5JWUtTc0pSMmhlcDZiaHhI?= =?utf-8?B?Uk9QL1paVUF1bWIvVVFNbys0dG5ITkRLN3hBS0IxbXVyeDhzMHRMLzJySzFY?= =?utf-8?B?UE5JUVJkM2dEbjVmYzNiNG5uOUVycCtESm9TeHYwSXJzaFpPVkRjMWJXS3k2?= =?utf-8?B?Wnl3SWwyRGxYZlZyM2FHU2dnYTRTNWRnd2wydVRCNGF4cjRyMVFSVXhTa2Ri?= =?utf-8?B?VWFVOFZmR1B6QkRFS3RJYTk4M1lqb1FRcnVGTkFmOGNETzkxaGdGYVVHbFIx?= =?utf-8?B?QjJjRGpNY0FVRFpPZDlxa0ttUEpERWNRMmhLR0RkYWdwVTZ0M1NVZ3ZGb0ZF?= =?utf-8?B?bTZURHhTMWh6U3lDNjA5ZDhsc2pnb0QwU3F5NUMzYy8zaDdIMXhndDVzUlBE?= =?utf-8?B?Yk5xNUtzY2VsaTVGb05wUlVQU1JaQVNkYnhUQ2xKbXhHQVNGVjdLVGYrNW9a?= =?utf-8?B?QlNJRDZJdUJxUHcvbkhpdlZ4RFBGenVSWUFNMDkvTitnQVpsL3FoRSt0d3Nu?= =?utf-8?B?SkVmRVlYalJrSXdRWStIdnpFRWZHcFVJdjBWQ1JhRVorajVha1d2QzEyb09R?= =?utf-8?B?WHlHTEdNODB0dUdPNjA1WVdIdlJHckdkeS9IOHdyak1xV0ZIK1dKQzgyVnVz?= =?utf-8?B?TEZad04wT05SRVZZd1VLMlhvK1dxYkJtV09MVlM3Tm93cUdpU2trenBLZDRp?= =?utf-8?B?eGhybXVMNW5nalJvSE1USVVCTEJnQ3RTYzdHUHYwM2R4ajJrUVAvZk5qS3NI?= =?utf-8?B?UjdmUnlCbHlsMGdaci9UUEd5Q21JQTdSSlJnK3VYWkljN2NnWVZMWVUvMlFF?= =?utf-8?B?TTJOZzB0NWhoM1BWQjVacFJYdUNvUzBOa00xL0UwU1ovamVFVzVjeC8zdG5Z?= =?utf-8?B?Z1JPVDNDeVhyTWV4Zk9GaFkzRmExNEdkSzV2R0NtbndlR24rTk5vclVJWmdo?= =?utf-8?B?Tm1LbXRvaFZPNkxUQ1gzb0Zya2orbTZWanBlTWI4RzlpUU5lbm15dEQ1MER6?= =?utf-8?B?aDY1OWFOUGxGaGpDTFlFby80NFoyRFBYU1I1dzVGOXVSejY1azhaVThRd3lt?= =?utf-8?B?ZGVNYmN5Wkc0ck5lVEZqM1J1RERXbHZiWnR5TThES3hNZ1BlWm40K3BtQnpC?= =?utf-8?B?U0U0d21ZRmVXSmZMY1pJcFEzTDR6UVNaUjIzbkYwRGpZN3hEMzFQZmU3b1hY?= =?utf-8?B?L2I3QUNrNHJBSjJXbDkxS0ZGUU55Yk5meWFwdjFRWXQ3RkZSa0R6YzQ2T1dq?= =?utf-8?B?Y0hVMnljQ1NicjBKbEdRdm9BbEYwRVFvcWgxd3YwMmlPRHp2U2h5QWNrbHVI?= =?utf-8?B?K2Rob1RYVWZkbnh3WUJiOVhCUDRrczFhS2ZKdklVanRIRVFTbWMySHVGNVhj?= =?utf-8?B?ZjU2N09QaDR4YXBncmZ3UVZjME8xRnNxNzlFR3hXN2tJc1VYZ2liZkUxZXZX?= =?utf-8?B?eHY2OHhMMmY2RDVIVVNLdCtHWkl1RDNQcTJVaURnTlYyZ2hXUUNiRWJEMjBR?= =?utf-8?B?MHlKWjlROGJjbURQRmNzZW5SS0MxRGxiMmJ2Um5ReTVtckczMVc2MFJzQkYy?= =?utf-8?B?UEYzU2JjVHNlRzh6STJCOGhrRzY0Q25hK2tQMDBzeVAzdWNXajNKVE9QTGRu?= =?utf-8?Q?jha3fyeORXoH0Fi/wuZPrTB2+sKQEY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?d1VJQ1hVck9DdTBHZHJkcVpXWnY4VVIvcHR5L1VIUjR2VE56aU5PT21GdzNE?= =?utf-8?B?aDZBZjAzVzlENHJoTVFWanZwTUREaXBNOVlqRGgzcnVIRFBLWlp0Y0ZMNTkx?= =?utf-8?B?U3ZJd3BrWlowUDVUdmQxMVJjVDhWZW9zRVlFeU91WmZOa0JadnU5ZnNQSG5k?= =?utf-8?B?VTZWdzRCaTFKajJkdVFnUFVyR0NjUVg2b0lEdElxNzZDSGQ1WXhqQ0hmZ2ZH?= =?utf-8?B?b3habzQwUDhSZ21mOXoxS3ppRnI5SmtBRlhlZFBNYUFINzBLVGhEUm5QT2c4?= =?utf-8?B?eFFvSGxLaElSclQ5UlpWMUR5T1h4dmU2a0JrbUYwakthS2hwSVF1TFNuL243?= =?utf-8?B?YTJuRVpWd0VvNEd2RVBqb3hldk4xOWFIakR2bDFYdTVSYU5kWEJsbTB6ZlRq?= =?utf-8?B?YnVubmFMREIvVldoaTJwWkdJckwyRUlnc1pLWHZiRXF6TllFN2kyUWU3VWpW?= =?utf-8?B?V1NlTDAxenBFZ0U2ZkNIbGpPSVN2cGJkV043RmdZUUJkUng2alpsWWNsa3dG?= =?utf-8?B?R3NydTduTFA4ZzJObE0rVGtEeWV5em16Y1YrMHB6VHllcy96ZHNZSW84WHB5?= =?utf-8?B?ODIwamVFRnAwZk5KYjNQQklNZ2trL0txSG5CS0RWZXRZLzEwYm5May9HK2tE?= =?utf-8?B?R3dIejMvWFBmRzlaU1pzbWw5Rk5UYWNXQ2JBQ1lmK0RBWWgrUnp5bHZLTG9Y?= =?utf-8?B?cmJ6RTNBV3V5c0g5c0lJZ2pvbXRadEtQYUdmbGxUSTMxZUlnNnQxVjJoeC8v?= =?utf-8?B?Z2JIWExoZmZzODlBQmNoS0R1U0dnSVcwYXIrVElQdGVkNktaOEI5USsxeTVN?= =?utf-8?B?T2tmejNHOGxZMmV2bHM4amhCTkxtTHp1djB5S3dlVHQ0ekdJRS9XazRtQjNU?= =?utf-8?B?Z0tOZ0dRZ1lJblFYSUdvQ1AreDRjaE0yU3hXUS93bURBck9YenMvTTJPRFB1?= =?utf-8?B?U2JiOTk1UFVQZm03KzMyMXA1QU5janZ3TmlGeUFSRDYrUzZwMUtER2s3dTly?= =?utf-8?B?NUI5VTZXbkpUTVdITFdSeTQ2SFlVUmEyWWpYZnF1UGQ1dlNiOE1kS0wxbkNL?= =?utf-8?B?dk9FVk1MOW9NdjJrQnpGSVZBcDVUME56S3YxTmRucDBOamx1WVRJSnV5Nk5G?= =?utf-8?B?OEVGVERCeUxKOWNYc0ovdlRZUzVJUVByejlPdzBFNFdjRzFkQU5IaUxrekdn?= =?utf-8?B?U1RUclNKeDg5Sk1ML053TDNuc3NJbGk0MG1BZXZvQlpQVmF2aUVpVHFIM0pR?= =?utf-8?B?RVdIUjJaaU1nKzcxN0JaamNkbEZOL2xZSkpwc1RUQm1ZMzhWRTR5OWsrcnpp?= =?utf-8?B?ZVppQ2cxdEZUOEFRTGozZUxIbUhQNjBITUNFK1RPM1hTeVFpaUhUQ2hXRUNO?= =?utf-8?B?N01NTEYzRlQ3alRTamJlL0Q5b1FER1lPZjdPM0dzTmJPU3liM3FxTFRHZkVx?= =?utf-8?B?eEp6S29FMnVpcCtBSkZ1R21NTDFXaGVDTU1ZMWc0Y2pZeTUwWEhvMnJ0K002?= =?utf-8?B?ZVhLWWpNMUN6QVpKMDVqK1NpdGh4c1RCR2thNzZSRng5clIyNzdiODVkYWRW?= =?utf-8?B?V2ZldnJieXhEQ3FIOW5rQlJxTFRrT2RkWlBTUW5JQm5zOXJSZ1FwZ2g3K01o?= =?utf-8?B?cXZBWjM1VEo1RTIzaUdhcEpVd0pGYTArYjN6WXduSzlGRVVPYVN1NWRjZHZD?= =?utf-8?B?R0V5WHJhSzBlMTJvRjZYajdHVW0yc3VXYmFwWVpSODI0MjJ3TGRUdjJqaENn?= =?utf-8?B?WVF3SE9CclJpdDBlRXg0WnVtc0FTZTFack5QRWZkK1F2bnExY3FqSmdIVTdN?= =?utf-8?B?S3dGVHlFQnhEazgzU2pIMkNFWW5mSkhaWUs2Z1pZa0lrTGo3K3I5SEovOUpN?= =?utf-8?B?eTd0NFZiaXk2eGdwOTY4SWhpY3FGWWY3TXVBQTh5YzhURmM1OHdpUnppYXV1?= =?utf-8?B?UkFXREltcWVHcE11ZzdGYndTcnAxSWhLMnptS1dYVnM3alhPcmI3NXNYdEov?= =?utf-8?B?Zk9vNWg5UzRRdE50anBHQllsTlNhL3BBK2k3U2Evc2xaT1lLSVF2cm9zQ3d6?= =?utf-8?B?azhlVGZhU29sQjdKQ3hqUGsrV2xBQ05BWklFaEZPR0s3elpmVkt3M3RCZEgy?= =?utf-8?B?WEcxZm8wUVNYdXR1aHlxUHR1QWNNMFErWUtnWjdvakhoZGFuSHZiWVRBOGFZ?= =?utf-8?B?YlE9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: c4ff0d73-8d00-4055-4e21-08de1c7d9d7e X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:37.5287 (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: dgrgcHrS6pL86HXLvL9vtt+NmRtWwovrLlbV0GikuGiw+At7bqksVBoJWd4SgMRKg1jXOOMeKLK5KTkvuh5zEDWAUYVDQo7202T8+FHCwQg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com In upcoming changes the cached buffers are going to be used to read data produced by the GuC. Add a counterpart to flush, which synchronizes the CPU-side of suballocation with the GPU data and propagate the interface to GuC Buffer Cache. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_guc_buf.c | 13 +++++++++++++ drivers/gpu/drm/xe/xe_guc_buf.h | 1 + drivers/gpu/drm/xe/xe_sa.c | 21 +++++++++++++++++++++ drivers/gpu/drm/xe/xe_sa.h | 1 + 4 files changed, 36 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_guc_buf.c b/drivers/gpu/drm/xe/xe_guc_bu= f.c index 502ca3a4ee606..4d8a4712309f4 100644 --- a/drivers/gpu/drm/xe/xe_guc_buf.c +++ b/drivers/gpu/drm/xe/xe_guc_buf.c @@ -115,6 +115,19 @@ void xe_guc_buf_release(const struct xe_guc_buf buf) xe_sa_bo_free(buf.sa, NULL); } =20 +/** + * xe_guc_buf_sync_read() - Copy the data from the GPU memory to the sub-a= llocation. + * @buf: the &xe_guc_buf to sync + * + * Return: a CPU pointer of the sub-allocation. + */ +void *xe_guc_buf_sync_read(const struct xe_guc_buf buf) +{ + xe_sa_bo_sync_read(buf.sa); + + return xe_sa_bo_cpu_addr(buf.sa); +} + /** * xe_guc_buf_flush() - Copy the data from the sub-allocation to the GPU m= emory. * @buf: the &xe_guc_buf to flush diff --git a/drivers/gpu/drm/xe/xe_guc_buf.h b/drivers/gpu/drm/xe/xe_guc_bu= f.h index 0d67604d96bdd..c5e0f1fd24d74 100644 --- a/drivers/gpu/drm/xe/xe_guc_buf.h +++ b/drivers/gpu/drm/xe/xe_guc_buf.h @@ -30,6 +30,7 @@ static inline bool xe_guc_buf_is_valid(const struct xe_gu= c_buf buf) } =20 void *xe_guc_buf_cpu_ptr(const struct xe_guc_buf buf); +void *xe_guc_buf_sync_read(const struct xe_guc_buf buf); u64 xe_guc_buf_flush(const struct xe_guc_buf buf); u64 xe_guc_buf_gpu_addr(const struct xe_guc_buf buf); u64 xe_guc_cache_gpu_addr_from_ptr(struct xe_guc_buf_cache *cache, const v= oid *ptr, u32 size); diff --git a/drivers/gpu/drm/xe/xe_sa.c b/drivers/gpu/drm/xe/xe_sa.c index fedd017d6dd36..63a5263dcf1b1 100644 --- a/drivers/gpu/drm/xe/xe_sa.c +++ b/drivers/gpu/drm/xe/xe_sa.c @@ -110,6 +110,10 @@ struct drm_suballoc *__xe_sa_bo_new(struct xe_sa_manag= er *sa_manager, u32 size, return drm_suballoc_new(&sa_manager->base, size, gfp, true, 0); } =20 +/** + * xe_sa_bo_flush_write() - Copy the data from the sub-allocation to the G= PU memory. + * @sa_bo: the &drm_suballoc to flush + */ void xe_sa_bo_flush_write(struct drm_suballoc *sa_bo) { struct xe_sa_manager *sa_manager =3D to_xe_sa_manager(sa_bo->manager); @@ -123,6 +127,23 @@ void xe_sa_bo_flush_write(struct drm_suballoc *sa_bo) drm_suballoc_size(sa_bo)); } =20 +/** + * xe_sa_bo_sync_read() - Copy the data from GPU memory to the sub-allocat= ion. + * @sa_bo: the &drm_suballoc to sync + */ +void xe_sa_bo_sync_read(struct drm_suballoc *sa_bo) +{ + struct xe_sa_manager *sa_manager =3D to_xe_sa_manager(sa_bo->manager); + struct xe_device *xe =3D tile_to_xe(sa_manager->bo->tile); + + if (!sa_manager->bo->vmap.is_iomem) + return; + + xe_map_memcpy_from(xe, xe_sa_bo_cpu_addr(sa_bo), &sa_manager->bo->vmap, + drm_suballoc_soffset(sa_bo), + drm_suballoc_size(sa_bo)); +} + void xe_sa_bo_free(struct drm_suballoc *sa_bo, struct dma_fence *fence) { diff --git a/drivers/gpu/drm/xe/xe_sa.h b/drivers/gpu/drm/xe/xe_sa.h index 99dbf0eea5402..1be7443508361 100644 --- a/drivers/gpu/drm/xe/xe_sa.h +++ b/drivers/gpu/drm/xe/xe_sa.h @@ -37,6 +37,7 @@ static inline struct drm_suballoc *xe_sa_bo_new(struct xe= _sa_manager *sa_manager } =20 void xe_sa_bo_flush_write(struct drm_suballoc *sa_bo); +void xe_sa_bo_sync_read(struct drm_suballoc *sa_bo); void xe_sa_bo_free(struct drm_suballoc *sa_bo, struct dma_fence *fence); =20 static inline struct xe_sa_manager * --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A8A533358D3; Wed, 5 Nov 2025 15:11:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.9 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355507; cv=fail; b=srblg6QhrS6YmLiTBE2RHlgrN6pqmAGR6oUrO53hfEkmuGw8xtgTe/dawV2iylwkPkJcPjS3e0MtwLMCevTPxLiAHp5NxpALahS+2fDmg1oa0dL/sFGIL8WMSrheN/aIHPaONjj5llR+leYrEr60aUgRHyyiKvu6djmQIyNDspk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355507; c=relaxed/simple; bh=ly4mmcW/4HH/yrSN8by/82mmuBmRUJWFS3MaB/oSA4w=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZyGwFLScdZDSSWx9nh8zxKQsIPFPAekr0EB2nMHFM1KM44dMN0F6uRQG5W4S1oVIQGB4RDL8KBHYeTP0E+4Ct0RHOkPFghMzaxdnEmnrk8NI+4TJiptd3Ohdf6ySuDI3ypaT/Y6L0LJDkOOQ2zWnbktDsBKSBHy2ZlU5/DSN6TE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Lr2MiOGu; arc=fail smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Lr2MiOGu" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355505; x=1793891505; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=ly4mmcW/4HH/yrSN8by/82mmuBmRUJWFS3MaB/oSA4w=; b=Lr2MiOGuLiti//cBqSK168Q+32MTq+kfomO4aeX9O4lJZ6eowASoAwiG LyIOOH4Npxmo3z5GdZ/31cKTPEvbwvqUdrjEa9dtJpXHW8dP1BG9q4LIk wSEGAuhJ73qbfTPH7RCSOiTqaAjLqpMAQefx1ML8NO3ltNAf/TTkoTjVj fDO2miUJfJVyJY1/NU0j93Xb9YDO4JWwL8RIlCKyTKTXnqgk33WSBIbV+ sRZNFSWk5s0X8nMEQnMJwl1fr5Gq2hlQiia6ONElgEnuQdLyhilZGSmK+ TNCXiz51gKL+wHUkcqQi6aD8Sg2Oy+v/+5yuUaMXFtx3JJ0F2TOBxbCjN g==; X-CSE-ConnectionGUID: /2O0HfBASbmWiWGTA3Fw1w== X-CSE-MsgGUID: fVMDrDu4TCOAbtpZ0AViCQ== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="75153160" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="75153160" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:45 -0800 X-CSE-ConnectionGUID: pthxuhd8SmWaeWs5ichcmA== X-CSE-MsgGUID: R4N1IAkFTS6F31HKX4pIpQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="192649584" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by orviesa005.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:45 -0800 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:44 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:44 -0800 Received: from MW6PR02CU001.outbound.protection.outlook.com (52.101.48.66) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:44 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TxjtyN1+lN2R19zbOEwmyo8pzNr4uMLpVPxLjVuBpacpDxwpgUi0RduFK+KH1vpPzC9r9giAFdZKFraOuxOcFBz1MoHj0BYZ7YNsiUzrbDZlMlZKNJQ/T623xSDPLYvk71MAYd6rsVCozvPbBc80ezkz3ZaYgHMN6jOp7VZEwpaa4h7rle8EZeBveZiX1aEWw97k90aRohHi2l10GQfnyIhxAiZN0yg7SY23MXIZ3bMCMRmgCfU663jhYUUrlcKKlmIxf1NXXAZBY03RBmqJ5YuUPfIekC2DnuE1qcAqmPHTkDTNUc4MsH6Ss9h/99DhdKv99gtT6qcUWS6JNYBi/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=U92x7DWXvcMQP8so1PdwErrXJ0lIhhGhewZWjHxl0gM=; b=LVzK5l/o3F3dwfU2y5+YtOXdjZzvgUzO6NY7BmXbwa2VrR1cHJI/6MHJJ5qPIMDkmL317ifnmjoVi7/tx8GhJ33TetKYbUPs5eR0zcWTjARMSd/nbj7OnI6XvgPBK38Oha+s5LNt5BwDvSPWMw8dlUtpR1LM4SWF1/roydO9l+W44NKs4PbxLR610OOzLG0zRgnrHNu/lS6X96ikVj8d/xdJ6HGT2mX3YjUR+IJTXEG3eGEGmSydYYjAO0DOz/Lly1yPERwcRrTV2mm7O4wYISnuhZjDGW7+Sb27cUmkvAVgnCnL9x5M3cUip7VfkUF8dxkZFAyaEZJlien1gUqQUg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:42 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:42 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 11/28] drm/xe: Allow the caller to pass guc_buf_cache size Date: Wed, 5 Nov 2025 16:10:09 +0100 Message-ID: <20251105151027.540712-12-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: WA0P291CA0007.POLP291.PROD.OUTLOOK.COM (2603:10a6:1d0:1::11) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: 593c39cb-a01a-4d54-9224-08de1c7da08c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?aEhrYTBXcnc2T3ExUnZneEJmaFZGa3FISC84TDJjUGE1NHk2Vll6MERpYUs1?= =?utf-8?B?Ym9KVE1EWGVjdXZxSVkycW1QdjNaLzJjY2ZPeGkreU1IL0YzTjNKejI4WkRZ?= =?utf-8?B?SXJscUd3bVJWdldjbEFTMHVRcTkweklyOXY5cmRoWUd1YUZZY1pMazFaRFFD?= =?utf-8?B?TXFzM2xsMncrb2I1T25nWTdvSnNBU3dNaEw3dCtyc3ZoQXdJQ2tCN3RGeVMy?= =?utf-8?B?bEtLb3dQMDZ2aVpOSE9Nanh0MTViS0VHQitDNnNVNmRZT0tYWEI3dlpNdzZ0?= =?utf-8?B?QVRZdVNQbUlpNG1CVkJvblZsOVdYbnRNNyt6OUFST2MzK3h1d3k3V1JYZ05u?= =?utf-8?B?Zkk0S1g5TGUvSy9NUTZMNk5YTzM5ZmJUU0o2VUVJR2FmVGVPc1E4RStaMFBi?= =?utf-8?B?SjNmRnlYeWdIS3JGQUMvZFdqWHg5a2l4TXJuQm0xb2VFYzVYbStRbmlsQlZa?= =?utf-8?B?TE5tZER4bTh2dXd3TUxwMS9xdURkS0Q4aUVaRkd4ZjJnR0Y4eDJxUVRQVGtC?= =?utf-8?B?dW5VRnZZNFd5aVFyZzE2bVI3bEVuK2ZacmVaNlV0SFgyQlBTYUVHSlFHV2hI?= =?utf-8?B?cHhWQWF1UU9zZnp5b3kxNzBPWWdYaFB1aU9NWlFYUnNMMFlDT3l1dmhIOUpz?= =?utf-8?B?czZaK3B1SEdWUUhYejdZTDB3TXFJOXBDUFVaNjRIOWRPN0hQTkFzR2liTFps?= =?utf-8?B?TEJxMXZaL3FPbTE4SGVVbTBXeGVuV3RxUSthYkp5c0ZnSjVteFdoa1ZTeDYz?= =?utf-8?B?WmVkWnNZL1M5cVdmRWVZQVN4MWxHcTBsbmFqTGtWL3dpMW1ibTlYMWQySndP?= =?utf-8?B?N3krS1c2MW5TdDFRQXZYdS8yZXBzVnZTTUt1aGtDSEhqc2xaZWNBWjBrMUIw?= =?utf-8?B?YkdLcUovL2dlRWlZVzA0ZWJLMTg4MzBtYTNWNGZVZ09oUU42NGUrc2w1eWtS?= =?utf-8?B?NU5kOXVTazFjbmtNV05sTXE3bG9kZVh1S29TcW52QXliT2lPaGU0dURDUTJO?= =?utf-8?B?TzV5Um0xeDhUUEJMSjBKc2VBeEwwNzh1RElZL1pXYUNnVEdyeDkvNllUK0lC?= =?utf-8?B?Zm8wNVpZYzZJaGN5bHhYcVltY29LOVZ1WjdCTHY5ME5GN25rRU55MnJ3THIy?= =?utf-8?B?N3ZXSVhYV004a0NCbWNrNkdSeDFjSzhkR2V1T2ZvME1rNzF0UmNuVkZad2hy?= =?utf-8?B?SFN4bTRIK3RQY2xIN3pya2tXNUZLcHVEek5iVkVKbndzd2l4MDRReFF0YzRz?= =?utf-8?B?Ykd0QjNKcWxYeThRSi95a0JuZWUvdHFYZlFld29NYVBUV1dmeE0zREpralNw?= =?utf-8?B?RWJ0U054enhSYUlEaThaWFgweSt6MnQ0OUZpc2E1MTZ4eVJQcHpKaERJbWUx?= =?utf-8?B?eFJ4M2dtN0wyNXJ1allhTndkMGJodXRZaURzcjBkcnNCNlIzdGFBNEF4RzJ5?= =?utf-8?B?dTR3RGtXSzVNa3haZXVEOVJpbDdEaEhFeVNvd1RZUGxQZXY0U2ZuZkdGR05L?= =?utf-8?B?aWpMSFZVM1NTT1I5Y05aNDltVkxRQ1p5clhNdmtxSitqNUVKczhDcy9uVW9x?= =?utf-8?B?U3MvWm5JKzVlTkMxcHhRbEpWZUsxcUc4eURkOWxsa3hTN2FiYU1tcXN1d2hn?= =?utf-8?B?dFppM0Z3NExNUzYyN1lIV2I1RituNm5SalkyWDkrR3JUMmlqbXB6SC9nVkJS?= =?utf-8?B?OTBZTjdwZzJzL0ZVMTVreFVaTzlpQjB4WW9yYU9MQ1RTR2pSWXFmS0ZnM2ZU?= =?utf-8?B?eDEyWXVGOWxMOWpmb2FQU1VWd213SVNOaVhhNkgwVDVzYWovU3V0bmYzR0Jq?= =?utf-8?B?Q2oxcGI1N282YWs2UW80bE9VcHhMTlF2Zm5xa1ZRbkFncmwzTE0veE14Mk9P?= =?utf-8?B?eTRabTBXQmNCUG1MTTMrc2NYelMzak9DQjNNc25odCswS2ZzdkJNS2dHQVcw?= =?utf-8?B?MTdzdkRBeUtkQ0N2aVVGRGc4QlNmRWxaZHZ2cmZVQnF4akpNTlp4ckVRcmkv?= =?utf-8?Q?isCgHC6qWJHp4mY4IB360RxVEuyE7o=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Z3RKWXIxakpIakErK240RThMQVRjVUlGemFRNXcrU0RrdWVZcFcrRzlTY2dL?= =?utf-8?B?bVRWK1o0UHBsSXkrY2tKUklZUEN2RER3M0VxTXB2cWxhY3VoMVhQdUpqN05L?= =?utf-8?B?MzFOdW5kSVZMMU1iK2hVb3J1WXh0MmV6QXdkWGFoZ1VDTi9ZOFlyQnpEOHM0?= =?utf-8?B?eFBCQ2w0UnZBTDhZNWpKRW42aHUxQ0tWNG92aXYxNjd6eS84SHN2cTBrcklh?= =?utf-8?B?UzNHQlQxR3JoU08yWVdIOElnZDBDajlBWXdqbWxMSlBEaWE5V2lBdmRxMFBX?= =?utf-8?B?Z0pqL2pDMHR5UEt1Q3lkdWVDbUNSN01MT1NDaFE4QWFZVk1IRkhnenVzZWEw?= =?utf-8?B?MjNHNVlndk90RTVXcVVpdEtaT0s5eEsrd1VIUTR6eWJpNVA1V0VGVGNmaG45?= =?utf-8?B?TDhodnpvR052YnhYTVZFaEp0MjVvaWEwUSsrYzNRTlFDUFdJVDFWQVcxb2t6?= =?utf-8?B?d1JKZHZ1Q0JUeElIMWIvUnpqSGNzRVU4citPRnlIZG91L0RNWklwTFppUUpD?= =?utf-8?B?ekRGaDQwcHdGKzZyZG02S0FPdTVqbk0rWGZCc0RXTnVTQkVZZm1lZjdYSUlJ?= =?utf-8?B?NTk5QndCb0h1ditGK2xQNG51Wm9qdTNTeFRRbkkzYVVNc3RGNmZQMFFVN3FQ?= =?utf-8?B?T1dDY2JkdFhGM3AvZEtJamdIYzNBcFhFY2tyMC9iNHJLR1I3RzhwV0cwOEZW?= =?utf-8?B?RVFkQkpnQTh5WXNtd1VnSnBsR2I1QUxoRnNYT3g3UldDUUxXSDhiZVhkNXk5?= =?utf-8?B?bU1iS3BBZFdaTzNKRVdTR0xObitlSFVqUkpaeHJiTnQrNkplcnN4WEJaSVRV?= =?utf-8?B?VTA1a2ZqRk15LzZPeGg4YkNZd1psNDc0Rk5hc2dJendqWVAvV0RqWHF5NHhH?= =?utf-8?B?bWRSODVoWlBLYlN5amx3eGdJeTRSWEFZajNCS01TcUZ5Q00wWGZSbWlvMjBr?= =?utf-8?B?YW5pTFhhT3QzVlJoRU51ajNCMGlaek9QU21GblF3ZzhON1Vhbk5aTDVrNWg4?= =?utf-8?B?WjlBSnVud1UydVQ4ODdIeUZFUzIzM3hPMXltaFR4Ym5CQlVYQlNRZzRSb2Vr?= =?utf-8?B?WkVLWU9DUU5JdUNrM1drUlNwc2FwbTJkdFhWMXJlWldxek1GYWZ1MWNJZUNk?= =?utf-8?B?VkFsbTRJS0RTWCt4MUhCNnUyblNJc25tM0dmTi80QXArYUdwSjk4SUlNKzI4?= =?utf-8?B?eW9yRnJ3WlB2TFR4SjZhZW9iTTRhVjZKM1pFdUliUFNBZStlcExmRUFBSDF2?= =?utf-8?B?YzNwckQrRDJNak9rRTk5Sm1ad21SZ2RBMXdna0xuQS9aU2o5M0s4YmUva1Z1?= =?utf-8?B?TnY3a1dEd3ZEa2s2WVZWS09WREVkNUpjNEJlVTRCNFpPNlFZcUhmdGRMNmhv?= =?utf-8?B?ME1saG9NSzkwTU1veFJmT2hQVEwzemQydkxaUFVra2l4ZWZGd0dobUo0NHg4?= =?utf-8?B?a1M5VW1KS25QdzVadjFLNGRrSGxHOVBOUlRhbjYvcGZ2STJVbXJmY2RZQmVB?= =?utf-8?B?Q08rd1R4dWV2NGFsZ1ZEZXpXbHBOWGhxR1RFajF4bTNMTWpVQXQ0REZ0dEp6?= =?utf-8?B?d2R3TnRjcm5wVUVYemJmc3JYTzBWZ3hBS1d2bTAzdkZMd1pTbXFWQkpxZElx?= =?utf-8?B?WHVNRmVEUWp3SlkyeXV2SUt1SXVXMGl3VVBkeDI5cEhSQWg3aDFCYnNnREM3?= =?utf-8?B?anc0ZEc0bkRWZ1h2SkdJOTRWcnJXMG9yZVJ2OUtnbmxITW90dGRhK2ZQWUhl?= =?utf-8?B?Q2RYbDBPM1NxOFRGMVRidWNHTk95ZVBwOWJqRHNHSU1qa0F6bGZQQ2k2TTlD?= =?utf-8?B?Z0VwQWsyaXdJZHIwYjJWaHFXSXIvM256SkpYcEZNcVlaT0lUdmY4Z29ubFZU?= =?utf-8?B?enBhSXkxSnVFQTJNaGRIRWJzTXRIVGhBRHFRMFM0RTBOa1dkWUZtTkNJb3I4?= =?utf-8?B?a3hBUFg1dFh3cm9zaE5GSGkwRXl0am9tVEFIaUVFS0NGM1BHaGpQK3NqWTlt?= =?utf-8?B?aHJFVnhpUW00Zy9iQjdxOUwwQlZwYTVtWFdKaWk0L1QxMGx1ZWgyb1NTMnZV?= =?utf-8?B?RitsMlVYWk1wMUU1U0Y5d3hVMUt6a2RsbndEZTgvYkl2cm9ERzkzaXpBSFRW?= =?utf-8?B?Z1FNZnkwbU8vMG92Z3A0bU5wUHI4cmt2dk9DTjNqZ3hlY0JyUWV4dDhYaEk0?= =?utf-8?B?Mnc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 593c39cb-a01a-4d54-9224-08de1c7da08c X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:42.5116 (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: N2J/8eFMf7RnZ2ysAEtxIeIZWXg8cFTXTZ3QQB1t2CrscB+o9J5ZQpCCWNNAgZuVLJn7mjbZWgCbdAHVW1SGpXvTw6Nh6PiqnyvaBK55SpU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com An upcoming change will use GuC buffer cache as a place where GuC migration data will be stored, and the memory requirement for that is larger than indirect data. Allow the caller to pass the size based on the intended usecase. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_guc_buf.c | 44 ++++++++++++++++++++++++--------- drivers/gpu/drm/xe/xe_guc_buf.h | 1 + 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_guc_buf.c b/drivers/gpu/drm/xe/xe_guc_bu= f.c index 4d8a4712309f4..3ce4425001303 100644 --- a/drivers/gpu/drm/xe/xe_guc_buf.c +++ b/drivers/gpu/drm/xe/xe_guc_buf.c @@ -13,6 +13,8 @@ #include "xe_guc_buf.h" #include "xe_sa.h" =20 +#define XE_GUC_BUF_CACHE_DEFAULT_SIZE SZ_8K + static struct xe_guc *cache_to_guc(struct xe_guc_buf_cache *cache) { return container_of(cache, struct xe_guc, buf); @@ -23,21 +25,12 @@ static struct xe_gt *cache_to_gt(struct xe_guc_buf_cach= e *cache) return guc_to_gt(cache_to_guc(cache)); } =20 -/** - * xe_guc_buf_cache_init() - Initialize the GuC Buffer Cache. - * @cache: the &xe_guc_buf_cache to initialize - * - * The Buffer Cache allows to obtain a reusable buffer that can be used to= pass - * indirect H2G data to GuC without a need to create a ad-hoc allocation. - * - * Return: 0 on success or a negative error code on failure. - */ -int xe_guc_buf_cache_init(struct xe_guc_buf_cache *cache) +static int guc_buf_cache_init(struct xe_guc_buf_cache *cache, u32 size) { struct xe_gt *gt =3D cache_to_gt(cache); struct xe_sa_manager *sam; =20 - sam =3D __xe_sa_bo_manager_init(gt_to_tile(gt), SZ_8K, 0, sizeof(u32)); + sam =3D __xe_sa_bo_manager_init(gt_to_tile(gt), size, 0, sizeof(u32)); if (IS_ERR(sam)) return PTR_ERR(sam); cache->sam =3D sam; @@ -48,6 +41,35 @@ int xe_guc_buf_cache_init(struct xe_guc_buf_cache *cache) return 0; } =20 +/** + * xe_guc_buf_cache_init() - Initialize the GuC Buffer Cache. + * @cache: the &xe_guc_buf_cache to initialize + * + * The Buffer Cache allows to obtain a reusable buffer that can be used to= pass + * data to GuC or read data from GuC without a need to create a ad-hoc all= ocation. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_guc_buf_cache_init(struct xe_guc_buf_cache *cache) +{ + return guc_buf_cache_init(cache, XE_GUC_BUF_CACHE_DEFAULT_SIZE); +} + +/** + * xe_guc_buf_cache_init_with_size() - Initialize the GuC Buffer Cache. + * @cache: the &xe_guc_buf_cache to initialize + * @size: size in bytes + * + * Like xe_guc_buf_cache_init(), except it allows the caller to make the c= ache + * buffer larger, allowing to accommodate larger objects. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_guc_buf_cache_init_with_size(struct xe_guc_buf_cache *cache, u32 si= ze) +{ + return guc_buf_cache_init(cache, max(XE_GUC_BUF_CACHE_DEFAULT_SIZE, size)= ); +} + /** * xe_guc_buf_cache_dwords() - Number of dwords the GuC Buffer Cache suppo= rts. * @cache: the &xe_guc_buf_cache to query diff --git a/drivers/gpu/drm/xe/xe_guc_buf.h b/drivers/gpu/drm/xe/xe_guc_bu= f.h index c5e0f1fd24d74..e3cca553fb004 100644 --- a/drivers/gpu/drm/xe/xe_guc_buf.h +++ b/drivers/gpu/drm/xe/xe_guc_buf.h @@ -12,6 +12,7 @@ #include "xe_guc_buf_types.h" =20 int xe_guc_buf_cache_init(struct xe_guc_buf_cache *cache); +int xe_guc_buf_cache_init_with_size(struct xe_guc_buf_cache *cache, u32 si= ze); u32 xe_guc_buf_cache_dwords(struct xe_guc_buf_cache *cache); struct xe_guc_buf xe_guc_buf_reserve(struct xe_guc_buf_cache *cache, u32 d= words); struct xe_guc_buf xe_guc_buf_from_data(struct xe_guc_buf_cache *cache, --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E31EF330B34; Wed, 5 Nov 2025 15:11:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355512; cv=fail; b=l5mEuIAGKOsIp90isgTbZ/RlPQ7LIHM6QzIVyl8S5o589qohb0x8YuRb83ZP8ox3Xs1WeOuqzIWkoZ7eB32SuIVghXIiRGdwmd21fc7Atf31qhdXeW8lk68nUTlsn0/8i3dvyElEUaTCvOcAicUJfpb6HiL7aV8mI3MPZ1aCbLY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355512; c=relaxed/simple; bh=SA3j3Vb1q9YxeiVO1ICzJ1G0CIhUHY1HpX8fdasO8jU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=oYgo9d8QUq/oWN3qT79vW+TUIu3MmrfwkypjeJTM0WC6tZFDXbORUoZs1D1ee18HTwMOniIGyE3IFMzwzX3RkhRDIQgs8zw1NnONYKeEv6zYsJGTePcRvM9+VB79Ka0+OdsdOjiQ98gMztG7Q1KGGHlAirU/kYD5zTozlzeFPXw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=I2BIUHQb; arc=fail smtp.client-ip=192.198.163.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="I2BIUHQb" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355511; x=1793891511; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=SA3j3Vb1q9YxeiVO1ICzJ1G0CIhUHY1HpX8fdasO8jU=; b=I2BIUHQb8KaTdewgjiNRClJi5pW1m324WHTDCOgWsS2+91J5iTizuQt/ XUNns66zG+xrdI29nkG5DXDR2j9wjDpQddrnRz4UKp4zhVqDL+X9D6dZ1 i29DmkQC80JdefIgukWqHbYiuOZlLAe92xwyRgcPatuRt4sfajlPA1WXj yKeZ6hJBP9uvGnK8xErIqmvMADpmNMo5TgyDcq8FR1D3vkSCfSaYCEPM+ V0tDlh6K9PPXlfw4yTqmIH+jON5C8hHDfB3cTEDtT5bIDqlv+SPwp22WB C1ApdKDybS9YfcCCKmW3XvmshSytl/NZy/W33Yc0blWMJr/oxHSgwbKrG Q==; X-CSE-ConnectionGUID: sqFx2B/2QDW7bjHCUOGuRg== X-CSE-MsgGUID: E9VwmrwTTNWd73GXO6gaBw== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="63677341" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="63677341" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:50 -0800 X-CSE-ConnectionGUID: SfT/KcpTQ/irUcLjPnnSHA== X-CSE-MsgGUID: ZJBk51PpTs+0kmC4XzgljQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="186766426" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:50 -0800 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:49 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:49 -0800 Received: from SN4PR2101CU001.outbound.protection.outlook.com (40.93.195.34) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:49 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lM65onmg6n9GvcpZsnAj5pxys7CaDarzfP6hdfoNtS7QhSjF+wkHfU2dx8KHgM8/8EQEBEzqqf63RKif4mQMd2WIMtInYBUUk9Gj8qM3lve0WJSNy+NRa1XEl/hQMFxtcz04m9rI1BI+s2x6dVxxL+Hj6idoMx2OGuyRNP+QJ/4APiQSvNiHUD2Ov2GSRJz4XHT9OiGcL9APsi1SaVdsymwgZef6O0E+x0VNvGiuppNIUwoaokXk+pw4Xh0ohNGC5vOEsJjYVsqoky3D1Gx4qUaBaItV5mkGjYRRgDS+tVBrr5CT1bdTwIOhfIihXD0B4KEtMO7638wTQ6jOh5gmuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ws1ix986qSEmRc8j1MxC9ZwHETCxlDj9nlCCxVAy8Ow=; b=e/GzWjtx6kug9PscTzL60HTUzql59rs2sjyd/QhKZzrXJsAi2SrEWmD+NPJEoR8DwBeWza0269ZgPqEfvmATD7CDWQX8DJdQ6kZs1J1VZjjCBVNrjSaBsCxjuBmBgDPeJBZOC/LqRv53VkJeXN6M2OoILJu6/zCVeR6HEUsvEC8r9G3AOlRwOIgWNfPqfwSmGY0zZ7FQC0FT6ap9djdQ77JcFH1DluOiAD3CmUj2qFVaIBohB3JvfSpnqFBEWEIMIDa9sl2+yf8sxPP/h0S1LhpjvS1lrA7/ZBGZ8wQp1+3OibegxyALlOmmvbLgvgZylk3Y5gR0nRX4Su4z9pzbEA== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:47 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:47 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 12/28] drm/xe/pf: Increase PF GuC Buffer Cache size and use it for VF migration Date: Wed, 5 Nov 2025 16:10:10 +0100 Message-ID: <20251105151027.540712-13-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0023.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:15::10) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: 78f0425c-694b-4fbe-019a-08de1c7da377 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?amVVTktNckE2QlhPU3RsMWpuNUlwc2xSWGNScy9RUnFWNHNieVV4Rm9td0U5?= =?utf-8?B?WWo2dXJBRThzWXdzUmFGYUsxaS9CTlNRajF1QzVNVDR1Y3dZeUdwc0F4c0s2?= =?utf-8?B?b0RzQ0ppcHZzc2d0Uzc3cXZweHZxM0xRK1N1L1N3UlRSTGtQUGMwMjJ3ZjRu?= =?utf-8?B?cGg3NkdTM3Y2SW1EVFloV1dQenpmKzhTWHFoNUQ4R1B2YlI4bVU1NndDdUtq?= =?utf-8?B?VEozbEZLVG9wbVcyL2xTS1htcGpkQjNjZHo5WUxPTHdFVXYyNXA0My9STzJT?= =?utf-8?B?RG9LNXhiZWczd3pJQjVXQXhaMGNLaEt0MEdlK0lxTXdqL21wd2RSWURpR1N5?= =?utf-8?B?WWdHaUthQyt3ekV2cjhWbUxRZnpRanpSYUp1bHFxK1FCdzY1d0Q3ZXR2NlZE?= =?utf-8?B?SjBKWDVzZEJhQmtnZFNybkdqTjZPelJabHVhQW9sV1V6Ly9MY21NV2NLMndi?= =?utf-8?B?bS9uL0U3YldPdGs0czRGK2d3SVZma0dKbnpGMGV1Nk5SVitVUVh2TS9na0o1?= =?utf-8?B?OVVqQkVEVU1mbmNESHdXa1Ircy91QjltaktQOEtQSzZESExHQ1BvQnVHcjdu?= =?utf-8?B?TG9VRVRidXJPeXYwOEhOS3pmVWtZbG44dGttQi81YlV2NlU2Tm5BbXdEV3Q5?= =?utf-8?B?cmtMVmFWMDRpd29aakZwV0JKWHlrcDN0dmxWVTE1WmZqZHBQQ1dLRVVQN05N?= =?utf-8?B?dXB0QkV4RWJkUWFTMDBJZkE2ODJwdDRleU1PQkNDbnlicU1HT1llWkFHZGF5?= =?utf-8?B?RnFYMWdzbnVyWG5OTndqc1ZEbEhWSWl2N1FQb0ZQcDFxZVpRRGNXcUxVM1o4?= =?utf-8?B?ZjBoeWREeGFqOFc3a0sxWm5WZ1lPZ254Z3VDNmNUYy9YcHp3SW11NHI1UXY0?= =?utf-8?B?cWxQTkFVZnBtYmQxQmRQTUZKeHYyWWdpWnlzdFI1dm5XOUtEQ0pQelNBL2F6?= =?utf-8?B?SmpsVS9RVkNGQnhFNzFYUThwV2dhWWxjTDdCa05yaGpPWTRCRGJZVHNRZDZ2?= =?utf-8?B?YW8xRXp5SHpPQTZ3NEYzSTBySmpnR2hGdml0RmdYaGpsditqUjIrRkhBeUUw?= =?utf-8?B?emQyRjFDRWdxN3pyRjRJcS9TajN5WjN5cTJ4V0VlZE9PMGphbEhoUll2ZjVL?= =?utf-8?B?akZwWHBQMEx6SHZ2dFpsQ0hoVVkwbGk1WWRXemVOcWJHM01OM05Jcmp3MVEx?= =?utf-8?B?T3JNbGpZZnBLV2FBTG43ZXk3Nm9VT1hvK0dkMkVHSWhjTlluZlVSWThBQmRZ?= =?utf-8?B?dXpSY3dnRTAvS0k4K2xVM1RsdkcvQnQ3cFpxajA2RlFUdzlmWGtra1h5QVpm?= =?utf-8?B?Q3VCdUFzVUVJTmdob3FWL3Jac3dzY0lEOGJWR0VVbVhlTUR5a3lIOWxNQ3Y4?= =?utf-8?B?ZkkwVGNxekRXTksxaUF0TS95OUhwV1ZoNnJFcVR4eFV3d0doenczMzREWWRo?= =?utf-8?B?ajZVT2RTWmhVWDFuODN5Vm1QTFN2RDdVNjh4OVJIMHpWdmExdjBPQ2JYaEUw?= =?utf-8?B?SnFDZlpMN3V5R2RuWE9JUDNKaFBLbm9aNENjblhKL21acjFPY05ZWGRvTStt?= =?utf-8?B?cmFUTUZZdmpkMUdNWmgzVllPYm1vMlhWYTF1alBvTUFuMGJ6MlUwMEU5U0hT?= =?utf-8?B?emRNSXM2QmhzamVOb1V5Vm5HUk01blVvRDZCbm56RFhEaEpWMlRLckMxSTVW?= =?utf-8?B?Ly8wWnlIKzUvSU8wVHJWNG81L3ZDSm03UUsydzNRNCtsSFR4N2htWkxERk5H?= =?utf-8?B?WmQrOHZUNmJEVmZSWTh3WWtVU1VaSjNVRmp6T3R1UW9ISlo2VzJYVXVoR2JR?= =?utf-8?B?Mmhxc3dpNldJbVczWU5GQnVBcUFrajJ1VkZDcmJyMmVjbEdiTlhpbmFOQ2FK?= =?utf-8?B?ZTk3V2l1QXpXLytaaE1TeGpkci9iZUwzZ2g4SmovRFlHalJWckpFWCtRSUh5?= =?utf-8?B?ZlRRdkdDbHVrV1Bkakx5QWI0Nnp2UGdNbnJld0NqQWhBOENoMEJNSk4wY05i?= =?utf-8?Q?FPF1U/WVxASLXTpaAsOvUGqMN0Uxyo=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?c1RjQVpvWnNyZmNteFd2eGUxUFBuelZhcWhZelZ1Wk1zejhBV2hsZ2ptTktX?= =?utf-8?B?Z2FLSDVnSmFzV0s3em1PM1N0emc0SjlVL0hvUnlsQ3RUS0drdlpzdEtkaHg2?= =?utf-8?B?VVJ4cEFuUmtmcGxjd1FKaExzcTd0elB3QnV2Q3RBcjQ0S3JDMnhNZUsvTW5h?= =?utf-8?B?cDdhWDhvSkMzZTlWd1pyVnFrUnM1aVNhbE5PdnExa1FHK3pJYkw2UmxvdERz?= =?utf-8?B?OGNHd0VUK3hKbm9Qc1lBc1pqb254M29SUExEbHkxd2FiT1RFdU9INHFrT0Q2?= =?utf-8?B?NUxqWHFnK29KVWVlak5OeEhFd3JSN3ZaSWZwTXB4M09DUGNaR2p6NW10VzZG?= =?utf-8?B?L1dsU3JoaWJaR3RFUEhIWDJDanh6UGZMTUIyS2xrS1YycGFSMlBkYkFTVU9n?= =?utf-8?B?dHA3WktoWU5scW9SeEJXUUFaVXN2MmRRSVJtdjJxaTJyQkIrakZmdWd3NS9D?= =?utf-8?B?aXk2bnNZZ1cyaWdIRWgwN3pMTHVGVHhOWmM0TGJMZlFvTTdrVk9VRTNFWVM2?= =?utf-8?B?a0s2OGRQYTFicDg4M1JFNWxQOWZoY21LVjdOd0RMRzNtZm80amxOVzIzVi9I?= =?utf-8?B?ejk1aGZkUEpSUDlIRGVIaUxvak0rU05ZNktPL2w3SlNDOENtWUx1NmFKdWVE?= =?utf-8?B?ZWN1TFZpZGFoMWxBWGd5YTFHY3JHSkxlVitOMUQwazFxTmpFQUdMd0VwZFJU?= =?utf-8?B?VE05UlRHOUE4S0lFOUsyUzRGakFlQ3E4YVFsSVdRTzFMYXhhb244QmViWTZp?= =?utf-8?B?N1c0MkNnQWtRcGRiekoxTXpRaVkzSitxV1JQZHRLT0h2Y2xkSmQzRk43NE9O?= =?utf-8?B?TStRcEFxd1UzN1JSKzBFTUhIWEZLajIvdmpqczA3S3pjazlSUTlxSWlDSUpB?= =?utf-8?B?UUl5Z1JkaFJMUUFVYXFWaXJZTFZJakFzSUpzR1VpNVZJeFpxVGZ3YXFNRjRw?= =?utf-8?B?d1I5Wm1EcXBlQ3ltQUNpUUxvOHNEcE5rbUdNL1A4QUh0Q0VHRk1mZFlYUnpT?= =?utf-8?B?NUpXbVcyT3F5dnArT3BvZ2VaVkZkS0cwT3NGNHVHTFJ4UHFmcFhTd1kwRHZR?= =?utf-8?B?aXVMSWpvVHdGbVMwdDhLVFRsUUpEUjVscnJ5RFJQbENoZmlQVkJvaitYUlB4?= =?utf-8?B?cDNSYXR2aTFaTkg3Y1BwVHd4aHRwTjZqSmtCM1FFTXFkMjFlUjE3Kys0bW9h?= =?utf-8?B?eTczQXJPeUEwL3NRQXB0VWdHOGg4RkJJS1d5WFZkVCszZm9GRlhBVC8xQjhR?= =?utf-8?B?S3dSalU5MGJyZkwxeFRMMzIxLzFKQzRnUDF5K2tGZG15WjIwblpXVXlUaWhS?= =?utf-8?B?TS9VaDQ0ZVE1K0FrK0xXYXdtRTN5bit1QUN3eGFqYVVHb0srRWxudVY0V0Rn?= =?utf-8?B?L2t6N3MzTkdMOWF3bTZBOHlJMUkvaUxYOTFZUkVHSjkxN1dFQ0RTR2ljODVP?= =?utf-8?B?ZVRveVBoWnR5V0VsSS8vVVBGTHlLeTZoalZveGtqeFZadHpRbVR6Y2EySGZK?= =?utf-8?B?UjZOeEtjQWg0dzlrRnNremdseFpvK2ZxblhndlA1ekZocExsYjlsbHRWeHl5?= =?utf-8?B?WHQ0Y1hJVjA0OGIwZmI1bXhVTmFrazNqdGpCa1FiT1YzaDlteDJsZjBwa0pB?= =?utf-8?B?dTkvS3RtYklJVkhEMWNENDg1Z0x2eW5FYldKcm5PRE1WR3FuU3VvcCtLQzFr?= =?utf-8?B?VVlHMWdVMkNoOFBad1ZWQUdHM3dCeUZtME44MUF4dk5qdndjVXMvTEJJdUJ3?= =?utf-8?B?S2lrQlpxRm9kTEJoUG0zRDlRY3dCS04xVnBKd3Q0QjFGaEVodjZCaEFLelBK?= =?utf-8?B?TTVlZXZ6QU1Oa3RFOGYvUjJOV1BqdFJmWmRlbFFUMnoyVDlLR3ZOd3hBYnpy?= =?utf-8?B?TFB4WmtLclcwdVArZTRETnoxQTZxU0NySUUzMEtrZmpGRGNncVNGWGhmRUEz?= =?utf-8?B?Qkl5S0tjVGNCSTNxQzY3Z3pveTNwK29xL0Nwb0tySVBWdDA5UzdOZDFyV2pL?= =?utf-8?B?ZHl1dUpuVTlnd2dlTVFIanhjMVE3NUJ4NTRPYlNvcXVKNS9rZEtTU1RqV1B1?= =?utf-8?B?QTEwR1VUVkI2WXhQSDVTTVpVWm1OOXY4S3lhQlBTM2o2dnByU3luNUx6Z2JR?= =?utf-8?B?SGxxcHVUVTFKUFZPUHMzYWIzbFRLekVTWXFmR1ZaRkY0c0Z2dDNNQWVaRjBZ?= =?utf-8?B?Wmc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 78f0425c-694b-4fbe-019a-08de1c7da377 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:47.3486 (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: UJ2l2+z0clDEEpVLt9ixO7o4xDr8ve9dNlo6Lk5CKFCywo3A5g0M0HJeozLleuySFY/SlCiNzPn5bmh6sg2JqOFqNuhgna7QlVOeCHXxJLA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com Contiguous PF GGTT VMAs can be scarce after creating VFs. Increase the GuC buffer cache size to 8M for PF so that we can fit GuC migration data (which currently maxes out at just over 4M) and use the cache instead of allocating fresh BOs. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 47 ++++++------------- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h | 3 ++ drivers/gpu/drm/xe/xe_guc.c | 13 ++++- 3 files changed, 30 insertions(+), 33 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index 0f56dbc04865d..88371c205add7 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -11,7 +11,7 @@ #include "xe_gt_sriov_pf_helpers.h" #include "xe_gt_sriov_pf_migration.h" #include "xe_gt_sriov_printk.h" -#include "xe_guc.h" +#include "xe_guc_buf.h" #include "xe_guc_ct.h" #include "xe_sriov.h" #include "xe_sriov_packet.h" @@ -57,73 +57,56 @@ static int pf_send_guc_query_vf_state_size(struct xe_gt= *gt, unsigned int vfid) =20 /* Return: number of state dwords saved or a negative error code on failur= e */ static int pf_send_guc_save_vf_state(struct xe_gt *gt, unsigned int vfid, - void *buff, size_t size) + void *dst, size_t size) { const int ndwords =3D size / sizeof(u32); - struct xe_tile *tile =3D gt_to_tile(gt); - struct xe_device *xe =3D tile_to_xe(tile); struct xe_guc *guc =3D >->uc.guc; - struct xe_bo *bo; + CLASS(xe_guc_buf, buf)(&guc->buf, ndwords); int ret; =20 xe_gt_assert(gt, size % sizeof(u32) =3D=3D 0); xe_gt_assert(gt, size =3D=3D ndwords * sizeof(u32)); =20 - bo =3D xe_bo_create_pin_map_novm(xe, tile, - ALIGN(size, PAGE_SIZE), - ttm_bo_type_kernel, - XE_BO_FLAG_SYSTEM | - XE_BO_FLAG_GGTT | - XE_BO_FLAG_GGTT_INVALIDATE, false); - if (IS_ERR(bo)) - return PTR_ERR(bo); + if (!xe_guc_buf_is_valid(buf)) + return -ENOBUFS; + + /* FW expects this buffer to be zero-initialized */ + memset(xe_guc_buf_cpu_ptr(buf), 0, size); =20 ret =3D guc_action_vf_save_restore(guc, vfid, GUC_PF_OPCODE_VF_SAVE, - xe_bo_ggtt_addr(bo), ndwords); + xe_guc_buf_flush(buf), ndwords); if (!ret) ret =3D -ENODATA; else if (ret > ndwords) ret =3D -EPROTO; else if (ret > 0) - xe_map_memcpy_from(xe, buff, &bo->vmap, 0, ret * sizeof(u32)); + memcpy(dst, xe_guc_buf_sync_read(buf), ret * sizeof(u32)); =20 - xe_bo_unpin_map_no_vm(bo); return ret; } =20 /* Return: number of state dwords restored or a negative error code on fai= lure */ static int pf_send_guc_restore_vf_state(struct xe_gt *gt, unsigned int vfi= d, - const void *buff, size_t size) + const void *src, size_t size) { const int ndwords =3D size / sizeof(u32); - struct xe_tile *tile =3D gt_to_tile(gt); - struct xe_device *xe =3D tile_to_xe(tile); struct xe_guc *guc =3D >->uc.guc; - struct xe_bo *bo; + CLASS(xe_guc_buf_from_data, buf)(&guc->buf, src, size); int ret; =20 xe_gt_assert(gt, size % sizeof(u32) =3D=3D 0); xe_gt_assert(gt, size =3D=3D ndwords * sizeof(u32)); =20 - bo =3D xe_bo_create_pin_map_novm(xe, tile, - ALIGN(size, PAGE_SIZE), - ttm_bo_type_kernel, - XE_BO_FLAG_SYSTEM | - XE_BO_FLAG_GGTT | - XE_BO_FLAG_GGTT_INVALIDATE, false); - if (IS_ERR(bo)) - return PTR_ERR(bo); - - xe_map_memcpy_to(xe, &bo->vmap, 0, buff, size); + if (!xe_guc_buf_is_valid(buf)) + return -ENOBUFS; =20 ret =3D guc_action_vf_save_restore(guc, vfid, GUC_PF_OPCODE_VF_RESTORE, - xe_bo_ggtt_addr(bo), ndwords); + xe_guc_buf_flush(buf), ndwords); if (!ret) ret =3D -ENODATA; else if (ret > ndwords) ret =3D -EPROTO; =20 - xe_bo_unpin_map_no_vm(bo); return ret; } =20 diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.h index 3ad3c3609b415..148ee07dd23a9 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h @@ -11,6 +11,9 @@ struct xe_gt; struct xe_sriov_packet; =20 +/* TODO: get this information by querying GuC in the future */ +#define XE_GT_SRIOV_PF_MIGRATION_GUC_DATA_MAX_SIZE SZ_8M + int xe_gt_sriov_pf_migration_init(struct xe_gt *gt); int xe_gt_sriov_pf_migration_save_guc_state(struct xe_gt *gt, unsigned int= vfid); int xe_gt_sriov_pf_migration_restore_guc_state(struct xe_gt *gt, unsigned = int vfid); diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c index ecc3e091b89e6..a686b04879d64 100644 --- a/drivers/gpu/drm/xe/xe_guc.c +++ b/drivers/gpu/drm/xe/xe_guc.c @@ -24,6 +24,7 @@ #include "xe_gt_printk.h" #include "xe_gt_sriov_vf.h" #include "xe_gt_throttle.h" +#include "xe_gt_sriov_pf_migration.h" #include "xe_guc_ads.h" #include "xe_guc_buf.h" #include "xe_guc_capture.h" @@ -40,6 +41,7 @@ #include "xe_mmio.h" #include "xe_platform_types.h" #include "xe_sriov.h" +#include "xe_sriov_pf_migration.h" #include "xe_uc.h" #include "xe_uc_fw.h" #include "xe_wa.h" @@ -821,6 +823,14 @@ static int vf_guc_init_post_hwconfig(struct xe_guc *gu= c) return 0; } =20 +static u32 guc_additional_cache_size(struct xe_device *xe) +{ + if (IS_SRIOV_PF(xe) && xe_sriov_pf_migration_supported(xe)) + return XE_GT_SRIOV_PF_MIGRATION_GUC_DATA_MAX_SIZE; + else + return 0; /* Fallback to default size */ +} + /** * xe_guc_init_post_hwconfig - initialize GuC post hwconfig load * @guc: The GuC object @@ -860,7 +870,8 @@ int xe_guc_init_post_hwconfig(struct xe_guc *guc) if (ret) return ret; =20 - ret =3D xe_guc_buf_cache_init(&guc->buf); + ret =3D xe_guc_buf_cache_init_with_size(&guc->buf, + guc_additional_cache_size(guc_to_xe(guc))); if (ret) return ret; =20 --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3E8B337B8A; Wed, 5 Nov 2025 15:11:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355517; cv=fail; b=jCMfTlHjWNJgNULrpubgK4/79EA5yVTzWxbGqx9a978kGN53cWu4yZdNQIqkH9KqX01+sH3pohI5noz2RHarAjIuEBcGonAdWiqeyC1RAn/qnpp+BXVr/xw5btlm23pHhFGpek5CRnA74NSuYskiv+py1/T43rUexzsZBt+FfrY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355517; c=relaxed/simple; bh=lk+65UU4VBbKG1L0noYI3cutbxJHfo80+io+HruK/S8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=VVqzRDnOL6uP+1wp7AVfeNlEo+lkq5przIlSemstp6o/mC4C6E3cx6QBuWyz72wNF1l7jfGb0RvLymGaCf1f8WqdSD6C/pzbKEIdyQskNJnAz0hdN2L0D2ozGng0eySMeAZX5T+2Mq7DTDZjYRhLpM6DImkrD2q9dVklzRspSus= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=jS6617Sf; arc=fail smtp.client-ip=192.198.163.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="jS6617Sf" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355515; x=1793891515; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=lk+65UU4VBbKG1L0noYI3cutbxJHfo80+io+HruK/S8=; b=jS6617Sf4WtOSP1bvWYFFt5Wt8WZxppgrUr/IvViUBFDzmwOxpQUMcsh 2XmfPT79FTPJvzfgUyYWWbtHlyRcGczAhSB8lmQPFP10jjCYc8aqyARX7 X33pWERJe+jf8JD1KNNIhxbxal65ZeNgOvMhRg5lr+j01oM2CKObsxGfk QgpjMY1KmTqIk5mfKxQ2LsFdHo9i26nFgQ95DgkEFhCP1kfUfzoZ4faQ/ iwM3aE8peMTLIp9ayEKc3LXUzC1p1PnOBP9qJjgQaNyvshSCCKQ7zko1s EX1SsQPI3D883z9r5mhsRo67F7eVDs/Y97ps1DndHEhRLDq/Myw61ScBH w==; X-CSE-ConnectionGUID: 8ceCDuazRYe9BdzI4DRJyg== X-CSE-MsgGUID: oCQZgqR1RTKYRfRxD38NYg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="63677353" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="63677353" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:55 -0800 X-CSE-ConnectionGUID: QOp5pKBiRZOXu7AekQTMmw== X-CSE-MsgGUID: pfTlpRErSRa4AyZW8uiHfg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="210957218" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa002.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:11:55 -0800 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:54 -0800 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:54 -0800 Received: from SN4PR2101CU001.outbound.protection.outlook.com (40.93.195.56) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y8BbN+7nNm3dTgiWktGPhI9CIE/98ga8V9piLNBLacLLaLSF9SiBlIN8JvJfxmnrwlkMu7TAaMYPEXbS55/GYjRMTEamVY6A0Uiv6esq8H2BYl/wtx6jic9Crisv3vfp3g6GUDmlrIU8ZnAeL68KySkeqLyxVDG2dLGKYvEhWBCMe7xt81V8lhP6tv0LQscha/nG0+K9KPdrdBJr07aNQjMJ1GLAVpfvTtcbKDh/v9PTFsNTr+4dYi5jkOAEsnNwSWE6TzStN1/RGor03DZ9WW2WmCc1DAzKi7TJgCm1DiNCU9ksPcvGYHzCUmILeuGrKPFyDtVuVE15prtfL5IbPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ukotbZUfho/Muy5LocCZz85Giiw4AHi5xE9w0QXcURM=; b=iXY7BQKc1TfXYa0yqTOhROHiWEE/RsE7Ya9xzyDivhiXvrrVDjtaA09Ji1fiCv+ZRqrA0FA5LQDHVG6Q1/STYuB9IfmpreH8nMe1OanuAMXHR2xWXHNTLxjZ1J8yfquZpqmXghibDT+guLac68HWf53pKuPTT50SgJTzL+W51XfAZiJNkNhfOcFSn5pgzij3lpqt9feIH7VDwjQwcTGRv7IuNU3mft9JT4JrUAij0kFTOwROfMUue/tTWKSdce8ZmyiTIp19qLv3cEyKIkq4HEZbEITFuo5iHB7sbaLpMnh5QNTUmnscDjbyw+4EO1MBvHgKdbh4IHefXKZFB+aCMQ== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:51 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:51 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 13/28] drm/xe/pf: Remove GuC migration data save/restore from GT debugfs Date: Wed, 5 Nov 2025 16:10:11 +0100 Message-ID: <20251105151027.540712-14-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0116.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:7b::6) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: 750c5eb2-d29b-4fac-c224-08de1c7da61d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MnpmeGFCOVFJNXkrRnRyRGVmbGFHUXZiQ3V6bG8rdVFoeC9xdXkvcDZRK2Nr?= =?utf-8?B?cDJYeHZmOVV5d0F4WGg4WlRYZ0RJejdMUzhrQndCd3JGQS93NTB2b21pTFY1?= =?utf-8?B?TFJlb1I0UTdIT0pXaVdnKzZiS0tNMGVjZmhBOGl4dUtGaUQvN1lvZzAybk44?= =?utf-8?B?ZEFDSTBDcXI4ZEYyTzl3K3UvcFRkbHM1Z2EzTitCdEpTWHNYbVJIRlV3RU5t?= =?utf-8?B?WFMwV1F5cnZiSThKbkx0a0lFdkh4QlZLU1ZrT0RyNnprVjJ4ZityNkdzZ0VE?= =?utf-8?B?bytMR3RQa05lUnc3ZXZLMFNMK3RvK0lSZ1I1R3p4NmtzYXhlR1RKcDRSQWt4?= =?utf-8?B?cHltdWZKSzNzNWI3dlRabjhTRXZwZ3poS0ZBWU9SOEZyRVVkZDB1OTNpSE9W?= =?utf-8?B?U0I4MjdkTzFFZnZneGprZlA1OWl0NXpTM1U5c1BYeWsrN2ovOHdjaFNkTHYx?= =?utf-8?B?OURBb3BlRy8rSEowRi91M1dkY3dXalpyVTh5K3NPYVh5OWlTLzY1NWQrL3ZI?= =?utf-8?B?a242V0xTWms5UHRuY25PK2s4WEtpNlh0NVJ2MVV0UFJjZVR6T1BCNlFqMXh2?= =?utf-8?B?U1BVbS9Wa1FCMFN0aWhvdzJqc0luemZWMVU0OEc0ZW1NamJ3ZUNabklNdm5O?= =?utf-8?B?U2UrNXh6d0hSZU9nSENkcERuWUtPQWNKUGRsRWNRSll2bWk4MU1WcHRCYVlV?= =?utf-8?B?blo0NVFWTEpWT055K01HaXgvajhjNDVwRzMveVY0amsxdFBXZHp4RjduT1Bj?= =?utf-8?B?TXh2dVZVQW1tWWlwNGVWVFZMbWloc2UxZ3RJUVVXTXZYejlGdmJYT0k5eEo1?= =?utf-8?B?UGltNWQydDViR1NndFZqcWpzVDFoZWh1S3M4cGd3UUtTTHZXeGJVRHd1WTUr?= =?utf-8?B?QzNWZHVTTjNSWTR1dU9ac0hMcFZQbGNIRitUbElvQkppVkZzTDZ2N2RTaStT?= =?utf-8?B?SXlJaHR2VURsU1JzbnVGS25VQS8xRWQ3TFFxTFA2Z2VackR4TG42L205ZjVo?= =?utf-8?B?TW5SQkdIV2ROT3I2WVBOTnpIdjlxY3duazltS2lqbHp3T2hrOGZKK3BIdG8r?= =?utf-8?B?eHI0Vm5mVEthUDhHVktlWlJWdStzbjNEa1M1UzZTQXJTTGo2T0x0cjNHQ0Ri?= =?utf-8?B?anM5Si9KaXpaNkpubkIwcDUza2FNZXRtV1NubmZKVVYwa3BNUm02RXZGcVRV?= =?utf-8?B?UEZ5c3d1bElMVkIybDgrY0NHRE9wWExPUkZhSDBFVkdtaTBJaVR5cm0rRHVJ?= =?utf-8?B?TlM2MGJ0SWlaL2c3YkFEajVHbEF4TEtnSTF2bjkrL0pRMExORXd1M0w4RFJh?= =?utf-8?B?cVlkeVk2RHJrQng4UTRrd3BaVWk4WTN1YzJlcEVCREQxSXdRR3ByRlc1bUIz?= =?utf-8?B?NGQ2ckRaaFZXRUZFNytJTDBCMFB5aTJmVVN3MmZzNVQwKzBzMHQ1S0xaUWtp?= =?utf-8?B?b2k4SVNhWVpkZmZYVVRNUUVZTG41L2pReG5LeXo5VHdhbTMxc3g2R2NNczlk?= =?utf-8?B?eUoyb3pRa0pLRlpSOVYzc0FPQU1pbXRTYmpEcGtMbTRaNHFzbmpRenJ0NG5t?= =?utf-8?B?WFJBelVHKytyL0JZUDBYSDVCNFlSMTc4ZUhmY3hLc0ZuQW5VWUt6UEtkM1Uy?= =?utf-8?B?UVM1WHRnSks5d3FZQTdKbmZtS3Z3L09WeVBscTB0T2ZYZCtxaVUrNlZIY1pT?= =?utf-8?B?MVpIOHhZNnJyR0d2YmRSYWM2M3M3S2NsUDZZaFlwVUc1QTczay8yTDY2VDdv?= =?utf-8?B?dXhNTlEyRElrRmFMUi93ZHBBT0s2ZkRrQnQ0ZThVd01JNGpMVXhNaW1MOGxy?= =?utf-8?B?Z0NiN1Q4eEJkeUI4R0J2MzB5QjMxbzIzTExzek00emZ4Y0NSY1RSK3gwRzk4?= =?utf-8?B?NUJjbVRGOEdUWFp5NndCS3YxR243NmtUZ3JvYU5wUFhQR1lHcnh3TEp1WTFF?= =?utf-8?B?QWdrWVJqb3laeXZoZkkzR2lBbHNkeGJUVGhxMkQwMkphdHMvZ0M0SkRNNjJT?= =?utf-8?Q?/3mQBV9Fnq2BvpdsYqwPcOZeHIQmtA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Z1FrS1M0bThaajRTN0hkOC94TzBtQXZpY0daSnU5YUwzTyswdi95dXZEM3hX?= =?utf-8?B?b3E4NEhRRWYxbWFpejNXYnV4K0pHM3Z4NVlQeVZRdEdZZE4rSUppcE9MMGo3?= =?utf-8?B?NGQ4NEltWVJBN2lpbEZwbkhIem03SUduS25OODVMVGxEczBwajFUUnYzS0Nq?= =?utf-8?B?ckt4V3VzWG8vM0RWRDluMHFEMjRkMjNSOFRkZ00rbnFTc2xWUXdyR2daanhI?= =?utf-8?B?UmhOSkZkb3ZlMlBDN3FjWVowWk16RWN2QzVxczdCZTd6cnUxMmo4b1NVWHFP?= =?utf-8?B?V3hBMHhYVlhWaExpNjVGdzYxNGV0eUI0b1A3ZnhqeFJEUU1WR0pSMHpia1BN?= =?utf-8?B?Ui9RZjE4MUt1STMremxkWmhBdWpzYldrVlBNdGplTHZoZ3lNNEFLdXBtZVha?= =?utf-8?B?akVuMWFmZ0RJUmxTWld3NTZmY0lyMC9UakZ5dkswNjhySUl6dXlwbDFCY0d4?= =?utf-8?B?ckJOMHhTYVRLTWFGcHBOWWJDT1crWktNZlZRUHJrRjU0NDE5S2wzUW1UcUVN?= =?utf-8?B?L3NPK1ErMHNhakIvOVhPVFBvaUV6V2pNNzd3UkVYdzcxdkkxSmVOZm5uMDFy?= =?utf-8?B?OWN6TkZXZUYzVXVwbzEycExFRGlCSmRVSmFpNThFSjcweVErM3NwT0o4MWU2?= =?utf-8?B?emdhY1BZdGlMQzdnMWZ3RG5SWmNidjBRc1EvWTdRazlvUkxzTGo5enhleGRy?= =?utf-8?B?U29hZmNMTisvSS9nYnordFkzK2tMQjNmc2lJTEJ6M1N3Qjg3cW9nQjV6ZzFy?= =?utf-8?B?NTNxOUZ1L29MMm4xT21nL3pNUTFtV21zbWhHRm1EV3dUbURKWGN0QlJGUmsw?= =?utf-8?B?ZWxrc2gvcjlMaUZJMEtVdDZjaVpReFdNSmUzUVZlS1AxenlsK3o4WGNJRE9w?= =?utf-8?B?cCtkQVo4V3VLeUVRblI4SklHZGlaM3A1Tkt5aXR3d2EyNWR4dER3VTlQWjVM?= =?utf-8?B?R0FzSHUvemt4djY1WEw0bVJmTVd6SnQzc1V5SWNkeHM4Q2orRHB3ZUxwZG5m?= =?utf-8?B?b1RuQks1VGd2MWROc2IySlRITDNTWWIrUVFOaUxGVW1CS0tCSzE1ZE53cHRX?= =?utf-8?B?Zm5tQlBBMlFNOUFKTksvMWxjYjlocEduWDVnVTRCQTVSa2pFSmdUZVpJLzZD?= =?utf-8?B?TEN4c1oyYmVDZ0RLS0F6ZUpraVFSU1hiM3Vhd3FMcXFES05lenVqa0g1cmVy?= =?utf-8?B?Rm9LWkZuRXdOTVRZZHdGSW9ObCtRMTVORlpSZHY4LzljUUpYTDVrRGQ4WHZZ?= =?utf-8?B?cWM2MmgrcC9YTHN6dnYwWjcxSE5sM1hGVWtvajd1VEVhc3pxN1BhbXRGa09w?= =?utf-8?B?cWdyQVlpSWE3L3hzVzE2dlYxTC9SUWpiUG16Nkl3L0NLT0lWbWpjcWFxWGhH?= =?utf-8?B?L0ZuancvN1ptZEFOSmNvQVhjNm5PSHFDYjEzRlF5OG0vQk11azU3dDVHWGFR?= =?utf-8?B?QVFzKzlVOUExV2lZd1FxRGJ2YjhWVGMybTRsWXRuMGZ2L1NNREZrMmFpSWFG?= =?utf-8?B?cnVOdnpzZkVubCt2RXZ0em9qbERVVkp2WWwvc0svQk9KUXE1Y1cxcnlxbDhy?= =?utf-8?B?RGlKOHJ6Uk84MzkyRVJYVmlxQmdtTndFYmtXRzhJVERYOWlENjdDOXZzTVZU?= =?utf-8?B?emc2V2FFNkhVbU1XKzJjV3g1dHZ3dzBhWmxYeDlJOEpEaVdybGlJNlhYay9L?= =?utf-8?B?TWs1TkxjMUlYaXlrZGZXcXh2aS9tTGQ1K1ZwSVIwMnJBaHhlaEIxNjVDUXlx?= =?utf-8?B?RkVZTlZsZXRWSjNKVXZUQ3k2bjNxa0R3WXVnajd6VHhWRTdQTUx4VFNxeFpq?= =?utf-8?B?QU1hcFdCRUZwWGU4RGpGb2hIcjN6OURiMFNWaHA0eUVnS2d3TTh4T2hjMVFu?= =?utf-8?B?QzdmdXpQZTNNQnBYcmg0MFcvWU0xNU4waVJLS3lXaGwxdVJOWFRYSC9VbU1h?= =?utf-8?B?YzRxVjlmRThNL0xsU09oa2tZZ0xLbmV4KzRsTnY2QXJYUUF2QUc0R2RPc21J?= =?utf-8?B?TnFacmNSTmRPdGxLZ05zajU5d0FLazNNaTVhSHBNeXBWbW1qWnE0NnA2UXBG?= =?utf-8?B?NXZMdXJuY1NoRU45c3ZiNU5zQS9XR2VYeVVVaDR6M0dGOEJmbkRzVWVRM1VG?= =?utf-8?B?L01oRGtYTzRDd1pTMVRzeW4vYTJtRG5STktnbnVtTkp6MVkvYVBJZ0tjSU1O?= =?utf-8?B?bHc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 750c5eb2-d29b-4fac-c224-08de1c7da61d X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:51.8428 (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: Me5JflxYrcnuQoyTaxb8y+Xty+13ed3IFdPfQ0xEQOD77f48BqOAGzLJFVsmMDi/FRgsGePXay2wplc9Yc+gNOGUnBjV3AHlSqN0TNUPmsg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com In upcoming changes, SR-IOV VF migration data will be extended beyond GuC data and exported to userspace using VFIO interface (with a vendor-specific variant driver) and a device-level debugfs interface. Remove the GT-level debugfs. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c | 47 --------------------- 1 file changed, 47 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_debugfs.c index 838beb7f6327f..5278ea4fd6552 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c @@ -327,9 +327,6 @@ static const struct { { "stop", xe_gt_sriov_pf_control_stop_vf }, { "pause", xe_gt_sriov_pf_control_pause_vf }, { "resume", xe_gt_sriov_pf_control_resume_vf }, -#ifdef CONFIG_DRM_XE_DEBUG_SRIOV - { "restore!", xe_gt_sriov_pf_migration_restore_guc_state }, -#endif }; =20 static ssize_t control_write(struct file *file, const char __user *buf, si= ze_t count, loff_t *pos) @@ -393,47 +390,6 @@ static const struct file_operations control_ops =3D { .llseek =3D default_llseek, }; =20 -/* - * /sys/kernel/debug/dri/BDF/ - * =E2=94=9C=E2=94=80=E2=94=80 sriov - * : =E2=94=9C=E2=94=80=E2=94=80 vf1 - * : =E2=94=9C=E2=94=80=E2=94=80 tile0 - * : =E2=94=9C=E2=94=80=E2=94=80 gt0 - * : =E2=94=9C=E2=94=80=E2=94=80 guc_state - */ - -static ssize_t guc_state_read(struct file *file, char __user *buf, - size_t count, loff_t *pos) -{ - struct dentry *dent =3D file_dentry(file); - struct dentry *parent =3D dent->d_parent; - struct xe_gt *gt =3D extract_gt(parent); - unsigned int vfid =3D extract_vfid(parent); - - return xe_gt_sriov_pf_migration_read_guc_state(gt, vfid, buf, count, pos); -} - -static ssize_t guc_state_write(struct file *file, const char __user *buf, - size_t count, loff_t *pos) -{ - struct dentry *dent =3D file_dentry(file); - struct dentry *parent =3D dent->d_parent; - struct xe_gt *gt =3D extract_gt(parent); - unsigned int vfid =3D extract_vfid(parent); - - if (*pos) - return -EINVAL; - - return xe_gt_sriov_pf_migration_write_guc_state(gt, vfid, buf, count); -} - -static const struct file_operations guc_state_ops =3D { - .owner =3D THIS_MODULE, - .read =3D guc_state_read, - .write =3D guc_state_write, - .llseek =3D default_llseek, -}; - /* * /sys/kernel/debug/dri/BDF/ * =E2=94=9C=E2=94=80=E2=94=80 sriov @@ -568,9 +524,6 @@ static void pf_populate_gt(struct xe_gt *gt, struct den= try *dent, unsigned int v =20 /* for testing/debugging purposes only! */ if (IS_ENABLED(CONFIG_DRM_XE_DEBUG)) { - debugfs_create_file("guc_state", - IS_ENABLED(CONFIG_DRM_XE_DEBUG_SRIOV) ? 0600 : 0400, - dent, NULL, &guc_state_ops); debugfs_create_file("config_blob", IS_ENABLED(CONFIG_DRM_XE_DEBUG_SRIOV) ? 0600 : 0400, dent, NULL, &config_blob_ops); --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 453F3338937; Wed, 5 Nov 2025 15:12:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355521; cv=fail; b=PXdG9oupyHLB4gKPUyjqtgdwkwb4+/MLEE0PKTb6Sao5pxkfSwWrtNWJ4YFWPE9SgDFnR+EZ47njOXziekCbmuL8Y/RsldMzHWgWIviRhLN4+hm4GNPywh3+irKqfhS/61XuKfRCiRmJ70nRHY8tiaA2AoGHnSrwNEUHdTacL4U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355521; c=relaxed/simple; bh=KFvun3CwV0e5v3FfPo2gz6wgMCVQne05G9cUPUMdK3M=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=mdOzoztMwyXJE3iwAqn9fgi9+9SOzNyk4GKNf9tpoTZj45xwpWtNlAyE2ZfO2TrXcZ1BfmhdfnZKKnhXvkZRRxYDRg4ZOV3Zw1IytN3eTFTce917OJ3lWedUTsaciQgrPQKYgGjKnSWgK4xc5IXCN6qoH5YYQFF1U5bdDhhScNs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=n+NXZVmB; arc=fail smtp.client-ip=198.175.65.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="n+NXZVmB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355520; x=1793891520; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=KFvun3CwV0e5v3FfPo2gz6wgMCVQne05G9cUPUMdK3M=; b=n+NXZVmBXmMhautxJGFvaJJ/0KQrdp7JWl6UoFUMk2EB/MuNUB+N022Q n7cvhqXJSoNDCKe0SUI8fehBpppgejVbCrcsvHPe9z2IzxpTAZrDP/EH7 jfOHH0IZF0OPbfV+AuIlSoAx8/n77OirSXf0N4AttLpl+ACS8U63SEXmg w8UDCIBpjlGpCduo0xdsgsssRXbuLUuBuvlnr9xnLx6o+4CAefCqX8pR5 ud9TiXsbCaS+WBqt3goK8nBITRx2DYUrlus91MpEKZjTKzAjES1xiJDdH joN86SvCXyjGJBzxL6FTg66hEePe0HrHlz5ya9dVV8v8tLl3gp3fr/7PY w==; X-CSE-ConnectionGUID: LtZsUpDtQYm8Jd2UY0epVg== X-CSE-MsgGUID: vKv27WvlQW6BJX81ZQ3eIA== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="75587192" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="75587192" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:00 -0800 X-CSE-ConnectionGUID: WMEXA3o7SJGIeGiSeYcD7g== X-CSE-MsgGUID: iJse3FfdRcqMSk4cjsg00Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="186766455" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:00 -0800 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:59 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:11:59 -0800 Received: from SN4PR2101CU001.outbound.protection.outlook.com (40.93.195.64) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:11:59 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=j2WOiCiPLIt71EX8EOUW4rkXa4zFqDaBwoA37wqSdKSlPF+g6lzTMbGT5jwyuLzU2WHWh90P8K0muetdiAaziag1o51YZ1SGH/+3XTvKNPfYIXE1JzjQ/a90tcmmOYX7LGk8195MvIykOdkxf542PQl90+jqdMafv6UwObdoEr8qTxuZ6KmMXgOkxq8Udu/gZsLePIqiMRcAXtPlak9dPqk1Mf59Rawf+LyIjel+z7OSqN+zazpl5woncSpkpdN+V18aS2fdFSNLPKyXWfIGx0w8LcUv5Z3yfahsHyKNJ/D/SVELfjqKps8Q1kS1qMotZpe+ggAs3KZRFBxD24o3xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=6DRH/u6HI94Oh9hLIpmar3qj53eCCfsuHj764j0K+MU=; b=Gg7pLjmZqeDKQhi/UEgu8Atv9sD2kBdOSw7RMEYH5MnXRMWRaiPI9+WZ5E55b2TMD+6k+vQ3fbbBjRbJWTe8ykoLsAWdKlnVRoHlBaMZM9HuF1ejyzX+6f0/D1F54z5E6ClALIkolAimDLvvZu43F8SHTsydCKEYORvFY7vlXiYmArWWKXMhJiujaqy6Q2iMt99UsK+C+48CJZjyEkmw/krDHTpWr9aaJLJtnaEcHpT3oxqPc8MZhPzWp7r3ZSQ2/SPmMneuh/Mpq1RRg2n5ovA93emZMtNdw+WF5dV0Q/Cf+PXZolkPaILbp2KJY0Y7kJ1H2KU0ND1vcDiMZm43aQ== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH7PR11MB8123.namprd11.prod.outlook.com (2603:10b6:510:236::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.8; Wed, 5 Nov 2025 15:11:57 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:11:56 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 14/28] drm/xe/pf: Don't save GuC VF migration data on pause Date: Wed, 5 Nov 2025 16:10:12 +0100 Message-ID: <20251105151027.540712-15-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0433.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:81::21) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH7PR11MB8123:EE_ X-MS-Office365-Filtering-Correlation-Id: 67871cf2-dc36-4fdb-ce35-08de1c7da919 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Z3c4cEZYKzYzZnAwK2x5V2xUY1IybEVrclhndXZjdkpKaWZCekJXWUJmWkRL?= =?utf-8?B?Y3M1cHBwWncrcm9QbU5OMEEvZFBMQXIzVFBkQzE0S29JdjFldGV5eisweTdl?= =?utf-8?B?ZlNhV1RIV0t3MFhBbkxndHhUMm5DdlBQWUhsUXQ0c3hoWmIyOVBBZk51MUc0?= =?utf-8?B?UUdhOFlmSkUyeU1wYURVMS9BVGpnQWg2SFZtc1ptckEzRUlsTkljc3BUWGxq?= =?utf-8?B?SVJ5dG5uZUh3MTV6NmlvYjZVM0JHQlgrZG9xcGtOQXBDSko2VVBaZlBydktl?= =?utf-8?B?SER1V2QzOFNPMDYrcStHZFk1QUt0dVFGRGJVblROcXJWNXVGZmhMS0l2eFI5?= =?utf-8?B?MFpWSTJqNWU5NjByc3NVQzlWQXdwOTAyb01sSDMrY1o5Yk8wTWpBTlhKTXY2?= =?utf-8?B?TlhISVg1SDhPbE9FSWVvWlJYTGROSzBTSG9LKzJJeFNQRWZUQzlsSmpiSXZT?= =?utf-8?B?YTRJanVWZ2dvVEVUazZIWWtRSjhlQlNvczlDdnl6VGFRQ0ZaYzF4b0pHdFBi?= =?utf-8?B?eUlvTHZwazRoOWJjNTFQampTVG9wTUZTMHUwb3NNV0VCaXBIamRnN21hdDRo?= =?utf-8?B?eWQxelhmR2NlUWkrZDhnekNZdyt3KzZqejRSVTZQcUtqY2lhcThvTGRxYnNK?= =?utf-8?B?c2M3WHIvQmJCRDh0dXlLTFZEYjFjaThLVlNLL3dCQUg5QTBPajhUU3psN2hQ?= =?utf-8?B?bXNGdStJZG5aeGdUTG5uS3BzRG5OWE52SWk1TDZIUE9CcTdja3F1MDFHM2Nw?= =?utf-8?B?RkF4RWFMUDVOWGlmTGUwanpxZmZWMnRDSFBSN0p1aW1uaUZBaDBTdGRZa3FB?= =?utf-8?B?aDJ6Rnp6VWNibThaa1ZiNEY3WElnbkttY1RmYzc0ZFRQZVljWENOT1BDN1V4?= =?utf-8?B?WlVZVVN2RzVtVVpNQkZ0VG5nc2huWDJxYTFHRzQwMldBeVI0Ukw0ZGRpWTZK?= =?utf-8?B?NzQ1NUdzSDMvTW5lN2dHZ2J1MTV6NGhMTkM4NFY1L1hqUFM0azdNR3ZmOFRT?= =?utf-8?B?eFZVMGpvTUF4WFd1ZFF3TjMxa21UdDVkUmJSSXdlVHZUc3pBQXIrZFRZMi9x?= =?utf-8?B?ZnMzU2cycDJsMUZYQW5uSFgyYjFXSWgzRnJZRk5vNU1RaDhqMENNeUd0Qm0r?= =?utf-8?B?R3hRMEp3MDIyMlVTN05JZzAzVmVQaGhjNVJ4YWVOeXZ4dGRNZ1FveE5aTSsw?= =?utf-8?B?S0R1MkQ1L2tpVnUrR3lORkRPY2pSenRtVUZid2drS3hwQ0VibGo1OVVFY0lE?= =?utf-8?B?OE11dHNtS0NXZkUrYkhUUlpvY216NTdFUlQvVllWWmxJWkJkejhJc05WSFRW?= =?utf-8?B?WHpPV3kyLzB3eTQyZzZQU1plRVVNL0Rmc1gra1dJdHZXZGlXRCtrZ2dLckFC?= =?utf-8?B?MTVsYzJrc2xDSTRnTHAyeVh5VXVMZE9jdCtTK3VHSHdkeEVnZlY2UmI5anFx?= =?utf-8?B?R1kvcGRBVStLS1FxRkpCMXZHMkxSZ05menkraTM2ZkhsMVN6ZDZsWXRXWFRK?= =?utf-8?B?WnhvRDRvZDRMQkZrM2hncm5oSjRRcW1waXhZanhyR3BXVVFFL2lheVlWQkdq?= =?utf-8?B?L0xwTTV0QWwrVFFiNk1Ra0dpQUJBNXZQZndhakR5SndVRmd2Z1pQN1NrUDQv?= =?utf-8?B?b3Fzd0JhdVBKNytsUDlhZHZxYm9LMFBtcE5VWTMrY29lMFB3aGR2N2hCRGYr?= =?utf-8?B?aXQ0WUNFMEpaQ2tLTU1mTFJQNTVkOGpWYzJZa3F5dk5hT3QwWmVoY25YRFFx?= =?utf-8?B?VHo4Q2V3OStValNOQWRVSkMwVW5Nc3F4RTkyemF1SWhvSzNtM05yb0U2QWNw?= =?utf-8?B?Sm1McU9SVEluTWFyRFFsUkRKc29rdllzUk1HaWRzTFpVaDVBWEpBNXJnMHVB?= =?utf-8?B?d2hQbzFodmhRcXJCbXVMVlNCQW5mZzdVRmFEK3V2UzVBSGF3d3V1cnFrbm1q?= =?utf-8?B?RUFUMzZsd290T1d3RFNVZW81YVhoOGYwRVBHNGlsSXUvNnBUbXgyb3htYW1i?= =?utf-8?Q?4Yc4vJ8oId03vNWz8yzfOLhCW7HL1s=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RUxkM24yQkpsdWdzRDY3aklvL20yNTk3OUFqc016YmNMNkxxdDlKTklmR3Qr?= =?utf-8?B?QU1SY25GRTRXMGxZbjdGdDUxeTlTVG16L09LMzVLSmZFMm00Sm9HWjlLSXlC?= =?utf-8?B?cEhZeGNMb2k0aTMxZmNOUjkwNzBlL1IyamlQaHFFNERVV05zMXZibmxXbGFh?= =?utf-8?B?UmN0V1U3R1FNL1VWL2ZHaERvR1UwUkVtb29tQmxnZ09Zb0NPRFV2RjhhRG1K?= =?utf-8?B?aVhxUnprYVBSWWtwS0JNWEdkOG4vd0hzYjFjWXFuVmZlVWZBdlBHTkwrRU1Z?= =?utf-8?B?S0dXR1pLa0dSRENzYUlZL0lDb09pN3AvN2Z0T3FhKzIyOU1HUm5NUTB4Nkow?= =?utf-8?B?eXp1SWhSQnJnUzZZMUdxa0NwbHVDenBSemtwZnpjZlZERUNXWDkrTWI0UVdS?= =?utf-8?B?UDZHdll1bUlOL2xLY21TcER4U09LOHVKeFR5WXd5aTJra1NFRWp5ZmxINUJK?= =?utf-8?B?STJ5K0h5cklDOExhOTh3R2ZKa05YajVpSGw1TnZiSzhNVDd6UVF1Z0g5ajFO?= =?utf-8?B?a25OcVpoaUgwdkREMzN2amRyUHVueWowODA3NDhwTmFJdy84MkdiaG9HT3ht?= =?utf-8?B?eUhnVVkySjREbUdxZm5UaVhMc2s0c3MxZEpqRjd2N0dzak1wQVI5L0prMGww?= =?utf-8?B?QkxaUUFHdmtJaEtkckpXUzVyQk1Vbyt4cjdhaUtpVWRlZWxaU1grZnR3WTNi?= =?utf-8?B?T3YvUEtZM3MyTXJPdjFjcFhTdVc2bEhBV2dYOWhDVUpHU0dUNS9IYS9UTWVY?= =?utf-8?B?b25JOElzRVFNc09JaktJa2lET0hjcy9nSEVkZHRyNXV0MVRDRHlJeGhiVVFw?= =?utf-8?B?SWo0VGxlbjB5SExHdlJidlJIc3o3WUlnWHFOVmxhTnZ1MkwxU2pqS2EzRktw?= =?utf-8?B?eCtsNGc4dzFyUk5XRFVBUndvbWZ4cVQzWVR6TWQ3ZmRkN3MxMzlBZjhyWEdC?= =?utf-8?B?L3h0RHlLdDJIRFdnbEZsMWJOSHZYbXNwMTdwbHFEcGdBZXFJL2FDSUlqVEZ2?= =?utf-8?B?ekJkZk5ua3BLalQ3b0pvblozT1ZWWnpvOUZiQ3g4WjY3aEdwQWwzdXdTbDgx?= =?utf-8?B?QitvcXhCTEtNeTJUMlNzcWVRMExiV3QvR1I3ZE5yVFVONmp3U0pKS3FYbitz?= =?utf-8?B?Sy96R3d4a2dmU0JhZlVEOGlFRGhBMU1aRVZKQyszRUhlK3VHMWJqNTF1NFdV?= =?utf-8?B?cnhxeElyQlA0RmFjakxDcnVFM0t0T1NKR0ZXRkZyUzZ3Rm1JYmpqSWIydmpI?= =?utf-8?B?MjRQSHpwRk0zckV0dDB2bkZKTTE1b3ExYjZnRHBoWUdmamVxMzZRQWxDUVNm?= =?utf-8?B?QWVMWDNUUXNPbEt0M0Y0MkQ5S2tIcVhYU3ZKcS9xemJkRWlJVURrVjY4cHhl?= =?utf-8?B?WjVPZ3c4YWJsYWszdzZIbFJtOU81ZVhKdk5ZRjZYeVVxRFNmbm1pcHVJNlVk?= =?utf-8?B?R0FJdDVpVnVuc3krdVNSVVgwS2ovUytPaVlIYm9rZmduREdVNTFDNTVkenZv?= =?utf-8?B?eXV5M0pHRUovazlmRE5od2dnQW1HZmtNYW96S2xNekhLSXdTckJlaVlMdTU5?= =?utf-8?B?OFkxZjRMVURtNFBSZDVoZXp0VHRTTTVRM2RTMVUzaVlkUUlrb3Z3MDRNeW5I?= =?utf-8?B?eU81aktHQS8zVFRRanR4T1pydHBYWVZOcVVmOGxJLzBGRHR4RUxrbDVEYWwy?= =?utf-8?B?K09rbWtNWWlsTUVZNDFwdVdlUjk0NUY4MnZwRmQzQ3ZKVWlndEdJZ2kvdjll?= =?utf-8?B?WnowWG9QOTY3ZHVxWE5EVkRUMnlDL3JwT24ySTdCbDdpVjRYQzZ0Q3IxRW12?= =?utf-8?B?MTBxOVpnMWY3MFJPTGJiQ2RGVmpBWkpLQzMwemljN28vYmJqc2d0WXNrT2lL?= =?utf-8?B?NXE4Ny9LTTNjajVTNTRUcWF6bzVnMENsK2VubVZTS2NjZWZPWjNkUGJTejBP?= =?utf-8?B?dlVwTmg0eG5TR0Rzd21rVERDYlo4eTNQRDJqQ1ZvVHoxUkhkY3lBT3NpRXlK?= =?utf-8?B?c1o5Ny9FWU1xanVYUXZaU1BjamJKSFlLbkptUHdoajRYSE8yNWpzd0FQZnFj?= =?utf-8?B?L0gveTZKNmV2RDNNUWJMNGJZZUczQ2hDNHZ3c1p4c2g3Yk1LZ0N4ZVVsQmlS?= =?utf-8?B?YWhlTCtnOHpveDJ2N09DOHpwSkdHaW9HSEVDdTRmcWgrNXdKRTV5aDR6TVJC?= =?utf-8?B?bmc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 67871cf2-dc36-4fdb-ce35-08de1c7da919 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:11:56.8561 (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: CcGF/gTQwqeuc8twWcabHCFfnNRX6z/k4gptYYCpBANNODTnwuDjdnCepvBKX2/BO3ayp6dE75A9R5wuJwfsQagv6hIF5ZCtsPw+tMzh00c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8123 X-OriginatorOrg: intel.com In upcoming changes, the GuC VF migration data will be handled as part of separate SAVE/RESTORE states in VF control state machine. Remove it from PAUSE state. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 39 +------------------ .../gpu/drm/xe/xe_gt_sriov_pf_control_types.h | 2 - 2 files changed, 2 insertions(+), 39 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.c index 25937592bc42f..5e8b6929a827d 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c @@ -183,7 +183,6 @@ static const char *control_bit_to_string(enum xe_gt_sri= ov_control_bits bit) CASE2STR(PAUSE_SEND_PAUSE); CASE2STR(PAUSE_WAIT_GUC); CASE2STR(PAUSE_GUC_DONE); - CASE2STR(PAUSE_SAVE_GUC); CASE2STR(PAUSE_FAILED); CASE2STR(PAUSED); CASE2STR(SAVE_WIP); @@ -453,8 +452,7 @@ static void pf_enter_vf_ready(struct xe_gt *gt, unsigne= d int vfid) * : PAUSE_GUC_DONE o-----restart * : | : * : | o---<--busy : - * : v / / : - * : PAUSE_SAVE_GUC : + * : / : * : / : * : / : * :....o..............o...............o...........: @@ -474,7 +472,6 @@ static void pf_exit_vf_pause_wip(struct xe_gt *gt, unsi= gned int vfid) pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_SEND_PAUSE); pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_WAIT_GUC); pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_GUC_DONE); - pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC); } } =20 @@ -505,41 +502,12 @@ static void pf_enter_vf_pause_rejected(struct xe_gt *= gt, unsigned int vfid) pf_enter_vf_pause_failed(gt, vfid); } =20 -static void pf_enter_vf_pause_save_guc(struct xe_gt *gt, unsigned int vfid) -{ - if (!pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC)) - pf_enter_vf_state_machine_bug(gt, vfid); -} - -static bool pf_exit_vf_pause_save_guc(struct xe_gt *gt, unsigned int vfid) -{ - int err; - - if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC)) - return false; - - err =3D xe_gt_sriov_pf_migration_save_guc_state(gt, vfid); - if (err) { - /* retry if busy */ - if (err =3D=3D -EBUSY) { - pf_enter_vf_pause_save_guc(gt, vfid); - return true; - } - /* give up on error */ - if (err =3D=3D -EIO) - pf_enter_vf_mismatch(gt, vfid); - } - - pf_enter_vf_pause_completed(gt, vfid); - return true; -} - static bool pf_exit_vf_pause_guc_done(struct xe_gt *gt, unsigned int vfid) { if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_GUC_DONE)) return false; =20 - pf_enter_vf_pause_save_guc(gt, vfid); + pf_enter_vf_pause_completed(gt, vfid); return true; } =20 @@ -1983,9 +1951,6 @@ static bool pf_process_vf_state_machine(struct xe_gt = *gt, unsigned int vfid) if (pf_exit_vf_pause_guc_done(gt, vfid)) return true; =20 - if (pf_exit_vf_pause_save_guc(gt, vfid)) - return true; - if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WAIT_DATA)) { xe_gt_sriov_dbg_verbose(gt, "VF%u in %s\n", vfid, control_bit_to_string(XE_GT_SRIOV_STATE_SAVE_WAIT_DATA)); diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h b/drivers/gp= u/drm/xe/xe_gt_sriov_pf_control_types.h index 0bee910bdf07e..6027ba05a7f2e 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control_types.h @@ -28,7 +28,6 @@ * @XE_GT_SRIOV_STATE_PAUSE_SEND_PAUSE: indicates that the PF is about to = send a PAUSE command. * @XE_GT_SRIOV_STATE_PAUSE_WAIT_GUC: indicates that the PF awaits for a r= esponse from the GuC. * @XE_GT_SRIOV_STATE_PAUSE_GUC_DONE: indicates that the PF has received a= response from the GuC. - * @XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC: indicates that the PF needs to save = the VF GuC state. * @XE_GT_SRIOV_STATE_PAUSE_FAILED: indicates that a VF pause operation ha= s failed. * @XE_GT_SRIOV_STATE_PAUSED: indicates that the VF is paused. * @XE_GT_SRIOV_STATE_SAVE_WIP: indicates that VF save operation is in pro= gress. @@ -71,7 +70,6 @@ enum xe_gt_sriov_control_bits { XE_GT_SRIOV_STATE_PAUSE_SEND_PAUSE, XE_GT_SRIOV_STATE_PAUSE_WAIT_GUC, XE_GT_SRIOV_STATE_PAUSE_GUC_DONE, - XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC, XE_GT_SRIOV_STATE_PAUSE_FAILED, XE_GT_SRIOV_STATE_PAUSED, =20 --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E8D9338937; Wed, 5 Nov 2025 15:12:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.10 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355530; cv=fail; b=XpsADPYwBJqvZ9UD5d3efK6ZYCEshADM61N+bd7ZilCSMPHhmIFLkLAjKxriMdckSL9qynEPrHq+gDUjPC5gsgcXXz4cKAaAZJk27gjMCspL3RYxb15m7NrdjUAgRo1scgXVf/23rCPzkNoLvdqbbn4cndoTFDwy4Jk3wDiXtUI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355530; c=relaxed/simple; bh=CVjqfeR12Xyzu8V1OQp2jQi6WGSSn1l2qx2ax7lIGm4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=uJKNHk8d8F6rK2sYEm1ODKsySDa6jhsMfSU4WvmmPDeuT1C2DuTsbeM6/C32zbL7F1T+lDRaO7Boko1pAx7TuFEUvHSu4zir56Fqvd7HjVLASm2dY0aNuHl9jxSHe9zxnzilCvQ8KwJTKTOcFq5ix11xqN3BOsu0BEIj0UA57Us= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=QhM787yz; arc=fail smtp.client-ip=192.198.163.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="QhM787yz" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355528; x=1793891528; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=CVjqfeR12Xyzu8V1OQp2jQi6WGSSn1l2qx2ax7lIGm4=; b=QhM787yz4sCwAQgCbCgrJSmmPEJGnYhUxUs/ahcfiALMZABllTMeOURr LkBy1KWUE2TIOojoFFjkznLTRBtWC7Gq6wBuLGSEBQAGUaKb+kxO32eW1 DSnfilrZk7c4RXiQIYa5mvAFODK4q+zd6QAH6g+EY1hxnQTf/mYUFMbtc F5D0kdLPOQbFhSuxOZxjxiyRaajJKkHFMBJetJeyaiPUk7UcIV3Ac9+0Q Qwv2OBHFX1Huf/oCSGc1jI/DpL3sV/s4VNzfjdT5HdOElo1Z4iICOoC7q fg0bNzbjnu39G72Q75jXgkT17BjuyHSSifpwlC4VWbe+qGv8uGQKdvIIP A==; X-CSE-ConnectionGUID: dwW8Q4E1RyqBd0k6d5Qe/Q== X-CSE-MsgGUID: fhKyov/BTMS7OjTAuUR/dA== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="75824100" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="75824100" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:07 -0800 X-CSE-ConnectionGUID: 2rvrECN7TtSl5Q1rBCCn/g== X-CSE-MsgGUID: 7+BUixknQ4aNiV3T7/xqww== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="186766482" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:07 -0800 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:07 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:07 -0800 Received: from BN1PR04CU002.outbound.protection.outlook.com (52.101.56.7) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:06 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uLWsdOZV5II3LS96pH+P2KQXRpCzGZZzUE6PZpt36+Mmc1YgGEO6dPBk6s6UDsAvEQ88Nq/YfSr5hLGmX9E/KfvmkTunQJnC8L9wqMbxZbNjZvNVOigVCfxsRvkNApb+VksdZq058l0FsxV8GSRH1FNhv+HfIJuRrbi+9hkuMx9UkTwNe2EafAsOFAazJkOpO1hMv/CP/+3COyUjjeL/ZUrHpvK2aX6Hu1LivmlChao5FJqjeZ8pxzcZ0f3WZRNpHzLlKHCcz6jOVSTRazJm175Bs7r5VdoND3G/dnRwnsxf3QK/yhp40dC7Ag6Wa6SUWUpnNLp9a3gq0hHLjuDXpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=bgV8G2AT70uYdGuxPDmZ/ytF37C6MNJibsl0ainXu94=; b=uGzCWQBY4rfyRZA4Y13lgTrRL2uHfitvppCrGnZfIgqrCzTZKtVka2jpbwr3TowEBJNrqUdHCUIH5D7PkpY6n+9nhwKT7ZrJrfyxw15g0BG/6Wb4ZBo5OJxTpVEvBaSHWPJJmPfRduf/iSvw4KBcFVk5igYoRIbDyirJgvJbwwv1Xgmg2RBU8O+XFMA9c8zJhwFfII68M2qNu5GywUnLe/uvIRjspcVRdbEoPWZn4RaoM7heRVm2XOXKIscBrZvt4RM/NqNhB865IWQt9h8DsfStwCadoiO1XLZFM6lSxKxky+IEgVagQVxgQcED3oI8H+TjoPnZN/BeNVFCaFtXBQ== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:01 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:01 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 15/28] drm/xe/pf: Switch VF migration GuC save/restore to struct migration data Date: Wed, 5 Nov 2025 16:10:13 +0100 Message-ID: <20251105151027.540712-16-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0278.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:84::13) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: 23315a62-7e3f-42f3-7c06-08de1c7daba1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MTVuMmExNTZ6cTRYS00wNXRWSU1tL0I4aG1KcmNDMk5SSnB3eUUzRW40SE43?= =?utf-8?B?S091Wm1TbUhXcExYeWs3L2RNZHBGUnhOL0VMYWQ4Q1VXajRFeitleVpCUHkw?= =?utf-8?B?V1FQUzIxaGs3OWk2c01mTDhtL0g4ajhZUzE1QlhyWXRSeWlWOUh1aWU1bWgr?= =?utf-8?B?OUZxeXpsZWZzcC9BY0JSTnozclJGcTFWWlRkK3lqLzd6cGtZMGhsbm5lalAz?= =?utf-8?B?L2RIbHVWUGQxYzc3bjVRcUpiQ2gyU1ZycE4weE5NWG5FT1F0cE1QYmc3V1Jm?= =?utf-8?B?cFBUTkRBQStKNzlEMmVMTlF1SEdVMzZZTzd6SFV6MnB1NnhTVk53Q2V0MWZG?= =?utf-8?B?MUJPTHFhSFhTOGU2VmE1aVZacTh1eWRTb0RqMTh0NG55MldOdFphYk55M2Mx?= =?utf-8?B?alR2Y2FWeVA4WVF1VDNuZmZHZTJ6ejlhVHU4OTR0MCsvL25DNjFQOExIdS9X?= =?utf-8?B?am5yekoxQ0dLczZKbi9hcjUzQXV4Z1ZjTWo5UGZXMHo2THd1UDFjcEhheUVO?= =?utf-8?B?WWZPSk11VEg4Q0VEUU5BbTcyUUs5RmNicnRZSUJUcE52WmQrM0pUZW93UXhJ?= =?utf-8?B?VGtsc0RYb3FCc1hjTGZvckp1NldPUS95Qi9NTWZFa3ZsNGVRNUFwUG1iazR3?= =?utf-8?B?MXU2VnVlTFpyTzlGdDA0VHdpZW90RGZLMTZDMEp4dVpnRmg2OXlHMU8zTGsx?= =?utf-8?B?Y1BDQjJ5dWRYdEhlT0FlTERiN042dW40eXJDa3JDY1F5c1JwWktYTzNXek82?= =?utf-8?B?R0VqRXBoUHFwTUkxcUZJU0s3cXIwZG1vMkFtRFl3Vlk3YTl1UUEyWStWYlFO?= =?utf-8?B?dStPc1AwbkpDNkwxaFBvZEdZSTB2aGVYNlFoOXJMUHQ0eWlYbm5zaklDV0pH?= =?utf-8?B?bS94akhGeDBpU2lLZEs4STN1SzlhWFhtR2swNzIwVDlGSitWK1BkajhObEdT?= =?utf-8?B?Qm5lcFk0ZkRuRjJOdTVZT3Zsc0FibHNBV3p2RkNpaHlEU3JXbFc5UnQweDlo?= =?utf-8?B?OTk2MFg1ZjFybjl3MEZSS1pCeUJZejNqKzNZaEo1K1drcEI2WGJPNHdiS1ZI?= =?utf-8?B?S0M3a09HeTF4QTFuRzNtR3FuM1ZMN3ZJTDhIQjZnS0dveFpuM1Y5SXRoRW54?= =?utf-8?B?Y3VadS80QVg0Y0I5dlpHMWlxdDduTHdMcW9ab3dtYXJqemJMMlFnUjhLMzhi?= =?utf-8?B?b0w3K2s1S2NTcy9GR1lsL2k2Z21OWW1KdHJEZTcyb3NoaStBOU9Yd2w3WGcx?= =?utf-8?B?enl4R3g5cnRtUG15TjBrbHowL0lmUC9DYzdxRmg3ZlVCWlZIaXNITHRKNU43?= =?utf-8?B?a0UwVWZNVGVuR2VPT3h6S2h5WGZndldxNHhwZGdLUU5VY3lyS2xzTytML3Fo?= =?utf-8?B?b1RaMDZ1VzFKOCtTNEZ5ODYyL09LbnBhYzVSd3RDRHFldnNvSGk4ckQ1dU4y?= =?utf-8?B?Z2NxSnZrOWhMakxsYkN5R241cUhUYWt0d2tWNnpiY01FclJLU2hvVXdxT1pk?= =?utf-8?B?ZGtORG5MSkpnR1NveWRYZnFoOTVxeGpaQ0JJakhSbytCb2dyOGlNRDhpeEwz?= =?utf-8?B?cGpmVDJyTHc3OXFjaE9BV0ZYU3c4aEk3WnBTSm42QWlTUUN5K295UWdZYThJ?= =?utf-8?B?S2ZqOTVHZ3pXMG1GeTBlSGJuU3JkODJsZXB1U3d5Q29SSDVBQjBGQ21SRXpL?= =?utf-8?B?YkZ2LzBBSG1LY3BWZnBEdS9oUkJPS2d3cmNUaFR6Rks2VWoxbW5tWTB1N085?= =?utf-8?B?OGtnalMxQm9BbndTbWRVMlAxRDRub1oySmtpUDVPUHZ6VGY1amVvZVo5R2Jx?= =?utf-8?B?L1hBaUU1MC9teDAwdUx0cDNla2hlK0xNeSsxeHVQZVdjMmpmQmhXSnpPM0dt?= =?utf-8?B?NDNENDI5RmVBWC9BWnkvSE9sdUluSzNRU1NvT0FRRFg0OXdUUnZXaTdSa296?= =?utf-8?B?M2QyekJLak9ubFd6QXF0dkxoUlkrOWpoTStqMFBRbzk2bFd2ZzU0bTNneU1h?= =?utf-8?Q?+QzsTQE+H5LnJBKWCgggkem9G+6ivI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?a2dtQU9oMGc1eVBEUFlES3ZEaWNWdmhXT2J5UHU1a3pXMUlqY0ZhT3h3Z2Q4?= =?utf-8?B?MFg0RDVESTgrbXVYVDR0R0lGa1RiUnE0N21QUWNvSngxRHNvNFdlUWNtOGVD?= =?utf-8?B?WkNuS29WTTlaZDI1UnJvem5UOGIwNHBxS0I2aUt0bWtxNnNDWjR6dmlpVG1B?= =?utf-8?B?TlNIWFU1S09TZXRGZnBEc1p2akNyQWhpZ2NHR3E2Nnh2MlNXRE95b1NPRHND?= =?utf-8?B?SGJTc2Y1eEVBeUhPclBtTkRia0x1NnF0QXZRaUpPSWRtVDNVbWZXTWFlZG9l?= =?utf-8?B?cStmeWVLWWJMdlJsNmdtY0UvakRoYURWT0JzcDJ3N2ZVMkFHbnYrTk14Z1gz?= =?utf-8?B?UnpzcE81azUvRWgraTBPWWgzSy9iaUlYcHVkblRKNWFjazZiNzlRTHExNEdr?= =?utf-8?B?bTNsaWN6em9Oa2Q4eEN2MzEvbDdMMHNPQkxSUVAwQmhHQm5HenZQV01zY3pQ?= =?utf-8?B?cEFyaXQ3aEwrZkhqL09yTGlFeEVhbkUwOVh3TWgxanNSZ2VOMXVnYlBIMmhC?= =?utf-8?B?WXBhS3JsMnNzRDhhNmN3YVFIUGxqNERlVFZJV2ROTDZxNm56bmFHRXhtQzgw?= =?utf-8?B?V1laeUd4aVZCQ1ZQWXdrSE83NDFleUZVbm1WZ2RTUUdNb296dUsrNHNxL0hN?= =?utf-8?B?dFFuaDhBK29FaU85MGdNNkRPb0ZPUjB0VjhGWUFDSkRnVHAyS2xrYThxWkY2?= =?utf-8?B?TXl0enE3bEVVWEZ4MVJnMHRTZlloUUN5S3BLSm1VMG52ZUk2cGtXd2Vvcm12?= =?utf-8?B?cTQrZksxcStDczZJL0JKSitrWFVScFU0QjB6YlVuM3VaVDZId1R2cHpPMTFE?= =?utf-8?B?blptTjdERUpNbnlYdXc5UUVSNmwrTzlTTHY3TTJZUUNNeWUxYzJ4OXgyWDZC?= =?utf-8?B?c3B4a1JRVURBdmJOZWNoOXlYTXJxdVN1Sm1VR1JRRlJBS3pSTmJmbHh2U24r?= =?utf-8?B?ZHFySHVkaGFyYktPbUhPU29jN2lSaERvU1RBTTZtejhnQ3hGWXc0NGNtSGZv?= =?utf-8?B?VXZ2Vml5MTdEMGhHVkJ3U3ZOOUdEc2pSUGlFc1RieHJRNnpodU5WZWZWQWEv?= =?utf-8?B?RVdwNC9lNk1QUThmUjJNbHgrYmQyZXNCaFUrMzBRc0hrZzlRUzNacTkvUGJR?= =?utf-8?B?U0pSanY3YXFXR3lXOStWSlRkNWo4NUN5eXhmVlBQSGdLR3ZLbXZVN0pRNnU5?= =?utf-8?B?WUtyQkVLZTFoMjVsU1ZLVWJud1lYQnB3cFJpRmxrQTJOY0RjbmtvQ2haVnVQ?= =?utf-8?B?MkYzcHkyRWV6MVg2NXJqSDMrV0ZVOTFXcFlDQ0l0NkROYzk3RzAwUEZ4dFpZ?= =?utf-8?B?emViRFFmOExOUEx2cDFBbU4vSjJ6V3M2Smg3RTF4QzM3WlBnNmQ4QUJKMlFK?= =?utf-8?B?VG5pa3RpVWQ3K2pWVDhWSVBxNk9jcXNOYkFqZVduejR0VzQyQW03TXNQd1V3?= =?utf-8?B?M1FJNnFTTlZXZTYvTWFhZUZLQmdFajZLZ3NUeWpnOXRBandPM1NZN1M5ODNT?= =?utf-8?B?bmJLWi9oWC91ZUI1YVhZd0dpL0ZSY1FEcmRSOUgxazIwcDlOTlB6K3JHZTIw?= =?utf-8?B?R3Jxb0JOaGc1aUlpNm1vRXZEUzdWd25mL3V3WksrT3NMU2lHU3ZYcm9uKzhY?= =?utf-8?B?d1QwQ01nam5mRHRLZ2o5SG9WcDBhMzlyWWNrU0VmTEtmSDR3NHYyaGYyc2NB?= =?utf-8?B?YTVxd2oxMVlSUTIyZlJHWEpwV0xiRktQeSsyNEN1VTgrVHg0cFJBVTZRSW1M?= =?utf-8?B?ckJUbnU2d3FjM282QVd2djVLeGtCc3NvUXJtdkZRNGxRK2lQT3RDb2RGQTBw?= =?utf-8?B?WkVRNEZYU0hoMGU3MVY3Q0llUmdrQVN4M2xQbkV3bUhxUnZWZ0VlLzY4SjJm?= =?utf-8?B?TXZSK0xEUkFGdUFweUdJV0JXUEJINUt6cE1lazRlWG5FVHJxRThSZ0lQUHcr?= =?utf-8?B?cnRRUjA2N05Ub1o1YTdCdEN5RERwdVlabDI2N2NTMDhESnFINGNSc3Jlb2c0?= =?utf-8?B?Sm1TdEJxQzhpS0wvb0lBSldvWU5MZHp4cEk0SnNtSVViWjFYbHlCT2VhU1dt?= =?utf-8?B?aDRVeUFsK2FDZFUrTUFEdG5tekhNMlpNaU9RSHFoc2NMclRsWWJCem1VSUc5?= =?utf-8?B?blZGc3JVbkZtT0Q5b21jYVVsWTA2d1VTaXFjSnV5aWFDU3EwNnRXWVhaVjNY?= =?utf-8?B?UlE9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 23315a62-7e3f-42f3-7c06-08de1c7daba1 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:01.3557 (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: rjsS0L+PlrewNcHReRkWB9mWsXBewZXz92QfWppurAxMAjeU8Kl42Gt2aFv8/9/jHgbRit4YoPvHz+OSEhwI3PcwC7PT08Ci6ckU1jTAzZA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com In upcoming changes, the GuC VF migration data will be handled as part of separate SAVE/RESTORE states in VF control state machine. Now that the data is decoupled from both guc_state debugfs and PAUSE state, we can safely remove the struct xe_gt_sriov_state_snapshot and modify the GuC save/restore functions to operate on struct xe_sriov_migration_data. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 265 +++++------------- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h | 13 +- .../drm/xe/xe_gt_sriov_pf_migration_types.h | 27 -- drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h | 4 - 4 files changed, 79 insertions(+), 230 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index 88371c205add7..6e2b076065f3b 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -28,6 +28,19 @@ static struct xe_gt_sriov_migration_data *pf_pick_gt_mig= ration(struct xe_gt *gt, return >->sriov.pf.vfs[vfid].migration; } =20 +static void pf_dump_mig_data(struct xe_gt *gt, unsigned int vfid, + struct xe_sriov_packet *data, + const char *what) +{ + if (IS_ENABLED(CONFIG_DRM_XE_DEBUG_SRIOV)) { + struct drm_printer p =3D xe_gt_dbg_printer(gt); + + drm_printf(&p, "VF%u %s (%llu bytes)\n", vfid, what, data->size); + drm_print_hex_dump(&p, "mig_hdr: ", (void *)&data->hdr, sizeof(data->hd= r)); + drm_print_hex_dump(&p, "mig_data: ", data->vaddr, min(SZ_64, data->size)= ); + } +} + /* Return: number of dwords saved/restored/required or a negative error co= de on failure */ static int guc_action_vf_save_restore(struct xe_guc *guc, u32 vfid, u32 op= code, u64 addr, u32 ndwords) @@ -47,7 +60,7 @@ static int guc_action_vf_save_restore(struct xe_guc *guc,= u32 vfid, u32 opcode, } =20 /* Return: size of the state in dwords or a negative error code on failure= */ -static int pf_send_guc_query_vf_state_size(struct xe_gt *gt, unsigned int = vfid) +static int pf_send_guc_query_vf_mig_data_size(struct xe_gt *gt, unsigned i= nt vfid) { int ret; =20 @@ -56,8 +69,8 @@ static int pf_send_guc_query_vf_state_size(struct xe_gt *= gt, unsigned int vfid) } =20 /* Return: number of state dwords saved or a negative error code on failur= e */ -static int pf_send_guc_save_vf_state(struct xe_gt *gt, unsigned int vfid, - void *dst, size_t size) +static int pf_send_guc_save_vf_mig_data(struct xe_gt *gt, unsigned int vfi= d, + void *dst, size_t size) { const int ndwords =3D size / sizeof(u32); struct xe_guc *guc =3D >->uc.guc; @@ -86,8 +99,8 @@ static int pf_send_guc_save_vf_state(struct xe_gt *gt, un= signed int vfid, } =20 /* Return: number of state dwords restored or a negative error code on fai= lure */ -static int pf_send_guc_restore_vf_state(struct xe_gt *gt, unsigned int vfi= d, - const void *src, size_t size) +static int pf_send_guc_restore_vf_mig_data(struct xe_gt *gt, unsigned int = vfid, + const void *src, size_t size) { const int ndwords =3D size / sizeof(u32); struct xe_guc *guc =3D >->uc.guc; @@ -115,120 +128,66 @@ static bool pf_migration_supported(struct xe_gt *gt) return xe_sriov_pf_migration_supported(gt_to_xe(gt)); } =20 -static struct mutex *pf_migration_mutex(struct xe_gt *gt) +static int pf_save_vf_guc_mig_data(struct xe_gt *gt, unsigned int vfid) { - xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); - return >->sriov.pf.migration.snapshot_lock; -} - -static struct xe_gt_sriov_state_snapshot *pf_pick_vf_snapshot(struct xe_gt= *gt, - unsigned int vfid) -{ - xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); - xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); - lockdep_assert_held(pf_migration_mutex(gt)); - - return >->sriov.pf.vfs[vfid].snapshot; -} - -static unsigned int pf_snapshot_index(struct xe_gt *gt, struct xe_gt_sriov= _state_snapshot *snapshot) -{ - return container_of(snapshot, struct xe_gt_sriov_metadata, snapshot) - gt= ->sriov.pf.vfs; -} - -static void pf_free_guc_state(struct xe_gt *gt, struct xe_gt_sriov_state_s= napshot *snapshot) -{ - struct xe_device *xe =3D gt_to_xe(gt); - - drmm_kfree(&xe->drm, snapshot->guc.buff); - snapshot->guc.buff =3D NULL; - snapshot->guc.size =3D 0; -} - -static int pf_alloc_guc_state(struct xe_gt *gt, - struct xe_gt_sriov_state_snapshot *snapshot, - size_t size) -{ - struct xe_device *xe =3D gt_to_xe(gt); - void *p; - - pf_free_guc_state(gt, snapshot); - - if (!size) - return -ENODATA; - - if (size % sizeof(u32)) - return -EINVAL; - - if (size > SZ_2M) - return -EFBIG; - - p =3D drmm_kzalloc(&xe->drm, size, GFP_KERNEL); - if (!p) - return -ENOMEM; - - snapshot->guc.buff =3D p; - snapshot->guc.size =3D size; - return 0; -} - -static void pf_dump_guc_state(struct xe_gt *gt, struct xe_gt_sriov_state_s= napshot *snapshot) -{ - if (IS_ENABLED(CONFIG_DRM_XE_DEBUG_SRIOV)) { - unsigned int vfid __maybe_unused =3D pf_snapshot_index(gt, snapshot); - - xe_gt_sriov_dbg_verbose(gt, "VF%u GuC state is %zu dwords:\n", - vfid, snapshot->guc.size / sizeof(u32)); - print_hex_dump_bytes("state: ", DUMP_PREFIX_OFFSET, - snapshot->guc.buff, min(SZ_64, snapshot->guc.size)); - } -} - -static int pf_save_vf_guc_state(struct xe_gt *gt, unsigned int vfid) -{ - struct xe_gt_sriov_state_snapshot *snapshot =3D pf_pick_vf_snapshot(gt, v= fid); + struct xe_sriov_packet *data; size_t size; int ret; =20 - ret =3D pf_send_guc_query_vf_state_size(gt, vfid); + ret =3D pf_send_guc_query_vf_mig_data_size(gt, vfid); if (ret < 0) goto fail; + size =3D ret * sizeof(u32); - xe_gt_sriov_dbg_verbose(gt, "VF%u state size is %d dwords (%zu bytes)\n",= vfid, ret, size); =20 - ret =3D pf_alloc_guc_state(gt, snapshot, size); - if (ret < 0) + data =3D xe_sriov_packet_alloc(gt_to_xe(gt)); + if (!data) { + ret =3D -ENOMEM; goto fail; + } + + ret =3D xe_sriov_packet_init(data, gt->tile->id, gt->info.id, + XE_SRIOV_PACKET_TYPE_GUC, 0, size); + if (ret) + goto fail_free; =20 - ret =3D pf_send_guc_save_vf_state(gt, vfid, snapshot->guc.buff, size); + ret =3D pf_send_guc_save_vf_mig_data(gt, vfid, data->vaddr, size); if (ret < 0) - goto fail; + goto fail_free; size =3D ret * sizeof(u32); xe_gt_assert(gt, size); - xe_gt_assert(gt, size <=3D snapshot->guc.size); - snapshot->guc.size =3D size; + xe_gt_assert(gt, size <=3D data->size); + data->size =3D size; + data->remaining =3D size; + + pf_dump_mig_data(gt, vfid, data, "GuC data save"); + + ret =3D xe_gt_sriov_pf_migration_save_produce(gt, vfid, data); + if (ret) + goto fail_free; =20 - pf_dump_guc_state(gt, snapshot); return 0; =20 +fail_free: + xe_sriov_packet_free(data); fail: - xe_gt_sriov_dbg(gt, "Unable to save VF%u state (%pe)\n", vfid, ERR_PTR(re= t)); - pf_free_guc_state(gt, snapshot); + xe_gt_sriov_err(gt, "Failed to save VF%u GuC data (%pe)\n", + vfid, ERR_PTR(ret)); return ret; } =20 /** - * xe_gt_sriov_pf_migration_save_guc_state() - Take a GuC VF state snapsho= t. + * xe_gt_sriov_pf_migration_guc_size() - Get the size of VF GuC migration = data. * @gt: the &xe_gt * @vfid: the VF identifier * * This function is for PF only. * - * Return: 0 on success or a negative error code on failure. + * Return: size in bytes or a negative error code on failure. */ -int xe_gt_sriov_pf_migration_save_guc_state(struct xe_gt *gt, unsigned int= vfid) +ssize_t xe_gt_sriov_pf_migration_guc_size(struct xe_gt *gt, unsigned int v= fid) { - int err; + ssize_t size; =20 xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); xe_gt_assert(gt, vfid !=3D PFID); @@ -237,37 +196,15 @@ int xe_gt_sriov_pf_migration_save_guc_state(struct xe= _gt *gt, unsigned int vfid) if (!pf_migration_supported(gt)) return -ENOPKG; =20 - mutex_lock(pf_migration_mutex(gt)); - err =3D pf_save_vf_guc_state(gt, vfid); - mutex_unlock(pf_migration_mutex(gt)); + size =3D pf_send_guc_query_vf_mig_data_size(gt, vfid); + if (size >=3D 0) + size *=3D sizeof(u32); =20 - return err; -} - -static int pf_restore_vf_guc_state(struct xe_gt *gt, unsigned int vfid) -{ - struct xe_gt_sriov_state_snapshot *snapshot =3D pf_pick_vf_snapshot(gt, v= fid); - int ret; - - if (!snapshot->guc.size) - return -ENODATA; - - xe_gt_sriov_dbg_verbose(gt, "restoring %zu dwords of VF%u GuC state\n", - snapshot->guc.size / sizeof(u32), vfid); - ret =3D pf_send_guc_restore_vf_state(gt, vfid, snapshot->guc.buff, snapsh= ot->guc.size); - if (ret < 0) - goto fail; - - xe_gt_sriov_dbg_verbose(gt, "restored %d dwords of VF%u GuC state\n", ret= , vfid); - return 0; - -fail: - xe_gt_sriov_dbg(gt, "Failed to restore VF%u GuC state (%pe)\n", vfid, ERR= _PTR(ret)); - return ret; + return size; } =20 /** - * xe_gt_sriov_pf_migration_restore_guc_state() - Restore a GuC VF state. + * xe_gt_sriov_pf_migration_guc_save() - Save VF GuC migration data. * @gt: the &xe_gt * @vfid: the VF identifier * @@ -275,10 +212,8 @@ static int pf_restore_vf_guc_state(struct xe_gt *gt, u= nsigned int vfid) * * Return: 0 on success or a negative error code on failure. */ -int xe_gt_sriov_pf_migration_restore_guc_state(struct xe_gt *gt, unsigned = int vfid) +int xe_gt_sriov_pf_migration_guc_save(struct xe_gt *gt, unsigned int vfid) { - int ret; - xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); xe_gt_assert(gt, vfid !=3D PFID); xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); @@ -286,75 +221,42 @@ int xe_gt_sriov_pf_migration_restore_guc_state(struct= xe_gt *gt, unsigned int vf if (!pf_migration_supported(gt)) return -ENOPKG; =20 - mutex_lock(pf_migration_mutex(gt)); - ret =3D pf_restore_vf_guc_state(gt, vfid); - mutex_unlock(pf_migration_mutex(gt)); - - return ret; + return pf_save_vf_guc_mig_data(gt, vfid); } =20 -#ifdef CONFIG_DEBUG_FS -/** - * xe_gt_sriov_pf_migration_read_guc_state() - Read a GuC VF state. - * @gt: the &xe_gt - * @vfid: the VF identifier - * @buf: the user space buffer to read to - * @count: the maximum number of bytes to read - * @pos: the current position in the buffer - * - * This function is for PF only. - * - * This function reads up to @count bytes from the saved VF GuC state buff= er - * at offset @pos into the user space address starting at @buf. - * - * Return: the number of bytes read or a negative error code on failure. - */ -ssize_t xe_gt_sriov_pf_migration_read_guc_state(struct xe_gt *gt, unsigned= int vfid, - char __user *buf, size_t count, loff_t *pos) +static int pf_restore_vf_guc_state(struct xe_gt *gt, unsigned int vfid, + struct xe_sriov_packet *data) { - struct xe_gt_sriov_state_snapshot *snapshot; - ssize_t ret; + int ret; =20 - xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); - xe_gt_assert(gt, vfid !=3D PFID); - xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); + xe_gt_assert(gt, data->size); =20 - if (!pf_migration_supported(gt)) - return -ENOPKG; + pf_dump_mig_data(gt, vfid, data, "GuC data restore"); =20 - mutex_lock(pf_migration_mutex(gt)); - snapshot =3D pf_pick_vf_snapshot(gt, vfid); - if (snapshot->guc.size) - ret =3D simple_read_from_buffer(buf, count, pos, snapshot->guc.buff, - snapshot->guc.size); - else - ret =3D -ENODATA; - mutex_unlock(pf_migration_mutex(gt)); + ret =3D pf_send_guc_restore_vf_mig_data(gt, vfid, data->vaddr, data->size= ); + if (ret < 0) + goto fail; + + return 0; =20 +fail: + xe_gt_sriov_err(gt, "Failed to restore VF%u GuC data (%pe)\n", + vfid, ERR_PTR(ret)); return ret; } =20 /** - * xe_gt_sriov_pf_migration_write_guc_state() - Write a GuC VF state. + * xe_gt_sriov_pf_migration_guc_restore() - Restore VF GuC migration data. * @gt: the &xe_gt * @vfid: the VF identifier - * @buf: the user space buffer with GuC VF state - * @size: the size of GuC VF state (in bytes) * * This function is for PF only. * - * This function reads @size bytes of the VF GuC state stored at user space - * address @buf and writes it into a internal VF state buffer. - * - * Return: the number of bytes used or a negative error code on failure. + * Return: 0 on success or a negative error code on failure. */ -ssize_t xe_gt_sriov_pf_migration_write_guc_state(struct xe_gt *gt, unsigne= d int vfid, - const char __user *buf, size_t size) +int xe_gt_sriov_pf_migration_guc_restore(struct xe_gt *gt, unsigned int vf= id, + struct xe_sriov_packet *data) { - struct xe_gt_sriov_state_snapshot *snapshot; - loff_t pos =3D 0; - ssize_t ret; - xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); xe_gt_assert(gt, vfid !=3D PFID); xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); @@ -362,21 +264,8 @@ ssize_t xe_gt_sriov_pf_migration_write_guc_state(struc= t xe_gt *gt, unsigned int if (!pf_migration_supported(gt)) return -ENOPKG; =20 - mutex_lock(pf_migration_mutex(gt)); - snapshot =3D pf_pick_vf_snapshot(gt, vfid); - ret =3D pf_alloc_guc_state(gt, snapshot, size); - if (!ret) { - ret =3D simple_write_to_buffer(snapshot->guc.buff, size, &pos, buf, size= ); - if (ret < 0) - pf_free_guc_state(gt, snapshot); - else - pf_dump_guc_state(gt, snapshot); - } - mutex_unlock(pf_migration_mutex(gt)); - - return ret; + return pf_restore_vf_guc_state(gt, vfid, data); } -#endif /* CONFIG_DEBUG_FS */ =20 /** * xe_gt_sriov_pf_migration_size() - Total size of migration data from all= components within a GT. @@ -618,10 +507,6 @@ int xe_gt_sriov_pf_migration_init(struct xe_gt *gt) if (!pf_migration_supported(gt)) return 0; =20 - err =3D drmm_mutex_init(&xe->drm, >->sriov.pf.migration.snapshot_lock); - if (err) - return err; - totalvfs =3D xe_sriov_pf_get_totalvfs(xe); for (n =3D 1; n <=3D totalvfs; n++) { struct xe_gt_sriov_migration_data *migration =3D pf_pick_gt_migration(gt= , n); diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.h index 148ee07dd23a9..fd81942bfd7a2 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h @@ -15,8 +15,10 @@ struct xe_sriov_packet; #define XE_GT_SRIOV_PF_MIGRATION_GUC_DATA_MAX_SIZE SZ_8M =20 int xe_gt_sriov_pf_migration_init(struct xe_gt *gt); -int xe_gt_sriov_pf_migration_save_guc_state(struct xe_gt *gt, unsigned int= vfid); -int xe_gt_sriov_pf_migration_restore_guc_state(struct xe_gt *gt, unsigned = int vfid); +ssize_t xe_gt_sriov_pf_migration_guc_size(struct xe_gt *gt, unsigned int v= fid); +int xe_gt_sriov_pf_migration_guc_save(struct xe_gt *gt, unsigned int vfid); +int xe_gt_sriov_pf_migration_guc_restore(struct xe_gt *gt, unsigned int vf= id, + struct xe_sriov_packet *data); =20 ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt, unsigned int vfid); =20 @@ -34,11 +36,4 @@ int xe_gt_sriov_pf_migration_restore_produce(struct xe_g= t *gt, unsigned int vfid struct xe_sriov_packet * xe_gt_sriov_pf_migration_save_consume(struct xe_gt *gt, unsigned int vfid); =20 -#ifdef CONFIG_DEBUG_FS -ssize_t xe_gt_sriov_pf_migration_read_guc_state(struct xe_gt *gt, unsigned= int vfid, - char __user *buf, size_t count, loff_t *pos); -ssize_t xe_gt_sriov_pf_migration_write_guc_state(struct xe_gt *gt, unsigne= d int vfid, - const char __user *buf, size_t count); -#endif - #endif diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h b/drivers/= gpu/drm/xe/xe_gt_sriov_pf_migration_types.h index 84be6fac16c8b..75d8b94cbbefb 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h @@ -6,24 +6,7 @@ #ifndef _XE_GT_SRIOV_PF_MIGRATION_TYPES_H_ #define _XE_GT_SRIOV_PF_MIGRATION_TYPES_H_ =20 -#include #include -#include - -/** - * struct xe_gt_sriov_state_snapshot - GT-level per-VF state snapshot data. - * - * Used by the PF driver to maintain per-VF migration data. - */ -struct xe_gt_sriov_state_snapshot { - /** @guc: GuC VF state snapshot */ - struct { - /** @guc.buff: buffer with the VF state */ - u32 *buff; - /** @guc.size: size of the buffer (must be dwords aligned) */ - u32 size; - } guc; -}; =20 /** * struct xe_gt_sriov_migration_data - GT-level per-VF migration data. @@ -35,14 +18,4 @@ struct xe_gt_sriov_migration_data { struct ptr_ring ring; }; =20 -/** - * struct xe_gt_sriov_pf_migration - GT-level data. - * - * Used by the PF driver to maintain non-VF specific per-GT data. - */ -struct xe_gt_sriov_pf_migration { - /** @snapshot_lock: protects all VFs snapshots */ - struct mutex snapshot_lock; -}; - #endif diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h b/drivers/gpu/drm/xe= /xe_gt_sriov_pf_types.h index 812e74d3f8f80..667b8310478d4 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h @@ -31,9 +31,6 @@ struct xe_gt_sriov_metadata { /** @version: negotiated VF/PF ABI version */ struct xe_gt_sriov_pf_service_version version; =20 - /** @snapshot: snapshot of the VF state data */ - struct xe_gt_sriov_state_snapshot snapshot; - /** @migration: per-VF migration data. */ struct xe_gt_sriov_migration_data migration; }; @@ -61,7 +58,6 @@ struct xe_gt_sriov_pf { struct xe_gt_sriov_pf_service service; struct xe_gt_sriov_pf_control control; struct xe_gt_sriov_pf_policy policy; - struct xe_gt_sriov_pf_migration migration; struct xe_gt_sriov_spare_config spare; struct xe_gt_sriov_metadata *vfs; }; --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E7ABC33A03C; Wed, 5 Nov 2025 15:12:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.10 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355533; cv=fail; b=fjGaLqdGKXF3Tf26y3aSZv7QxXNlHQKloZM6DVOA5wxwVGrL6teMe8Z+A+jrq2YidsLdsWL93Q/3W3ltsPKODErhP+tvUJDd2gfVEJyN0l5s66b+mXIp4pN/BTjdh1m/hty90JWD9VHGzxHGqEaPO2SVMbSCzsABtd6Vj+rvoE8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355533; c=relaxed/simple; bh=OlYlqPD0mUhzaT4tUvpyPRCg6EOAvn3rRBvU6YMlGEo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ekCyoSMk4GfSHRnDlrsXXTG6FQhyVylrmVvQ56fTQOK44uDWxQ472v6cylACk/dy/ifB7S/OreAuKtTfMZ7Z2sWp8fi663e5zqR2QVKiIm0SKb6GzJauFQ8x4CLOnD/7GwLTDVNvyjEugyPGgTM4j3FjMnL8uIoebuL7pyQoocQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=KkBW9HX/; arc=fail smtp.client-ip=192.198.163.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="KkBW9HX/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355531; x=1793891531; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=OlYlqPD0mUhzaT4tUvpyPRCg6EOAvn3rRBvU6YMlGEo=; b=KkBW9HX/6NUjeIkK6b1LE1i0J79TpudNjTukvX3iZfx54SM+RC2c/jt4 xdakHeEWwz9fG3xzCP8RNgTaJKb7bjGsec/BfzqHvz1xAP6AktI0KnTwj Hlo/1HWdofSfSWT9ex7J+Eo9nMbD2omU4cWADnAfkqWmksNI3G3ou9FsG GhT+ru+kWuWvbvoRIRZAWNXrYJkF4MCXgKeawCeqtl4VjivrutXWYGLA3 SjHyogjZJSGq0bQDOFeFo4S2ynORLoUCKcvbWyUaxCMUm4f+ZZizXw+Al a/NsIr2nVnYAh/XfTtltlf9rE0u+PexqfhGfBUsUUMonWxX5QVnBMP9dQ A==; X-CSE-ConnectionGUID: 2O/T/fYvRzy1LkM3xbQrUA== X-CSE-MsgGUID: BCCFLc2TT3Oh8hrJtzGe4g== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="75824106" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="75824106" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:10 -0800 X-CSE-ConnectionGUID: zwd27CNrSyOy2O1lJQVNTg== X-CSE-MsgGUID: vFViHSESRGuviVOODJ/RfQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="186766488" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:10 -0800 Received: from FMSMSX903.amr.corp.intel.com (10.18.126.92) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:09 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:09 -0800 Received: from CH4PR04CU002.outbound.protection.outlook.com (40.107.201.17) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:09 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DI7feAIzUGhpXVtyG7r8J0IMuzBDqeYyphsuTV3cLkr+hgIaZyyU3Wz1bO9Rdi5hfXFVdqT+BNFGa1fPXi42NWRMgxWEZMsPY16ghd9H01z42r/JzPEb9w6aiLOth9eBzWonk+gYcXVAu6rhYVFowow2RbdlJrYjpfK8F9rPz6emCylnliAS0OgVMeV1oC+jNV7kvn1P+VgFDxODehPswHxK/zzy04PGyy+VHmI4WuDIwcnxCMOpgSOT4xf3YTjxtSVYeaxAkcWjj0TzJz6KIUQcyhovcgsHHJ4nom8XUTvozF9czCHpfOswlISGrauWZPeMWXEhmo6bOOlVYCK3QA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=wP+1200fYH5KSHhDAa6WMAPP/fXaHBKYPBF4fDEVFBM=; b=cre2UB0AxTq3wCrwd1c9Z1m1E29LH8OEwJfcYr2eYCr2bXI3Nrqi8lIpzljHl9L0OwXGBT+ADfRAntFh03E4TxBji9PHBiwlMzqVa5w9PBbPLg1szUw/2+v6UQ26p/UAQ+Yp37Jxy9EPWtLY8Yts0GMJJrYxJcxYWUDW+Dfq07p2sF/uovmc26oi5tGvAkTG676czkvV8SDEQnw60egtdANGTM6SoF1QizRj+l2ynbF0/C67C8nTa7NwLMhtesg7Z95llkJQDYyraRc8dIMRCyW7a15gJ3eHWMzSsPQoaUfJjZnmxC2ZbwSsFeiEFCYk0hp+5EYrhQk8Rm9niPtglA== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:06 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:06 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 16/28] drm/xe/pf: Handle GuC migration data as part of PF control Date: Wed, 5 Nov 2025 16:10:14 +0100 Message-ID: <20251105151027.540712-17-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: WA2P291CA0023.POLP291.PROD.OUTLOOK.COM (2603:10a6:1d0:1e::19) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: 49c7f371-c717-4421-824f-08de1c7daed8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?eXFEOXo3V0ZOakNjdTJFOWZGUm9maklXZFMvZFMyTHNDaFRTU1Z6djFqY3lh?= =?utf-8?B?Z3JzbUhlNDgra00xaXV4WnFiQ3pCdWcveTBRQmRocHpsUEE0ckxqMHMxWExt?= =?utf-8?B?WU5LaWJSc0d3NGFIcDk2di81NkR5Z3UySy8xTmJQT28xRUhxVmtON3ZCR3dP?= =?utf-8?B?dkxFSFdZa2szeXRsOUxuV0haK1BOTmtJSEJPU0JQVnpCMEgyTFN2ZXpHTkJP?= =?utf-8?B?RG9PUkFoUElqOEVZeEZsaGZ0N0pnb0VzM3ljQ3MvbTBjZFFlbXRqR0E5R01h?= =?utf-8?B?SFRSM3FIbEdKaWg2MUZlRGdpN0tyMGNCekdadnRqTFkzU3JNS3BDakYyS0dC?= =?utf-8?B?Q01ZandLcGZQNk1rYWU0MEt4cll1Q01XZlZrR2pKR1ozdmR6dkp6bytOVW5S?= =?utf-8?B?TncwMWVscHUwdU9jaFR4cGRrVEk5OGtIcHhzdWszVmFXUDlKMzFqWUJkTmd0?= =?utf-8?B?citpMmFVLzhoSS9mb2pkeU9JaTdRaHJGcitUK1pycjhObHRVcnNZdjlHQ2JG?= =?utf-8?B?VHREYzIvUDhqQ21oRU1SZUhRa0R3Q05JVVhxRWNiQTUyK1BZM1FCd3JFNEFr?= =?utf-8?B?Q2cwYjUxM0xva2tNWEpvZ3FCcTVsLzl0bWRxOHFkandSNk5vamtpNUNZRkt1?= =?utf-8?B?UGdFUkJWQWI0R0NFUzNRWTJPQStIaG1HYklLSzh5bkVqNXhTSzZLaUxHaXBE?= =?utf-8?B?MFNGbURHZEhSKzg0NEs1c2ZHaDliQW41bmlHMldxem5NajNvQU5EY2ZRQjAz?= =?utf-8?B?TnB5cmVKc1FsUGtVVFRycGxVNHZka2UvdytkRi9KL2dlVmZWYnpEVWJQcnkw?= =?utf-8?B?VlZJUjBFeWc3MHVpc1hGK1dYMlFLTzNVZzRkWGIvSS9qRU11cUxIUzAyb2Zv?= =?utf-8?B?R0pvck5HMXhEUTJTRVBxaDZRM2phZnBqVEYvb09aQTdaOWVhNW93dGthU1gv?= =?utf-8?B?OGYwQXJ2R2lWTEs1eTBtampPdjVURC9pUHF3ZE9ZSzZaMU8zTkI0bzI0WkNZ?= =?utf-8?B?TkxKNE5ydUFITTFzdXc3blZ4dm5qeUpDU0VFSy9ZSHhTL0tWRTg0TkJYYU9J?= =?utf-8?B?QjVGM3gxbWNCVjZKc3RNSU9EOEtSbjM5OUh3RUVraFFQUVZ5NnF0ejFRVWtG?= =?utf-8?B?SStEVW0yVnE4eDVXc2c5ZlJkMjh4cTdkbnlmWUhJZmRDTzdrN3pyQUQ3TVhV?= =?utf-8?B?RGoyZGE3czlObWdEOElreFhZUzZKSnFFTlZEUVU3bDJNc2sra0tIVDFGNjlT?= =?utf-8?B?bGtUQ3dqbDNTVGcyZXRHK1NtM1M3K3lRYk1rNnBlaDRQd0xhMXhPbncwTjJy?= =?utf-8?B?WnRCU1pWRWJIbzBsd3VaRmtRRC9pMGNVNTlGUURSYnRqTVk2VEZ5ZityMWg3?= =?utf-8?B?bEVLb0lrRFA2enZqTFJ2dkNLeGFlOTd3N0pHN205d1NQazJ1b3JFd25IVVJX?= =?utf-8?B?K0szbmpNb1pvb0Z5Uk9GcVhVQWViWGRWR0VmRitMVnFNTjQ2WUxDZ2t6cnho?= =?utf-8?B?RmJDbi9jajJUN0VDQ2Y0RS91OG5ldGh5cEVlZW96WEpKenp0UTV0UmJPcTM2?= =?utf-8?B?SkJUNzFBSUtYYStocmczVGxSQy9DOFBRaXR4WU01T0UycWV4UUVVblVQZU4w?= =?utf-8?B?RFdOeG5nQ3p5Y3FIRTNweUVyQXBmbHpibHkvdDZuaXRzdk5uWVlWR0FtZElh?= =?utf-8?B?NjQraXZZZEhXQTFxL2RUQS9DR3I3Q3Mra3hqeGI4UTRseGdXS2pkTE93bThj?= =?utf-8?B?SE92UkUwTXVXODQ3TU5ST0EzaW8xdW9uWU4rTGIya1NMeXlHcVRqdlBGK3My?= =?utf-8?B?V3Q2dE51R2hNaklPekp5Wmo5MTZJRWFaekZkZCtZTjZXSm1ySFRybmhvV2p1?= =?utf-8?B?RjRNeEh2WXlVNU43MjN4eUFGUitwbUNzL3Z2eTFjdmtKNHFxZ3I3ZVRCY3pk?= =?utf-8?B?MWp5eERoYmpraEZDeDJPaDFrOGxNbXZ0cEM3RHFsa0Z6QWIxeWRvazQ4WlYr?= =?utf-8?Q?iRGnyQz5/0yrcOY8UL7eNdaQHdG1u8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?U09JdGgrcldFN1BnNEVrK2JzWGZMTGJ3blJOT3hHcWN1bTVrbFVtdEcxUStm?= =?utf-8?B?bEpENldvUWtmbGZwWXl2K0VzakxubmlueVFlRmJ5N1JSSUFvQ2FGTGN5NGcv?= =?utf-8?B?QVBWRDF4N0IrN3VYSktZV2g3VG9mSmFCWlFyMjB2Y0pzbTlJREpZSTg3TzNX?= =?utf-8?B?d3dFcWMvN21TNDRUYURZdGhsdlJaM3NnVjF5M3ZkcVorWVU1SndXaWZXWkVy?= =?utf-8?B?dGowL3FZMlZUbllIZVVFc0xHd2JFYURmWFhnZEYwZHExWGRud2V4Z1E0ODdF?= =?utf-8?B?SXArOE9XbGdHNFcvdVNHKys5Q1Z6MEkwS3o2dDhrSm9HdTc5NG1GMG9OLzg0?= =?utf-8?B?WGZZL21OWnVrNmQ2ZDVsM29Ba0loc0JhL1NtN2tldGZpTU9pSE12TTV3SEQr?= =?utf-8?B?L0xNMGRFZHBuR3lEc2V5UCtCYjJEK3FyN2VjdlVKMUZObXBzK3N2Y2JzdUx4?= =?utf-8?B?SzVxbTNnTjVaL1hpMEFncUVaelgrWXNEZld1bExVWlVUYldqRE1zNDRVbE5N?= =?utf-8?B?U0pBRDQxb1lIVVJuVEVMZ0w2QzVETXVLc2FrNW5Vc3pTTCsvTFBUTG5vVElW?= =?utf-8?B?eXN3MkNSNHU4MGdySHhBalNmb1Zzb0ZabE0rWnE5TVFuT09KOVI5eTBwbWlE?= =?utf-8?B?UkgwL1BDbGpPWTBtejFOZlNVdjRmQ3VUS2pXUlVrWDZBNld1TFRkUW90UWxt?= =?utf-8?B?MXNWSVk0bFNXUGxEcE1KeXc4Z1JITXhGY3E0SDBPMi9QUTFqQnJTeERuOFRY?= =?utf-8?B?RFF3YmxWVGVyOG0zQkxXYzZ4ZVA5bis3N1UxSU9lN3RqWGFnUUxUYTFZSEJj?= =?utf-8?B?V2pINXR4RmcwUEhWN1NmWjFzdWxYOHNwWVlWUExiNmVBdXNiREtBd0RWemV3?= =?utf-8?B?U05tbEY4Vk1UQ2JKL1d5U254MnZ4R0s2WEZCMENHcnVKSXExZ2tKQXVtSkdI?= =?utf-8?B?c2tORUduVXA0RVV2b21QWk5UbHlUbUp5V2ZnUUloUTRleHBzWnZsYk5zeFNX?= =?utf-8?B?SE14cTFlOXpjS2F0bDhKbzJjRmZrdVhxMWtlb3BTNHhCU3ZvMVdNbEt1cWRt?= =?utf-8?B?d28zU2s4ckxIWlRHU0hSeXhHd2g0RW15M1V5ZjRZTjVnb25SeHNRRVJvbzJ0?= =?utf-8?B?RFhSMVlIYk4raUlUMTVRaXRqWnVDZjZLK21QbVRTNjI0a1JyK3ZxZmtXS3RD?= =?utf-8?B?UjZIRFB5K0NUblFYT0Yyb0hJNXJndWJIaFdJMUNIUmx5STN2MCtHTENkSnhK?= =?utf-8?B?WXlIa0FOVFZ4WjQxRzlLek8rYUs3RE9mVHlXd0JjdktyMVFBMWRyV2hkWEcw?= =?utf-8?B?ZVp4T2JtUVdaamw5Z1FpcVI3UTEzQkU2Q1ArUitVNCtkdnpIc1Jra0ZUL0sx?= =?utf-8?B?cUVIZlk3MHdLVmhEL3RMTWF1Z1ByVU43T1RPVWp2OTVzUjZ3VCtOZWlZOUNz?= =?utf-8?B?a0xZVUFjZjV5dnRwOTVUUVltVXdsR21nSGdlRWU5QVllbjkweHNyU2QvWFI0?= =?utf-8?B?TCtqZFJLWTJoTjNGUk1aaDBQK3NxQ1I5M3ZzS1hCUEIwWVBxREsvaDQ0SmFi?= =?utf-8?B?SUcxcWswV1JYZlIycXZwWVVPN1ZMTURLQk5vK3kxZlFpMks4OVpQVTB2cnNK?= =?utf-8?B?eWd0VnhTVXdQYkJmVXZ5cUpIRlJ4aE5SbjlpS1RjM0JMUFlmandqeWNkYWdP?= =?utf-8?B?d0RqSE5YQUlhcjF6WDhheXk3cStEVXFteGZrWUZRUWtFYTVRSEVyb3BwdGhL?= =?utf-8?B?cExKVlNVWFRSTzFMN2lRS1dhdERqYWdHTnNRT1hvbWpOSk1pRkp4R0Qra2Ir?= =?utf-8?B?UWwyR3ZYM3Erc3JkQ0ZGMWJldW94My9naHZVU2tzQ2dQUkRzNXJKdWk2N0xQ?= =?utf-8?B?Q0RldDJ2SG9ZcDNDOVVwVitJdnR6T0N0amJqdHZOUVNkanN1U1RGc0tUKzR0?= =?utf-8?B?Y3NPakxjQUZhUGdPemFoUUF2SEhndHNCNU0zMitncXRHbCs1UHY3TzBma1hS?= =?utf-8?B?eFlJMS9BZUR1c0tQSnlUeHViRmtBMUdIY20vSHpqWS9RbGhvVFUwQ2VsWlV0?= =?utf-8?B?U21EWmJGN2d4cmtwU0lpZ2FqOUltSnNTbUlMeXo0VXNMN2tNSnhnNzlJczFD?= =?utf-8?B?NEhHRkRUVEh1a2drRTB0SUhqZDhpVjFBMnFtUlQ0OExNUlRLNUhVcE1tSEhq?= =?utf-8?B?WWc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 49c7f371-c717-4421-824f-08de1c7daed8 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:06.8096 (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: BU3Iz8oDJ3ng9kbePeMI6xAngyMq+iWV2Xciw707YB01KpVsgWEOb8l04Y6osetz8qpQgjCJph+Zii2dcdPjIhFudrykXbYjo03hz4T1LQ8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com Connect the helpers to allow save and restore of GuC migration data in stop_copy / resume device state. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 27 ++++++- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 71 +++++++++++++++---- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h | 8 ++- .../drm/xe/xe_gt_sriov_pf_migration_types.h | 5 ++ 4 files changed, 93 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.c index 5e8b6929a827d..198bf0c93a4c8 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c @@ -853,6 +853,20 @@ static void pf_enter_vf_save_failed(struct xe_gt *gt, = unsigned int vfid) =20 static int pf_handle_vf_save_data(struct xe_gt *gt, unsigned int vfid) { + int ret; + + if (xe_gt_sriov_pf_migration_save_data_pending(gt, vfid, + XE_SRIOV_PACKET_TYPE_GUC)) { + ret =3D xe_gt_sriov_pf_migration_guc_save(gt, vfid); + if (ret) + return ret; + + xe_gt_sriov_pf_migration_save_data_complete(gt, vfid, + XE_SRIOV_PACKET_TYPE_GUC); + + return -EAGAIN; + } + return 0; } =20 @@ -891,6 +905,7 @@ static void pf_exit_vf_save_wait_data(struct xe_gt *gt,= unsigned int vfid) static bool pf_enter_vf_save_wip(struct xe_gt *gt, unsigned int vfid) { if (pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WIP)) { + xe_gt_sriov_pf_migration_save_init(gt, vfid); pf_enter_vf_wip(gt, vfid); pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_PROCESS_DATA); pf_queue_vf(gt, vfid); @@ -1078,12 +1093,20 @@ static void pf_enter_vf_restore_failed(struct xe_gt= *gt, unsigned int vfid) static int pf_handle_vf_restore_data(struct xe_gt *gt, unsigned int vfid) { struct xe_sriov_packet *data =3D xe_gt_sriov_pf_migration_restore_consume= (gt, vfid); + int ret =3D 0; =20 - xe_gt_sriov_notice(gt, "Skipping VF%u unknown data type: %d\n", vfid, dat= a->type); + switch (data->type) { + case XE_SRIOV_PACKET_TYPE_GUC: + ret =3D xe_gt_sriov_pf_migration_guc_restore(gt, vfid, data); + break; + default: + xe_gt_sriov_notice(gt, "Skipping VF%u unknown data type: %d\n", vfid, da= ta->type); + break; + } =20 xe_sriov_packet_free(data); =20 - return 0; + return ret; } =20 static bool pf_handle_vf_restore(struct xe_gt *gt, unsigned int vfid) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index 6e2b076065f3b..676205e04487b 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -176,23 +176,10 @@ static int pf_save_vf_guc_mig_data(struct xe_gt *gt, = unsigned int vfid) return ret; } =20 -/** - * xe_gt_sriov_pf_migration_guc_size() - Get the size of VF GuC migration = data. - * @gt: the &xe_gt - * @vfid: the VF identifier - * - * This function is for PF only. - * - * Return: size in bytes or a negative error code on failure. - */ -ssize_t xe_gt_sriov_pf_migration_guc_size(struct xe_gt *gt, unsigned int v= fid) +static ssize_t pf_migration_guc_size(struct xe_gt *gt, unsigned int vfid) { ssize_t size; =20 - xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); - xe_gt_assert(gt, vfid !=3D PFID); - xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); - if (!pf_migration_supported(gt)) return -ENOPKG; =20 @@ -279,12 +266,19 @@ int xe_gt_sriov_pf_migration_guc_restore(struct xe_gt= *gt, unsigned int vfid, ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt, unsigned int vfid) { ssize_t total =3D 0; + ssize_t size; =20 xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); xe_gt_assert(gt, vfid !=3D PFID); xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); =20 - /* Nothing to query yet - will be updated once per-GT migration data type= s are added */ + size =3D pf_migration_guc_size(gt, vfid); + if (size < 0) + return size; + if (size > 0) + size +=3D sizeof(struct xe_sriov_pf_migration_hdr); + total +=3D size; + return total; } =20 @@ -331,6 +325,53 @@ void xe_gt_sriov_pf_migration_ring_free(struct xe_gt *= gt, unsigned int vfid) xe_sriov_packet_free(data); } =20 +static void pf_migration_save_data_todo(struct xe_gt *gt, unsigned int vfi= d, + enum xe_sriov_packet_type type) +{ + set_bit(type, &pf_pick_gt_migration(gt, vfid)->save.data_remaining); +} + +/** + * xe_gt_sriov_pf_migration_save_init() - Initialize per-GT migration rela= ted data. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + */ +void xe_gt_sriov_pf_migration_save_init(struct xe_gt *gt, unsigned int vfi= d) +{ + struct xe_gt_sriov_migration_data *migration =3D pf_pick_gt_migration(gt,= vfid); + + migration->save.data_remaining =3D 0; + + xe_gt_assert(gt, pf_migration_guc_size(gt, vfid) > 0); + pf_migration_save_data_todo(gt, vfid, XE_SRIOV_PACKET_TYPE_GUC); +} + +/** + * xe_gt_sriov_pf_migration_save_data_pending() - Check if migration data = type needs to be saved. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * @type: the &xe_sriov_packet_type of data to be checked + * + * Return: true if the data needs saving, otherwise false. + */ +bool xe_gt_sriov_pf_migration_save_data_pending(struct xe_gt *gt, unsigned= int vfid, + enum xe_sriov_packet_type type) +{ + return test_bit(type, &pf_pick_gt_migration(gt, vfid)->save.data_remainin= g); +} + +/** + * xe_gt_sriov_pf_migration_save_data_complete() - Complete migration data= type save. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * @type: the &xe_sriov_packet_type to be marked as completed. + */ +void xe_gt_sriov_pf_migration_save_data_complete(struct xe_gt *gt, unsigne= d int vfid, + enum xe_sriov_packet_type type) +{ + clear_bit(type, &pf_pick_gt_migration(gt, vfid)->save.data_remaining); +} + /** * xe_gt_sriov_pf_migration_save_produce() - Add VF save data packet to mi= gration ring. * @gt: the &xe_gt diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.h index fd81942bfd7a2..1cba651b521fe 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h @@ -10,12 +10,12 @@ =20 struct xe_gt; struct xe_sriov_packet; +enum xe_sriov_packet_type; =20 /* TODO: get this information by querying GuC in the future */ #define XE_GT_SRIOV_PF_MIGRATION_GUC_DATA_MAX_SIZE SZ_8M =20 int xe_gt_sriov_pf_migration_init(struct xe_gt *gt); -ssize_t xe_gt_sriov_pf_migration_guc_size(struct xe_gt *gt, unsigned int v= fid); int xe_gt_sriov_pf_migration_guc_save(struct xe_gt *gt, unsigned int vfid); int xe_gt_sriov_pf_migration_guc_restore(struct xe_gt *gt, unsigned int vf= id, struct xe_sriov_packet *data); @@ -26,6 +26,12 @@ bool xe_gt_sriov_pf_migration_ring_empty(struct xe_gt *g= t, unsigned int vfid); bool xe_gt_sriov_pf_migration_ring_full(struct xe_gt *gt, unsigned int vfi= d); void xe_gt_sriov_pf_migration_ring_free(struct xe_gt *gt, unsigned int vfi= d); =20 +void xe_gt_sriov_pf_migration_save_init(struct xe_gt *gt, unsigned int vfi= d); +bool xe_gt_sriov_pf_migration_save_data_pending(struct xe_gt *gt, unsigned= int vfid, + enum xe_sriov_packet_type type); +void xe_gt_sriov_pf_migration_save_data_complete(struct xe_gt *gt, unsigne= d int vfid, + enum xe_sriov_packet_type type); + int xe_gt_sriov_pf_migration_save_produce(struct xe_gt *gt, unsigned int v= fid, struct xe_sriov_packet *data); struct xe_sriov_packet * diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h b/drivers/= gpu/drm/xe/xe_gt_sriov_pf_migration_types.h index 75d8b94cbbefb..9f24878690d9c 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h @@ -16,6 +16,11 @@ struct xe_gt_sriov_migration_data { /** @ring: queue containing VF save / restore migration data */ struct ptr_ring ring; + /** @save: structure for currently processed save migration data */ + struct { + /** @save.data_remaining: bitmap of migration types that need to be save= d */ + unsigned long data_remaining; + } save; }; =20 #endif --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 469C03321D2; Wed, 5 Nov 2025 15:12:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355540; cv=fail; b=eAm65MHg3VBcLUAge0JqQFABKDl+GdKF89UYC98QfwldJW7jr+SLPJJNMx+uNXflDWEOuEJ89K+yrDYWiPAoGU6GaS19uJrFhxxirYcBlGGqeSj2uz8XltAR5IKE1UD21nzbfh5EqtEj7dseZ1F08qmJbhQmULjYE2bQI1dCVxA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355540; c=relaxed/simple; bh=otOpvSHiHtEJ+FH4psfrlx9fOE9ZLUrrjBgq8ajvId0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=AKfkTj2OUVinV6Xm0Qoy1+/t3zt4RMuwAva9bSIdgijxvTNmAspBKR+wttQZAm9M4PTmPyacFmM+w9SYIPYUvfbqAPayb1CpeHlbb6ACvgeLT9yfcytH8g7rWL7e3vMaX9mm+riZNuVxWogEBxMRlqNtDmpwP9aURyP4y6rN9n4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=FAuS/aoQ; arc=fail smtp.client-ip=192.198.163.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="FAuS/aoQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355539; x=1793891539; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=otOpvSHiHtEJ+FH4psfrlx9fOE9ZLUrrjBgq8ajvId0=; b=FAuS/aoQsXS/3iy8rE76l9QyZu4kmu0UZAafmOzw+fGIJyuXpZQ+LP9C pJuaCLwcCqTAHQdXxzmm3QEIZqJHuFQrD7xsdAfnDI/56i6VW2+6zFIF0 +WjJXZenpIHBE9xfs3oT/vEWpPUMhjSv1DcGzz4NlJT67SKZLEJR1hUql ZVdFO/tZ0m/vhxr6dtvG9GRzxClmSjgNyEZUMMTqtSKH9bCazBFHLXgca Gwfa6EiauJ5QS212wZAaLoUZXfk4no/8Ccg8ioJcCF/q/jKcwJcWvJpIC L4KBCzi7LdhwuJr/TgqcJ//MBc2IJObGRAvnsBL6hAaYM2J+to2ZU9HNu A==; X-CSE-ConnectionGUID: 8yFE1U6eShqEjbbu778cmQ== X-CSE-MsgGUID: PxIYt5DGQsOwGkppVtpcYg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64571357" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="64571357" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:17 -0800 X-CSE-ConnectionGUID: B8KVv4vuSzSku8cM2idCoQ== X-CSE-MsgGUID: F/PwFHK9TVq8rC8+pzCobQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="186766518" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:16 -0800 Received: from FMSMSX903.amr.corp.intel.com (10.18.126.92) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:15 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:15 -0800 Received: from CH4PR04CU002.outbound.protection.outlook.com (40.107.201.11) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:15 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YHHPRmRdPTILqkJtLwU5F+QgnhAA8RQvOCyr7sf0so2jKpRkiONfgzL/bTmdirSeoyoSPs6QzDhpY/upa20vu15epDh/w24So+XZigrovwDke2V3a8em/pCRscjPmxayY7jWaFePAgxaOXwKhECByutetPuyCRBwRexPIhjB22e5f2Ex4Ib8cRCwpEFwk9KSkErxj3hf9BZyfpb4qO0Dj5nzUpUQip03i2gsCBHn2wAdCyjkUpWwP5S2i9P9tFFIk0Kr/wlxgqjzzPMiPCBnIGMjoPrWgNuCKD0yMBvOUVmeXW4mShh1nUVlZfOV5dZRKM97yX/3XyNNFA6hZFEwAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=T4dQVkffAi5gYrgLYPlQVBsLw3jn2mQe4aAjoZXShf0=; b=eQHZPV9CFBiWGmbI2ZMWd7i9ZGK3omgs77Yin+0Gk7Ufr7fpNs5hKEZijRFiyFfClSm55GJZB188SY2KKyMOiCKGJo9isdav6l6R7S+HATAz16W0DCMBHKFKDCTeFpUwjBLaK/h7HhnGnj471A5hjo+rgLfx4hfxYRNCKzQI2uUBHqeJd3x4TrqUczbYQqpW1/31xPnEX0sZe5vuMSgFeH3w7nl+3686xDlKBS8xTSvnDbXMLh+5nTVnTD9Be4EpeqOngzJc9a+Tx66l6GXRlzKIaGHOnVkvDaAnJdrqJ90W8ZP01A8In3XpYj4x9PTej/U0Q2wVODfHTvYE8K6ROg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:12 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:12 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 17/28] drm/xe/pf: Add helpers for VF GGTT migration data handling Date: Wed, 5 Nov 2025 16:10:15 +0100 Message-ID: <20251105151027.540712-18-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0101.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:79::19) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: 7410b0b2-ad2d-4d7a-88fe-08de1c7db262 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RVd3ckJMUkZMeWJaL0UxUWoxSXBNQUpRSzVaNDRKVXd4TTRkNnFydWZJN3pE?= =?utf-8?B?MytMcnZhNXpEdjY4VmNBS25lQmxLU0dWdUpOOGIzR0JMRDNwRGZKVUhNVmZJ?= =?utf-8?B?TUlTZ0xueEdYV1VwL3NyU2NBZEdmMExnRWR2UzRsalF2VHlYSmpGbHFCMVBS?= =?utf-8?B?Qjh0S0NaZXVURXV2Ny9jSkxXVjdRaW1IZ2VwUnFuT3BOMDY1Mm9KbnFsZ3Bz?= =?utf-8?B?dlhnMENiSnZoRTZwYUUxQTRwV0t4K3dtZStvZWJadERFU1dhV2Y1NkJrM1pj?= =?utf-8?B?YkVWbFpMRW16RHBNaWc3R3lNRWVPRDQ4emhiSHF2QTh2ZWUxVFZVb09uWDFr?= =?utf-8?B?ek1sQ0treVlNck5BMFVVUlA3Q1VZYTZzOVVZV25Qcm45VEpkckRaTDN5czQr?= =?utf-8?B?SURsQTVJTEx6cy84QUhDZmxkMFkxTFRuVjJHeHJ1cG9UUjRNalNNZHEyREQ4?= =?utf-8?B?MzRkODZTODllQ1ZxSVlmY0VoVjQ4NE12UjBoTVdhR2R4YXZoRHdnV1Q2Rk5r?= =?utf-8?B?UlhFNmE1cVJyK0drN0ZOM3hsbWpEQ0U2dTl6Zm9rdlJ3bWwwVVJtbDQ1NFpV?= =?utf-8?B?c2hXZ1NnZCtSYW5mc3dyY0dPVGpsRnZWYkpVai8ySzhpNVF4WTBqUDEwNFps?= =?utf-8?B?YnlObmQ3TmdKZWdpeHNqZ1g2NVdKanJUOHN5aTNZVzlaZXcxVERwQUtZblBV?= =?utf-8?B?S0tsMUJHbVUzZkliNlZVY1BxeWhCbEgxb3NMTWJ5M3dweVdhcllJOW5qNEpa?= =?utf-8?B?S2lhY05QeDA2ZHZRUjJXQmE5OFc4Z2ptQUZTUEIzWVVpMUt5UUlBcU8ycWt2?= =?utf-8?B?Z0U4UXFQbFcxZ3BsS09ERDkycEh4ZTJNNjhkSzBBYWhxYXAwbkN3c3VXRXo5?= =?utf-8?B?MUJMOEdTa2lPUzJNYmxwRGd0cnZoTFNBSVBndmdndWxtOTJpRm9GL2ZHVWdL?= =?utf-8?B?dDRhNmpWOUJsR0dIUVdFN0xPWU9pb3NmbWZlckwyN3lIWEdXWXdlQXpTekFR?= =?utf-8?B?Q0Z1dVBHR3NIa1VsZm1vRXBySDZZdWI4SFFudDNFVXJOZlY2bEd3c28rZDhF?= =?utf-8?B?TFhSN00yMVoweDNHNk43T09IY2NPd0JPb2piKzdzbUMvSTlyYW1rUk9rK1Yz?= =?utf-8?B?cXZFYUVKS3dlb3VWdDZFQ1dBSkVtcXFzYk5CTksyUkMzbTNBRUJqb0U4Tmcy?= =?utf-8?B?WXEwenREWkRuUUh3M1dJYVFBcWN6bjl4YnE0Nlo0aGhsaDduOU15ellQcy9E?= =?utf-8?B?UkVwcEJoZzYyMnd1M2c5SXh6UTA4RXBNYXhTNkRWSXlkOWxVeDlYSGR2RThw?= =?utf-8?B?Qng3ZmNUMzJFa2V0Qmd3L0lYU0ZjRVRWR0NWUFZGK3JHVlhoampWL1l2N0Ez?= =?utf-8?B?QWUzQ2tyb1lSMjNpMFZEenlqS1NDSlJHazcrRndLOUs1bUpNaWs1ZG92QUJw?= =?utf-8?B?K3hvU1IyQ2RwL0k4djNqUE1rQk8xbU1iYUZveFB1UCtMR0NHSHF2eUNRRE83?= =?utf-8?B?eDZLZWNqSlV2YVpEejdJYzRtc2dGTysyVFBkTDhXUUNsS1dUby82NGQ3YzY5?= =?utf-8?B?Q0VDc0tHMDQ3d1ZBczhCRWRWSmc0VzA2VlkxQ2w2SVNYM3VrRWFjSnRiOHhD?= =?utf-8?B?dWVtcDFJTy9ETzdWbWVWa3dHR3NDcWJYZ2R4ekFXR2dIOFJ6MTdoS0pJTndi?= =?utf-8?B?aXVuTnUzcU0yTEJTMU1VT1BFdjlXTnVHT3JDZWU5emxINVpRSzFoYXQwL21z?= =?utf-8?B?RXFrYzdBaUM1c01meS9kMVFmbS9qR01TTEliOXNVRDhNM1Z3aWxpd2RKV3Vi?= =?utf-8?B?bktOazgrZjhkVmxBSk83OHVucDZVTG5SZmJMeWNrYjdJRE5JU1R4WGN6eXR1?= =?utf-8?B?d0JUaktKVXN6SnhKeVNUekt3TkxscUd6TG1FMVFabU5qeU15RVl0ZERLT3Vl?= =?utf-8?B?Q3BRd3pyOEdWRjRhVzhaeldIZmlJT2RxSmxPM2pmbWkzc0tGWUNuWTdxYS9X?= =?utf-8?Q?xPQcVY+9RVwNQGlyhoArMjWM2YEXmQ=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S3E2dU5LSFo4WmNOUUZ5cTFkVnF3Q3RSbjhxVWtXOE90RWIyeG1tZ2l2bFpy?= =?utf-8?B?WlYxd2I0Q1dBUzZNcGtFK3Z6b0lNT1hscGJsaUs3WWhDbTM1Q204NW1yZzZ6?= =?utf-8?B?SDk4Uk5McjhwQU4vdllxSmFqUEdTemhHTzJDMmFacU5oRVVkZmdMUitlR3A2?= =?utf-8?B?Zm9XamNhb3lOVEtTS0p5QTh4SGdPNmhOWnFvN25UcVZJQlVMNkZsUEdtZkQ5?= =?utf-8?B?Y2Q1TEhhRGFuczhVdjJFaFR0eGh5ZWpzUnlIQmxnYTJYQ1FFenNnY0JzSXVP?= =?utf-8?B?U295Zko2WGNWWDFtRnVVdzk5MTlsN3ZwK1gyNjJLUi9xUUpzenVLSzJBMEZs?= =?utf-8?B?K0lQa3lmaUxVUFU4NE42UVhHUXJ2NGp4U3JKVDAzdjJpL1JKT0dFVHhSUURB?= =?utf-8?B?QmZFaXE1eGF0UE93OGUxNDVSb1BBcEMrZkRZRHdvQk13bHphVlhheGl1dHdF?= =?utf-8?B?cE0rb1JMcmVYbE0wTDJHZDZHd2lOZzRaajN6bXUzWVBaZ3d4cS9NKzA5Q0t0?= =?utf-8?B?TnZUTkxTSUJwdEM0QjRwQmgrbXRKTmQ3bHJxMU9jRFdQZy84cDhDRDJJQXRn?= =?utf-8?B?NWt2WGRMM3I4UEdqUS9hZ0Z4QkhZd3BlaGFEc3VaMVU0NWlLS2RDY2FRZ3VB?= =?utf-8?B?emhRQlRzN3VtSVZQUFE1QlA0RUhZQmFGOTRSdDNSdUdldDdldkFNNWxMbUFL?= =?utf-8?B?bHN4bUdHNkdhek5LY3hxeTJTSzkya2hvVmN0ZWlTd3UvcFZDWUREdTJ5MGlN?= =?utf-8?B?UTFlbEpPYlM4bFZKYTNIL3ZTY3phdlMwWmxOQ20raGkxMjhMTlRLYzVTdzFY?= =?utf-8?B?Q2pybDhQUUNnbGQ4TVEyNG5ObFlDTG1mUUxBTjlmb04yakd1NWhodEMyZG1D?= =?utf-8?B?UW1ZYndqbncyMUcrQUJ0TnBsMTdWSGg4MlBYNkNRWHdab0N6bVpPdjlxazZh?= =?utf-8?B?ZjVBZ2NsVE41OThEZGJRQ0c1OWxJOExRUllHK3g4MlRlRE1lbDNZOWdKNmRa?= =?utf-8?B?OHZkWittcDRSUkt3alNRV01FblhSczNUTG0wQjFqSU52MSt2Y2FhS05WZ1ND?= =?utf-8?B?eElIUjFnckxRNTRmUG5ZRlAvRE45amxQbWVsK1Nac3ZqZkkrNmVoQTdUKzZP?= =?utf-8?B?S09ETjJiZFg1NWlMUzFHVnpXNXZucHJQdVhrNnQ0SklETnRXSGk0SnRJNG1t?= =?utf-8?B?T0tSbVhQWXhRMFUwK09qNUZwYk92Vk4yZjcwc0dWbGFDb1BzSTZTdU1JdG0y?= =?utf-8?B?YTdLdG5FV0tnQ2d0VUZjajVDTW0zK09GSzB6V3YvR0lmLzRmT05aaUFKUnpl?= =?utf-8?B?ZDhpeEtvblZKRjNTczA5bUZMZVROaGQ0RFpVM2FrWE0yN2d4WW5uWU11SlFG?= =?utf-8?B?UXRYVk9oOU9Hb083RlI3VzhoaS9hNkk3Sm11RlpMMjNUMEpSdEJiaVVRNU5n?= =?utf-8?B?M3NGWVFlU0lpTXRzNWlVNkFaRlR1K0l0WHhrQXRLWHhoY0Z0Z09ORGpodjFG?= =?utf-8?B?U1Z0NG81Zzl5NFRYbE5aZk1QSklzZmlNRjRKUDhwTHJFRjZicm40Q010bHh5?= =?utf-8?B?YVEwczM3OFZGWGErM1VXY29mQ3JGMXBjdEhYeldvZGtEeVEwSEpxTVlCUWJW?= =?utf-8?B?dG50VVBGVmVhd25hT0RvWFJsNFZhRzJJb1QwWi9lbENveHJjTk1Ld0dYaVM5?= =?utf-8?B?VFRJRGlDd0tNTGpSSDFKR3FVU2NYZGdUU0s3RzFRUFUways0VThIVG44ZFFs?= =?utf-8?B?ak9lbzV5cjVoUi93eFpTY2tJZDVxTjZoK1g5bXJQd3FTWFl1MWtPSWNmemNQ?= =?utf-8?B?OFZpMGxSdHhiQ3VEeXhqaEJxaFZvZTZHc2Q3eU4zVTNsRFBPM2liVVFwYmcv?= =?utf-8?B?N2xFWStsZ1F3UnpEVzA4WFV6dHBwUVVlSngya3hMUEx3R1ljbUsvUWNGbkxm?= =?utf-8?B?NnVWV2IxbHBqci9EckdOSjZrNWk5ZHkvU0hxdVhSUjRiWEl5QWVTRTBNWFNW?= =?utf-8?B?enBvRXBBL1BEbzlxRFF6WjNianNjNXhoaDJoTU5YY2VSOWVkekQ1TjdhcXVx?= =?utf-8?B?TUVoU3AzbDRTbVRYd3QzN1FMRTdudkFGdjhGeHgyWXU5ZnRjTjhVbWVhYyts?= =?utf-8?B?b2RxM2gwUXRGUmlLU25CYkEraTBnREF6UUZtbExtZzE1dlc4c3k3QjJOTG1j?= =?utf-8?B?V2c9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 7410b0b2-ad2d-4d7a-88fe-08de1c7db262 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:12.6102 (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: pkhD9npn8TSN3Dxee2WccYqP7Sh/EZgum19uOmKHg3PWPIyiFIQ4G9vcRwq1B1oZCyfm6V3BLu3250bsBW3+v2BfXGRvEwwn9e1TRW7/u04= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com In an upcoming change, the VF GGTT migration data will be handled as part of VF control state machine. Add the necessary helpers to allow the migration data transfer to/from the HW GGTT resource. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_ggtt.c | 104 +++++++++++++++++++++ drivers/gpu/drm/xe/xe_ggtt.h | 4 + drivers/gpu/drm/xe/xe_ggtt_types.h | 2 + drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 52 +++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h | 5 + 5 files changed, 167 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c index 20d226d90c50f..2c4f752d76996 100644 --- a/drivers/gpu/drm/xe/xe_ggtt.c +++ b/drivers/gpu/drm/xe/xe_ggtt.c @@ -151,6 +151,14 @@ static void xe_ggtt_set_pte_and_flush(struct xe_ggtt *= ggtt, u64 addr, u64 pte) ggtt_update_access_counter(ggtt); } =20 +static u64 xe_ggtt_get_pte(struct xe_ggtt *ggtt, u64 addr) +{ + xe_tile_assert(ggtt->tile, !(addr & XE_PTE_MASK)); + xe_tile_assert(ggtt->tile, addr < ggtt->size); + + return readq(&ggtt->gsm[addr >> XE_PTE_SHIFT]); +} + static void xe_ggtt_clear(struct xe_ggtt *ggtt, u64 start, u64 size) { u16 pat_index =3D tile_to_xe(ggtt->tile)->pat.idx[XE_CACHE_WB]; @@ -233,16 +241,19 @@ void xe_ggtt_might_lock(struct xe_ggtt *ggtt) static const struct xe_ggtt_pt_ops xelp_pt_ops =3D { .pte_encode_flags =3D xelp_ggtt_pte_flags, .ggtt_set_pte =3D xe_ggtt_set_pte, + .ggtt_get_pte =3D xe_ggtt_get_pte, }; =20 static const struct xe_ggtt_pt_ops xelpg_pt_ops =3D { .pte_encode_flags =3D xelpg_ggtt_pte_flags, .ggtt_set_pte =3D xe_ggtt_set_pte, + .ggtt_get_pte =3D xe_ggtt_get_pte, }; =20 static const struct xe_ggtt_pt_ops xelpg_pt_wa_ops =3D { .pte_encode_flags =3D xelpg_ggtt_pte_flags, .ggtt_set_pte =3D xe_ggtt_set_pte_and_flush, + .ggtt_get_pte =3D xe_ggtt_get_pte, }; =20 static void __xe_ggtt_init_early(struct xe_ggtt *ggtt, u32 reserved) @@ -889,6 +900,20 @@ u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 ali= gnment, u64 *spare) return max_hole; } =20 +/** + * xe_ggtt_node_pt_size() - Convert GGTT node size to its page table entri= es size. + * @node: the &xe_ggtt_node + * + * Return: GGTT node page table entries size in bytes. + */ +size_t xe_ggtt_node_pt_size(const struct xe_ggtt_node *node) +{ + if (!node) + return 0; + + return node->base.size / XE_PAGE_SIZE * sizeof(u64); +} + #ifdef CONFIG_PCI_IOV static u64 xe_encode_vfid_pte(u16 vfid) { @@ -930,6 +955,85 @@ void xe_ggtt_assign(const struct xe_ggtt_node *node, u= 16 vfid) xe_ggtt_assign_locked(node->ggtt, &node->base, vfid); mutex_unlock(&node->ggtt->lock); } + +/** + * xe_ggtt_node_save() - Save a &xe_ggtt_node to a buffer. + * @node: the &xe_ggtt_node to be saved + * @dst: destination buffer + * @size: destination buffer size in bytes + * @vfid: VF identifier + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_ggtt_node_save(struct xe_ggtt_node *node, void *dst, size_t size, u= 16 vfid) +{ + struct xe_ggtt *ggtt; + u64 start, end; + u64 *buf =3D dst; + u64 pte; + + if (!node) + return -ENOENT; + + guard(mutex)(&node->ggtt->lock); + + if (xe_ggtt_node_pt_size(node) !=3D size) + return -EINVAL; + + ggtt =3D node->ggtt; + start =3D node->base.start; + end =3D start + node->base.size - 1; + + while (start < end) { + pte =3D ggtt->pt_ops->ggtt_get_pte(ggtt, start); + if (vfid !=3D u64_get_bits(pte, GGTT_PTE_VFID)) + return -EPERM; + + *buf++ =3D u64_replace_bits(pte, 0, GGTT_PTE_VFID); + start +=3D XE_PAGE_SIZE; + } + + return 0; +} + +/** + * xe_ggtt_node_load() - Load a &xe_ggtt_node from a buffer. + * @node: the &xe_ggtt_node to be loaded + * @src: source buffer + * @size: source buffer size in bytes + * @vfid: VF identifier + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_ggtt_node_load(struct xe_ggtt_node *node, const void *src, size_t s= ize, u16 vfid) +{ + u64 vfid_pte =3D xe_encode_vfid_pte(vfid); + const u64 *buf =3D src; + struct xe_ggtt *ggtt; + u64 start, end; + + if (!node) + return -ENOENT; + + guard(mutex)(&node->ggtt->lock); + + if (xe_ggtt_node_pt_size(node) !=3D size) + return -EINVAL; + + ggtt =3D node->ggtt; + start =3D node->base.start; + end =3D start + node->base.size - 1; + + while (start < end) { + vfid_pte =3D u64_replace_bits(*buf++, vfid, GGTT_PTE_VFID); + ggtt->pt_ops->ggtt_set_pte(ggtt, start, vfid_pte); + start +=3D XE_PAGE_SIZE; + } + xe_ggtt_invalidate(ggtt); + + return 0; +} + #endif =20 /** diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h index 75fc7a1efea76..1edf27608d39a 100644 --- a/drivers/gpu/drm/xe/xe_ggtt.h +++ b/drivers/gpu/drm/xe/xe_ggtt.h @@ -41,8 +41,12 @@ u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 align= ment, u64 *spare); int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p); u64 xe_ggtt_print_holes(struct xe_ggtt *ggtt, u64 alignment, struct drm_pr= inter *p); =20 +size_t xe_ggtt_node_pt_size(const struct xe_ggtt_node *node); + #ifdef CONFIG_PCI_IOV void xe_ggtt_assign(const struct xe_ggtt_node *node, u16 vfid); +int xe_ggtt_node_save(struct xe_ggtt_node *node, void *dst, size_t size, u= 16 vfid); +int xe_ggtt_node_load(struct xe_ggtt_node *node, const void *src, size_t s= ize, u16 vfid); #endif =20 #ifndef CONFIG_LOCKDEP diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggt= t_types.h index c5e999d58ff2a..dacd796f81844 100644 --- a/drivers/gpu/drm/xe/xe_ggtt_types.h +++ b/drivers/gpu/drm/xe/xe_ggtt_types.h @@ -78,6 +78,8 @@ struct xe_ggtt_pt_ops { u64 (*pte_encode_flags)(struct xe_bo *bo, u16 pat_index); /** @ggtt_set_pte: Directly write into GGTT's PTE */ void (*ggtt_set_pte)(struct xe_ggtt *ggtt, u64 addr, u64 pte); + /** @ggtt_get_pte: Directly read from GGTT's PTE */ + u64 (*ggtt_get_pte)(struct xe_ggtt *ggtt, u64 addr); }; =20 #endif diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/x= e/xe_gt_sriov_pf_config.c index d90261a7ab7ca..2786f516a9440 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c @@ -726,6 +726,58 @@ int xe_gt_sriov_pf_config_set_fair_ggtt(struct xe_gt *= gt, unsigned int vfid, return xe_gt_sriov_pf_config_bulk_set_ggtt(gt, vfid, num_vfs, fair); } =20 +/** + * xe_gt_sriov_pf_config_ggtt_save() - Save a VF provisioned GGTT data int= o a buffer. + * @gt: the &xe_gt + * @vfid: VF identifier (can't be 0) + * @buf: the GGTT data destination buffer (or NULL to query the buf size) + * @size: the size of the buffer (or 0 to query the buf size) + * + * This function can only be called on PF. + * + * Return: size of the buffer needed to save GGTT data if querying, + * 0 on successful save or a negative error code on failure. + */ +ssize_t xe_gt_sriov_pf_config_ggtt_save(struct xe_gt *gt, unsigned int vfi= d, + void *buf, size_t size) +{ + struct xe_ggtt_node *node; + + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid); + xe_gt_assert(gt, !(!buf ^ !size)); + + guard(mutex)(xe_gt_sriov_pf_master_mutex(gt)); + node =3D pf_pick_vf_config(gt, vfid)->ggtt_region; + + if (!buf) + return xe_ggtt_node_pt_size(node); + + return xe_ggtt_node_save(node, buf, size, vfid); +} + +/** + * xe_gt_sriov_pf_config_ggtt_restore() - Restore a VF provisioned GGTT da= ta from a buffer. + * @gt: the &xe_gt + * @vfid: VF identifier (can't be 0) + * @buf: the GGTT data source buffer + * @size: the size of the buffer + * + * This function can only be called on PF. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_config_ggtt_restore(struct xe_gt *gt, unsigned int vfid, + const void *buf, size_t size) +{ + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid); + + guard(mutex)(xe_gt_sriov_pf_master_mutex(gt)); + + return xe_ggtt_node_load(pf_pick_vf_config(gt, vfid)->ggtt_region, buf, s= ize, vfid); +} + static u32 pf_get_min_spare_ctxs(struct xe_gt *gt) { /* XXX: preliminary */ diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h b/drivers/gpu/drm/x= e/xe_gt_sriov_pf_config.h index 14d036790695d..66223c0e948db 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h @@ -71,6 +71,11 @@ ssize_t xe_gt_sriov_pf_config_save(struct xe_gt *gt, uns= igned int vfid, void *bu int xe_gt_sriov_pf_config_restore(struct xe_gt *gt, unsigned int vfid, const void *buf, size_t size); =20 +ssize_t xe_gt_sriov_pf_config_ggtt_save(struct xe_gt *gt, unsigned int vfi= d, + void *buf, size_t size); +int xe_gt_sriov_pf_config_ggtt_restore(struct xe_gt *gt, unsigned int vfid, + const void *buf, size_t size); + bool xe_gt_sriov_pf_config_is_empty(struct xe_gt *gt, unsigned int vfid); =20 int xe_gt_sriov_pf_config_init(struct xe_gt *gt); --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23CAA33C513; Wed, 5 Nov 2025 15:12:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355544; cv=fail; b=OZF9DDDjxNqbiVl743fOyxy/8ueh2rYqX8b0ypBaRD2BY8j+IxiENJd3uKnKSAulVN99uORD9hXxRJEMFmCV5h30en+K9LcHIGeE4G2nttdQ+Z5WHmDcgKpnuhkhYsiYFTiyMAoEQ8EnSsmM3A/xWrPYanrnhhiiqvENHOtySAg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355544; c=relaxed/simple; bh=iSiy9v7+T5caoFkhfEda8KrsfMi8EDfvt8g7F+3EoOQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=HKGH6XTk48mAx6Tgq1NSomHOB6dNaYlOOO35qb+OPgMLT1qkUK0EBN+Luyy4TsF9Mg/SnSDrhgbuc1UquDGD0jScOfHQ3vstXsdQul47LS3qtyELPgV6TuQg/PORj2vjBPi2xsr0EoevIZSEWYg0+xsZW8CIJj9vsJrJm7Oy3+U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=EyTEDoYd; arc=fail smtp.client-ip=198.175.65.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="EyTEDoYd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355542; x=1793891542; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=iSiy9v7+T5caoFkhfEda8KrsfMi8EDfvt8g7F+3EoOQ=; b=EyTEDoYdVY67UZHGpf4D+D80AnFFLtuWLPCWSuK6EIFxAwMjrUBJgQTK Gt9DNqpJXY3T26S8hwetFoyU3rHv+fmOYHqIqJdydmaUe9obive8r/VZX l9LAMDoBRHsrMCXsh5vfm0DugqE2nmfP0xXlGUfHIaI9WhY4fjotXxh0U tf1a8BDTn9VIuqMpOUtkRXeAHd3mWQjUU5hRDhcrXy2A69g5QyATH1QAN vjxUKqNjqlYAZbVJL1RlX0BBs/w38QGEVAYm1IOtnfFTfBUW8429nkavz t9ml4jnAMwyFQ2LzTEr4wdwmKgX3e11xz9Lu9YxUYxCU0cpGBkp/bYfxt Q==; X-CSE-ConnectionGUID: P7CNrw9nSO2DsoGKLeQ0nw== X-CSE-MsgGUID: khzB0OboQeeQGZDq5ZvqWg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64510021" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="64510021" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:21 -0800 X-CSE-ConnectionGUID: npfX0EYAS4y5aV4KQrGeew== X-CSE-MsgGUID: I9vx1YcWS2CbbQW3Urq7Dw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="187426781" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by orviesa007.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:22 -0800 Received: from FMSMSX903.amr.corp.intel.com (10.18.126.92) by fmsmsx903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:20 -0800 Received: from fmsedg902.ED.cps.intel.com (10.1.192.144) by FMSMSX903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:20 -0800 Received: from MW6PR02CU001.outbound.protection.outlook.com (52.101.48.65) by edgegateway.intel.com (192.55.55.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:19 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xqEn27i6PWfkCxZ+92vXFUeOECNlkhG29mlODQFrkTQa1he8d03sPp0Lnd9X31cp9B0mnlhWlen38JHgGlTSR3CNl7p22sKCgy6msrMLxORPR6zh9h3u9SXLhYGyDhUOF6EvCqXjpIDkTuBl3tDGf13UfKzTsyxLSD2PYSMYpKI/jIoxGGdYg3xJ8ks0lBQKmpJxWuf96ePg1QNuzv/yDFvqqBgDibH5D5laHnVGIEi6ubC9cXFjEzfVTkfewqOQHD2nNA/X/vpEXX21WumFRzgFlafnYXqr2FGmmMD2hnfgivcW7HEe5dtDX6NAqsoerwypZtzlHnBVNy5rKCoHlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=bwpKAEkFMiFosdMErWeX2OOXq3PsWU7CPSd3oB3/UNo=; b=jme055PvGSR+ARZeUjhjjFhq2yC/W0weTi+CqpHn0lQcx4GK0/Hx7snG3AThNbAGlOJDpSeqzwi/GGwBn7B0KI8Q8T/t/OjnanzuWHoBnGAIAXSzU2rBVgNF7eJJGxy8ENfLlFK7jVH5tetHrR5hytm3SCogy75xfKPrDT6W+jZrYkMX1dx949lQLmITNA/Iw46Eq4LCuN9hS4wd8d/v+RfB1REzLxHA6KTRb7PHhhQXg8DztKqGzvAAxh2340bBoH1dYBliSCvXMVBCOsneq5B+ca3XulHsiDWJFbUW61LtXKka1Lk7d/xJ4CuLsIZQ0aP8rSlTjqPb4GbZJiCgcw== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:17 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:17 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 18/28] drm/xe/pf: Handle GGTT migration data as part of PF control Date: Wed, 5 Nov 2025 16:10:16 +0100 Message-ID: <20251105151027.540712-19-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: WA0P291CA0006.POLP291.PROD.OUTLOOK.COM (2603:10a6:1d0:1::18) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: 911fbfb2-cd77-4855-b7d5-08de1c7db54b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VG0vSm9KNFBGY0IwK1BGOWc5NjNkK0Z3V0JhK0FwWlB0K01pNmx4TE1BS3NT?= =?utf-8?B?eEp4RVNxdEZRdlFlbXJHdHdoQWZJWXNuNVVrbUNUeVpJS05HU3dPTnBvN003?= =?utf-8?B?MWczYkhKSWJpSVBhdmFzUlFWRkw5VkFqS254L3ZuYmJ4NHFmWFUvUFI3czUz?= =?utf-8?B?eXA2VzVDampqcmhXcy9DK3RlWFBuMU5VQ3B6cmcxMWhXMDBJMHY5Y0Ewd0d0?= =?utf-8?B?RkROQ2d1bHVBejVaM3JkL3A4aTBaU2V4Y1duWDhKaHV1K2pMUkFtQzFnU212?= =?utf-8?B?MDl1QnlqWUdPY3B6NnNCN2U3ZVliVDYveGxacjBqQXlsVTFmeTVydXV5NVl4?= =?utf-8?B?VG5tNXlhVHpqeXpnazhMSGpGMFNPT0JHYmg3T2pMV082dnB3SldaZU82R3dQ?= =?utf-8?B?TGNsNm1ERjlVZHRIcmMzV2xzUVBmWnprc2h1WmpBZDFpU1pVRWY2RkRIamMv?= =?utf-8?B?QzdLdEdsd1dWUFpJRTVmUTk4Z0pIL2w2Ui9PeGViV2ZyQjduOUhmOUord29j?= =?utf-8?B?MUQvbHFqbGJBVUNhV2VkdUltcHdVUXNSNU1BWjdXWjFVczhwc1lkYnd3MzVV?= =?utf-8?B?OTU1YWNoR2NFMUNYa21jSjM1aElFREtyM2IrWjNZV05XWnFYU3ZSdy9wUXJU?= =?utf-8?B?LzhYNjA4bHRLNHJhZ0ZVTWJHWWo4RW1GUTlubEdIa2FyaG1jSWZEY3hvcld1?= =?utf-8?B?ZzQzTGtRZE5hV2t4cGFEeG5kN0l6K3YvSncxY0VlUk0zOUw1MG45U1d4Rk9z?= =?utf-8?B?RzZWTlhuQ1p6dGphcmlIWSttYy8ycmJzWGM1YmhkcGozVGVTYzJ3d3JwSUMx?= =?utf-8?B?WWdma1VOVUdHTkRxVnZMZE5OR0RVUSs4SEtZT00vcno4dnRMU0QrMnpEYno2?= =?utf-8?B?dnpoRE1xbjZYSVBTTWFiNThZdWJUeUFjOVd1THcrTWxNOFFwcytPRnp3MkxX?= =?utf-8?B?TEo2M3crT0NvUTR1eEhNZlprZkZ0ZndsOGc1T0J1QW9mREdQcG93V0wzcXBv?= =?utf-8?B?MDN0ZVNiOUxnS0lhUXZodmFyYXphUElFM3lLdW1mTjhUMmxRWXloVW5qRFVI?= =?utf-8?B?Yk4rSlBaSmlZbjE1a1RBdURlUHRiNUc0U2kwR0g5LzhLN3FXNTM4cVM0Uk9j?= =?utf-8?B?YkxiaWYyMkExUHh4QXpDZmpYRnBFdjdKKzcvUnZPYlRaWlpCQm1JRWh5K3Jz?= =?utf-8?B?OWYwNDJSRXBaL05qMDJTQk9rdVFvUTFMUzgvWmhjbW56YzRyZTlHTHhub1cv?= =?utf-8?B?T1pyR21jcHdKVmdvTmFSRVpPcW44Vy84VUZiUTBhdENwSUgrWGh3amIwYktL?= =?utf-8?B?QU1kVEVVdXVubjVtaHJ1Yk96RTJWaTNtd3Z6TURFY1lad2phbE1ZSSsxdzJa?= =?utf-8?B?eXBlc0ZTWlUxMXo1V3FQb3ZaVnV2NWxjc3Q1dnRwYkVETVVpVldoZnZxK0d5?= =?utf-8?B?NDE4dy9xVFRWTlFtREkxV1M3VGxRdjAvLzZsamxubDVMeXRHR0lpdkNBWlRB?= =?utf-8?B?ZmNXUXJ2bDFZODZDQ3liNnExeFVUQjdFNS96UjNvajBsZUdTS2h3WURUNVpW?= =?utf-8?B?N0VOZU5lUzk3SGxmbE44VWxxZ0tQU3VaYkxjZVorbmhrUUprM1RMaGpGVEZy?= =?utf-8?B?Rm1lNjRPRERueGlDRWI2VW9JS1F6WXJuZTljcnBXYnZwUnZTcjA1b01tZVJm?= =?utf-8?B?bzFJSGlVdlZma1JXTDF3YUZwZmNjNXlYY3J1RUdRdWNKVUNiNVpkKzcxL2s3?= =?utf-8?B?Z1JCd01rSStyK1VQOUNYb0NhcWRnQTVrdTdzRE9MSzdpOUMxU0lscDhNM3dY?= =?utf-8?B?SVhteWVRZGxLMjV4dStZVHJCcnJNL0lCRzd4bE1JNXJmczNMT1FqOUluVFg5?= =?utf-8?B?ZUNKblI5TFcxWVkrMlY2WGJ6QThTaGl3K1ZCSm9jRG9sM2syS0prWnY4V0lP?= =?utf-8?B?LzZsVDJMZmttSlFjanNDSnAzTi9COWRWMDJSTExoWGtjeDRtVGVraEVoV1FC?= =?utf-8?Q?rafJkDztGTzQXfBWKTnKLpnjaTaHxE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?a0dGVFMraU5OWlZTOVRJa1M1V2QzUVBXQ0YyaXMyVEZBREpkQS9NQTRJWE9V?= =?utf-8?B?MlE1YzdkOXozTk4wTGlXcGJKb2k3WkJJRTlOaTlydTVIRWZmZ25nNTArWU95?= =?utf-8?B?NmliTmtwUVFPaEZqb055d3plbHRCNW11ODl2eDE5cERNdHQ3OC9ERVFXRjNG?= =?utf-8?B?cTd4bkFXSXlKdkxPVE1sK3g4ODdnSDdwNXNkNjRqVnNCVDVEMm9ldUVtazlq?= =?utf-8?B?V0JJd3M3SnpUdEdXUkliT25XRnpUTmU4dFdWZDhSUndaelBpbUVBYXk2UXd3?= =?utf-8?B?MDl6SVgvV2Q2MExkZldqZldyalAxTnAyNHNRa2c0M0tzRGU1dmtPVHdvNTN6?= =?utf-8?B?SjIvTU1rTUxGaGhnK25waHUxc25acTdpL0RIUHpJUzNSSlY1OGVZUUJCbmtZ?= =?utf-8?B?V1pOKzU5MFh5ZXVoMURYUVFKZlhNRVhLTEIreVZYMjM3eXo1SWg5azBWZS94?= =?utf-8?B?cXFrYlMrb2Y4eGhZckozYUp4NUdrMDVFa0xqakowUHpCbjMzY2grZ3JmVExa?= =?utf-8?B?eEljenZKbG5zbU9uM1hMUUUzQkZERW1pMGpqRnVzdk9aeGc0Qlh1bG9Cb2Z5?= =?utf-8?B?eXE3a2RKRzg3V0FIU1RmZGc1YjlaTC9Vd00zUllidjBuNXJ6MWN5LzdidThN?= =?utf-8?B?K0swZUlhNzV5ZXViQjJXU2dCdjRSUlRsTmtjKzJmc2t2eHRhRGNlOTFEanM1?= =?utf-8?B?QzVqZW82YzluVlJkRkNOcmRVZWVhaDlXOTcwUlFZampPMnRVVWU4YmZoZVdP?= =?utf-8?B?Y2ZKYW16MHdTV2lEM2ttMDZ2UCtxa0ExRzd1SUJUZFpQZm9xYm5FUEpUYUd3?= =?utf-8?B?WmRmMTVTZm9KNTIwaGFLekR2T29ZR3JmZVZRTlQrbS8zUTRCT21Ra1RMY2NW?= =?utf-8?B?TGtJazg5VWxWaTVzRWt6UUcyemQ5MWRWbkJwZDZyYzVWYUxSazhFcG5KWTRO?= =?utf-8?B?cmNkUE5VangyQ2hDVFRtZVVyNmJkSWkyK3lhQU1uTURGTzFtV0JYN012ZUh3?= =?utf-8?B?Y3ZPR3JhQlY4aGk1SHAvZ3k2aTFpVUF5SXNDRUM0c0F4K241LzBybGpwWnBE?= =?utf-8?B?c2s5YXRCSkR1K3BaYkxhS3ZwaVo3Z2JkY1dSY0ZQZG53aHRYR09jck5CaVRO?= =?utf-8?B?SDlGWUp3ZTBwMHR2R0FudWVrRTU4Y2JraDZ2d2x4b0xoLzMraVpla1FtdFZQ?= =?utf-8?B?blN0Wnd3anpvcEY0WVBjeVA1aEJ6WVVLVUYybGZNeG9vM1U3OUlaZlFJZzhj?= =?utf-8?B?Y0FQaHVsQlZUS2p4UFZkK2l1eCs2cnVmcTR1U0pJRFFqT3AyQVQ5Ny9rYkl2?= =?utf-8?B?aGVpajZ5WndVSGRrc0p0a08vQ202N2VkN0gvN3FydkVKbTBrd3piY0RwMDJy?= =?utf-8?B?T01HWUwwWXUrN1pLWDhKQy9CTmhqSllHeTZGamdiV0JrOWVYcDh5Qlo2VjN2?= =?utf-8?B?SDJPaVFsVUVLKzBLc1ZQTE55QlpPdEtCcUcyZzFSTG43ek1vRXNMYmJQdXJu?= =?utf-8?B?YlZKL3IvSzVjM2RNZkRTUTFZYWFaYmsxUW83WG0waTBXdHFXR1RlaURMRWNS?= =?utf-8?B?OFQxVDgzSHdSTHFncHMwVmxVazdvVHA5dDZqZlJRc0dEekdEQ01MSVkrRVIz?= =?utf-8?B?S3VianNnUStKc3lQTXkvb0RlMCtqMlBCb0xralNyaXdwWjg2QVg0amNTaUNu?= =?utf-8?B?R09XaUs4Tkh5OGFIcVFkZXNXT1BzRWxaSkRPUUROeWpWMk8xcmJ4UE5ZSkky?= =?utf-8?B?SThHcWtJcjh2OGxwZ0V5VUc3T1FZOEpld0pZUWw3OC9zcFpqd1hFNDNwSTNn?= =?utf-8?B?cmh5dDQ4U2JhR0NXNTVQa0Q5Yy9SU2xXQ2ZwSVIyemZEb0tOc0o5a2pQNURU?= =?utf-8?B?NTBra1VpZDl3SjVYNEJtMHhCRS95WVNRSmZmRGh2R2tCaHVSV2liMUNPYzVl?= =?utf-8?B?Y3AvRUluKzk3MTg2OFJyK1JCcElNbFE3OHpRUDdPWExVdWtCODVMaVNhQmtp?= =?utf-8?B?Y2VGbTBCY2dKTDM4YjA2alZGcG5ubXBTOTMyK2Y4eEFDaUkwaDlYZ0xPa1Ev?= =?utf-8?B?bjRSOXJpRk9oNUhlSm1tbitGOEwwRVFrb29RUXdLVmdlZDNtUnpoQWhNdGtx?= =?utf-8?B?NjRvQ0FrbVJ2cTUxTXo2UFZCQURqK3p0azFSRGZ6cTJVdVVpZ0lEYXlGSUtU?= =?utf-8?B?SWc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 911fbfb2-cd77-4855-b7d5-08de1c7db54b X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:17.4853 (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: qO4CtyvRRSfEDuZRhvXnolrafYxfWfxJL0ksVIROj1/8uONnlXblOOA5FGPse2CDeUphKwIjFrNwFOSXXVlXw1lq6NgTYtnKgvcS9WPZiAQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com Connect the helpers to allow save and restore of GGTT migration data in stop_copy / resume device state. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 15 +++ drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 111 ++++++++++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h | 3 + 3 files changed, 129 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.c index 198bf0c93a4c8..ee4717f9a8260 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c @@ -867,6 +867,18 @@ static int pf_handle_vf_save_data(struct xe_gt *gt, un= signed int vfid) return -EAGAIN; } =20 + if (xe_gt_sriov_pf_migration_save_data_pending(gt, vfid, + XE_SRIOV_PACKET_TYPE_GGTT)) { + ret =3D xe_gt_sriov_pf_migration_ggtt_save(gt, vfid); + if (ret) + return ret; + + xe_gt_sriov_pf_migration_save_data_complete(gt, vfid, + XE_SRIOV_PACKET_TYPE_GGTT); + + return -EAGAIN; + } + return 0; } =20 @@ -1096,6 +1108,9 @@ static int pf_handle_vf_restore_data(struct xe_gt *gt= , unsigned int vfid) int ret =3D 0; =20 switch (data->type) { + case XE_SRIOV_PACKET_TYPE_GGTT: + ret =3D xe_gt_sriov_pf_migration_ggtt_restore(gt, vfid, data); + break; case XE_SRIOV_PACKET_TYPE_GUC: ret =3D xe_gt_sriov_pf_migration_guc_restore(gt, vfid, data); break; diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index 676205e04487b..e7879c0e55615 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -7,6 +7,9 @@ =20 #include "abi/guc_actions_sriov_abi.h" #include "xe_bo.h" +#include "xe_ggtt.h" +#include "xe_gt.h" +#include "xe_gt_sriov_pf_config.h" #include "xe_gt_sriov_pf_control.h" #include "xe_gt_sriov_pf_helpers.h" #include "xe_gt_sriov_pf_migration.h" @@ -41,6 +44,104 @@ static void pf_dump_mig_data(struct xe_gt *gt, unsigned= int vfid, } } =20 +static ssize_t pf_migration_ggtt_size(struct xe_gt *gt, unsigned int vfid) +{ + if (!xe_gt_is_main_type(gt)) + return 0; + + return xe_gt_sriov_pf_config_ggtt_save(gt, vfid, NULL, 0); +} + +static int pf_save_vf_ggtt_mig_data(struct xe_gt *gt, unsigned int vfid) +{ + struct xe_sriov_packet *data; + size_t size; + int ret; + + size =3D pf_migration_ggtt_size(gt, vfid); + xe_gt_assert(gt, size); + + data =3D xe_sriov_packet_alloc(gt_to_xe(gt)); + if (!data) + return -ENOMEM; + + ret =3D xe_sriov_packet_init(data, gt->tile->id, gt->info.id, + XE_SRIOV_PACKET_TYPE_GGTT, 0, size); + if (ret) + goto fail; + + ret =3D xe_gt_sriov_pf_config_ggtt_save(gt, vfid, data->vaddr, size); + if (ret) + goto fail; + + pf_dump_mig_data(gt, vfid, data, "GGTT data save"); + + ret =3D xe_gt_sriov_pf_migration_save_produce(gt, vfid, data); + if (ret) + goto fail; + + return 0; + +fail: + xe_sriov_packet_free(data); + xe_gt_sriov_err(gt, "Failed to save VF%u GGTT data (%pe)\n", vfid, ERR_PT= R(ret)); + return ret; +} + +static int pf_restore_vf_ggtt_mig_data(struct xe_gt *gt, unsigned int vfid, + struct xe_sriov_packet *data) +{ + int ret; + + pf_dump_mig_data(gt, vfid, data, "GGTT data restore"); + + ret =3D xe_gt_sriov_pf_config_ggtt_restore(gt, vfid, data->vaddr, data->s= ize); + if (ret) { + xe_gt_sriov_err(gt, "Failed to restore VF%u GGTT data (%pe)\n", + vfid, ERR_PTR(ret)); + return ret; + } + + return 0; +} + +/** + * xe_gt_sriov_pf_migration_ggtt_save() - Save VF GGTT migration data. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_migration_ggtt_save(struct xe_gt *gt, unsigned int vfid) +{ + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid !=3D PFID); + xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); + + return pf_save_vf_ggtt_mig_data(gt, vfid); +} + +/** + * xe_gt_sriov_pf_migration_ggtt_restore() - Restore VF GGTT migration dat= a. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_migration_ggtt_restore(struct xe_gt *gt, unsigned int v= fid, + struct xe_sriov_packet *data) +{ + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid !=3D PFID); + xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); + + return pf_restore_vf_ggtt_mig_data(gt, vfid, data); +} + /* Return: number of dwords saved/restored/required or a negative error co= de on failure */ static int guc_action_vf_save_restore(struct xe_guc *guc, u32 vfid, u32 op= code, u64 addr, u32 ndwords) @@ -279,6 +380,13 @@ ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt= , unsigned int vfid) size +=3D sizeof(struct xe_sriov_pf_migration_hdr); total +=3D size; =20 + size =3D pf_migration_ggtt_size(gt, vfid); + if (size < 0) + return size; + if (size > 0) + size +=3D sizeof(struct xe_sriov_pf_migration_hdr); + total +=3D size; + return total; } =20 @@ -344,6 +452,9 @@ void xe_gt_sriov_pf_migration_save_init(struct xe_gt *g= t, unsigned int vfid) =20 xe_gt_assert(gt, pf_migration_guc_size(gt, vfid) > 0); pf_migration_save_data_todo(gt, vfid, XE_SRIOV_PACKET_TYPE_GUC); + + if (pf_migration_ggtt_size(gt, vfid) > 0) + pf_migration_save_data_todo(gt, vfid, XE_SRIOV_PACKET_TYPE_GGTT); } =20 /** diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.h index 1cba651b521fe..2d221b6409b33 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h @@ -19,6 +19,9 @@ int xe_gt_sriov_pf_migration_init(struct xe_gt *gt); int xe_gt_sriov_pf_migration_guc_save(struct xe_gt *gt, unsigned int vfid); int xe_gt_sriov_pf_migration_guc_restore(struct xe_gt *gt, unsigned int vf= id, struct xe_sriov_packet *data); +int xe_gt_sriov_pf_migration_ggtt_save(struct xe_gt *gt, unsigned int vfid= ); +int xe_gt_sriov_pf_migration_ggtt_restore(struct xe_gt *gt, unsigned int v= fid, + struct xe_sriov_packet *data); =20 ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt, unsigned int vfid); =20 --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1CC7933E347; Wed, 5 Nov 2025 15:12:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.17 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355551; cv=fail; b=VD9kLTDARlLWy00fWqZhdFYCyUsigrWLDXiI+xrAZG00Lr33x6QdFX6EfuCnIQdPBVlwKSki5rIa73cJ1oKisRWUdCAM6wzemxhEgMV3UkyzcvZs+WybiYZ5yS4bZKZVIg7hZrOUBcHlPpma1lwn/ajs3+PzJhZN2TI+XoqYmUY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355551; c=relaxed/simple; bh=DqnXpdHEwp5dxFqH93i5ZOy1oNvUm6s2qGANp5jUP0w=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cVmKe1vdfqem0JQBggTNRr42Ze2Kt0VmXFADd+GYasiGqMWmuM8dI/BJW1P16hNzo6KiV8SAaDGUefGMaCwEHRBP2YkVMB8mB1FiQqULnVNIYrMNeDVWogbjV48MBRGnTh4spyT/OrFB/NUBWZf/HNc1T6MfUXxrggoH5W/kV0w= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Bz7PPugB; arc=fail smtp.client-ip=192.198.163.17 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Bz7PPugB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355549; x=1793891549; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=DqnXpdHEwp5dxFqH93i5ZOy1oNvUm6s2qGANp5jUP0w=; b=Bz7PPugBKlNVXE09HOJ59eQ7Hd1DFB1iKPXNAOyurCZR4Arj9ylyb0dW hXwwK/ZGaXXyiBluVFUnQobgD48FXrU76LoZg6Ij14A16FVYY6ORMXOJY V/xuWs0O3oZnYX3w+UaQs01Dx5vngw9JORuMP4wNKmnhw2nNPDWrb74xk NC9sXSk8sGLgptwBSdZ+i/f+jzZogc5IvNlh3q0gycCvrk+OoAYmdXzxu ZZYepEUaxTwGpcPOlCs+KemRIlX6xVjb6uAbIpdT+hgd/2IgziBb74eeQ a9K7UD7/4QMU3ABPp5XBooyNbkBhklVZp+8AlE0pJZ1TUdD0NZk/PKU+x A==; X-CSE-ConnectionGUID: lRfjHoW/RnSjNiR36TPxUQ== X-CSE-MsgGUID: n0aNq7eOReyJhGR9aq/78Q== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64387073" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="64387073" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:28 -0800 X-CSE-ConnectionGUID: 3GQfcCbES421rS/iZ8aCyA== X-CSE-MsgGUID: Z7QqvWcQQfCC4biVZHEPLA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="187174592" Received: from fmsmsx902.amr.corp.intel.com ([10.18.126.91]) by orviesa009.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:28 -0800 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:27 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:27 -0800 Received: from CH4PR04CU002.outbound.protection.outlook.com (40.107.201.24) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:27 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fWe+z2Dapc20KaIQRiWm184j5pJzMKWBLxt2BFziRU4OwRzQEvTVua+MO5jF8haxxAjQdVddKyv4uYtUQXvInDQLLugPnIZq9atuR+Ql4PhTBChaIZBhBk95sTvVWgHK4gH2PCElBXgGaj96gUwT6FaHUStfJyBSoEq+709n69DKBhG/YQGDpRrWIhmsPcOwDTvWP87Z01Y+xHxG5+QaiNpFry3EPmQyc9hHCTpGR4fMsan0N5fGCKjrOBH1uXuVQESw296CTTIJsXgWoG9EYZXWDy14TXmsayvpMlRi8w9Wot3G1uk9c5pdrZe7ov1FHRkH+Yyxfe8EXC20v2qtLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=szuUGPZjMGhV9t/YNgqtQc4Z6Vl5erMWRyxIFWPZP7U=; b=JYxUcwdvZALVQRn/4HEB9QuNJfin0hU29DhmaBpeO2ELo4Rg2QThY0K+D1fmeysCTA5maFFMWZbqFaxWRUdr/K1u4QWyHsjnupnIzF1Py5EJ9bTW7CBAP3QyuSzNubdvOGc62Byo8h0zAI2oidUHkqH0AxqUNkIoUyOKhtpymdwgC0yJIu0M2tBAmMmZPX4D4MZ+em8ct4JmrFH8eSOjpxdsBg4ol8WZI9mqTyZByueGSwZNgTwAvxOCycXG1hfAOLzcxOcEcMkpgaSaQUO8iWrMxiegzMvfSdv/JAWLF3ewgKVKg7+RkkblsUJi+lNK6w2MPh6KeiUvBimcugcYbw== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:23 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:23 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 19/28] drm/xe/pf: Handle MMIO migration data as part of PF control Date: Wed, 5 Nov 2025 16:10:17 +0100 Message-ID: <20251105151027.540712-20-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: WA0P291CA0023.POLP291.PROD.OUTLOOK.COM (2603:10a6:1d0:1::10) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a00455f-6dfc-462d-42fe-08de1c7db90c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dnZTVXk2ZVl0SzRYa0Nrd1cyWERhWjhDSXQ2bGNoQzJXR25hUEJUTW56L3lV?= =?utf-8?B?SUtvcGZFSFpvZytpS1dSbEs3N2ZiVzZJMW5aRVZPSHByVG42ZnpDSUlLdVdm?= =?utf-8?B?UThBVlVmUmU5M05iQmcxRlp4SFRIZURYSU1KeEJFZGZzU0NobzdkZTFjUlNp?= =?utf-8?B?YXJ4RzRIS1puVDdqbHNsWklKZEZZaHBDdys1czIydFFjRHZ3SGJSV0V3b3dx?= =?utf-8?B?NFJ2YStETkFBSEc4MUlqcFUxcTNJVll2RWp0MXZaTjVya1BIMGEzTGFmZ05C?= =?utf-8?B?NkxONWIyMXR3b3BKWUJsZE1ydm00STloUUFkOVhJU1FyVWFYdElDdFBRYUN4?= =?utf-8?B?OC9sdkg4aFpZejE3NlExcnhKUnZuS3RJbEovenpEalJWZHdIQ2ZGTWpLTFFJ?= =?utf-8?B?Y0YxdU9kczVTYkdVSldkMUo1U1Y3UTZvV1VMTTMwWVA3aHRQcmR6REFjU2ww?= =?utf-8?B?Ynh5T0RDWWVObzc0YWJJWHVQS2YwUGp6ZEl0QUlvL3FJbmJ0Z2xRaWVFbmZM?= =?utf-8?B?aUlRVTd3L1lYUzExTk1BaHhudXVRZ1BKZEhmU3VVUEZmQk5QRC9PeUV1OVRv?= =?utf-8?B?RmZIRWRldjh5bjFBQ2QzY3dsUllKbmJQYmhBVFhzQnFzM0p5ZnE2eEVTRDMx?= =?utf-8?B?Vko1WUdsNU4vQXVMQzZSUGxwVG4xRDE5TzlhSmk3a2JxZVpzdmJlL1RLNHBO?= =?utf-8?B?OXRPOE51cDY4ZTlYU0RXcjVIS0pMcTkyN3VqL1VSZHYvem9CM05UUi84eG1B?= =?utf-8?B?eXQvQ2ZSSE1sQWdyZTNXRUxCRFNySStBWURReDBRdTVvaVo2MllUb0VMM0ta?= =?utf-8?B?WGQ2UnhDZmw2UXRmWmpYcmY2WXF3M2RiZUQrdHl3ZXBOdkhjY0QzKzdCaFYv?= =?utf-8?B?cXJXRy9LM1pKNDZHTjgzcHFQTkpKdFRMMVhiYTcvRExtekJ6WHFYK1pvUVJh?= =?utf-8?B?b1ZFNWozeDBONEcxVER2NmFGQ0MyUXV3c3FrUXRaaDFkVXRDUGE0UmxnK2xH?= =?utf-8?B?Sjl1ejBUWU9zTTZ4anpCbnRXS3liSHFVWXhqSkRwUDJBbW4yVmxUZndMTVVa?= =?utf-8?B?N2MrVU9ySTd3M014QmRyVFVUMjBpWUxDN0o4MVc0NmhRSFJvT29rV2FZMEx6?= =?utf-8?B?MTdmUWdsd3puYlFvY2R6VHVQdVpQTXczdmJ0ZS90WkdSTDhHeUtqNGxHNWdn?= =?utf-8?B?Q2dGMVlzWU5sd3YvQ0JaVHpYNFVUdjdRb0U2UThpeVFmMDRjVXM1dE44am1P?= =?utf-8?B?SlhFRlVXUmYvdHdydUlOdWE2bVVMN214S3JncFpCcEVuK1Y0ZzVxRHdZOFNC?= =?utf-8?B?TXlCSXhBSy9YaVo0dDRQZTZyaHAyTTZLRktkOWoyKzVlMnhySUFoSGlrTmRE?= =?utf-8?B?TU9PN1hEUndnZzBkYXpYd1lMZGRnRDV1YVhZWkw0aFNrMVdqek5waVRBMTFu?= =?utf-8?B?ZHI5T1J1QS9aTERqRGU5NmdMcm5DcnE0ZTkxb01ueHA2OTlzdnp5cmpnYkUv?= =?utf-8?B?Y3RGcWorVmdFRU1wbldkcGFFcnZ0ZHhpcnQ5OFB6Q3NaNnVMV0Nhd2trRmRV?= =?utf-8?B?RHBoaGFmbWU5Uml6RVFMa2RtR0UrWjhpSXcrdEZkYzZFN05PekVmSkJ2RDJx?= =?utf-8?B?Ny92T3d6ZnRLeHoxZDJ6VGsvWHRzVm5LdGd6ZVVIbFJnMUhHam1YMm1PcGVv?= =?utf-8?B?Z2Z4VXdjWDh4UDFsQlRPQzJPSnhyOXFwL012YlpPZThjNFo3SG1acEJRQVA4?= =?utf-8?B?M0hZZ1B1SURjK1dnbXhJR1lZQXdLeU0vb2VWclhKZzYzQUx6dnBmeWpWRjdD?= =?utf-8?B?Tm1NRjdzUVRkcWNzWlpzNzJiUDNSaWxlQmNqOVROR0lLc3NMWnlyRWRnUEV1?= =?utf-8?B?K0Y3Nk1hWG5qK0tQcHZXVkNDbGlRVm51WFBFM0pQNXlLdktiMDVaUEpvbXlT?= =?utf-8?B?TzBtR2ZxUUNrdjFMMmJZTXNvQ0l2RWl1SGhmbGRsQjZmWG1OVU9IL0RRaVQy?= =?utf-8?Q?OerXeoSoPoA4NuHZICyDietMAERSwE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UkJxY2l6bEJzV3JwZzBCdU4wTmtNcjkwei9FdXBQRURrenl6NXpEUWJxYnk2?= =?utf-8?B?bWdrZUV1Q3JZb1d0Nkg2RzhuYWIwWTA4YVFTc0pBZmdDdnBKWldRTE5PRDUz?= =?utf-8?B?dnhaR2hCQVVsNDc4bGFCNmtMQ0o5ZnRDQjNZUlpyRzduZTJneUtjMS9vYXlJ?= =?utf-8?B?MytlU1ZMS1ovUGQrNHNGNWJYYnAxOW5xSkFlektlVGFDb3JkV2p1TUpvWVdh?= =?utf-8?B?TjAvQkt4SW9oMDk1YlBaVVQ0c0dWTm9jU3dEWWhta1c2YUV6THprYTdvRDZ6?= =?utf-8?B?bzgwbEc3V1RwZ2J1azFZemVWRno3NEorU3pObGtNU0trTzZjSjkxR2g0RDZX?= =?utf-8?B?UUM2Z3RHanVVSVk4UG1jUlE2UTltWTRya040dGp6cU1vanNuODR6akFraXRm?= =?utf-8?B?dms5V1docHFUeDlPSksvNzYvSmxBTS9DcDZIV0t3Z0srdnlJc3JJZVZVRStT?= =?utf-8?B?bFljZTJXZUV4clNhZnlJZWsvZlZBOEJDWklKaDgwQk5LZ0k1ODhudGRBZUFp?= =?utf-8?B?cHl4MHR4d1R1aE9TdTlMbDBWczJUeGczUHdGRGxvREtzWG0weUVNc3dWUnlm?= =?utf-8?B?SGQ3d0hRWmdRR3lrU3hLZlUzQ1Vzc2VJZ0hqUGwwNkxJMVBYVHRiWk9reHFG?= =?utf-8?B?VldyL3hkVStGVHRVQ01qelh0RVF3TitSYktWa3A0VjgvbllCb1MzME9lRDRt?= =?utf-8?B?UnlhTTVSK1liQnZFVVBxQktFT0hBU3djVVJWSnVsTlVPMlN0eE8xS1RBVlVv?= =?utf-8?B?a0tibmM0STdJLzkzNFJsNStRMVFFeGxUSmw1MGd0U2dvOEw0UmdSTlN4cTgx?= =?utf-8?B?cEQwaHh6VUtTUXh4NG1iQTE2Qm5BS05WMis2TjcvNzh1WmdJN1ZOV1VrclJW?= =?utf-8?B?VEw0TVArSVBWQitTbkRrdXNsbjN0dGdQdWZiTHZEQ2hrQmEzaDVFTnhDQ3ht?= =?utf-8?B?ZUJhZkpDZXBDTnNuM1lJTWt2c1p1QkZFTzJQeXhsU1VVVE5raGJ6dGFGeTgr?= =?utf-8?B?R0ZWQ0UxQWNEcERvQ09CSFE3VXBzbG5oYTYvZVUyOWRUVVpUak9CcTY0bC8w?= =?utf-8?B?YVBzV25haWFaRTZpSm8rUE1vVndPL1dDQ25ZSmcwOTdFUm9jblIweTFNRFlk?= =?utf-8?B?OFNheWV4VmZVYTZjV1JHbTg5WGNqUEZEc3RmSzhJUzh5REVJeEdMYzZsK1pY?= =?utf-8?B?VitMREs5YTVSNUhCMGx0aDhYblBnazFzZ2E0azZGVmgxK29pM0prQXo5K2hq?= =?utf-8?B?ODhYSEFVdDhzdklXWlE4K2MxeG9nVjJPcVlaekV6bSt2UHBDVVcwOHgvd2RC?= =?utf-8?B?ZWV4RlJsNXhwTWltUXlBYlYvNTBCN1A5NDltODVNSzdjaE15WGtQUVpObXRW?= =?utf-8?B?WlMyVUlHa3JaUW1FRjZIbEpsbURab1pwZGg5QnA5bGFXaTlja284MVNiNUwz?= =?utf-8?B?dTZ4dmNTdnNLSHlGQ2Z2ZkdJcFg4a0o1MTBGUUk3WXNORzcvcG1XZTBMQ3BF?= =?utf-8?B?eVdmWkwwcWdYc0J1TGROZWMzRnlYK2NwbGd6VEdtWlo0dmxZY29UTGdRZ05R?= =?utf-8?B?R1R1ZUI5TzFRUnlVVllUc0wwYWFBazUrTklFWUtLY3c0TUR6QnRRS0NGS0ZC?= =?utf-8?B?NnRDNHZNcWQ4T0lwUVpuL1JFc01iSUpPTElyNHl3YUU4OCtKY1dRdXBaVTlZ?= =?utf-8?B?SHFTQ09VNU9wUWlDVitIdENJQ3V1VERuaXZuUmFpaTFUR2tJUGJjUlBVUHA5?= =?utf-8?B?Nk9oS1FNU1oxeHJta1hjaDFvWVZHTWw2Nm9Qa016QWM4VUZvUXNPcG56SjdP?= =?utf-8?B?UllnUUt2QWFQdyt6OUZtMm1rdVFiSXd4QkxENTF4SEZRU0N1NEc5dWljV214?= =?utf-8?B?YXhZZFpwaWlPWms2dGpFZjdEcVFwcHNKWHdkZXUxVHBMUm5HTzJ1WUd1NUF1?= =?utf-8?B?cGFLYVBHZ2o3TDJKSkt0TFVCZUpKaE1VMlpGVWVRQ3N4Ri9DZjlzbWxSZWFE?= =?utf-8?B?Wkh0QjlCZXdGSXBoZmROV1lxRnJCNy84M2VSeTJsSEZuTHN1UjZyZnpveUV6?= =?utf-8?B?NEZocGg5ajZoNGFCUm5FSDZldXRZZit2Z2xVbEhiTUJoKzVSQzIxa01MYWow?= =?utf-8?B?VVBDUzAwTG5yaFkyS09ZclpBNEdGZXFKazlCOGZxUFJ1OG5vUDR5bjErbS9x?= =?utf-8?B?S1E9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 3a00455f-6dfc-462d-42fe-08de1c7db90c X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:23.7231 (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: gmyrO78JZPqZ7lncG88Am/ClBtsptgQ09K1baMBVcVY2VqbEnMqWB16G8CGunjJgcEocPvMiHksV+OJ5W4gcVOuaCerB2wBUmE7w0gprmnk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com Implement the helpers and use them for save and restore of MMIO migration data in stop_copy / resume device state. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 15 ++ drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 156 ++++++++++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h | 3 + 3 files changed, 174 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.c index ee4717f9a8260..abc2bd09288ea 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c @@ -879,6 +879,18 @@ static int pf_handle_vf_save_data(struct xe_gt *gt, un= signed int vfid) return -EAGAIN; } =20 + if (xe_gt_sriov_pf_migration_save_data_pending(gt, vfid, + XE_SRIOV_PACKET_TYPE_MMIO)) { + ret =3D xe_gt_sriov_pf_migration_mmio_save(gt, vfid); + if (ret) + return ret; + + xe_gt_sriov_pf_migration_save_data_complete(gt, vfid, + XE_SRIOV_PACKET_TYPE_MMIO); + + return -EAGAIN; + } + return 0; } =20 @@ -1111,6 +1123,9 @@ static int pf_handle_vf_restore_data(struct xe_gt *gt= , unsigned int vfid) case XE_SRIOV_PACKET_TYPE_GGTT: ret =3D xe_gt_sriov_pf_migration_ggtt_restore(gt, vfid, data); break; + case XE_SRIOV_PACKET_TYPE_MMIO: + ret =3D xe_gt_sriov_pf_migration_mmio_restore(gt, vfid, data); + break; case XE_SRIOV_PACKET_TYPE_GUC: ret =3D xe_gt_sriov_pf_migration_guc_restore(gt, vfid, data); break; diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index e7879c0e55615..22f471f269cfa 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -5,10 +5,13 @@ =20 #include =20 +#include "regs/xe_guc_regs.h" + #include "abi/guc_actions_sriov_abi.h" #include "xe_bo.h" #include "xe_ggtt.h" #include "xe_gt.h" +#include "xe_gt_sriov_pf.h" #include "xe_gt_sriov_pf_config.h" #include "xe_gt_sriov_pf_control.h" #include "xe_gt_sriov_pf_helpers.h" @@ -16,6 +19,7 @@ #include "xe_gt_sriov_printk.h" #include "xe_guc_buf.h" #include "xe_guc_ct.h" +#include "xe_mmio.h" #include "xe_sriov.h" #include "xe_sriov_packet.h" #include "xe_sriov_pf_migration.h" @@ -355,6 +359,148 @@ int xe_gt_sriov_pf_migration_guc_restore(struct xe_gt= *gt, unsigned int vfid, return pf_restore_vf_guc_state(gt, vfid, data); } =20 +static ssize_t pf_migration_mmio_size(struct xe_gt *gt, unsigned int vfid) +{ + if (xe_gt_is_media_type(gt)) + return MED_VF_SW_FLAG_COUNT * sizeof(u32); + else + return VF_SW_FLAG_COUNT * sizeof(u32); +} + +static int pf_migration_mmio_save(struct xe_gt *gt, unsigned int vfid, voi= d *buf, size_t size) +{ + struct xe_mmio mmio; + u32 *regs =3D buf; + int n; + + if (size !=3D pf_migration_mmio_size(gt, vfid)) + return -EINVAL; + + xe_mmio_init_vf_view(&mmio, >->mmio, vfid); + + if (xe_gt_is_media_type(gt)) + for (n =3D 0; n < MED_VF_SW_FLAG_COUNT; n++) + regs[n] =3D xe_mmio_read32(>->mmio, MED_VF_SW_FLAG(n)); + else + for (n =3D 0; n < VF_SW_FLAG_COUNT; n++) + regs[n] =3D xe_mmio_read32(>->mmio, VF_SW_FLAG(n)); + + return 0; +} + +static int pf_migration_mmio_restore(struct xe_gt *gt, unsigned int vfid, + const void *buf, size_t size) +{ + const u32 *regs =3D buf; + struct xe_mmio mmio; + int n; + + if (size !=3D pf_migration_mmio_size(gt, vfid)) + return -EINVAL; + + xe_mmio_init_vf_view(&mmio, >->mmio, vfid); + + if (xe_gt_is_media_type(gt)) + for (n =3D 0; n < MED_VF_SW_FLAG_COUNT; n++) + xe_mmio_write32(>->mmio, MED_VF_SW_FLAG(n), regs[n]); + else + for (n =3D 0; n < VF_SW_FLAG_COUNT; n++) + xe_mmio_write32(>->mmio, VF_SW_FLAG(n), regs[n]); + + return 0; +} + +static int pf_save_vf_mmio_mig_data(struct xe_gt *gt, unsigned int vfid) +{ + struct xe_sriov_packet *data; + size_t size; + int ret; + + size =3D pf_migration_mmio_size(gt, vfid); + xe_gt_assert(gt, size); + + data =3D xe_sriov_packet_alloc(gt_to_xe(gt)); + if (!data) + return -ENOMEM; + + ret =3D xe_sriov_packet_init(data, gt->tile->id, gt->info.id, + XE_SRIOV_PACKET_TYPE_MMIO, 0, size); + if (ret) + goto fail; + + ret =3D pf_migration_mmio_save(gt, vfid, data->vaddr, size); + if (ret) + goto fail; + + pf_dump_mig_data(gt, vfid, data, "MMIO data save"); + + ret =3D xe_gt_sriov_pf_migration_save_produce(gt, vfid, data); + if (ret) + goto fail; + + return 0; + +fail: + xe_sriov_packet_free(data); + xe_gt_sriov_err(gt, "Failed to save VF%u MMIO data (%pe)\n", vfid, ERR_PT= R(ret)); + return ret; +} + +static int pf_restore_vf_mmio_mig_data(struct xe_gt *gt, unsigned int vfid, + struct xe_sriov_packet *data) +{ + int ret; + + pf_dump_mig_data(gt, vfid, data, "MMIO data restore"); + + ret =3D pf_migration_mmio_restore(gt, vfid, data->vaddr, data->size); + if (ret) { + xe_gt_sriov_err(gt, "Failed to restore VF%u MMIO data (%pe)\n", + vfid, ERR_PTR(ret)); + + return ret; + } + + return 0; +} + +/** + * xe_gt_sriov_pf_migration_mmio_save() - Save VF MMIO migration data. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_migration_mmio_save(struct xe_gt *gt, unsigned int vfid) +{ + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid !=3D PFID); + xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); + + return pf_save_vf_mmio_mig_data(gt, vfid); +} + +/** + * xe_gt_sriov_pf_migration_mmio_restore() - Restore VF MMIO migration dat= a. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_migration_mmio_restore(struct xe_gt *gt, unsigned int v= fid, + struct xe_sriov_packet *data) +{ + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid !=3D PFID); + xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); + + return pf_restore_vf_mmio_mig_data(gt, vfid, data); +} + /** * xe_gt_sriov_pf_migration_size() - Total size of migration data from all= components within a GT. * @gt: the &xe_gt @@ -387,6 +533,13 @@ ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt= , unsigned int vfid) size +=3D sizeof(struct xe_sriov_pf_migration_hdr); total +=3D size; =20 + size =3D pf_migration_mmio_size(gt, vfid); + if (size < 0) + return size; + if (size > 0) + size +=3D sizeof(struct xe_sriov_pf_migration_hdr); + total +=3D size; + return total; } =20 @@ -455,6 +608,9 @@ void xe_gt_sriov_pf_migration_save_init(struct xe_gt *g= t, unsigned int vfid) =20 if (pf_migration_ggtt_size(gt, vfid) > 0) pf_migration_save_data_todo(gt, vfid, XE_SRIOV_PACKET_TYPE_GGTT); + + xe_gt_assert(gt, pf_migration_mmio_size(gt, vfid) > 0); + pf_migration_save_data_todo(gt, vfid, XE_SRIOV_PACKET_TYPE_MMIO); } =20 /** diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.h index 2d221b6409b33..04b3ed0d2aa23 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h @@ -22,6 +22,9 @@ int xe_gt_sriov_pf_migration_guc_restore(struct xe_gt *gt= , unsigned int vfid, int xe_gt_sriov_pf_migration_ggtt_save(struct xe_gt *gt, unsigned int vfid= ); int xe_gt_sriov_pf_migration_ggtt_restore(struct xe_gt *gt, unsigned int v= fid, struct xe_sriov_packet *data); +int xe_gt_sriov_pf_migration_mmio_save(struct xe_gt *gt, unsigned int vfid= ); +int xe_gt_sriov_pf_migration_mmio_restore(struct xe_gt *gt, unsigned int v= fid, + struct xe_sriov_packet *data); =20 ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt, unsigned int vfid); =20 --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 52F6433E37E; Wed, 5 Nov 2025 15:12:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.10 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355556; cv=fail; b=TFwAUIpnEEBYB7LVdSRjins40C1WsA4Rp/X11FP/p7a5XYcXon3JwUdJnaodcdWBbyRAPnGDai76xwWStjBvUH9Df9yzWYr0g8iqRbJ6WA+8i22OwH7EByWVYEnElMTaxkU1xhDt7s01EXxvga8yT4iAYXo2TiZ9RltiIq4lf3I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355556; c=relaxed/simple; bh=sy5RpFsbdh0+jlzLuDDdRops8jm3C2IrobkwYzwFWYE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fSKwGH1+mLhYqdLBDRZWODS+U3IIdU/gP31t5pNrn4VW+hb1XYpZITdY7hc3E8Khy65NlgQGb0Kmm/bpCmJwjyGrXZNy5L7ues6if1nsyDesUnqRuyGgt8HkCc4hda3ui/WuLNzbhdIoBr/28/+KFUaqaaumLXdelxrSPEIfXzk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=VmIFAXAW; arc=fail smtp.client-ip=198.175.65.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="VmIFAXAW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355556; x=1793891556; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=sy5RpFsbdh0+jlzLuDDdRops8jm3C2IrobkwYzwFWYE=; b=VmIFAXAWCDW3KHaE6S/YOqehYMMc0zTVPAMqlV4MpZR+0pGZkyvugLfX hzxceBCw5mfcZEOYoJtiVbk1nyv2R7WK546P79PtdJALUUB5uzyXC0YCO zlDzQUmUg02nIik0QFKGQCbpL27mGYjjhr7J+9eFdDemL4qpNSIfE/6Py Clkoi4FgDHqOJwt49EOUMPV5Zw53O00o2NOiflQXzxTYi3frd84lsVWwY ixugJdkQDAlnUPDrR91qkqDfMrMQuL09QtMmL/vlSE85wjdJu/84G/voR VdugH55NzjLb41D0XRzNErG8smcFa8flVFHozAGepOpHos8T6PA/z/RMS A==; X-CSE-ConnectionGUID: 2uwEAoDMTpuXhxUTtqzkYw== X-CSE-MsgGUID: e4aS8gUDQYWQt/fjJHXR+w== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="81875885" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="81875885" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:35 -0800 X-CSE-ConnectionGUID: zRr6eWoxRiaf8FD+eHjruA== X-CSE-MsgGUID: Iw+uHLPzQpqItfukC5wwXg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="224725772" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:35 -0800 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:34 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:34 -0800 Received: from CY7PR03CU001.outbound.protection.outlook.com (40.93.198.5) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:34 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rl4xx9OYrjQOFK8B0LvXsSeQfSPRk2Tefn/jemI8cdWTTY8Cex/p57ygrFV80dj84v+T3xvy4Xymj9I+YsJ27hxGh/5mRXYW+oBl4+QgA95ulp2Jl4/C5JViNkDozwJs/D3C6mu3XSt4pmverRG8s9KyazmWZWsT0JRQKYBX7xtQMLaB86NB5UOh7mQIVS6RhpNggmjGMqsAfUqIKlE/CFB9eiKrx1KRWj5VxCNktkEvX9DgvikzEAGBMYSdTAZ3hMkJG/3dpJj+rtyJ1TLZVhMcnZeu6xNJbTnqMRpDeyqCQl4xx/IlzW+P+5rduq+mURpLLI3WM6J2PRzuK82ppQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=UdVYbj5gEwOs26hzcnkdmCEMWY2uRI27YQVc4IVT6Jg=; b=s1upPqrZ6DR3788l5CihfSWAhvuUNE+/K6povqn9QWeX735BIHG+XE2YLsruR9aSp7W+5CaEKl53Mp0S+xPNekHVq/oUzqIfL10SyLrNt+aTpcHTFQyA4bzeh/z3Xmg0Fjxvg43P2bay3rxLV3+z2p0CMH+71Psju2gpEtlovZxsYPNfyKbDXDKMA7EkMYmCaLFOEUjcH/mi8/UXZDsYrFL4VVxFuJcZUIWOgrO+Cxp4CbDs0TVLuNFMBQqf3XYxHBANde2c5P6u7hXIbyOsC/cq3c8xmfF64A6jW7s/ZBHzmw4z/gb0rGwVcV1SeYgPExAng5jS5beZDlRBsJlb2w== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:31 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:30 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 20/28] drm/xe/pf: Add helper to retrieve VF's LMEM object Date: Wed, 5 Nov 2025 16:10:18 +0100 Message-ID: <20251105151027.540712-21-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0335.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:7d::28) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: 8538dce9-3feb-4ef0-eb9e-08de1c7dbcbe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?YWJ4WC82aEhmM3JKaVM5QXVKaEw3MzRnOTgwcXhzMXpHeVJGZWJ0dTdZTlMr?= =?utf-8?B?YXlJOFBZaVlndDc0S0xUYk4weldjYVovK1VMeW1FdmVKNjRLWlRkZjE1U3ZB?= =?utf-8?B?bXBxanNZWTRZUDlFbm9scUxFSGhJUGswbXpOVzVmZHREanpIbE85ZTJLNDRX?= =?utf-8?B?aVV4TWZpNUZkTmxIQ1RIM1pUaWc5SUdkZEx6bW9OVmkzUUY3VGcxWFdPTSt6?= =?utf-8?B?S3NGTGhQaWE0SkpVR2x2SzNDRFk0cDhhZmZVUitTR2hiaGp4N0RpU21jZHNt?= =?utf-8?B?WFFQQjlIT3VkWjlDWFpweUdkWTJIN1BuU0NucElibXBJZng1Vk5vZHlndS9L?= =?utf-8?B?amJ4QUljK0Uxa252N1FEaFN6dDZkNmFibDN4WWZJYnhPbXh3NjlyU1dSNzFR?= =?utf-8?B?ekVsWTUvcHR6R1cyTjdKUUloUFN5YVRvcFVDck91QmFTUXhKWncycVhHMVlG?= =?utf-8?B?NlNwcWUxRk5aWmxrenVyRWdnTm5zNW5qRmVDeVJLcmJvdEM2QS9IVVJYS3Z2?= =?utf-8?B?UlllQ0R5TlZ3aVd3YVdhYk41VkFQWVhySmtQU01ZdTE1SFFhMWlLZHY2dVMx?= =?utf-8?B?L056T28xMkZ3OEVzQnNPWFRhdVkraDIvdjllN2dSV2FnOTRrWW1XL3RXR2hu?= =?utf-8?B?QkdGbElHWUZkUy9LcWtIVTFXem0yUUcrclg5dkJQeWRBU2thcDNINEJCUTZs?= =?utf-8?B?R0pISFFVc1RQL0Z3TGpVb0VKOGtFWkU2b210clgwY04rREExaTdkY09hdjJJ?= =?utf-8?B?STFQcUc3ck92Nkg3My84YzBlRkdUQmhMdC9tTmJxOElJbUtxWDk3K0dkcEw1?= =?utf-8?B?OFhTaUk0VGNMSEwvOWd6TGMyTUNqVTU4cXl5U0xPRDNLOXFRTHFZblRjeG5X?= =?utf-8?B?ZlhBZFpDUmo4cjVzYTJWNkk1aldvWHRFVGdCem12OTZNdVRuSVVFREYyTExU?= =?utf-8?B?SjYySG5uUUpCeFV4c2pxRGVYa3o4MXJDTVkzZ3hqNFgxeldnUE1HNENUUzJy?= =?utf-8?B?NGNmMk9MOTRkS1RlY2tnUkZ5V0NFeUUvbFNPQW1KUUFqaklxS3hpVGRuc2Uz?= =?utf-8?B?a0lKSmVlcTNEYnBrZlVIZkpxV0RuczRsRlZ0RHgrMEx2TFRPTjdzMjAwcVlJ?= =?utf-8?B?Z3lqMmxFdVlBbG1XQzY4K3NOMnJaU0h4eEtDT0ZBR0ZpZCs0K2hYVmsvczJu?= =?utf-8?B?TGFlVEJqTHVxaFpSZ3pGYmQrODFxWjB0UVBUVlQ2dlNwVUhIc0FSSnBtdnlG?= =?utf-8?B?R09CN1JiZG5DMXpoOUlPNytxTEthZzZzLzlVZ1Q1RTVzaGQ0UHFYSVdFYWpI?= =?utf-8?B?N2lYaEoveE9mbE9KampyTlQydXRka3pHWjhyOGVUWUM2djJGRXo4NXVhYllq?= =?utf-8?B?eE1VUThETloxcWsvWGxoMHgvSlBjVUdzdVVHZld4YjBzdkVHUisrRTRIR1Fm?= =?utf-8?B?U1RUMG50NmMrZ1RhZk92R0NOdGFDZmx3OTFHK0VTSDEranhZaVgwV0JScjJP?= =?utf-8?B?enFjMUdaZUFXNW4yUVVpVFl2ZHkrSHFlQko4ZUdhUGg1cHlWVktxcnF0UnlH?= =?utf-8?B?WVREYjBoNXVHZkxiQVFoU2xxc1pFdEUzT0pWeDEyQnlIUDdTenNibEFOSWVl?= =?utf-8?B?OHJIWWEwcUYrN1lJMEJEVlZBOVdjSkdnVTJZSDhCYit3TlRJVGhCZlVqWDlw?= =?utf-8?B?U3FLemt6OEJhYUtGZWpnNDcwTlJIQUtlWXliZ3BXeis4UElYNXhHUTN5Yk1S?= =?utf-8?B?RzY3ZXlFbHNBUnBaSi9ZNVoxaGpIaVoyRlVQa3E3OTBVdUlFeG5mOWlyWTRL?= =?utf-8?B?ZUwyR2JkbTF6RlRRRXArRm9VQnFXaXFTZ3JFd3V6WFFhWDV1cFF5VkZoZHVr?= =?utf-8?B?ZkJVWXBtOHF2d1ltZm44MDVlRmY3bExLTzVNY1BWOURNWlZEMENURjI2aU9a?= =?utf-8?B?eGdndVE0QmdzaStTbnBaUUw2by9UbzR4bWF0YmhsMU9yaVI3bjFRd2oyc1hQ?= =?utf-8?Q?YbIAqXvDnx0mBqjmGYwn9rMKjFVgnk=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aVVlM1N5bjNwRlJuZGkrZSsxNXVmOXN6dUdjZUQ1RVVTeDFoY2dqR0JGdmVv?= =?utf-8?B?b2NGWnNOK3VCUENvc29zRkNFT0hjNUxFUEJFb1FBRGh6ckNxNGJUYXlaUmpP?= =?utf-8?B?L0NNUHJ2L0dZR1lIcjdKeEhiRDQ2U1h4Z1V1TUZ6UXp5a3NCVG8wcTc5ZExa?= =?utf-8?B?UW1Zd0pSUFpRRTVlQlNYOGdPb2orNXpldGljV2FGME0xTDBKbDRiS0lDQndq?= =?utf-8?B?ZmVvYnhkamR0ME5FRXZ6QWtxR05EK3RwMUdqY0YraTJkU2hZbDhLalNqQ21t?= =?utf-8?B?V3VkZ2Q0ZXlSN0VXUFRKeVM4SVJOQnc4bUpYN3J5U2EwT0t1azY3QUh2dURQ?= =?utf-8?B?ZGZ2ZDZtaXBIKzhOZnRldWdzdFRKNjNPVFplaWJldDhvblNZNXMrQUxiNG9a?= =?utf-8?B?Q1M0RnNTcDdweU91d0pwd1dVVXUwNHZWVFVwOURxYXcvSnArbHNPWWl6dU5z?= =?utf-8?B?V2x0ZGpOdXlLSnB5V2FVNHdKUWZ2NHFjbW9mZXF6SlZmZG1RUkd4OHkyT3VZ?= =?utf-8?B?eDI0WkJkN2RRcmczcTNuZEd0NlQvQ0gzdkxRbVl5TVdMQVN0RU5ocTZuRVZC?= =?utf-8?B?aE81V3hjdGhZUjd3MlZOMWd1SEszOXVKUHB3c1B4RlBkR3JQaWRNeUNlWDNV?= =?utf-8?B?ekh0QVVvYlVvNTRYYW45VXBCM2JHOVNpMk51ejNTNmN4N3Z0SWtwbXdNTDJo?= =?utf-8?B?SWhibk81MWt0a01DRGJ0QzJXS0ZER1BWSVdsYlZ0S0F4OTRvNHA3U0QzZ3pp?= =?utf-8?B?QTBRaTZ5YWtwaTkxT0VUeTVsUmdOMktJNUVBdHJyU0N4KzB4U1VGUmtyVTZr?= =?utf-8?B?em9QRnNGL01SdFFvVXcxdktwOG1XYWRsMktCWG9qQVVpWVBTRnM5UjAwT2sr?= =?utf-8?B?VGN3ZmxPN3ZOaS9QWHIwb3JrRXFDTlJZSm5DUWJsMVpPcFhWYzN3WW1zUGVt?= =?utf-8?B?ckkrTkszZ09FTFRQYVFQc3pFdDYzejRjUWdveGRhTHFUTGJqS0tqQmhwU3Jt?= =?utf-8?B?WExiaUx0QlZibHJySnRqYk1WTFpLMlZYVXFHUldCdTcyenFoR0dBNnB0VzBO?= =?utf-8?B?czdDWlBMQTdEeVljZ3pzS0NCWEVKemhVTy9LNzcrbEtNVzdxYnFXdThMdVQx?= =?utf-8?B?VExnL1NSREpqd1lqY3ZWSHBINVJjSzB1M2JwdHNSbFlmWXZEWnlINWlHNFRn?= =?utf-8?B?eHpsSUsrb0JIMWRvQ3pyM3BvMTdUMnBFNnZCMUJOTG5MSCtCdXB5U3ZWSllI?= =?utf-8?B?TjBwTkloZVZhYnZFMUlBUEVCNVBKemVVV0RQNWFEM1ZOM2h3K2Y5REhxZ1Vv?= =?utf-8?B?VzNzTWhyTDc2dkJtTXpnR3NNaWVMU0pZeDdJYTgwWTRvT2lodjVyTWwvMjYw?= =?utf-8?B?empoSUZuK3gzYWdIK243aTlyVUlLODlVbGt3TWRGcGRzeDh3YnlXZFY4S2VE?= =?utf-8?B?NldXVGltV01EcWJRTmVLNk02cnl2TWdIenJ3QjJwV0hQd1J3NVcxMzVuNUp3?= =?utf-8?B?NGpWM2V4K3VQVHZ4ZU1yb2svQW9pY3VWRjlvSytpSXZQaFljdUZFRVdzSUJn?= =?utf-8?B?ZG9PVldQVy9xSU5HK3NlL3JhRFFabjJEek1USjdDb013ZHdhUVdKUWJqYWt3?= =?utf-8?B?djNrdjR3SjVkdVZxVVZVTU9VVHhxbDZLenByeDMxYXE3L25OMnhQdC9FSHdU?= =?utf-8?B?cmYyS1U3Wi95OTR1V1dua1I5cjZpbDBnalBkbVRzQ0t5U01GamVpRWM0Kzdj?= =?utf-8?B?Z0hMeEZwN1E0cTA3SHUwUWcrSWNXSzJJTjZKR0QzNmRnL2xMLzltTHhGdm1U?= =?utf-8?B?UC9HQUo4enE3Q1g0R3hCdEV2YlRQdkx1MzllalFBanBHQ1EwVVBrMHBibFkw?= =?utf-8?B?aDBoWnZ3TzJSNGh6bHB0bEtCMUxXajZZbGRqSU5Dek9rVlRsNVVabXQ5bG9U?= =?utf-8?B?dU9tT3QvWXdVTldSUDExSWpPcWltUDU3SEFTL3BQSXFZc2hORlJ3cFdqWTF4?= =?utf-8?B?WU1NbGFEVk04T2todHJwUlZFOEducnNnYzBiaVNlOHRYNVlvcGlReG15MCtJ?= =?utf-8?B?amRVVzVTUjBlNTI1Tis0VEZyT0tReU5UdkRyQkxETys3NE5CTTRBS3J2ODBP?= =?utf-8?B?MnNzWE5KNnFmY3Nsck1iTXdLeTcycCtQcXBDTTZQbW81bFZFY1hXQTR5SFhO?= =?utf-8?B?MlE9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 8538dce9-3feb-4ef0-eb9e-08de1c7dbcbe X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:29.9799 (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: 2G1kIEkZkIbjhZg2tdJY4uEBQTIDhiQWeN2mnxGZ6EgC/iFN0hwOtb+caK9rWvbtM7slt9PUKR6IlJFISa1aEWgXRZl/J5qsNusrK6LbSpo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com From: Lukasz Laguna Instead of accessing VF's lmem_obj directly, introduce a helper function to make the access more convenient. Signed-off-by: Lukasz Laguna Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 26 ++++++++++++++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h | 1 + 2 files changed, 27 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/x= e/xe_gt_sriov_pf_config.c index 2786f516a9440..79e15bc009337 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c @@ -1654,6 +1654,32 @@ int xe_gt_sriov_pf_config_bulk_set_lmem(struct xe_gt= *gt, unsigned int vfid, "LMEM", n, err); } =20 +static struct xe_bo *pf_get_vf_config_lmem_obj(struct xe_gt *gt, unsigned = int vfid) +{ + struct xe_gt_sriov_config *config =3D pf_pick_vf_config(gt, vfid); + + return config->lmem_obj; +} + +/** + * xe_gt_sriov_pf_config_get_lmem_obj() - Take a reference to the struct &= xe_bo backing VF LMEM. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * + * This function can only be called on PF. + * The caller is responsible for calling xe_bo_put() on the returned objec= t. + * + * Return: pointer to struct &xe_bo backing VF LMEM (if any). + */ +struct xe_bo *xe_gt_sriov_pf_config_get_lmem_obj(struct xe_gt *gt, unsigne= d int vfid) +{ + xe_gt_assert(gt, vfid); + + guard(mutex)(xe_gt_sriov_pf_master_mutex(gt)); + + return xe_bo_get(pf_get_vf_config_lmem_obj(gt, vfid)); +} + static u64 pf_query_free_lmem(struct xe_gt *gt) { struct xe_tile *tile =3D gt->tile; diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h b/drivers/gpu/drm/x= e/xe_gt_sriov_pf_config.h index 66223c0e948db..4975730423d72 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h @@ -36,6 +36,7 @@ int xe_gt_sriov_pf_config_set_lmem(struct xe_gt *gt, unsi= gned int vfid, u64 size int xe_gt_sriov_pf_config_set_fair_lmem(struct xe_gt *gt, unsigned int vfi= d, unsigned int num_vfs); int xe_gt_sriov_pf_config_bulk_set_lmem(struct xe_gt *gt, unsigned int vfi= d, unsigned int num_vfs, u64 size); +struct xe_bo *xe_gt_sriov_pf_config_get_lmem_obj(struct xe_gt *gt, unsigne= d int vfid); =20 u32 xe_gt_sriov_pf_config_get_exec_quantum(struct xe_gt *gt, unsigned int = vfid); int xe_gt_sriov_pf_config_set_exec_quantum(struct xe_gt *gt, unsigned int = vfid, u32 exec_quantum); --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D83D1332EAF; Wed, 5 Nov 2025 15:12:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.10 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355562; cv=fail; b=Mz/a4MNVtCviP063OxF3lDq4KOgkIRtSoMju2vOOjBTe+vJCb9kg8DPx499HFcvHPcBrysLoH9+X23Q+y+casXJJXIFSx829HuEeYo6IqhptB/VU5X6ZIl/UuSIOxESYN1EuHAA7j6eZEEH0F9Nf7h82xfa3zxhdfzuxhC3VJZo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355562; c=relaxed/simple; bh=xrDqACs55GE84yhC3cTxkO+49b3d2eMUulfmyH/0AYE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=l1/eFDW4z7ag4IlLZ4PbiZKRm5Ny3NUMLVoxl5VPZNChs3U8i0Rdx6LvuNNh72IhzHkJE5IK5/Ivk85H/OrAdChRujoV3/23PgIPkNpAOpfr4Tp0dwfV6MZZ/qI4ZIkTCD1JKzkudvAzUVksUYZdz89INdNatnJLKaiw4XHLQUY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=kb2XZZNi; arc=fail smtp.client-ip=198.175.65.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="kb2XZZNi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355559; x=1793891559; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=xrDqACs55GE84yhC3cTxkO+49b3d2eMUulfmyH/0AYE=; b=kb2XZZNivbjLPgEoKmcSm3kzChpOt4DGK6d8hxk5zoPXikZ6CMG7ppEa x0VYXF28uZ0iFKYA1kX5NYwPPLnXQPa+JULRUxTZHPyOJiA4do5Tpp2JF wRPLnfa0A70XldZEi3piJlKz9AGQqreVpcoi7VW6p6ROcJCneoXUj+KWU qJh1WqHUbjoarkdWDCNmOpp09BtZbwludndImuRE6hLBG+AF0meME95vB log0BJKKeKiksd6eD0sPiuMstepsB4iSz3eV8bcV/T7p2mWTsihBOiwix riUiiBQQF/4qPnIFMzhD4Ez+Oi7TRfFz18Rswdy1yND8sv0N64YAkFu66 w==; X-CSE-ConnectionGUID: Tx8nlWASTqyxChuyilicnQ== X-CSE-MsgGUID: r5+RuOHPQku7rOVw5uASIA== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="81875892" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="81875892" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:39 -0800 X-CSE-ConnectionGUID: SAQr2QQ+QWKLWrE26CeBEw== X-CSE-MsgGUID: 09DsiPRuTi6IQivr8tCH3g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="224725793" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:39 -0800 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:38 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:38 -0800 Received: from CY7PR03CU001.outbound.protection.outlook.com (40.93.198.44) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:38 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CINThGvocwOFwKcggbeB8ASxpxcVipQ0J3UWC/VBzCta6cy4kxvBol+oAeEhWToKtddISxzgCkmrEUKUjN6I9MQ4DRMY3MZ3PtepjuwD4KTet+l98dR3Z+dbT90LIcehx2E87kMNyIFYLEE2Iu/Gr9h3Df/Ni2iyjmcvVPZFplWPN29FG45bSU9yASgv8KLink94SY2EE9t9+t+hlsOY1JfWDg1jfYZeQN1O9xaugOeO8ZvaA7w+HG7xkGtRWLKkWZPyb86eyNtIDEkc0WVv/axXSrUmpRS9ZRjENcuoDZ4iYrFEsXUJT+aQHysFypllmy+uEJJ9FhW94OcxpE1N0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Y8294im0xXfz1hbayPsQiXLJS+lPMDYkWyoQ7u3SaKY=; b=fUMXNliNINi6HEhCIoUUOS+X9UzsF3qNrOtOzPw+yT0lJKYItWes4Q4isDRcdcQZc2jP3rU5yVkBu7Ly18OcfCwQl2WBMHt++epAgzhaWCx7kP4OL4Iv2OTkPHJG+EgCttDk08j93YAs6y7MT5+bfVwpYcRPgjskscDn9WgHaaA4fAO9ruF2AfSU7VJT5q6vkSxyxNMLNMriAx/+ue+b8fFkOb892u/M1K9xcwJoYvbub6/7fBM6TjZx+YPkmEgGlL7fDzslT6AR/VW2np3LAguK4IWfq/zvTO7Jt0TC0yk5R870E7/4ZJt13QPIKrS+p7XnHJwzOOdjhB+OQ37pDA== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:36 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:36 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 21/28] drm/xe/migrate: Add function to copy of VRAM data in chunks Date: Wed, 5 Nov 2025 16:10:19 +0100 Message-ID: <20251105151027.540712-22-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0268.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:86::13) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: 5477502b-6cee-41e6-98a5-08de1c7dc063 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?S1BiZnlrSWRubjFNdDRjS1ZnNkdFTXZpdGNHdENaQlFSTnFkZmE0STVtVFpS?= =?utf-8?B?bmtrUTFuSlhLNE9qd1l6c2pZMXlPSDFjaXBtMzFnK2hlbUczcVdJV0x5eDZP?= =?utf-8?B?d0VNR3pXMzI2V2JSLzdNbjJYS1lwMWFmYmdTenFoS2lFQUVVTGZDRXhFaVA3?= =?utf-8?B?LytFaEZ2cGZlNzJ6MjlwWVIrdGhjMkJzYVdpME5WMzZIN3NqS0tnRTNNQUpT?= =?utf-8?B?N1FHNzV0Wi95cDNYbGpzSUV4OTAxRFoxbFlMUTVDNWlzMXJNaDRRdHNycnlT?= =?utf-8?B?Wmljd0xTRE05bnpBSXVHakl2MHFKc0JmbHNETGNvcGhjYU5NYW9hbktCT3Az?= =?utf-8?B?SXFsZms1cDZWcmRBTkZKdWJjSjRaamVRQ3hRVC9FMGZ0NTVoRmZMamhzblVZ?= =?utf-8?B?RDR3Y2Qwa3BTcldYcWovQWtSbG1tTzVLbXdXcGcrQ0xOUHgxS3NsWU1aLytu?= =?utf-8?B?R0tRL0JOeHczYi9IY2VKV1VPMWxWU1BpbCtlL3FxUTlHVkpwZnJFODlPdU94?= =?utf-8?B?Q2NQZzljMXZxKzFUUU5RMHJMZzcvamh2ZUdYcyt4VFp3empnWkVaVDZnNVlX?= =?utf-8?B?WlcwNFVBWVByV0luVHo2RGVUYW9PYk1uR0xRRk1kMENsZG9ydDUzV3pab2w1?= =?utf-8?B?ekpTcWlKaTVyR2FhaW1NV3duc1BLbzIwM1lXMlRrWnlCNTdXNm54SlBwcEpI?= =?utf-8?B?bVBubVJuaUdyckxJOHBnaDRyU3M3b2ZSajZEVlQ4dnNuVVRHMFJFMW45K2E3?= =?utf-8?B?OU1hWUVXQU9RMjMxekd3bWE4UStLWlBYRmJ3NTZqQldMaFprdHBsMnBoeUk1?= =?utf-8?B?ejFGbTg2ZlRaRlZEUzlLcEdKVG12elF5ajJ0MjBPa1hGQ0FlV21XL2dPbjJr?= =?utf-8?B?Qy92SEZzcjVWTmVmK3lTMkxlcDBGdnVxMzhaN0RLN2pHbDhYL3ZDRGdMcHBi?= =?utf-8?B?WE5uSUE0WGZIM2YzbmdhaUJnQmpiSG9nNUtOWmQ5VFExZ0IvUXBORkhEMG1h?= =?utf-8?B?SjIxTVFQdi9xU3dIUDAzbUc1Rkh5SndaZEhVSzNLTDFXRkpyNFpUdjZxZStB?= =?utf-8?B?elpEbnRQNG5HdGlqeGl6N1JFWnE5eXV0VmgrV2EwUGJodDdMVnFuUzYwOTRz?= =?utf-8?B?QUhnUmhnT3BJb3pFOGl6aDl5VGFNajF2NnVzWHg1dzROWDJUTnNQNEVuREEy?= =?utf-8?B?N292cTZTMnhaT0dteWF0WnpVVmZqTlFsWkMxejlUeENPSnZTcktIZEdia2xv?= =?utf-8?B?MmVsd0tmb1U4TEY2VzZmdlhETUkxSzBIMWNJY1o3YThoUmJhVDZjS1lybDVz?= =?utf-8?B?a2xZNlpGNDFwM0ZTSlF0RHkwUHhVOUlqSWI5a1JkekxNV2ttLzlxbDBybTZD?= =?utf-8?B?bEF6QjNIcVB6S0V5L0h0SkprL1dxekg3VmNiamxIY2JBZnhuOHJTU0o2WXhG?= =?utf-8?B?VXAvOTV0RElQT0NYdlBBVVgwOFFDN1VJb2hlemsvWHljd2U0dTBWRHFlYjVH?= =?utf-8?B?SXFPUEh2cEprUEtocGZickFWbzlmdnJRWCtyeGhhODNpNWFKM3gzc3lMN2xj?= =?utf-8?B?VEEvSWNBSG5EeS85YlZpWkZxU1BFdkhLeVQvM1JyNFUrSDdMUEpjcHRmdmQ3?= =?utf-8?B?RTArL2FOMytXRGlUWFBNWDZHR2g5My9NUHNvNzlHUGFIcUFyVXVHSFNZVnpO?= =?utf-8?B?RlZmY3RnKzVQMFpjMlhYSEQxM2hGalF0Qld4ejZOWGlvQnJ4RFgzS1J4TS9E?= =?utf-8?B?WlNzK091dnVvMjN4azRTMFg3Y0pwbzR1NEQxTWFMOXNjWDhXVnBWTEUwL1NB?= =?utf-8?B?dUowQW9jSkptaG5SdkkzSW16UUdvcTNWeWxQSk1CODFnaXBLSnk5dXdCdmMr?= =?utf-8?B?elNUdU9Rb1BJUU44TGcvU2x2eWN1b1pPUjROVnJOWWdjeEFtZi9pa2lCeWdG?= =?utf-8?B?Ym1ZRXRYc3lTbThIVUtXVks5TVRTeEF1M0lJNk9QM3BERFlNdXVhWERBTk5S?= =?utf-8?Q?ejQo3vojfK5p2e4xhoOuU3dkzEIPLY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q0dQTHpZR2I1V0h6TFhxL1VLZ0xhRVR1bXhnTkV4ZGZXY1BGZjZVclRuN0dV?= =?utf-8?B?SWFYNlNZdk9mUFpkSlh5WDZpQ1RBVDNDd0lrTTkreUEwZkZxM0YrOHMwdnZS?= =?utf-8?B?a1M3Y2Z3MnMveDZFSzJQR3hmYlkxM1pJamVtRzAyeFk5YlYxSHczUlNVU21s?= =?utf-8?B?WkMySmszSU5JMmlIQmZHMEVjYjVoUEFabXN6cDZNWXB5VkpMSGlLd21qYTdt?= =?utf-8?B?NWdoQkl6U0doSXdGY2VDalAvcE05aE5HTlQ3RlEvMGJqWUs2aGRhNmJ6NmNq?= =?utf-8?B?cVFzUytxRXBwYyt1M0RMckFidXNhbXIzdEcwQ2x4R1BVOXJrYXdTTDZXMDIy?= =?utf-8?B?TWQwSmM0NkJTT3ZqRDhMZEJxTHNMRmQrbGNxL0hVMHhlRHBvSitDWDV4Q1JQ?= =?utf-8?B?akFwaWtUMkN3SmUyTjVsaFJMaWs4Q3FWaStjTXJpRkxDQ2JMVWdvaHZqdGxX?= =?utf-8?B?RmwrbTRSMHBnZTZHUzRyZDFGbEF5NmVwSi9jVDhkT2htdlMyNnQrRm1uMHEz?= =?utf-8?B?ZzZYNStBbCtqZlJUMS9saWJIdVJXQWxPb2t0ZDJxSnNIN0paTU1adndBSlBw?= =?utf-8?B?YnZ1Sk8vSmUxWHkrc09lRWF6TE1EakFVT0dWWUxQWGlkWWlLVFJtTzlpSXNU?= =?utf-8?B?TDZuU2gxWEl1RndtYnhrRi9nSlpLdlpzcHFnSm43WmE1UjlkbUZQNFRDRHl5?= =?utf-8?B?LytxQTUxd0FKYjdYR0JSbjdEYXNlT3kvVkJsa2VFcVh2b3NZaFZrRlowTi9y?= =?utf-8?B?MS9ScHV2K1p4aUlFY0lFbnRWZXJ4c3JPbDI5WEdveDZRTVJWMC9xMXBORTRl?= =?utf-8?B?SnlNbnprN3VlR0Rjc1NXMlV5RjhHZUJEcTY1TkFOYnk2bnFYYkxQNU4vMnVX?= =?utf-8?B?WjJ2ZjZ4RU40K0R6cDNPSjRtMkhkbyttbGFneFI0MkQ1WUhvTWtBV1FyM2lU?= =?utf-8?B?SlhhK1VxZnlUY2ZRa3FrQzJqNkhmNlcxTjUyeGJMc2svTWk1YkRubXdZNGw1?= =?utf-8?B?M01RRTE4dzFOdmRIZVlkOElhNG5oWGp2K245bEJrL1YrU1c5TUVDWVZrcTVF?= =?utf-8?B?V2xHUUs1cm9nN1RSUnFocVBrN01QSkdWTWJWWnlwV1FON0Z3ODRiY3ZHYXBE?= =?utf-8?B?RmVCN0VvRmdmd28vU01uNE5jckxCdzVqODk3eGRrWDV2RGhpMU02Zy9QT3Rx?= =?utf-8?B?Z1YycFFhUDR0SjQ5Q3ZLQVRuVmszaURDa3hPclY1RTVmelAvbUJWRmllbmRK?= =?utf-8?B?VElQcmJqSXBLYjRabWZMRHI1TDJjRysySXRHNkt2ZlJSbitWdUw1UjFFbHht?= =?utf-8?B?cGkreUxTZ2hkSUFoRkFUN0d4SEdnWmR0cENpWUVmSXg4S09NUzBoTzJSMUE5?= =?utf-8?B?WDhtTTBzMm96eDVPYXFRYThlYjlHUlIvaGdZWnNsbXlTMFZRK2JRYkpBTkw2?= =?utf-8?B?Q0VwZU4vRUpIRzZHS0UyT1VOejFXSTB3Y29LdmxWVmR6aldaSE0vYWw5dlY3?= =?utf-8?B?VGl4YkYwRE5SdGpSdmtiYXZBRThFR254YTUvUE11OXB4VENLSk1lU2UvM3dH?= =?utf-8?B?dGtWQVd0ek5pbGcrUEdjSHZ5TjFNaENTUnM4RnBxai9aRGtmenl2QUhHZVQ5?= =?utf-8?B?TC9ueDNKTGJRMWwwSmRrc2ZjK3A5a1hEK2hRN2tlVHYrMzBKNGZBa21WbFEr?= =?utf-8?B?anJMcHVnZDI5UUZZbkN0bUlsU2pSWVJIdEJNQkVlQXN4Qy9MbTQrY0VZUHNE?= =?utf-8?B?d0xTSUE4ZEtaOGN4b3FacVVYMm9XWTNlK3p1WHY5dE13bEk5Y3JaUWwvNVF2?= =?utf-8?B?SUFQRVUvbThHWDZIQlozSE0ydWFoVjN0TGdHUG5VQ0ZLWDZ5R002WWlpVjdi?= =?utf-8?B?RVJuWUpKdHNaQW1ONmxweFRQVkVFT1cybkhESzNDNnUrNTNvL29OZVdRLzBD?= =?utf-8?B?elRwcVpGS0g2UnU0QU9MOTdaL1ZWZjVQYktIN09rN0taUXZHSVV2MWFZUjMv?= =?utf-8?B?QzNtS2ZTUjBtVzRqdmowS0M0Q2loWnIyTU1EWFZDQVVOb2pkR2RvL0txemVk?= =?utf-8?B?SEFMdmhrY0R1L0FlMGJQZE1GSit1SncxbUp6MUIySlJyNW1pakJOUENudU1z?= =?utf-8?B?d01EejBvbURCUDZSb0ZHYkl0OGMvVHI4NWVXNmRlSnpyMUFYcU9ySC9ONURC?= =?utf-8?B?Umc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 5477502b-6cee-41e6-98a5-08de1c7dc063 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:35.9168 (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: D+Z+6nTQpYIyq9vz0HUfD0cM5XvFN6gT879VZpG3Umhr6VpZGMyZile0DiPCR6ap/z65wGhOCem4CmVAtcADLWR5UIMinVpX6kzjevZKPb0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com From: Lukasz Laguna Introduce a new function to copy data between VRAM and sysmem objects. The existing xe_migrate_copy() is tailored for eviction and restore operations, which involves additional logic and operates on entire objects. The xe_migrate_vram_copy_chunk() allows copying chunks of data to or from a dedicated buffer object, which is essential in case of VF migration. Signed-off-by: Lukasz Laguna Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_migrate.c | 128 ++++++++++++++++++++++++++++++-- drivers/gpu/drm/xe/xe_migrate.h | 8 ++ 2 files changed, 131 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrat= e.c index 5003e3c4dd170..2184af413b912 100644 --- a/drivers/gpu/drm/xe/xe_migrate.c +++ b/drivers/gpu/drm/xe/xe_migrate.c @@ -29,6 +29,7 @@ #include "xe_lrc.h" #include "xe_map.h" #include "xe_mocs.h" +#include "xe_printk.h" #include "xe_pt.h" #include "xe_res_cursor.h" #include "xe_sa.h" @@ -1210,6 +1211,128 @@ struct xe_exec_queue *xe_migrate_exec_queue(struct = xe_migrate *migrate) return migrate->q; } =20 +/** + * xe_migrate_vram_copy_chunk() - Copy a chunk of a VRAM buffer object. + * @vram_bo: The VRAM buffer object. + * @vram_offset: The VRAM offset. + * @sysmem_bo: The sysmem buffer object. + * @sysmem_offset: The sysmem offset. + * @size: The size of VRAM chunk to copy. + * @dir: The direction of the copy operation. + * + * Copies a portion of a buffer object between VRAM and system memory. + * On Xe2 platforms that support flat CCS, VRAM data is decompressed when + * copying to system memory. + * + * Return: Pointer to a dma_fence representing the last copy batch, or + * an error pointer on failure. If there is a failure, any copy operation + * started by the function call has been synced. + */ +struct dma_fence *xe_migrate_vram_copy_chunk(struct xe_bo *vram_bo, u64 vr= am_offset, + struct xe_bo *sysmem_bo, u64 sysmem_offset, + u64 size, enum xe_migrate_copy_dir dir) +{ + struct xe_device *xe =3D xe_bo_device(vram_bo); + struct xe_tile *tile =3D vram_bo->tile; + struct xe_gt *gt =3D tile->primary_gt; + struct xe_migrate *m =3D tile->migrate; + struct dma_fence *fence =3D NULL; + struct ttm_resource *vram =3D vram_bo->ttm.resource; + struct ttm_resource *sysmem =3D sysmem_bo->ttm.resource; + struct xe_res_cursor vram_it, sysmem_it; + u64 vram_L0_ofs, sysmem_L0_ofs; + u32 vram_L0_pt, sysmem_L0_pt; + u64 vram_L0, sysmem_L0; + bool to_sysmem =3D (dir =3D=3D XE_MIGRATE_COPY_TO_SRAM); + bool use_comp_pat =3D to_sysmem && + GRAPHICS_VER(xe) >=3D 20 && xe_device_has_flat_ccs(xe); + int pass =3D 0; + int err; + + xe_assert(xe, IS_ALIGNED(vram_offset | sysmem_offset | size, PAGE_SIZE)); + xe_assert(xe, xe_bo_is_vram(vram_bo)); + xe_assert(xe, !xe_bo_is_vram(sysmem_bo)); + xe_assert(xe, !range_overflows(vram_offset, size, (u64)vram_bo->ttm.base.= size)); + xe_assert(xe, !range_overflows(sysmem_offset, size, (u64)sysmem_bo->ttm.b= ase.size)); + + xe_res_first(vram, vram_offset, size, &vram_it); + xe_res_first_sg(xe_bo_sg(sysmem_bo), sysmem_offset, size, &sysmem_it); + + while (size) { + u32 pte_flags =3D PTE_UPDATE_FLAG_IS_VRAM; + u32 batch_size =3D 2; /* arb_clear() + MI_BATCH_BUFFER_END */ + struct xe_sched_job *job; + struct xe_bb *bb; + u32 update_idx; + bool usm =3D xe->info.has_usm; + u32 avail_pts =3D max_mem_transfer_per_pass(xe) / LEVEL0_PAGE_TABLE_ENCO= DE_SIZE; + + sysmem_L0 =3D xe_migrate_res_sizes(m, &sysmem_it); + vram_L0 =3D min(xe_migrate_res_sizes(m, &vram_it), sysmem_L0); + + xe_dbg(xe, "Pass %u, size: %llu\n", pass++, vram_L0); + + pte_flags |=3D use_comp_pat ? PTE_UPDATE_FLAG_IS_COMP_PTE : 0; + batch_size +=3D pte_update_size(m, pte_flags, vram, &vram_it, &vram_L0, + &vram_L0_ofs, &vram_L0_pt, 0, 0, avail_pts); + + batch_size +=3D pte_update_size(m, 0, sysmem, &sysmem_it, &vram_L0, &sys= mem_L0_ofs, + &sysmem_L0_pt, 0, avail_pts, avail_pts); + batch_size +=3D EMIT_COPY_DW; + + bb =3D xe_bb_new(gt, batch_size, usm); + if (IS_ERR(bb)) { + err =3D PTR_ERR(bb); + return ERR_PTR(err); + } + + if (xe_migrate_allow_identity(vram_L0, &vram_it)) + xe_res_next(&vram_it, vram_L0); + else + emit_pte(m, bb, vram_L0_pt, true, use_comp_pat, &vram_it, vram_L0, vram= ); + + emit_pte(m, bb, sysmem_L0_pt, false, false, &sysmem_it, vram_L0, sysmem); + + bb->cs[bb->len++] =3D MI_BATCH_BUFFER_END; + update_idx =3D bb->len; + + if (to_sysmem) + emit_copy(gt, bb, vram_L0_ofs, sysmem_L0_ofs, vram_L0, XE_PAGE_SIZE); + else + emit_copy(gt, bb, sysmem_L0_ofs, vram_L0_ofs, vram_L0, XE_PAGE_SIZE); + + job =3D xe_bb_create_migration_job(m->q, bb, xe_migrate_batch_base(m, us= m), + update_idx); + if (IS_ERR(job)) { + xe_bb_free(bb, NULL); + err =3D PTR_ERR(job); + return ERR_PTR(err); + } + + xe_sched_job_add_migrate_flush(job, MI_INVALIDATE_TLB); + + xe_assert(xe, dma_resv_test_signaled(vram_bo->ttm.base.resv, + DMA_RESV_USAGE_BOOKKEEP)); + xe_assert(xe, dma_resv_test_signaled(sysmem_bo->ttm.base.resv, + DMA_RESV_USAGE_BOOKKEEP)); + + scoped_guard(mutex, &m->job_mutex) { + xe_sched_job_arm(job); + dma_fence_put(fence); + fence =3D dma_fence_get(&job->drm.s_fence->finished); + xe_sched_job_push(job); + + dma_fence_put(m->fence); + m->fence =3D dma_fence_get(fence); + } + + xe_bb_free(bb, fence); + size -=3D vram_L0; + } + + return fence; +} + static void emit_clear_link_copy(struct xe_gt *gt, struct xe_bb *bb, u64 s= rc_ofs, u32 size, u32 pitch) { @@ -1912,11 +2035,6 @@ static bool xe_migrate_vram_use_pde(struct drm_pagem= ap_addr *sram_addr, return true; } =20 -enum xe_migrate_copy_dir { - XE_MIGRATE_COPY_TO_VRAM, - XE_MIGRATE_COPY_TO_SRAM, -}; - #define XE_CACHELINE_BYTES 64ull #define XE_CACHELINE_MASK (XE_CACHELINE_BYTES - 1) =20 diff --git a/drivers/gpu/drm/xe/xe_migrate.h b/drivers/gpu/drm/xe/xe_migrat= e.h index 9b5791617f5e0..260e298e5dd7f 100644 --- a/drivers/gpu/drm/xe/xe_migrate.h +++ b/drivers/gpu/drm/xe/xe_migrate.h @@ -28,6 +28,11 @@ struct xe_vma; =20 enum xe_sriov_vf_ccs_rw_ctxs; =20 +enum xe_migrate_copy_dir { + XE_MIGRATE_COPY_TO_VRAM, + XE_MIGRATE_COPY_TO_SRAM, +}; + /** * struct xe_migrate_pt_update_ops - Callbacks for the * xe_migrate_update_pgtables() function. @@ -131,6 +136,9 @@ int xe_migrate_ccs_rw_copy(struct xe_tile *tile, struct= xe_exec_queue *q, =20 struct xe_lrc *xe_migrate_lrc(struct xe_migrate *migrate); struct xe_exec_queue *xe_migrate_exec_queue(struct xe_migrate *migrate); +struct dma_fence *xe_migrate_vram_copy_chunk(struct xe_bo *vram_bo, u64 vr= am_offset, + struct xe_bo *sysmem_bo, u64 sysmem_offset, + u64 size, enum xe_migrate_copy_dir dir); int xe_migrate_access_memory(struct xe_migrate *m, struct xe_bo *bo, unsigned long offset, void *buf, int len, int write); --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 052BD33FE06; Wed, 5 Nov 2025 15:12:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355566; cv=fail; b=YgevjtmWKZEeUxk4Qub8WdPkxHNW5tCNU8paPgvdPlaA65HlVnfrwiJFjoTH4Ds17qU9y5KfyHjG+XWNfObaWhhu3ijNzgVgGMzuhOTGG6/FKF91GuqnuXBpWL2OryINUPNJtdv0Gryu6/k9NxSNnvppXBZX+P8KYcPR+O7pv4M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355566; c=relaxed/simple; bh=18pknen1RYf/KUJKw9WUis/RoD+Ugu3TM7+x2/TCERU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=oQcf37lvThFe6pqUbnr/Ld2idkJZ78qhjII8F+mmKifNPW/wAh/j+O9JuGMrTwGfOQBjC9EjljRjaLz6a190b5I8BQcR2e/xPkzI7/fUYDtJ2CA1dFBCKz/ms4/mYWQ/gjdXUKeTGtSXUpyQVXCaNyQeLGyOpGH4lUuTy2ECwak= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=LlnZQYn1; arc=fail smtp.client-ip=192.198.163.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="LlnZQYn1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355565; x=1793891565; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=18pknen1RYf/KUJKw9WUis/RoD+Ugu3TM7+x2/TCERU=; b=LlnZQYn1lk8aL/jRZkqtIDkvtjmm8UoyhNcydohFm7D/b2qqi9LvpDMC Oc6DquRTsVPDPm3LZdKeWK0BnDL2iPtbv03J3EAdtDxyPYohVsD+zZM47 veyu9E04JDKiLSf/XWhQj68OCVKJK12RCPTR1tl/MdpAaf2hBfcIWKnh8 Rdwy8lLtQqBEZFRBxRQWMreyiUXXcuP6NFs0tHuCgY3NC+AID7GtxJbSk mRo7TVtOMoiFx+hfMypQaD3PRImFBsd0jlT25o8pLC5HjWVBV+3IGXUzr h/XGydIYqdByOHPXbpopMRgxg+J6sjBFOKdeOXbwI2DX3ltyIjlDvsHnE w==; X-CSE-ConnectionGUID: wBe2LSzmTh6NbGtMPUeWdQ== X-CSE-MsgGUID: feLOnzqzTHeLBLx+LjpGAg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="75080244" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="75080244" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:44 -0800 X-CSE-ConnectionGUID: xT0/CuFQSQm5LHbMSJ4E2Q== X-CSE-MsgGUID: ER1IyhhGQ8u/7/be5p2LQw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="187426870" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by orviesa007.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:44 -0800 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:43 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:43 -0800 Received: from BN1PR04CU002.outbound.protection.outlook.com (52.101.56.58) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:43 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=evzEN2RPzQ9GusY/nqS3NJF8EfMcvIEC3KdjjRKgH6YfUOXEcQ/qws2lGsz//ayGkoXZH8h7Scidn5lBcRkA03Ak6BOJkhbDPEsMfDQM6yVm4RMY2ynOgVK5HbdCcr97MOHDsemIenjAiwMwXfDXGLD5wHgWp7dGFBp4WijYWoZXpZHcMcpjKVQDlv3XXctggbgJyneKgiV7vBW5a6QYseYRwKJVF3FPsW/DZ6CmkuIx6WPP0L0QPFnH647tn+SZDe7hGir2RGxFWKQJwXdF+OsRcF5HFKEl1vBxZ0GYB1fBDZOdxzbIrv3I7N/04xBX3+vB6c8dsni3f+Kpsi7uRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=QSzTB+8RBE+pAk1gSEchtvGxqSZebYUH16E/6skUi+c=; b=JVqqYjzAm/wqID08lqidu+/oww9WIp3lUqaQ2PT0rHCx6UNcgXBdp3OUdxcexCCa7OyZm3oTs6z7gCHOW7KnWMHLeh5grfjEP4wU3HMD4XwiuoBhTp/Yu3GZ/k5iqo7nu3BbYZXH/vWBCjzc8LXmOEqEVzYSJTOUWdETFKJfXsiY+3JK/H7c67jBh22FSZUYqyiNq/qT4jlHhAbgr35T5SaFHFwQIo3wE2DvTlrBnWtBBPRFQTfurmAvOc9Cp/7hrKiEs2valsLRJud6zG92pR43MknhS7MF9jfxT7GwbntUmpbCpJkXRFVR8BK6q5Cph/maowJkH3kbDwVDiKyBWg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:41 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:41 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 22/28] drm/xe/pf: Handle VRAM migration data as part of PF control Date: Wed, 5 Nov 2025 16:10:20 +0100 Message-ID: <20251105151027.540712-23-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR07CA0312.eurprd07.prod.outlook.com (2603:10a6:800:130::40) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: 723e2f95-cc85-44e3-da04-08de1c7dc389 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?eHE3U2xFcEU3OHhvSUM4cHM5ZDVETytGbjNsUUdCOTZhN3dnZCtYTCs4WFpF?= =?utf-8?B?NXl0WTJ4dFdFcFZBUU0zMjdpSWtjQ0pSWkdoaVE5K3dqOVhnbmJZS2FaYUkv?= =?utf-8?B?WDR0U0cxNVg1NVd4dmxBaVlCTmxBS2h0QmNveEtab2thSGp4YXBNUjA4cjdu?= =?utf-8?B?OVJCQXdtU2VLNWxlYS9HN1U4RS9VM2tOd1Vxd2d1ak1iVkJSQTQ5dUlwQW1B?= =?utf-8?B?cGJwTTFBSnl0MUpIOGdPeDk3eFh2dDdGWUx1TnVXeDFjL2JIeSs4amRieFht?= =?utf-8?B?eStZN21wTDhJM242TWMxZEovY3RrU1N3TlYrL3BKTkpaQWN1UHVZdGZ4aGFT?= =?utf-8?B?Q0kxK2RhZmdKbGp2alF3cUNuMGZUOVYyT3JhLzR2aFM2cEIwbVhzLzNBcGpK?= =?utf-8?B?bXZvdHMyUUFSTXFCeW5uV1JuWVJWWER6bmlkRjVXd2hTdkt3SXVVVkhiNndT?= =?utf-8?B?U3paSkNrcmRBVHNqcmltMkhJd0ZpbmpQcEpBS3dRRnB0T1VLT244dDl0U2p2?= =?utf-8?B?VXpxbHJQWjlwZUlYY3IvcVlyQWVMWURYSytCaElBVVFpVEU5QlhTb3o4T0xI?= =?utf-8?B?T0J1RTUrS3daWDFueE5JYWMzYXptck9yZVpZMFNoYUVlMzBsMEVwL21uL1pG?= =?utf-8?B?bHo0L1ZIcWRES2tLelNoWWFFb3RsZnRMU0syZUZjcncxaS9Qc0pCVk5tdHVU?= =?utf-8?B?cVZoc1NYWUIrZURIOUJyeSszb1pYMTE2N1pZQ0pQbUxPd3lhNHlnZi9SMFo2?= =?utf-8?B?UiszNWJEcVR4SUFEVExCSDRMNi9tQVZlcFBuOWpjUG9Xam1JV3ZhSWFyQTZh?= =?utf-8?B?bUtEYkdOMUpkWmJwT2c3WEt4UkZ6bUZXZjU5elV0dlhBL1BjUmtZTjZ2QU0r?= =?utf-8?B?VUtEUEVoQjBwZWRQdC9RK0gvNkl4V1FNM0dJbGozVENnV25taDhuOW9GMElj?= =?utf-8?B?cWtMMElNYmRpLzRpeXNvZ1JhMXRVa0gzWDBDakFuSjBXVzJnbFNBQXVKN2lD?= =?utf-8?B?Tnd6K3RRZnU3NDNIWG5lWGdTZFJNMElTanUwWHFmOThBWnJVbU9NTm9QaEow?= =?utf-8?B?eC9BOWtJMUQxN1hrYVRmRHg2WFlvVVA2aktNSFU3RWQ4U1E5U1dFTERnSW9r?= =?utf-8?B?VkJwVGJxcithcTQ4eE5PcnJjWG1NaER3RHJRa2dLWGhpdkdrb2dWRHpheHJN?= =?utf-8?B?MDVOdmFadGM4OVhzdExYZHVCSnh2MzR5N1NhZjJOUmU3c1hlQ0pLbW9mQWpI?= =?utf-8?B?b0k1YXE4RWYwWk5rNCtndVUwVlVDcGd2NjZLaGdXTjdmbEdKeWhOVzM4TWRJ?= =?utf-8?B?VmVSbU82NHRVazF4TUJlMWRrTUZ6cldycVNKMGlKRGRLYWMwU0FNUzlNNitn?= =?utf-8?B?cTBpTmV3ZnplL3Q2Q2NjazM3QkZJRDMxNXM2RTBBYVlTd2RRUTJIaDJyWWg0?= =?utf-8?B?cGVkd0JvSjdGeitGcDVZckQ5MTNrek1YY3Qwd1I5dmtSeUR0Rm54WGYyTHh3?= =?utf-8?B?cmkvNHoyS0tKaGxTeG96dWUwT3FXVlRVeFl2ek5HcWoremlnTHlJRGd3eTRY?= =?utf-8?B?dk5McGRITWozeiswZ1lVaVZRbUpvQUFCbFh3RVZRdHpDVUVQb2QwYWNQK1VZ?= =?utf-8?B?YWJDbS9JL3NpdTVRNVByR2VFS0lvM1JBQ29PR2RrNXlObjR3TjdJVkNqUGlV?= =?utf-8?B?bmlCN3Rvb3BOVDhDbWdmT2txM2Rya1h2b1ZKdGJFU2tzWHhEQmQwb1lPa0Vj?= =?utf-8?B?byt6bXRiaXBuY2NnMk10MTdDb1U1bnBvcndoZjA3MVh5c3NQNDcvRTNPdTh0?= =?utf-8?B?ZmZnVHZwSlA4WDJmZEt6VENTYm1ObHNWMjVrMnpRL2pNU0pRNEVZTk1EcXlQ?= =?utf-8?B?WXVaNzhGejA1ZjJiRFZKTTd1ZGM0UUc4TUJEa3ZTY0YxNmhESzFGSmkxa29t?= =?utf-8?B?ZWZuUzBtYlJDMlVvcUwwS1VPY01TVitEY2RaclJweDB2VnE1VnBvdHU4RFJr?= =?utf-8?Q?DMN5balVmPILHFiJLbEOLVWm1TTxN4=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bDF6RmxkcGkxVzlCcE1qdVNCZFlkRXMyTVhsbmhYZ0d4bUtZUHY3cU4xNlVE?= =?utf-8?B?VTRtZWdNZFZUVlZ6TGc0allOcHdOZGxCYVQ3S09oVG8vOU9GbzFSN21NYUJL?= =?utf-8?B?S0xBaFFkYTVDNWhoMUJ5bGkwd1gxRjFpZno5bm9Eb2owQWF2SUtsaWdVNXJY?= =?utf-8?B?RG04SDZnZVlWRzQxajMwUlBsOVdJcysyNHU3S1p1dHpyT3JNK2JPWUpySzFX?= =?utf-8?B?OW1Rc3FhL1dOL3JqYUJ2T1pGdWNmRHdIai9YcWRydExUOXRoeUVjY1REeFBP?= =?utf-8?B?T2h0RVl1bjRDSnRxM0VhbHlTTlFyY3hta0wvM1lrQS9FRVh5ZDkrYXVDMndQ?= =?utf-8?B?RFpON1BsZnA1NStsTWhPQ3hCN3ZIcXVmZVl4TG82dk1ubFFvMGg3YmRwYi90?= =?utf-8?B?N2N0TktoY0pkeWpJMWNoVWRYeDQ5V0k5ZVluMjFhcWs5UktDRVRCK3l3Z2ht?= =?utf-8?B?dk1aV2tuaWsrRFJwdzVHVGZZNzZ0MThab1ZHaVoyOEUwOWJ3a0k3ZW9nNUo0?= =?utf-8?B?bERudUl2ZTJoL2FySTFuMFU2UmN5c3NqbUNubVBzcitmTUl0TFNRUWFVbU1l?= =?utf-8?B?ZEY2NGplRGJTZkJYRExncGtzZlVxVndKREx5bExkTlZNZ0R1Z001eUV3UVJn?= =?utf-8?B?ejFzaHI1V0NESUFuNFVsaWYwN0FzQ3I5cWtuQm9FTUt3WkhycFVqcDlhc1NJ?= =?utf-8?B?aUlTVDVKTDF4b2FSUXJaVHNGVlpZcTZNRkphZUJUZ3AxYnhzclc2MGlrOVhL?= =?utf-8?B?TzhPSldQOTNkemQ4VU9FNzAySHpSNFZmeENHZXdUMHRzQ1B2Nks2RWVxVVZl?= =?utf-8?B?aGlGZmFXeVd6cUx1eTNhdmZoOHVGaGp5cjhESThvZGQxSmRaSFppWnBUMGtz?= =?utf-8?B?TTY1YnJzUUQraEhRdE83UE5STml4VHhFU0tZRnM0elZhLzBDODkzSlNkbTB1?= =?utf-8?B?WjFITm9TNXJWVXRPbVhXMFQyZllINlYwVmxxQzJVMUlzaU9qY2pHdkVOczRQ?= =?utf-8?B?TUppeWd4Wjk2akdadm1LL2M2WDdobHJZazN4RHJadjZzUkJkOG5rcGpXMFhG?= =?utf-8?B?VUJHTDhRSkEwaWsrcm1MYkdheFFqMVV3UVoxbFA4RGZ5R29TbTBoQjBvakU3?= =?utf-8?B?dDFTbnorbmZycW1SNVpFY0FoR1VKZUdJNTBOWCs5Rjl2MGZveGRsLzRSeXdF?= =?utf-8?B?elhxZ1B1QzVhdnhWeFRPNXBoOVJLSzZYQnJtTWlNdFluRkhMMkh0WjJEQkNr?= =?utf-8?B?dlhVMGRFYWFoRy90dUVWZkwvVy9aaEhIMzltVTM2bDdMNStMYUFiZk5ITlIr?= =?utf-8?B?QmJ6RE5UWURCZHJYNm04TzUwWVo2M1JZM3UwVitBRXpIaUIvRi95bUxFQWZl?= =?utf-8?B?VnJGVFlKQzJYWmNVdFlWK3VwL0liMzZ6VlNzUGJ4VlJ1TnJOdVlhN04rdUFO?= =?utf-8?B?bTNKYVRWZERSMm1GZE4rblBsdHlqWjQyQzNPOVRwNjNIdThVVHkrM08rZkdM?= =?utf-8?B?M1FsN3dZU3NCRzNXOXdJaUZDbEdhN0htcG1XbDE0S2Fmb0Zkd044aWxocHRS?= =?utf-8?B?bjNBNkRuMXkyUHVnWEVBL3JIUWRmakhRK2VxZlVzR3VXNUExVm82L0xzMFNz?= =?utf-8?B?NWpOQWYvclE5Qm54aDk4N0lQUkZiUTNPSmV2OFRkbEkwQU11SGduMjNRTFZC?= =?utf-8?B?STRNRlllNmNGY2gvZjdXbTE5Q1RBbFQ5OG5UN1NwRkdoRmdKdW8vcHBWVU96?= =?utf-8?B?NzNrbm82bzU3NFF6TjRPNTBYQnRqYlhvdjlWbnJyN2w3bnhlRUd0Mjg2M01m?= =?utf-8?B?RXB5NUNzdCszTzFUWElXL3VSVXREbTFDQkR4RlhDZ0dlR3BTZFpaRUdmblox?= =?utf-8?B?RE9SdVl4clo4b2QzbDR0TjR4VFd2cFNzNHlITXozai80UmtmK0I4Y2szZHNK?= =?utf-8?B?RXRRVlhmMVJtcHF4VG5RQU1UOFIxOHBqY2YwU2J4a052cGs2TFJYSEdSNi9E?= =?utf-8?B?bU1DdFE3UGNmNnRYOWg1UlJQdmFoRkFScnB0MitkVHJWSTVLTmFlQmdNTXFR?= =?utf-8?B?OW04QkVONDdONkxwbzBKVzVHcWt5SnpkUmh1MTNyU0Jjbyt3UU44cWpROG1Q?= =?utf-8?B?MzBwRExlT2ZiTEpwNlRpUngwdTdFNXNxL1IvakJmOFhEN2EvNlVxUWhqK1h5?= =?utf-8?B?bnc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 723e2f95-cc85-44e3-da04-08de1c7dc389 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:41.3133 (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: 7E9L8VS/d2Cp6ue+UUPYhz7ilFQcZAWYa8RnwUOMSljKObNgznmuWSC26ZKmzecss41pPXwyNJONgfApdYcQ86iLR+6afgcsjo5c95ljZ7I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com Connect the helpers to allow save and restore of VRAM migration data in stop_copy / resume device state. Co-developed-by: Lukasz Laguna Signed-off-by: Lukasz Laguna Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 17 ++ drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 211 ++++++++++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h | 3 + .../drm/xe/xe_gt_sriov_pf_migration_types.h | 2 + drivers/gpu/drm/xe/xe_sriov_pf_control.c | 3 + 5 files changed, 236 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c b/drivers/gpu/drm/= xe/xe_gt_sriov_pf_control.c index abc2bd09288ea..aae0c98657408 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c @@ -891,6 +891,20 @@ static int pf_handle_vf_save_data(struct xe_gt *gt, un= signed int vfid) return -EAGAIN; } =20 + if (xe_gt_sriov_pf_migration_save_data_pending(gt, vfid, + XE_SRIOV_PACKET_TYPE_VRAM)) { + ret =3D xe_gt_sriov_pf_migration_vram_save(gt, vfid); + if (ret =3D=3D -EAGAIN) + return -EAGAIN; + else if (ret) + return ret; + + xe_gt_sriov_pf_migration_save_data_complete(gt, vfid, + XE_SRIOV_PACKET_TYPE_VRAM); + + return -EAGAIN; + } + return 0; } =20 @@ -1129,6 +1143,9 @@ static int pf_handle_vf_restore_data(struct xe_gt *gt= , unsigned int vfid) case XE_SRIOV_PACKET_TYPE_GUC: ret =3D xe_gt_sriov_pf_migration_guc_restore(gt, vfid, data); break; + case XE_SRIOV_PACKET_TYPE_VRAM: + ret =3D xe_gt_sriov_pf_migration_vram_restore(gt, vfid, data); + break; default: xe_gt_sriov_notice(gt, "Skipping VF%u unknown data type: %d\n", vfid, da= ta->type); break; diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.c index 22f471f269cfa..c62bb67c20a6b 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c @@ -19,6 +19,7 @@ #include "xe_gt_sriov_printk.h" #include "xe_guc_buf.h" #include "xe_guc_ct.h" +#include "xe_migrate.h" #include "xe_mmio.h" #include "xe_sriov.h" #include "xe_sriov_packet.h" @@ -501,6 +502,205 @@ int xe_gt_sriov_pf_migration_mmio_restore(struct xe_g= t *gt, unsigned int vfid, return pf_restore_vf_mmio_mig_data(gt, vfid, data); } =20 +static ssize_t pf_migration_vram_size(struct xe_gt *gt, unsigned int vfid) +{ + if (!xe_gt_is_main_type(gt)) + return 0; + + return xe_gt_sriov_pf_config_get_lmem(gt, vfid); +} + +static struct dma_fence *__pf_save_restore_vram(struct xe_gt *gt, unsigned= int vfid, + struct xe_bo *vram, u64 vram_offset, + struct xe_bo *sysmem, u64 sysmem_offset, + size_t size, bool save) +{ + struct dma_fence *ret =3D NULL; + struct drm_exec exec; + int err; + + drm_exec_init(&exec, 0, 0); + drm_exec_until_all_locked(&exec) { + err =3D drm_exec_lock_obj(&exec, &vram->ttm.base); + drm_exec_retry_on_contention(&exec); + if (err) { + ret =3D ERR_PTR(err); + goto err; + } + + err =3D drm_exec_lock_obj(&exec, &sysmem->ttm.base); + drm_exec_retry_on_contention(&exec); + if (err) { + ret =3D ERR_PTR(err); + goto err; + } + } + + ret =3D xe_migrate_vram_copy_chunk(vram, vram_offset, sysmem, sysmem_offs= et, size, + save ? XE_MIGRATE_COPY_TO_SRAM : XE_MIGRATE_COPY_TO_VRAM); + +err: + drm_exec_fini(&exec); + + return ret; +} + +#define PF_VRAM_SAVE_RESTORE_TIMEOUT (5 * HZ) +static int pf_save_vram_chunk(struct xe_gt *gt, unsigned int vfid, + struct xe_bo *src_vram, u64 src_vram_offset, + size_t size) +{ + struct xe_sriov_packet *data; + struct dma_fence *fence; + int ret; + + data =3D xe_sriov_packet_alloc(gt_to_xe(gt)); + if (!data) + return -ENOMEM; + + ret =3D xe_sriov_packet_init(data, gt->tile->id, gt->info.id, + XE_SRIOV_PACKET_TYPE_VRAM, src_vram_offset, + size); + if (ret) + goto fail; + + fence =3D __pf_save_restore_vram(gt, vfid, + src_vram, src_vram_offset, + data->bo, 0, size, true); + + ret =3D dma_fence_wait_timeout(fence, false, PF_VRAM_SAVE_RESTORE_TIMEOUT= ); + dma_fence_put(fence); + if (!ret) { + ret =3D -ETIME; + goto fail; + } + + pf_dump_mig_data(gt, vfid, data, "VRAM data save"); + + ret =3D xe_gt_sriov_pf_migration_save_produce(gt, vfid, data); + if (ret) + goto fail; + + return 0; + +fail: + xe_sriov_packet_free(data); + return ret; +} + +#define VF_VRAM_STATE_CHUNK_MAX_SIZE SZ_512M +static int pf_save_vf_vram_mig_data(struct xe_gt *gt, unsigned int vfid) +{ + struct xe_gt_sriov_migration_data *migration =3D pf_pick_gt_migration(gt,= vfid); + loff_t *offset =3D &migration->save.vram_offset; + struct xe_bo *vram; + size_t vram_size, chunk_size; + int ret; + + vram =3D xe_gt_sriov_pf_config_get_lmem_obj(gt, vfid); + if (!vram) + return -ENXIO; + + vram_size =3D xe_bo_size(vram); + + xe_gt_assert(gt, *offset < vram_size); + + chunk_size =3D min(vram_size - *offset, VF_VRAM_STATE_CHUNK_MAX_SIZE); + + ret =3D pf_save_vram_chunk(gt, vfid, vram, *offset, chunk_size); + if (ret) + goto fail; + + *offset +=3D chunk_size; + + xe_bo_put(vram); + + if (*offset < vram_size) + return -EAGAIN; + + return 0; + +fail: + xe_bo_put(vram); + xe_gt_sriov_err(gt, "Failed to save VF%u VRAM data (%pe)\n", vfid, ERR_PT= R(ret)); + return ret; +} + +static int pf_restore_vf_vram_mig_data(struct xe_gt *gt, unsigned int vfid, + struct xe_sriov_packet *data) +{ + u64 end =3D data->hdr.offset + data->hdr.size; + struct dma_fence *fence; + struct xe_bo *vram; + size_t size; + int ret =3D 0; + + vram =3D xe_gt_sriov_pf_config_get_lmem_obj(gt, vfid); + if (!vram) + return -ENXIO; + + size =3D xe_bo_size(vram); + + if (end > size || end < data->hdr.size) { + ret =3D -EINVAL; + goto err; + } + + pf_dump_mig_data(gt, vfid, data, "VRAM data restore"); + + fence =3D __pf_save_restore_vram(gt, vfid, vram, data->hdr.offset, + data->bo, 0, data->hdr.size, false); + ret =3D dma_fence_wait_timeout(fence, false, PF_VRAM_SAVE_RESTORE_TIMEOUT= ); + dma_fence_put(fence); + if (!ret) { + ret =3D -ETIME; + goto err; + } + + return 0; +err: + xe_bo_put(vram); + xe_gt_sriov_err(gt, "Failed to restore VF%u VRAM data (%pe)\n", vfid, ERR= _PTR(ret)); + return ret; +} + +/** + * xe_gt_sriov_pf_migration_vram_save() - Save VF VRAM migration data. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_migration_vram_save(struct xe_gt *gt, unsigned int vfid) +{ + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid !=3D PFID); + xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); + + return pf_save_vf_vram_mig_data(gt, vfid); +} + +/** + * xe_gt_sriov_pf_migration_vram_restore() - Restore VF VRAM migration dat= a. + * @gt: the &xe_gt + * @vfid: the VF identifier (can't be 0) + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_gt_sriov_pf_migration_vram_restore(struct xe_gt *gt, unsigned int v= fid, + struct xe_sriov_packet *data) +{ + xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt))); + xe_gt_assert(gt, vfid !=3D PFID); + xe_gt_assert(gt, vfid <=3D xe_sriov_pf_get_totalvfs(gt_to_xe(gt))); + + return pf_restore_vf_vram_mig_data(gt, vfid, data); +} + /** * xe_gt_sriov_pf_migration_size() - Total size of migration data from all= components within a GT. * @gt: the &xe_gt @@ -540,6 +740,13 @@ ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt= , unsigned int vfid) size +=3D sizeof(struct xe_sriov_pf_migration_hdr); total +=3D size; =20 + size =3D pf_migration_vram_size(gt, vfid); + if (size < 0) + return size; + if (size > 0) + size +=3D sizeof(struct xe_sriov_pf_migration_hdr); + total +=3D size; + return total; } =20 @@ -602,6 +809,7 @@ void xe_gt_sriov_pf_migration_save_init(struct xe_gt *g= t, unsigned int vfid) struct xe_gt_sriov_migration_data *migration =3D pf_pick_gt_migration(gt,= vfid); =20 migration->save.data_remaining =3D 0; + migration->save.vram_offset =3D 0; =20 xe_gt_assert(gt, pf_migration_guc_size(gt, vfid) > 0); pf_migration_save_data_todo(gt, vfid, XE_SRIOV_PACKET_TYPE_GUC); @@ -611,6 +819,9 @@ void xe_gt_sriov_pf_migration_save_init(struct xe_gt *g= t, unsigned int vfid) =20 xe_gt_assert(gt, pf_migration_mmio_size(gt, vfid) > 0); pf_migration_save_data_todo(gt, vfid, XE_SRIOV_PACKET_TYPE_MMIO); + + if (pf_migration_vram_size(gt, vfid) > 0) + pf_migration_save_data_todo(gt, vfid, XE_SRIOV_PACKET_TYPE_VRAM); } =20 /** diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h b/drivers/gpu/dr= m/xe/xe_gt_sriov_pf_migration.h index 04b3ed0d2aa23..181207a637b93 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.h @@ -25,6 +25,9 @@ int xe_gt_sriov_pf_migration_ggtt_restore(struct xe_gt *g= t, unsigned int vfid, int xe_gt_sriov_pf_migration_mmio_save(struct xe_gt *gt, unsigned int vfid= ); int xe_gt_sriov_pf_migration_mmio_restore(struct xe_gt *gt, unsigned int v= fid, struct xe_sriov_packet *data); +int xe_gt_sriov_pf_migration_vram_save(struct xe_gt *gt, unsigned int vfid= ); +int xe_gt_sriov_pf_migration_vram_restore(struct xe_gt *gt, unsigned int v= fid, + struct xe_sriov_packet *data); =20 ssize_t xe_gt_sriov_pf_migration_size(struct xe_gt *gt, unsigned int vfid); =20 diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h b/drivers/= gpu/drm/xe/xe_gt_sriov_pf_migration_types.h index 9f24878690d9c..f50c64241e9c0 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_migration_types.h @@ -20,6 +20,8 @@ struct xe_gt_sriov_migration_data { struct { /** @save.data_remaining: bitmap of migration types that need to be save= d */ unsigned long data_remaining; + /** @save.vram_offset: last saved offset within VRAM, used for chunked V= RAM save */ + loff_t vram_offset; } save; }; =20 diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_control.c b/drivers/gpu/drm/xe/= xe_sriov_pf_control.c index 87205f0505ad0..eec218c710278 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_control.c @@ -5,6 +5,7 @@ =20 #include "xe_device.h" #include "xe_gt_sriov_pf_control.h" +#include "xe_gt_sriov_pf_migration.h" #include "xe_sriov_packet.h" #include "xe_sriov_pf_control.h" #include "xe_sriov_printk.h" @@ -171,6 +172,8 @@ int xe_sriov_pf_control_trigger_save_vf(struct xe_devic= e *xe, unsigned int vfid) return ret; =20 for_each_gt(gt, xe, id) { + xe_gt_sriov_pf_migration_save_init(gt, vfid); + ret =3D xe_gt_sriov_pf_control_trigger_save_vf(gt, vfid); if (ret) return ret; --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37051340A74; Wed, 5 Nov 2025 15:12:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.20 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355572; cv=fail; b=f2VS1nzFWHxdnOoAyxvWIzNLf5qdQg6OrCAkpeOYGMx6XxAtIn4G/r4xYIgDvKyTMi0t1nPJundh/2Tta4jge7ZyXgm68fjimuLYMFgE1XSD5OZ3v5EbUJqwsg1L7j16Xq58m0s6wE+VtJM0a7Q1YdQ7rKvvkChLk2DHu3XpdDc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355572; c=relaxed/simple; bh=zCcjXV5AkWNDmCiJGYpZ00sraDi/6V++0hLsdFBiek8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=dzpZCjT+UcGaeKW7r9JkvkzJ4v1jBq/XLE5+CGT6vP2jyhVAwLc/zUsrzpzoWgR5IVCfsFFVQzlwkI58Gx02/UgqIhKOeOuj3PmXVLku3xW0zC6nCCD1/ASK7PWLCSyxj8XGZVSQQztbBTSquavWxmU3YMh4KRhV8AThwT7xYRE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=DP6VJwMS; arc=fail smtp.client-ip=198.175.65.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="DP6VJwMS" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355571; x=1793891571; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=zCcjXV5AkWNDmCiJGYpZ00sraDi/6V++0hLsdFBiek8=; b=DP6VJwMSn1tytHNcphb9AFlQZlSLvrulawE4KaMaivsgeC5KXAxKKAIk nYFBq7XlvUM+s5HGqJ8F5iSTHpXYxK6hW5yI9AhN1EuA0xWrga6dthAce ggnwSwM6cr8FlY9o034D9ZiZhlDr8/Jfgy1p7yW19T8UkjfxH5daW+077 na3B4mWFxT0XhiTEGRhYBAqjQd4trRLuse1I21dg4Me/eAOi5xkD3j7fc QeH1Y5e+gyx5hKn6mQ4mS6IOpTbqvp3Ah3NLItt/aENmgF5PEoCIkIT/X f+ZzxEd7ziS/CkMUcuQlETBeDE6gDruOoRClLaO6aKQ63obGhbX8LssgG Q==; X-CSE-ConnectionGUID: K5ZSXa7xTpWT0Irahy1YoQ== X-CSE-MsgGUID: bWWH36dsQ3K7F52O8ZyLqA== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64169038" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="64169038" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by orvoesa112.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:50 -0800 X-CSE-ConnectionGUID: fbb7CgBHRG2I4PghR+sOCA== X-CSE-MsgGUID: qmwgcrK0QZuzvsQ/6QlcLA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="186766610" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:49 -0800 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:49 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:49 -0800 Received: from CH4PR04CU002.outbound.protection.outlook.com (40.107.201.69) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:48 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pACm7497/GkwMTvtfWFyNcavhwZblZG2/QFP1ZtA6gIgVCmlLt13u3UNOqPpggfygs4K5S8GgUxj5NjsYZG6IKHz4s3GHlBYCSHmoL5IrBpIOdISyWj1UD3EZ+RcCbjd/lt2hPYZmHWZDCbi+BdmrD1F0UKnduY3uwKZxBjo1XEZ54RH3c4cCobOR1R1KBLNAPFgBmqazb5aNXBLrakQAmxQ3WLP6q7WdlYxCnT1iek386bTmoCW0jT8zfx4AVP2picf7DRwjHbm6SU4TOjcHgF+HYwwN08LOxUmFfeztHoSRwx8uurzDk0m7pT8EjQaFcmRGWPZVsZwdjkIqSi3Eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=oTkppz7S19/7prWaAEWdhdnZay3LwyUIP3Hrqz/7C9g=; b=TyIkP+DvTpk4j0+xbjyt67J01uFw17D8Es3yQkmHg5O9d/qzloBbW+wFQdZ9pmKRpL6QQ0k/2E2Bbmwdvn4z8v8zWnBUvIGfJdPGRaT0UcSYN6arkQdLrc504jl6rmaZBSLKNeCg3z7EOKkIVJXy/JVQKEk1UnUGAt8+2x6CLo58a/Nh98OMWdwQ2cMiKZ3GcywZKGiS4GbdIvqr2Jr+3A6PoT534NURq3ah2qKcH/k/Wl4DlMZAejaBw/1WR2oQNSymjQeAA0i34a2MbmpW4XcNDMDSDrZb6v/m2F6sHymqYCNfK8K4xWbP4UKHw9qZHgyNUn4wWJBrkUDI1u7ZvA== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:47 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:47 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 23/28] drm/xe/pf: Add wait helper for VF FLR Date: Wed, 5 Nov 2025 16:10:21 +0100 Message-ID: <20251105151027.540712-24-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR04CA0074.eurprd04.prod.outlook.com (2603:10a6:802:2::45) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: 0e35bff4-bb77-4483-c1e0-08de1c7dc6dd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RUl3cVI3NE9LUUUzam5mYzN3ditBRG9TQ3YzSXh6aWFjMTVMRyt1em5tSGxJ?= =?utf-8?B?QThBR2xGU29EbFljenJBTmV2dUs0Q1JjNWNPakZUUGl3UGhsVVpkc1JRNXJC?= =?utf-8?B?emFYOFQ2RjQ0eFpsZkpVZ3NtZmdtSW5nWVllcHhNTGJjT09RdTlkWGVJbGhQ?= =?utf-8?B?MUUxRjkzNHY1VGtxS3J1WGgzTlYrYkxrVERLR0xtUkY0cDFNckF6VEorT3Az?= =?utf-8?B?WlpaSFhCaVdEcDh5SVZqWnozS1VQRnRoU2k1Q3hRNlkxNlZGdUpVMlJEOVNK?= =?utf-8?B?d1JnMjNoNHF6eUlrbEdzQ3RwMDRxYmtFb0dLZythKzZnUzQxSTZwYjZraGdq?= =?utf-8?B?cUljdmVEcisrcDZsZ1pnZ1d1Sms0bENsSnJQOEhodzZ3dG45N2pwWldBeHdy?= =?utf-8?B?NU8rcnZneEM4bnZSVC9hc25zUEhPZnF0dk1IdEZ2NnROaEUrcitWWDNPcjZ3?= =?utf-8?B?Wmk4Z3FZajE2Rm1SOFpnSlZ3OUo2elIxb3p0WDNIckdDTFErVk45ZENIT3Z0?= =?utf-8?B?ek5BakN4VjZvYUdpU0VDczU5NHZzRldpdWljcXpjUUdLNk9FaHI4Z0FVS3Bj?= =?utf-8?B?V0hCMWxwc3ludktmV0h6U0NZNjJINlRPeWQxbUU4SE0vNVJYSGRJWnk5WUtX?= =?utf-8?B?YUsvR0ZxUnFxQ1dQZTNBZlVsUXVUYXAvV1JoMEljSHZzWjZFTTZjSS9yaEI4?= =?utf-8?B?ckRpUy9nNGs0V0gyakE3RzFLbkZaR09LTWhxWWlMcHZVTjNVcG4ydXhsV1lV?= =?utf-8?B?WW5FU1J4T2g5Syt6SE5GOEZPSjNuekRXSGNMVDhSaUxTMWR0b01CT0VXR05x?= =?utf-8?B?WE40MmFScUdsVXVTTS8vYkhzTmFDV2xKM3RsM25yaXVOQ01sU2x1U3NzTUd5?= =?utf-8?B?MWRHSENtYUR4ajJSb0tBeGhlS1pZTXJBQjIxUmR4b21UN2piWmZOc1dqb1JV?= =?utf-8?B?UUs1elBZNzc5ZjdVdHRjby9kSjJ0c2tvUGdxNFhRb01KWWQ0UHFNM2Nwa1Vh?= =?utf-8?B?VjloR3RQbHBDbzU3WUJyaFRIYTIzNjBUNERJcTNmUnN3NHNRcUhYY1Fhd0t6?= =?utf-8?B?blVWWnlQbHNvb1FFZlRWYVlGNFBLV3hpVHpjZzJqQ0tyNFBUN0tMcnVPVDBq?= =?utf-8?B?cklocXFJOE9wR2RIRlV6MzhXUHFnR3V6K1VOYUlkb2ppSVJqU2F0Z1ZmL08z?= =?utf-8?B?YUM2QU00b295YjdRakluc29PSENoRVpxN3F6OTJkbjR6TUV0QjMxcVB6UjAw?= =?utf-8?B?SzNubmZSUUV5c3dSc1ZLNEk2ZU5mZ3ErRG5Renl0UkhWT1EwNVY2dXBVaWY4?= =?utf-8?B?anFpWGVVclJORHpDWUpXRVVJNG1yQkxYMEEwM1JxQ3FQaWNWM3FlNHpHQkhr?= =?utf-8?B?UzVoR05JcHIyaE02ais2dDRRT1FwUjJjRVAxSmJ0WStEMnUwdlI4akVjMmdq?= =?utf-8?B?WGcvc0Y0TFc4eWF5UktYOEdaK3lwZ0xnaGpUbXQ1VWFFZ2FFNkdaTURyNXE1?= =?utf-8?B?OGtDNnY1cFBPMXhGbGVrVlZJVVJDVVdlRUdsUVg2SDBGOEZjb05UVG5nQWxJ?= =?utf-8?B?MW1VMGFYT1NQVXdVQ0ZtNnRjN3krNU92S1dyRzFWR3FVUmU0emszQzhaNFZZ?= =?utf-8?B?Slh3czNPd2loVnFtQzJTQ2dTSFE2a3F1S0Faclo4a2Jiam4yWU02YzlRUXpo?= =?utf-8?B?aUl6NG5JdCtxU2JjcXFCQm9UaHhsSWVoZFFTR0tFZ0VxMktuN1dhVWQ5N2o4?= =?utf-8?B?d2RtMy9kNFRQc0R5STJSR2FhUFpEQ2tNTzZlWGE3WVNMREpJR2gvMmNRQm4y?= =?utf-8?B?WGxWR0xKTlJTcCs5bjgycUdwT0EyUFBqMCs2clV3YzRyMWJiQkFMZGJyWEFS?= =?utf-8?B?a3kyVFM3NXU0S0Z4VHRDby9BK2hQSG1MVlRFTElhOGhQKzUrT2lzME5JdVVq?= =?utf-8?B?K0FHS0NyM1ZqZ0pnNys3RUtva1dhNjZhYlJlT2dNMG5iSHRoYWw1UEkwWnZ6?= =?utf-8?Q?lCKsdFLi7vXqZAUm4VN16v2NKdQhqw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WXpaektTRzVIL0FoUHlYLzgvaHBFWjdhWVNkd09XYjMwOGpzSjZFQmg0Yy9L?= =?utf-8?B?WGRVUEl3R2Ezc1NVdzZXZ0dFZWRFSk1zTTJUSVFVODhBbXpHMHQ0V1c5SDBi?= =?utf-8?B?clF4U0JXSlhLS0lyNW1hbFVGTzhGTFA2TWRteGUwckEvNHRnN2xQRXVIUldi?= =?utf-8?B?bDhoeHVtUURWazZ6OVFKVTdpTEhQOVl5eExqeU5MQU1RSVlkYXFwOWY3ZUxz?= =?utf-8?B?bXlCNDJRd2RWVXJVYTRxMmxSS3ZQRjhIbUNNY2tEeEFhb3k2OE1hU1VqREhY?= =?utf-8?B?K3ZJVEtqbDlQelltcHI3VllaT2xNWUtMYnFoNmFMb3RrSDRhMWhEUXp2a1VZ?= =?utf-8?B?Y0ZuckQzT011WGRYWkExNWFBZ0R0Wm82ZVdlOE8xb0ZvZjB0SkpnMGh4a2xS?= =?utf-8?B?ZG9DSW9lbkxDOVhQU0M4bUp2bEdEYTM2UmJTNjlBVDVvKzVmNlAxa0JCOUJ6?= =?utf-8?B?UEg4cXB3TkNvQ0hHLzJGejFmMzNCTGVwa2xBUm5DWWU3dTd4MURjYjlaeU9z?= =?utf-8?B?RWZKUG5ZRXJYOW5wUkYxdUhZMnFKSFk2SmU1cWxPT3NwUElOaWZSSk5mYjgx?= =?utf-8?B?R0xtMGFuSFE2cmc3OVBiVGhkV3pNUVErOVU2d3FCUW5DZFZiV3dva3BuMVBm?= =?utf-8?B?c0lpc2FVOU1NRXUycG1SVVZ4OXFIRHAzRkxMR0xNSnVseGZDcW1tM0U5TWhu?= =?utf-8?B?Y3FLaGRRMG1uclhmellCWTRKcGhxa2pOZUZ5eG9IMUZ6VHpNblBzZ2Zua2Qw?= =?utf-8?B?QkFpRDZVcDkrZk5EclBEdlF3WmxUNTdaMXhtMEJ1WGVGVkZlclY3czBObS9i?= =?utf-8?B?WVlOTE1DUUdybDRaaEdHaXVxdmNGSVNkVjFMZmJheXluTW5CVU85UW1JTGRu?= =?utf-8?B?SEEvZGZiR3lIK1BzYWhXaGNRRGtGMDA0QlhUTzZ3SW0zUnppa3NQWnB1TGtX?= =?utf-8?B?bjBJdGVERld0RlZDcGNzalMzcFFuSDA0RlFvcVN3MlF3Mno1NXcrY0Qrci9w?= =?utf-8?B?SmNiS1FkSTQ3QmMxcksvL1lMc1hSN2xTNHJKVlo0VHUydmVsWUxzR0xRVlJN?= =?utf-8?B?VDhVTlJsQ0lXczBuUjFidEFjQjluUmc4WmF1NkZGQmJKQjBReVhOcjZNRzZV?= =?utf-8?B?b3NrdkFYRDlmb0ZIK2YwUWFRSVhYV28ybmNPMWs1bHp1R3ZqMnlQMjVJQlgx?= =?utf-8?B?QnhPbU1tTmROdUhvQTBHRThZV1hDak0ySEs0RmljSnBZTVQyNXk5STJ4T1hB?= =?utf-8?B?TFQ4VDhMSWltREdQV0p5cDZscE1qZW8yeTlrZ2JNUFp4bDVaL1VISWpiRS9I?= =?utf-8?B?c1RPdmNicFZiTFNJVnNtbFY4OWNsRUZxRWIvaUVkOFZGRmgzVmgxRTU4UHA3?= =?utf-8?B?c2lFNGZjanBrSkc5OGZZS2RVdUl1R1dhOFZBNDJpRUdyK2d3Y3RSazM1ZUYx?= =?utf-8?B?WXBFOHpDdUpQNG5OMi90MTMrM1Z0WWx4N2M0NmFhaloyQU83ajJMdXNPMXV3?= =?utf-8?B?YjNSTVYrVGlQR25jQ1lrM1JyT0FFbzdNYjVyNlBpUHVOVnErS0tBYW44N2pJ?= =?utf-8?B?RGVjR2ttTUVLS0tMTnYzMExWaitRMkZMa016M1l2eEhVcjFtQ0pCYUNmSkdJ?= =?utf-8?B?UUlFeTRINmo4RkZNWGFZOXVGenhDa0ZMTXZQZFBMdmtoQXF6TlNwV1kvOWJq?= =?utf-8?B?R1RkOHdBT0ZsY2VjVnlTT0FPcHJzcmpjcDREODFmVG40ZCtpaitVYU1MYUxW?= =?utf-8?B?dlNNeDhoSUwxYjVYTVhCY0lDVzNpQSs4SUxPNldvNXZibDhyRFY5NUdHMnN0?= =?utf-8?B?bjRXK2dvTGY2NU1NajU5UTVjbmtBZmt5elYvL3ZLSEtVS1FpNVN2TmFBRlZ6?= =?utf-8?B?ZzBuMUhPdStReFlUbkRMOHpja3cwZERVRS9aYndzTllvOUYrOFFRQ2UyTUVk?= =?utf-8?B?enpGN2tiS3RuUmRGQVVyQmJJT2hwQVBMdUNGU3czamlFMkh3T0l1bXF6VE5r?= =?utf-8?B?NXlaUnJPa21JTHBsSlpGT0REcEt4MG5lVnlqQlo0YUNOQU1EaGk2RFA1NFEr?= =?utf-8?B?b1lXaFBjazFYRXdoMmNLRmFqdFdqSXZUTXk3TG9qV2N2aVdZOUFvRGF3QVpI?= =?utf-8?B?QnN3U2d3RXlDaDdxUkVaQ2NJaU5wa2FPYTZ4MVVHUU5aV0I4TDRwMURFNUhS?= =?utf-8?B?c0E9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 0e35bff4-bb77-4483-c1e0-08de1c7dc6dd X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:46.9165 (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: 7rZYEQSLy6Ksq1UqaIwYYwbDon2rWeN8+O6cM/OKbCDhjprO6wXHlxbyqKj3Rw3/aFghD0FnXtzNeA+7uyk5pvGb4URaM9ipTN3pOKT4GZ8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com VF FLR requires additional processing done by PF driver. The processing is done after FLR is already finished from PCIe perspective. In order to avoid a scenario where migration state transitions while PF processing is still in progress, additional synchronization point is needed. Add a helper that will be used as part of VF driver struct pci_error_handlers .reset_done() callback. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Michal Wajdeczko --- drivers/gpu/drm/xe/xe_sriov_pf_control.c | 24 ++++++++++++++++++++++++ drivers/gpu/drm/xe/xe_sriov_pf_control.h | 1 + 2 files changed, 25 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_control.c b/drivers/gpu/drm/xe/= xe_sriov_pf_control.c index eec218c710278..acaf38026c763 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_control.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_control.c @@ -123,6 +123,30 @@ int xe_sriov_pf_control_reset_vf(struct xe_device *xe,= unsigned int vfid) return result; } =20 +/** + * xe_sriov_pf_control_wait_flr() - Wait for a VF reset (FLR) to complete. + * @xe: the &xe_device + * @vfid: the VF identifier + * + * This function is for PF only. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_pf_control_wait_flr(struct xe_device *xe, unsigned int vfid) +{ + struct xe_gt *gt; + unsigned int id; + int result =3D 0; + int err; + + for_each_gt(gt, xe, id) { + err =3D xe_gt_sriov_pf_control_wait_flr(gt, vfid); + result =3D result ? -EUCLEAN : err; + } + + return result; +} + /** * xe_sriov_pf_control_sync_flr() - Synchronize a VF FLR between all GTs. * @xe: the &xe_device diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_control.h b/drivers/gpu/drm/xe/= xe_sriov_pf_control.h index 30318c1fba34e..ef9f219b21096 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_control.h +++ b/drivers/gpu/drm/xe/xe_sriov_pf_control.h @@ -12,6 +12,7 @@ int xe_sriov_pf_control_pause_vf(struct xe_device *xe, un= signed int vfid); int xe_sriov_pf_control_resume_vf(struct xe_device *xe, unsigned int vfid); int xe_sriov_pf_control_stop_vf(struct xe_device *xe, unsigned int vfid); int xe_sriov_pf_control_reset_vf(struct xe_device *xe, unsigned int vfid); +int xe_sriov_pf_control_wait_flr(struct xe_device *xe, unsigned int vfid); int xe_sriov_pf_control_sync_flr(struct xe_device *xe, unsigned int vfid); int xe_sriov_pf_control_trigger_save_vf(struct xe_device *xe, unsigned int= vfid); int xe_sriov_pf_control_finish_save_vf(struct xe_device *xe, unsigned int = vfid); --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1154434216C; Wed, 5 Nov 2025 15:12:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355578; cv=fail; b=Mq8m6K2Ag59HGJooJowxE/7xNobimRnZA/xvcF6ZDskWnetaISypanal38jjQKNtV14Hb1ZxJK/R9pIg7buTfc96u37le2Av0IZrgoj5TzDPOmcv2ZXGwtk1iBzirw+1FTAW56/gjGDuWedBSNHAWyC4XkB4dSaoYbPe9i32PNo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355578; c=relaxed/simple; bh=gqMYhBmv+klQZPK/wABMsi9x1ALBGd7jPOg2Of2AQG8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=kmmolLO2rTKnzPya+y9M5DcyJJwOM3n/LuxMNrJqyU8eDQR2HFArHNpc23ZN11aWKtqBe1MXzkRai7D7exkiQOq1HAhWyyEnEpYAQeStGFNDh1PvpKf6HdPnC5IK3uKa8Y2Serx4dL/TGFJOptjHvoaiuxIgUORdq7Hh9f9Gh0Q= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=MAFdNoo8; arc=fail smtp.client-ip=198.175.65.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="MAFdNoo8" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355577; x=1793891577; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=gqMYhBmv+klQZPK/wABMsi9x1ALBGd7jPOg2Of2AQG8=; b=MAFdNoo8MdZ5zcBNvXbEGTyPsbPMy8CoOhpD2uoRpo9uEng3Na8f9xAp r3iqwMziGOOxXxToMIl57YD4eO31KPZT3RTxdUI9GgIlIFKHQLq8zCVAF swKmtUjlapRSp9AReUE/4cZpgggIP1Kfg2qy1MlXBKzwPnK0qDTCLCYhL k+VWTOmPXDokQa5h4477QHA9QQMW7ocdkV9UP0TLPxqWZsLO+3XvDk8kU ljHzzLmzQTK56tb0rRiy/Z4yZtp2osSVQhsY9t3E1sjhKT82cVE26YhDk H+mDtdlIIvvphb7fTzbq14h/WjAAH0xKAo46zkd1kE8yOSn/pVNKnKmkH Q==; X-CSE-ConnectionGUID: oM4Cwcy7TRSSBVWyeyPJuw== X-CSE-MsgGUID: 3GPI6dtxQuqGnwOlNYMeJg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="64354605" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="64354605" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:56 -0800 X-CSE-ConnectionGUID: QeRAuEUPTbWUfeI1U+aP5g== X-CSE-MsgGUID: oQD/+QfySlG6bsv5Ehw4Ig== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="224725885" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:12:57 -0800 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:56 -0800 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:12:56 -0800 Received: from CY7PR03CU001.outbound.protection.outlook.com (40.93.198.5) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:12:56 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Xs/RM0qinIw7br0AetDWdqVj0ORYAS56vDXzk0Wp6wSxE+g91ojCoY0B3QtceiMfxueuCSclNhRp0IeN58ST6z0NG8CE1MDeshWzpypZALYuuLVIuXuIezYVAj5yJUJRzc12jQUEu3ul3QjkJkuVzRAoHlZ6cCHaq2/9lt7xxe0hdr2FLuszziJu9xP+UH7Obyc6OIIhqxQc/nJF6rBK+XGP5soNv2rros0VpJp35TdG0KmVMwcE9RZPepyJUyguYZzZNZY+Rhml/jN77CxRoXddmAsRTXWI8VDjNU1i/AyXuewUS5H/93LjOzLYY461D/RXKcP3e/IF0VgLcmd8Nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=imPo2XSatQDeUxNeCGD+wUPJK8UqJOt8AICUEa7wLxI=; b=VwJD9FHh3ahwMDnFaAX8O+PBUNGtTFJONXWwO6KeIf8s2hT0+/jjicu0zOvwalbqURzCww8nZa6d9qXjipQzgK++/1Vl8gjzQ8JIIu1mhS+4QdbKTT+fJHnq7rctNcc2PKJgKvXfniXwrwnmP7PQX4Vinl4f3Ay84LIz/agUcvrWI5FVxY00K3wnK84Ym4yZdWdeJlAiOj9flWDeEGs0STjqxYPiHapRdxeBzL2K2AGVrb8vTf2WTTpUl9Ggddac6QxhPTjYtzzp1YbLexz80LHtFRxyuLvISSHcRekTNSAaWvHFzT4J6r0KzREqMaZRxrH/t3lBvky8p7hKjKTbvg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB8226.namprd11.prod.outlook.com (2603:10b6:8:182::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Wed, 5 Nov 2025 15:12:52 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:52 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 24/28] drm/xe/pf: Enable SR-IOV VF migration Date: Wed, 5 Nov 2025 16:10:22 +0100 Message-ID: <20251105151027.540712-25-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0495.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:7e::16) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB8226:EE_ X-MS-Office365-Filtering-Correlation-Id: e003879d-db1e-420b-c356-08de1c7dca19 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WHJtM3BVOGhrczA4c2F5Rm5sZFZBUFJiNXZGRjE2YTh3VW9yeUpUVDJxOWpC?= =?utf-8?B?ZTRQek5abkxvUnQ2ZUVKd1B3U3FySTU1UDhEVkw0bE1IOUNjWkpRblpqMXUz?= =?utf-8?B?cjZQMnBaYVJXOTE0UFRNNTV4RE1RWjdtMTVtRVVRUTRWZVJ1T3VtMzVtTWFQ?= =?utf-8?B?RFVpTG9PbFdmWlNaWERXamRuL3gvc1I2ZlJwMVJmVnFXNWxZaHkwN05OeUE4?= =?utf-8?B?bTFvUzhFbktSVUhPT2xYT3VUblVwNGU2YnZVQkNhTDg2Zy9Nd0VvNEhOcHBB?= =?utf-8?B?UXBkL0h6VlVyT2VSSzdBbkY5UXVoaW1ObnBLdzhPS0pTdjJSeXJ3ZUVnc2Z4?= =?utf-8?B?QVU5ME4vczlqWjhVclBxbExOWlQzTjJSZUUwMVA5WFhkdEJ6ZExoVGU3MzZN?= =?utf-8?B?YXVvK0ZWanM2aE0zemhjNFhZL3NNd2wvNElsWlY5ci9IS1lVYTMxZGI3V1pF?= =?utf-8?B?emlVZTRtTUhnb0M1WnM3V1djbk5Cb25HeVYzY3Vxc3B2N29kWUw4ZnR5Zm9V?= =?utf-8?B?d0owT2VaSmVPNmJOamQxTTJ4S2hNM0xyK3JUME5lWTU5THp4ZkJJNVQwNm9Z?= =?utf-8?B?VGk0OG1VUkhnRWpSNHZ2ZitIdlZnenNkQ2dreW1TSEpxeWV4eHJFRCtnTkZq?= =?utf-8?B?NGRSMDE0VnZBOVFTWkJpWVdFbUg4Ni9CK2RnZ2dFbTBpb2daNWF1YzFHZkgr?= =?utf-8?B?YWZLRnIwYURCZzM2eWQzVjI5YmFzSHZIc0J1WU1BQk9IcGlTY2dYRmxmbFB1?= =?utf-8?B?eWE3aHg1d0srVkM5eG9udVkrZ3RHdXFPTFIxclJYQ3pKZHhIeit3aisrenFa?= =?utf-8?B?eG12b1k1V05kQXVmcnhjenZxOFA0eERWU284Z0xDcjBkM2VmMTYzZWlySU9H?= =?utf-8?B?YW1RUlpMT2ttY1NzMVV1V0R2Z1Z6L3ZPbFk3Y2xaajRpRTNCRWIxRmJ2TTJK?= =?utf-8?B?VW14cEFTZ1VXSTJGeC9nd080WDhLMXRwZUhjcDJYdEEwR1U3VnlVWWVoNnVt?= =?utf-8?B?R2R2Yk5ld0xNYnJzalBCaEU2dlRpb2lwTVY5RzlFMEdISW5KeWVhQkFCdy84?= =?utf-8?B?N3lITHFhbjZMdG44WTJlNXErSHRoUDlwWGN0WldvdUl6Smk5TnFUYjBOUzl2?= =?utf-8?B?bUVvV20reDMrUVhmajdtcm90eWRUd1ZFRWQ2LytrODh5MzNVZW9KZFdXT0lH?= =?utf-8?B?cjE5UVhyckZ6NWxTTHMwUFRjNjg0NjdZN1g2Z3dNY0FmdWhIS2t3aVRPQjlB?= =?utf-8?B?V1I5ODFxMUxzZENJdFE2ZUVVM3pWVlhWZjVWUm1QQlZPVFRtZzIwVXBNY1Ja?= =?utf-8?B?eGJ1S3ZxSHpML2FmUjNmcWZsT1o5WXRpN2Z2VWUrU0xqKytaRXhsVWh3OXUr?= =?utf-8?B?dXUrU1EvSGxZdmtRN0liWEFNZE1BOEUyQXM5NFpWbHpZL1RjN1JsNFMybFdh?= =?utf-8?B?SGI1UjVyUHl0RkhZRmU4SWFRN0tuN25wdkhHTjFGVk5OdUZDSGMyQVVDdGtW?= =?utf-8?B?S1dMb2VrcWtJM2s0Y2V5WVhLN2oySWpFS01OOG8za1Jnc2o4Z2R0OGx1Z1h1?= =?utf-8?B?ckZ3RGFLVC81eC96MmlOU2d6UUppY0VHRFZJVlEzOHJENVBsSzZvSks5aHVy?= =?utf-8?B?MUJHRG1pRmlrZWo3WjQwYmRVK0drSnBDSWF0TytqWUQxYjIvaTNlakZjVjNZ?= =?utf-8?B?Mmx5ZEFIVVY2VmFLNG1oMkYraTJpUVk0Y2lGUjVLTk94ZmZZU09QdGI4QU5M?= =?utf-8?B?eVZkeEhnWmVmZldZTVhveWRxZXVKdGdLN2piT2NqSStyWEZtOUxvTWhkOHB6?= =?utf-8?B?TXVCT3NBdHBxa0QxYzVyWmxoUmp0OVRXRWNtdFhvT1ZDd3lndjJoL2lsaXl0?= =?utf-8?B?bjZHOFY4R294Rytsbzk2bnJEemw4VU1sWU9RdXp1MXl0Vk5FK0ljU1ZHcXNO?= =?utf-8?B?czEzSXVYRjRYRk8rVW9TcCtWOWFOVUlXcTF3c29GUzlJQjJhWGtnUGJ6dEZD?= =?utf-8?Q?Nsn5UjFCyK+K9R1R991WK2Krog35qY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NSswRGlTTm1SMmJQdlJWK2FXSEtFdDZmb0w2SnNUMGdYUlY2TiszQWdPQ1ZK?= =?utf-8?B?RnRpMm0raVRqS0RManBrMzdYeFVzTGZoc296SUFMa0ZTYlZkdHhPdmY2bFJE?= =?utf-8?B?ZTVlOVZxVXNUV3Q2VC92V1h0TTJyUTdLSG1vU2FKdFo2ZGYxSE9YeUFTRVp6?= =?utf-8?B?bS92dE45THVNSzZDb0RYR2gxNTdIT2VpRGxGRzl1aU9GWDRtQXJoU1BqZFBS?= =?utf-8?B?V3UwNDEvdk1nZU1tMnNPTmdndURTa3JHdTAwTUM4UjRSdWRsRTNqNVJtWFNG?= =?utf-8?B?WTlEMnp1ZTd6bFNacHQ1b2J1U0MwZXJUMWRleXRFdHRxRnQvcEc2U0JwNmtF?= =?utf-8?B?TkhDUlZncG9YcysxRkZCTlI4YjB0TktuSGthOTlGdmpKTlFpMnFYZ2N1aFpI?= =?utf-8?B?T0NXSjJWSmMvQVk4VTdMMmZyRzN1VTRTanZ1WXl1Y1g3VFBXVmpLaVdPbmdY?= =?utf-8?B?M0VJOVhEMS9RRnJLYWVzV0poVnFtZkxORStUS2ZiSzNEQnB6ZFBxOHNzMTg3?= =?utf-8?B?enIyRHdLNUJndE95bXFtanRQZFhUamtVTUJZcnNzRlNrMHh3U2xPVGFQbnhD?= =?utf-8?B?Wk9Da3VJVzFJeG96VHppSmVWR3ZQbDhod2J5WXJUYzk1NzNKRytRcXFHTmQx?= =?utf-8?B?Q1VLbVFFNWJRandKbU85Tk9seWphNW5XblR2a1VWM2x5UjhTcjNhd3hKMUZM?= =?utf-8?B?WWVhMUhNbk1ORldCU012bUJQWUxZN1ppbmp3eW0yLzVZRTgzR3gxNlhRTGk1?= =?utf-8?B?NjBMcjJmdmtxbFBmaG05V1JodHlEeWRYa3FhR1R6WUxWZ0pYcE0rZCtoNXZM?= =?utf-8?B?Si95NHR4d3BKUDhOZk9XK1Y3M0ZCY011bXQ0VTZuSXdaZGhSQU5GUTQxNmJM?= =?utf-8?B?T1JVSkFMQytsVzZCOEJTRlFjZTNBN1pCWEJoQkNyTGt0SHRTbnc5YitKRUk0?= =?utf-8?B?bmJnTmNMYWZDT215WDJMb3pNKzcwT3ZxcXFGbkFlNDJvdW1XOFZOLy9sbUVs?= =?utf-8?B?Mm5haGFTT1dJMXFaV3BXeGxuVTZKLzJaWGVpOXlhZlVoREhvaVZTRTFibGJD?= =?utf-8?B?MG0vUVdsY0tMWGdpbUw1VXRabW1sOUM0dTdYeWtLUDdFaHY4a2VoMzF0YnJI?= =?utf-8?B?YTl0ZDVjSVQvRlZmdVBXU1A5Zzc0ZHM2STVybzB1RFZ6amtEeE45NWF0UjVm?= =?utf-8?B?SE0zN2JHdC85N0Z1ejR0T1cwMzJiemI2Wmt4Zng2WjRrMk0wN2J6dk1GU3M3?= =?utf-8?B?Wk5MNEI1WVJSNG1JZGUxZXdIS3ZMamlUWVlxQ1dkd0lkRktoejl2Q0o4Vk81?= =?utf-8?B?cjRQaTNhbEluNnp1ekFCT0loNVFhNlJ5aHdXeUp6eWhmajZDN01YSFNndUR2?= =?utf-8?B?T05uWFdzRG05ZmIvY3p5MENMNld5bWZrcTdnRnJHbkhjVC90SFEvZ3dBVXFo?= =?utf-8?B?bEVDdWV1blJ4eVZjN1RMdDJFMUpUamFLUGhhWDNzSUpxT1FYa2FSVnBlZlhP?= =?utf-8?B?UWFnYXlQc0NtWjEwOUR1dnFzY2NiNSs5NmJlbTUyem84ODkxV2FmcVpWQkRS?= =?utf-8?B?V2RScEZ4U2JBOWlCVGJhTy96V1NuQy9sVStoZEJlTDZNWEpQWlhpNXoyWUNI?= =?utf-8?B?bDY1YWtDSk1Pem5ieGVRYnlTejBuOXR1RXBPeFgvb3NYOWRMSmRnT2dBTVU5?= =?utf-8?B?R2Uwb1dzZEtRTlpJTlRsY05mdUtNR1crWE04bDhqRjBHOGd3TElUSk5pbkJs?= =?utf-8?B?ak5qNy9OVTY0aXdRMUd5bTR5bW1CN1p4bEkvbHQwOWM1YXp3R3phYUFQaHF3?= =?utf-8?B?czVHb01vNDFNTFZDcWpkbE90QzRiMnRYNUdnRU5rcUx4OGV6V2pHazhjS1or?= =?utf-8?B?dlNUWE9LaHlpa1gwMld4Mmk4b2g1bFZiQ3ZqK2NBN0t1SkNwai8vUkNQNzIy?= =?utf-8?B?czU4MkUzS3huQytsWjdpWko2M1p3OEJYbjJZcnhhUU5wQndzTkhrd2pHcERk?= =?utf-8?B?UDJzdE9ZNHBJVW9mcEx0amd2REtyTUl6SE1jeHVJUXBoamVhcTBQNmMybUp3?= =?utf-8?B?Sy9CQ0dwYVduOW4wOFVZQUdKVVJLS2orWGhvamJpd0ErVGtIL2t0QVNhRTJE?= =?utf-8?B?REYvVFVZOHFjWWQ3aVNOOW1aTUdYVTdobVFpVUQxVVQ0Q3dRYVBkNG15UmVj?= =?utf-8?B?d0E9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: e003879d-db1e-420b-c356-08de1c7dca19 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:52.2101 (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: jHXDTcX8bcb3O/owga4vVbdTtXZn2lopulqBRU5aEIxAIUfX1TKBcmYtkYxN2KtfmjacjaqMDOkdODu/+g7NmKQbK6OWKLNKPZ6M5WQYjTg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8226 X-OriginatorOrg: intel.com All of the necessary building blocks are now in place to support SR-IOV VF migration. Enable the feature without the need to pass feature enabling debug flags for those platforms and rely on .has_memirq presence instead (like with VF resource fixup). Signed-off-by: Micha=C5=82 Winiarski --- drivers/gpu/drm/xe/xe_sriov_pf_migration.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c b/drivers/gpu/drm/x= e/xe_sriov_pf_migration.c index 30bda27b0b2ab..cba7d4b8cf633 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf_migration.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf_migration.c @@ -50,8 +50,10 @@ bool xe_sriov_pf_migration_supported(struct xe_device *x= e) =20 static bool pf_check_migration_support(struct xe_device *xe) { - /* XXX: for now this is for feature enabling only */ - return IS_ENABLED(CONFIG_DRM_XE_DEBUG); + if (xe_device_has_memirq(xe)) + return true; + + return false; } =20 static void pf_migration_cleanup(void *arg) --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC0903431E4; Wed, 5 Nov 2025 15:13:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.9 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355585; cv=fail; b=C5h5IWp8Noz22WLcAxB0hhslgnB1ECK46IKJCRmOrXR2Vl+xWM8/Dr/wxiMiMZwLVdZWv3HTReCG9KP3axKpK8PEBT0613kEDgFycKfVSLr7vzuNjNkV6+C+7hWVXONxjWLyRcOguyzAcAnEDKKD22AyYAPTsiXAII2d5fmHcbU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355585; c=relaxed/simple; bh=3VJGsLpH04F4Dv5t/c7lEFVmPbn2ILRURNqStF2A7eU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=YLUXJRvVYNXCTFJ5ODePzy9ephJ02QMmzJcsvER4lizNB6UZ+qEWaf2fbECYU+jMkzWE3e7+y0bbkbvKdxr/JMWMU8aClwRXMn6BbWjhFSroSLq8nwoYYJ81oSj29FYnH4jQcXoxbnCDZbyGXyzi8X5id19qKlFKSLne7RiZylM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=F/v8cEbF; arc=fail smtp.client-ip=198.175.65.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="F/v8cEbF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355584; x=1793891584; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=3VJGsLpH04F4Dv5t/c7lEFVmPbn2ILRURNqStF2A7eU=; b=F/v8cEbFECWKhghWX6Xz04WMDS4ojU7rS6um2XlHQoz+DXJ0DkFJc8Eg 9qfSxHhVOx40rGlZngKyMA5lpDPiGmv4KULzElHDCYyHswQ4c31TuWbr7 oht8Br3Q4FxrrGd5NML3MTnqVu+DKHeVra8cNlA1SSR/TW7olNX4e9ksx RIYiZrtcNRFCStt1KjrBKRtr8rXX9CGIZpEkrkwsBGWa6S7zLyKpYhxaR JXtt8AOLv+umo0oguBxeYReHUvB9iObK+M0yfQPer25+1mmfJYpJw6DyH DUk3bdgMtJ7kEbkNyeNHAbIDVfmmrGYodzZ4nnVX1a8IpXtTgrm3LHawu A==; X-CSE-ConnectionGUID: A25iNdoFSJepoLvdmDUY7w== X-CSE-MsgGUID: JfT7knMsRGSOXbB5d3MW2Q== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="87100568" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="87100568" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:13:03 -0800 X-CSE-ConnectionGUID: iNNah17aRPWDoMd0+XaFJw== X-CSE-MsgGUID: AAGaapgPQh6JOm2So2rxlQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="186766672" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:13:03 -0800 Received: from FMSMSX903.amr.corp.intel.com (10.18.126.92) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:13:02 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:13:02 -0800 Received: from BL0PR03CU003.outbound.protection.outlook.com (52.101.53.23) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:13:02 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tPhj7dwtc8v8NZXo+tHczHoI21fLXGP9u7X4TE/x/S9/sZsC165nsZ2T3Kh2XH4enb+zQl9J9mgIQgWdkJBjvGO6l7Ec0bAr1A0syWuh9uh5E3q5Nt1702Cj0emLcWHSRqecHMSpDaDsEuykh28dxN2JSUykOiEC0a4FJfyW2Lx6DUR1dXDZETlVNx2YhEgQzW7NnBnj7WEWJ0ocWyq42G32VfbzBhuQanxsPJurS6Fy/ClSMWSeleKKMaRyjSYIPbn4B0oWuiLKp1vikkBAZMNMdDiCZl0+ILEutHRicGQuxxIsRlSwPqBlX4lvsG6h6CDtDuex2NCOcs25PN3KRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=bdzVYwU7smMK1J9zLyGDbgT+K2AGDTDNRJpnHfQTqCg=; b=gIzXi2hRaubNB12/6X9zsrxFeZKOnOwEBLDAq48cak+1QYvq+Ojqo04p6b9zeFFGA/uM78lx2Axruv6WE4p0x9yNcSa+wL/bYAfvhZWBddaP8Z7sn9m4kXv8QYgvcVJJJauLShnfNm6bCxbneaAZbGkPbKUAoefrXVMt6A/CUYU1avw+FDLCJxEJ+HvgWS36mPdk5s+UfQtstGj3FnM5wuVh/VBYUZWEwqzWpAM07OKz6uTcHLjTIOhMXn71zCzHpYlKlq5ff5GledHEfYS0Dwo5GbTves/CGdJN5xZRg6PrfshQUNNPmH80CbLJvQCv9KSdzZAv4l/xJU9OzBXwYg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH8PR11MB8038.namprd11.prod.outlook.com (2603:10b6:510:25e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Wed, 5 Nov 2025 15:12:58 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:12:57 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 25/28] drm/xe/pci: Introduce a helper to allow VF access to PF xe_device Date: Wed, 5 Nov 2025 16:10:23 +0100 Message-ID: <20251105151027.540712-26-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1P194CA0032.EURP194.PROD.OUTLOOK.COM (2603:10a6:803:3c::21) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH8PR11MB8038:EE_ X-MS-Office365-Filtering-Correlation-Id: 2cb22982-edff-48f4-f600-08de1c7dcd84 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?a0tNY3dncVVQZ2REUzY1SWZsWnRoZ1daWXM3Q0hWNDJobVJ5SlUwbmdVcVh0?= =?utf-8?B?VTJZUHl3eHZsTE5Yb2RnZUYwYmU2L0VUaWpOWHh1RGEvaEdDY05FeGtpMjRv?= =?utf-8?B?MUlORGU2eU81cHFLZytwcDl6MjR5MFk0eWxlaGszME9NZzN4cTZZUUY1TEpt?= =?utf-8?B?Mkp5b2FCNHNwVUF5b2lyK2NrYk9HV0huamJpN0tHWUhPbW1MdlJmTTQyOURO?= =?utf-8?B?cE9DN2ljYUJZeURPT3lpSFFnZEY4OHMwZENGZFROOFJ5a2hQR3JjWjJCVE9o?= =?utf-8?B?LytQdWh0YVd4WUNkNFIzMnNjcWlxTkI5ZFptSk1BcWFqSWd4aDVtcC82MTNH?= =?utf-8?B?M2JBY1hIUDVodEZlMm1JUmpGTkhjallaTHBCQnVxdjZja3Y1c1BqOW5xZC9B?= =?utf-8?B?a29XUXhPUUhXcHJMbTJRNlUzMFo4Q21TRXN1NkdvYWtrUHVrZVVrSUxLcEtF?= =?utf-8?B?bnlEL2lGTlU1RHdUZkdHWFE5Vkp2V2Z4bHhHWk9Da3NZUjFvd1ZpaXIwTzZS?= =?utf-8?B?SitjWktsWTkrNHRYbGF4QWZxVnpRLzZ1eG1rQkVsOTZxY0FpK2czenUyemdX?= =?utf-8?B?cklEdU1NN3hJWS90SzNjaFdwSUZZSjFIWGMwVnNyZHQ3ekpmdkw3TEJiVkhM?= =?utf-8?B?N09NQXJSaTNzRWpZVGxYSnBaN1h0TGx1UE52Z2NWWWQ3V0t1ZXhVQ0dnTXVp?= =?utf-8?B?cm1EcFJMREkrSUovR2pCVWFoNmswMFZZc2NncVEvY1lUbWpFdm9ycWVpa1hm?= =?utf-8?B?TkV2citFeFl4U1BPWXYwRzZFOFpCc1VhWW9IdHE0ZWpwNkZDeGlPbFJUaHow?= =?utf-8?B?d2h0YlBqR2I0Tjd4OGNQUU9XcVRnWGF6Uzh4bk5FeHBMMWlFYVRqQUQ4N1d3?= =?utf-8?B?M3Azb0dRZEwwRTl4c1RGOGoyRGpGMHN0aS8ySkVaZDVFZU5rd1dYaG1aeWJO?= =?utf-8?B?Q1oxMVd2VUU4TmNYYWxnS0x4cXlhMkZnak5RaVByeHI4MHRteHl5enEyeit5?= =?utf-8?B?d0pMdittaENPWWdDb3FraGJpcDN0UFZaWCtwd0hzUHdXUGR5cEZ6RjBzRGF6?= =?utf-8?B?dk5yOXVza1ZFeStCM0QvcEo5QjZvTjhtOFZqQ2JYNzV3Y3NaK2VwdXFvT0Y1?= =?utf-8?B?Mlk3UXYrak01ZjFzL1ZvZFdRbDJYbURHaFBjQ2RNSXV1MGV6K2s3UHNWSUZJ?= =?utf-8?B?ckZsOURCVHJGQjh2alpKNEp4ZDNzOS85TFQ3U1Y2TGpIbGU0bkRTT2NEa0ti?= =?utf-8?B?T0tqRy95bVNsekJSOCs3dEV2S1JEQUNzRG9pN2FoTE43NkVIM0p1eDNlR1ll?= =?utf-8?B?WEswUytQSzNNUlNVREw3QzBxUEVnR2w5RFVrMmVNZDhjeFVPbFlRZzluMU5y?= =?utf-8?B?YzlYa3ppb3AyOU4zYXU2eTN5cUFBOExqMmk1bkJSNzNwL29zYnUvNlFiV0po?= =?utf-8?B?cEQxdXJPOE5IVXQvTmpWTWVVSzF4SUVaSit1YzJGNy9jUHNFS2MvNW84YVB5?= =?utf-8?B?aTg4UXVsOHBwak9OdzFkZ3NPYXduSnNHMDBPSGNXRk1EMWtIeFFVYS9DZENM?= =?utf-8?B?VitaaTZxMHBteTZRRnJERWtYNmJjSjlRWkdiL3JLYmxWUWNyVXhxZHFQOXpO?= =?utf-8?B?QTZmdW5xZjI0bzhib2NsQW1PMndtajFmUjhZSmlibDFhUzBRbmxRdHh3OGZn?= =?utf-8?B?TlZYZUhGS1BjTzZpZzNWZUpPY3dnR1dpbWhpd1Fkd2dhcHRFcDNra0ppSmNZ?= =?utf-8?B?WHlPMnMrZFFqbGtFbGRmcGQvWUUwYlJYUkNlWExpVXk3Uzh3bkx4UDhVeGJJ?= =?utf-8?B?SWsvTnM0RWJyejJCblNvMFM3VDJDK3ZuTk1rMXE0Vy85VGNnRGRkME9DQmtL?= =?utf-8?B?T29wWnBhSzd0R2dROUtBS3JHWjVGRGxwZTYvZlNvWndNMWw3dzB3QnllTndt?= =?utf-8?B?MTdEU0V6TWxiNzZzWVFaM1YxUTBZRWErNlFyUkI1VXE3bHJPVGZSUEdUUXdH?= =?utf-8?Q?wNjL3YOe9WHHGCQxqBBIW9oQm37BuM=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SVFSanZYcDAvRGVYeHVqT3BCSEpVcGJlbko1YWQ4aUJ1V2MyYVBlRDFYZ29r?= =?utf-8?B?Z2RWeW5YYUZwbUhLRjFQMWErSGVwK0grbE5hVXVpK3pISS9abVVsZ2lOaE9F?= =?utf-8?B?VlY5b2dZZTY3RmFPK1FrUlZrSTdKSTg5dFdXT1VxUVZSU0RYOTVIRTdLU1po?= =?utf-8?B?dk9VRWRLeU1tT2wvK1NPb0cvMTFaZUN4NlJEVHJta2hnZDdQdElpY2lSTUdj?= =?utf-8?B?VFpocDhPN1pYK2Z2b0NiNXV3cjJDcTV0eWpXdWM2WGVhOWk0UytETlpaSUNp?= =?utf-8?B?RTZCMmx5NlJQNnhBSEcyZEVGMU5IZy9rQkpFTlZhUEFWbDZyRjljeHdLNjln?= =?utf-8?B?NGdHR1BwejR1WU1TNFBzV2J0c2VOamRYekgvK2FLKytPZWdDUUtqaGZMTTZz?= =?utf-8?B?bnlIWjMyQ2JhaVZ0WGZwTVNEaW1GRUhuYk5qRTF1bkNpeHhpQWw0bThQY2NL?= =?utf-8?B?TWpSVW54Sm0xR0Z2d0pLNjZ1VXFaN2VqbGJZZlVFbjFlYVRJVWJId0IxOGlS?= =?utf-8?B?enBvbWdHSjlLeEVBQU5VMW5vTFhyd0tkVlVBcXFkUzZjNUhHNE1pQXNoSUww?= =?utf-8?B?ZTdwTFlpbFp6dWFHRmlDYmx1VGdQRFp2WjgrL1hkMUdrQ2R4M283Rit4UytM?= =?utf-8?B?a25zb2c5MGZuYTdKWjEyU25STUxlcWhhSWp2VTk1WWRReGpaZU1xOE1nUUdO?= =?utf-8?B?L1gvL3JWK3BQa1A5Q0pydEl3dnEvVHZzY1JGZE9Zc2FncDJSZWJKWkRHcUI0?= =?utf-8?B?SGROMForRGVFbjRKUVhHd1lpaU13eitRZXBUaThhaFljSDdBeUJQUE9TaGJa?= =?utf-8?B?MCtHTUlySW43cWMvR0dFRjFjMlc1VEtoTmNZb0thSFRJZGp6MjJkRVVuemlo?= =?utf-8?B?ekQvYlFXdFp0RlFPaEc3aVRwcU1tR21FdXgrRUhYbFE2VHExaWtId1RuYkVs?= =?utf-8?B?VkR3TE1uaFJjLzJzRGRuK1d2TWtQaXFJb0ZZVmROUmRtZGJuSnhRWXUvVXNP?= =?utf-8?B?OUZmbWNxN3FTZHB3bTllZUFmQzZSaTVMSDZqcDBWZnc3dkFhaEt1WFFGTkFO?= =?utf-8?B?QU5mZGh1VGNRTE4vNkRHNzFUNlNBMWVxcEo3YjMzbGllbmxob3JiUlhmbm5I?= =?utf-8?B?Q1k0bElGTG9vbmlYTSt1Y3JoKzAva2EwVlRZMndXUVFPdEtjYjFYbEUwZkll?= =?utf-8?B?c0ZBTzA2Slp6cG1EbldLWUszTVZRTVorQ2o4SVZBdEM2UTBwcmtqczZUTGNU?= =?utf-8?B?Q1FkeWtvRURIUGZKblBEUVJXMlpVMjFLenljdEF4aEZnWkJlakVWbWIyRkQ4?= =?utf-8?B?Q0g5bGl6WnB2dWRYbDNHTTZyRXM0VktkdFZ0Z0E3a1cwdHc2SGJ0UlBrV0lB?= =?utf-8?B?MHB5K0pyR29iTTJ4Tll0SkkwRk9hYXpkWlQ3NHdqVEwyKy9RQmpWeGprQUM0?= =?utf-8?B?ejhHQnlJcmtxdmd1MXk1SU9BcGhKYWJ5eGxUQWFPS1RGalc2NUw4d1FHY09I?= =?utf-8?B?LzFoUjJENi81dGxOaThsbFJlNVBHdlZRaityaTBnTEFrYVJ3TlVURmNZOERm?= =?utf-8?B?WTZVRW0ydlZIYnN6b0h6VEZsclNNT3U0RTRFNmNwWkJNTStLNFltVTQ0Rm1p?= =?utf-8?B?TFo3YVJsQzhiUWJiRXVNZitDU2FlQzVVcU9CdmNXODBIQS9oZ2xubzcxRDZx?= =?utf-8?B?RGhRazVvbXA2ZVF1a1oxSFlsSEFyamg5UHlmZGVJbW9wL3k5NlR3bVVVTkdD?= =?utf-8?B?L1JVT3FyREFJc0dFMWh3UU5WZzRHTndlZmNWTHc2K05pRnVjajVFdFRieWpk?= =?utf-8?B?SDFOY04zd0wwaGJIaytuUnRhdzhtRFVQQVhERWlwSjMxVzA4VWhOZ2ljTHp1?= =?utf-8?B?ZGhUa1lqcTg3bXU0aVNNMXBGVS9sL1pwUUNocXBncmxyTmxyQ1dkSUFhOFp3?= =?utf-8?B?cTV0MEJ0cGxLeVZLNVZMM1hHV0hvclZpQWFQaUZlMUpZNzFPa0loaUx3TGlM?= =?utf-8?B?NTF2bHEyUHZXZnhKMXNnTnM3WllRblJXd3Eza3pmRTh6b1hXQ0pDdTB2NG95?= =?utf-8?B?UHNJS09TdkRtVGJ2cnNrYkYwUHF5dnJqUWJ4ZHd4WE0wUFl4LzZLeG5vL1dN?= =?utf-8?B?Z1dRUTJVTjNuM3hubVZhT09XSlEwam9kU2dWYnc0OTVuNmtlSldjM2VYVDAx?= =?utf-8?B?Z1E9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 2cb22982-edff-48f4-f600-08de1c7dcd84 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:12:57.9149 (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: iWVnNLYnBDnHQM+6IO+rK0xmn3p4Nt34Dr8pSgjofcJtqSLi9RUDjXjl+tmiAVzFV3BcjDDvtnBmCgw3sX5DDamyC5KR+JzPAhuAMhI1jOw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB8038 X-OriginatorOrg: intel.com In certain scenarios (such as VF migration), VF driver needs to interact with PF driver. Add a helper to allow VF driver access to PF xe_device. Signed-off-by: Micha=C5=82 Winiarski --- drivers/gpu/drm/xe/xe_pci.c | 17 +++++++++++++++++ drivers/gpu/drm/xe/xe_pci.h | 3 +++ 2 files changed, 20 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c index 1959de3f7a27c..8b2483d1cbea0 100644 --- a/drivers/gpu/drm/xe/xe_pci.c +++ b/drivers/gpu/drm/xe/xe_pci.c @@ -1224,6 +1224,23 @@ static struct pci_driver xe_pci_driver =3D { #endif }; =20 +/** + * xe_pci_get_pf() - Get PF &xe_device. + * @pdev: the VF &pci_dev device + * + * Return: pointer to PF &xe_device, NULL otherwise. + */ +struct xe_device *xe_pci_get_pf(struct pci_dev *pdev) +{ + struct drm_device *drm; + + drm =3D pci_iov_get_pf_drvdata(pdev, &xe_pci_driver); + if (IS_ERR(drm)) + return NULL; + + return to_xe_device(drm); +} + int xe_register_pci_driver(void) { return pci_register_driver(&xe_pci_driver); diff --git a/drivers/gpu/drm/xe/xe_pci.h b/drivers/gpu/drm/xe/xe_pci.h index 611c1209b14cc..e97800d5c9dc3 100644 --- a/drivers/gpu/drm/xe/xe_pci.h +++ b/drivers/gpu/drm/xe/xe_pci.h @@ -6,6 +6,9 @@ #ifndef _XE_PCI_H_ #define _XE_PCI_H_ =20 +struct pci_dev; + +struct xe_device *xe_pci_get_pf(struct pci_dev *pdev); int xe_register_pci_driver(void); void xe_unregister_pci_driver(void); =20 --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 310C9343D7C; Wed, 5 Nov 2025 15:13:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.9 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355589; cv=fail; b=kYIllhMlqS8LpJrmzHkM+GQXxjHD4txvvPg24jzpqIf2LqDE6+1C9xgjlff37Vw86SCNUFwEQK+ognPOXsrMBnT+lUSiH+lX4xoiEOvKHrkMKcZMGWsU9958MuLO/Rg1xMMuPGuQsiV3LtLHut1qX3ZoGqknHo3GMfI587Rs1nQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355589; c=relaxed/simple; bh=asdtQj/+hV2mr/yssYTzEhfVXHR74n/WMiOIztsrQvw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TfJZ3UmrZVMN+ZmARVXahez3p7h+r8pkZ060SUWS78hN9NEG/mjdJqu/Q5u30QGezxyrnkvGuPm1kyFMCAPY8ogq1MxtNNumkF1390ZMNGGioL2lzZECYM5vRUbztbwR8QBb4tZEnBiw2pc2U3wzh7FejAwsgZn6+aILVSn6EdE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=esVvuRuz; arc=fail smtp.client-ip=198.175.65.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="esVvuRuz" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355587; x=1793891587; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=asdtQj/+hV2mr/yssYTzEhfVXHR74n/WMiOIztsrQvw=; b=esVvuRuzlSKqLIDsPs7d+lcDTDYH7dURO7UkjnTKUA389I/wc4pdgBpq QmTonGhuey/d92KE7o71hRIPVJY4aqCw7CWyGnE2qC+VW9M8FbpAUwhrM GFRBaWcBeN23hLyBOJv7WGHq37dbJG99Sq6pshFIV/1X2MNRBodzoPUhf UlwR4y7U7j3PehzBHDLxYSuRENN133076GkkG1HYqzpHSslCDAa19M1H1 N4hPXzXKtrvNLGFewHt6LA895nSysqZLDHi7JsnUr12PAFqadzWVVC/IJ SJMHqriKxdwIRn9uzADY0WUyRL2J7B0A7VVlqZLv1e/6af7v/gNW6G6XC Q==; X-CSE-ConnectionGUID: KwssX68jTYueBthh3JueCw== X-CSE-MsgGUID: P5do6xbBT8+XY44Ds5ggWg== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="87100576" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="87100576" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:13:07 -0800 X-CSE-ConnectionGUID: sBbGUgqtTUW+uZDZSbdMDg== X-CSE-MsgGUID: c+Pu6/kCTTG3OULzMJjeMA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="186766682" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:13:07 -0800 Received: from FMSMSX903.amr.corp.intel.com (10.18.126.92) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:13:06 -0800 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:13:06 -0800 Received: from BL0PR03CU003.outbound.protection.outlook.com (52.101.53.16) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:13:06 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JXjYmk0UNTKvnczLEhPq5zl1ElXBJB2X57ebnV49VxImBCMPP3bgmkWEKO3jAMYZyuuLbZiR1WquLhSPfXeg4eX5I0i6BdtrG7lVvuFo6mmMaeTQyw5sKM18CP/BSp00ODuftpP2iJX+anZYr4S9O4+av+g7KFk0woKRnLUPK5SMEMzCOd9IjyEicja4BVo4vpvbunq0vWiCSwJ+Ct3xK/pA0irAHXpPIj2sxvZJBaCZ69XawCzlQRmHuRWraGDRX6nY9kFnMVdRHq6AHwQwp5Mjo4UOvKRmjezSm/jXRjdgH4TnMXfKgLS9AghFYDb0Syj6J07EuofQHSQJmmiCNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=KQzEawINTQ9sdmQbZzsXV93fjTXCxLsOZ3g/3sZIVK8=; b=Q6VTT7vqJCppJ+/c1thQfN7Xa7lucldzNq1bZTClBuJOKVPd3IjJFMdATWgCEBJaRh5wplXIwMlhmbPVgFmmsBcGEbGsDQfjF9/978m7Edk3Spt0k07Ux4PfCO4VpQzpODHgseYT1UPWmPdOsvtouKEEBCzxQ53MJGsPUZBIl/L7P33AkONAw39EIU+Be4fqLO7JnpDqyUqxX5mnnhxcGflpBiYcMCJbUNk1xlZugXYdBXmYrk83LskIY9bCYzEgu4gHv49KvhDlXj59tfynyNNEIH8LA6yQbeXH40fzLp+kRfaSdzpAcEASZZaacaUCpGuSEvriMM0pfmPow30+mg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH8PR11MB8038.namprd11.prod.outlook.com (2603:10b6:510:25e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Wed, 5 Nov 2025 15:13:03 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:13:03 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 26/28] drm/xe/pf: Export helpers for VFIO Date: Wed, 5 Nov 2025 16:10:24 +0100 Message-ID: <20251105151027.540712-27-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0102.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:79::15) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH8PR11MB8038:EE_ X-MS-Office365-Filtering-Correlation-Id: fd278e5b-3363-4da3-1712-08de1c7dd0df X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?KzNCY0FMaUZ4RnRrOTd6b0REeWRXeTJZc3NIQjhvTjRvRzRJeEpHQkN2UUFy?= =?utf-8?B?YzB4bmZ2YnhOSFZmaXF0QW1EL29YUStpMVp2eXM0SmtidDRTbmN0T0tFRWdp?= =?utf-8?B?clY3R3BnMlU1NlczZXBkM0JmMkhaVXZLZHJzT1QrSHV0eUwvWWR0dWVkdjZV?= =?utf-8?B?YVRCRTZNb1VlNk5qcHlST1U1RHFZRU9qc0VTWkNDMlVnaTZ5alczelZhVlVN?= =?utf-8?B?UDVKdWFkdlVTSGx1Ri9NT0VJWndKOGdwbFhIWUJ2bmdOa2lHdlcrT1lQRG01?= =?utf-8?B?L3hZcjZEbjhGaXR0WUcyZ3R2M2RCSzgvUUw4YzMwYlloOTBkMks0M1l3TGYz?= =?utf-8?B?YmM4L2QvOHZ0bkNjNXFmQ0cveHJib2MveGdGM1NzWU5FaE1qc1F5ejlnOFFU?= =?utf-8?B?WEVlR2JqUmMvcDVrYkJsYkx5bVBsR1FKRDNLWUhXanlyUHhkYU9PSTJZUjhi?= =?utf-8?B?Vkk1K2FxYVp0d3FkRkNWcGJ5YTlIbjk2LzdxeHI0eWxoTTU4VkM5NEFkMzN0?= =?utf-8?B?d1dOM1l0QzRYcUcxY0RLeXo2QTJYd2kva3NoblAwNjNTRkZrT1RTMzdBLy9R?= =?utf-8?B?RHJNVEo1NjU2UTlNU3ZtcHBld3FlSldZRjE4QXdsMTBiUFBYaThpZDY2OG01?= =?utf-8?B?UXNJVkQ5M0N4a0NxUVQyeTJGeW4zbGVvSVBrZkhkdXBHQlIrOTdCTFVxN2d1?= =?utf-8?B?N1REWkVzRm9kVDlrRld3MzZRS2tqSTFVcm1EL2tBME83WFRwUzBCRzFVOVJC?= =?utf-8?B?Zm1kNTI5SUNPUFJKcUV6cFZpRTR4OWY0L0lwdDZEV09jME5WY3V1d2Yvbmp6?= =?utf-8?B?bGYwK2V1S0dqR2tKSzhpdURQbUNjSytLd1VBbmdKb096M2t0dTF0R1h3b2dz?= =?utf-8?B?eUZXZVVzVzBFeWFRdzZ1R3VMa3hSOTR2R0VYZmJKQThySjRBNUhaM1hSd2hK?= =?utf-8?B?WXR1aG1YejJjVHNXT3FwclRzQlBydVFqRm9UM09rTVlLMm54SHNrSGNzRVM1?= =?utf-8?B?OUQwZWtwaVNha0lTbFdCWDZ6YnFKY0JSZ0wySXpiV0NYVmF1dDFNNElkWWpp?= =?utf-8?B?TC9jcXRKSlpaeXRwbEpoNmFQc3NXbW1GMS9HZmliM3FtR1VzREJxMVZxUVdL?= =?utf-8?B?bXE3YUtJTjc4aVNxUU9MeGFkbzFoRG5XZDl1clBMZFpDVDFxUjdnSzdEdDZm?= =?utf-8?B?YS9PUUttWkx4cUZaVEVxQWhVaC92QmtqZmRTcXZMQ1Y5d3pCNmlYbjhYd2kz?= =?utf-8?B?Z1NTUitrcGYvWkxNb2lHZkV3aDJtcWxhMkFzN3RZajltQTBOVVBYZ2ZHMmlY?= =?utf-8?B?U0FKaG5vSHFtb3o2MzdDU3lrbWMzbTRQenJJUHdTaTRocFF4SGc3TVhFVW5Z?= =?utf-8?B?b0kzenpWWTJoYkRMTmFFVEUxdE1jMnBUZVl1dGxFM1R3aXhDOUM1RU9XOHQx?= =?utf-8?B?SnJCdmEwRFA3UzlCdlhLNkw4QUJoY2ZVNUtQSEVDdFJSN2pGM3VNb2NzL3RB?= =?utf-8?B?ME01NEI1R3p2aUgvaGQvdlZ0OW1XMTBseERGeTltNHdOcDl4Z244UUZ1SVln?= =?utf-8?B?ZklQZGhYYlVMRTUrNkI2dUNqZFdOcnAwb3BkekZWNW01VGNLek0ydE5PSHBy?= =?utf-8?B?SlQwMVNYdU5XUjhCWUdDVWhJY0RpRURDcGdoZjhqTXFOQlRhbUJGbU9RVE5B?= =?utf-8?B?NmRPb3EwUXM5czRXSXE0V2d3WlpaZzg3c1pPVDVOUnEyc1EwanVoMDFVVVRr?= =?utf-8?B?cDFxWlpUSWdrQVhHMUhWN1J6MmErODJEVjlseXA2SU9lTVdrYVp3QldsekpU?= =?utf-8?B?cFBzQ01oV203TXEzcDEwbmw1UHZxRlYrbDIvbEtMZVI5UjZyRmRJT3oxaXJq?= =?utf-8?B?Q25KU3JGQWlPemJnQ1g3bDNlY2MwMjlZbDFVZ0JFaUZHVGwxUHUwdVBmUCtG?= =?utf-8?B?MUxsN05TNTMxRWJuRENNUEwwUnAxTFErOVBUUUNzUDNXblZHYnRHYWRQMnJK?= =?utf-8?Q?ndgIVf/Lp2FQN45QHWpiWFepKAi828=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RmhFSVhzVGJzMWs0ak1IN0pKejZNdUhJcFMrcHYxME5HNENnSDFYS21kdER6?= =?utf-8?B?MXFkRjZRNjdLZ0NrY20xdUg0ZXhMeXAybFJIRUY3UGVjWlI3WUk1YXdXclZL?= =?utf-8?B?eHdvSjhNNGFHaFZJMHl6MVlJbnd4VWxyMk5ITmo4QlJFNk4zc29MbTVNMC9D?= =?utf-8?B?TW9GazA4ZFhrUnNSZjF0VmozRHAxdHk0YU43RDJ2OHYyWmhGeG1ldElTdXFH?= =?utf-8?B?YkxQUDJZUFRSMGxicDlYR3BDUWk0T1N2TWM1cWdtOEx1RytaaHFPcHRnVW9w?= =?utf-8?B?QUJUNTBCWGhMdFBNWnpuNDZpVkU3d0VPRm1ON21TMWxId296bzN6WkJuZm1m?= =?utf-8?B?d3hTaitockJEbk9pS2s5Y1dmSCtjVHJkQ1NDdTRrWmN3ZDQ0ZGZaZ1RwekdY?= =?utf-8?B?c2lPRGd2OVI3Z3F5WHF3RjBORFRQSDBUYnFtOU5BQkU5T29Ea3NTTnN6cU01?= =?utf-8?B?N1pKMlNzVlJwQmg0NkdoQ2dFVm1xTlZ4aUNZNjE0TXNYY0IwOEN1clJ6ZDM5?= =?utf-8?B?L0x2VlR3b3daT0YvZ3M4ZWdZWG9LMXZQanF0WFpZNDhJTkg1THB3WlV5RlBx?= =?utf-8?B?Rlp0VXRzc09EWC9ucUJYNXMwVDR4R044LzNrOExwdmpYb2lUREplNnJrcnRJ?= =?utf-8?B?WDh1QVloVTZKUE5sSStyNWN4WkdWSE4wQzhnR1J4cVJwVE14V0Rra0Zzajdt?= =?utf-8?B?alJobXl0SmMrYjNoQlNTVkZiZC9QR2V3ajJ2OU9IaXBTcjFVemN0eWhKM1Z0?= =?utf-8?B?bjc1aEdpMituZXZ3aDcyVFVidFhTcWlkYlN2SkJpRENkQWdZSDlLNWNFMU9F?= =?utf-8?B?NFFnNWhBNWZTV2NGbVlTaTBZMXZWeXNENzV6WjlpSWtSMy9DNDE4eGppZlJN?= =?utf-8?B?RTB0Zkk4dlovZXdYR0xSWFl2RzhoZEZaMzI0cjIwZDhSNlJtSGFtb2pyazJV?= =?utf-8?B?OFMvMGZrclhNbENxZE5oS2NTQTFiY0ZkWEFpaHliS1prcXF4cUorR3N1OFlU?= =?utf-8?B?dkFRMlp3dUdUVXBMR3N4WWNBbERGSFJuQXVPZ1pKK0dDRmticnFRZ3Z4clgz?= =?utf-8?B?YWk1Z0lQam5CdTFNSklicVF4Z2NJR1Z3VTJZVndHQ3lNUGROODgxcnYvY0hO?= =?utf-8?B?eTJjWmxiTGJsNHhPdkVQUWZaVTBEZDUwYXhBU3lxMjFDQjljaFhNVjlJbUU1?= =?utf-8?B?cjNzbDNpZjBjbmxkblBvR1JyZU1JMHVBRFY1Mm1BbThEQ3JOekRSbG5XWFNV?= =?utf-8?B?L0pBR3JFTUVuV2tZSGMwT0pXUmNPcktXK1ZMenZ2cjFreGExMC9aY2ZodEJy?= =?utf-8?B?OVhqa0hjdWxIc2RiN1VReFV5bXh4Zm1oQ1lPcW0wVEdvTUc5MFVHZUdrUnRM?= =?utf-8?B?NFQzSW1wSDRqTTJjQk9TbjQzcDVSZHVISkNNQ3J2WlIyQStCNVp1MW5oUUtT?= =?utf-8?B?dGFUcStYVGZoVUhURmpVMlVsYW9FUGJOMzlKMUFGR1ZxdVFFNVhqYkhmYVhy?= =?utf-8?B?QUNVOHVtRDBCd0hIY3ZjZjRtbWdOdno2NFFlbTNuWFI4NU9FNG0vTzQ2Zjha?= =?utf-8?B?VTJZTHlTMHhGK2ZORTU2S0hQSlE1REMvMndybGZubWFRVmowNzBHT09Ka2dp?= =?utf-8?B?Vk9rL09vT2EvOVEyYnRsSmplYk8ybktnM1hmUU0yUURhVm4relRnaHdHanUw?= =?utf-8?B?Y1B6SGVFdmNkb284eVVlS1VkYTFCY29kZUZ2eXRxaVZ4cng3UVFvWmVQTGF0?= =?utf-8?B?NmRPcHZDUmYzeGNMVHppZ2RoQTh0eldvT2tHb1cyc25jbVlaK3VqSkJYL0xs?= =?utf-8?B?UTQzMnVnNzRnN3pCNldGK3VhbG9Hd0cybGZ6THBKWnhpNENYSHV2U2VGOWhR?= =?utf-8?B?emY1Z1NCMzVQUy9kRE1YbklaQ0J5UWlrbWlSUVd5ZUQrMjNILytRL2RLc2Zw?= =?utf-8?B?WE5oZFlqOVhXcjFIWTF1ZitKZU8zL0taUkRjUFpDbGE2ZEZLTmZYT2NrL3I4?= =?utf-8?B?WUFCYmRCN1lic0pNYVFDSy9kQXlvQ1VnMjJDaU50Z1BOeERwWFYvUTF0SEhU?= =?utf-8?B?SE80OHk1b0dJcmhpeFhpZnJodngySzNEWVpxcHdyZHFYdFBtOUo4TWgwRk9j?= =?utf-8?B?QTBpZWwzQXlRTm80UmpmZmc0K1NuY0xMbmJkZzFQb1crUnRpL3FJMDZhNm5H?= =?utf-8?B?bGc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: fd278e5b-3363-4da3-1712-08de1c7dd0df X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:13:03.5349 (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: mgULaGbEwRjWOV9JShGQz1J4BBY+rJ3t4ZrN68aXoDThD+JsKaqwwootU8yaoUEFAfTWDix61NDYsYTSUs+4E3C4gOqOBaSSZj1ZCbSQLHo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB8038 X-OriginatorOrg: intel.com Vendor-specific VFIO driver for Xe will implement VF migration. Export everything that's needed for migration ops. Signed-off-by: Micha=C5=82 Winiarski --- drivers/gpu/drm/xe/Makefile | 2 + drivers/gpu/drm/xe/xe_sriov_vfio.c | 247 +++++++++++++++++++++++++++++ include/drm/intel/xe_sriov_vfio.h | 30 ++++ 3 files changed, 279 insertions(+) create mode 100644 drivers/gpu/drm/xe/xe_sriov_vfio.c create mode 100644 include/drm/intel/xe_sriov_vfio.h diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile index e4b273b025d2a..eef09c44fbde6 100644 --- a/drivers/gpu/drm/xe/Makefile +++ b/drivers/gpu/drm/xe/Makefile @@ -184,6 +184,8 @@ xe-$(CONFIG_PCI_IOV) +=3D \ xe_sriov_pf_sysfs.o \ xe_tile_sriov_pf_debugfs.o =20 +xe-$(CONFIG_XE_VFIO_PCI) +=3D xe_sriov_vfio.o + # include helpers for tests even when XE is built-in ifdef CONFIG_DRM_XE_KUNIT_TEST xe-y +=3D tests/xe_kunit_helpers.o diff --git a/drivers/gpu/drm/xe/xe_sriov_vfio.c b/drivers/gpu/drm/xe/xe_sri= ov_vfio.c new file mode 100644 index 0000000000000..5aed2efbf6502 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_sriov_vfio.c @@ -0,0 +1,247 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright =C2=A9 2025 Intel Corporation + */ + +#include + +#include "xe_assert.h" +#include "xe_pci.h" +#include "xe_pm.h" +#include "xe_sriov_pf_control.h" +#include "xe_sriov_pf_helpers.h" +#include "xe_sriov_pf_migration.h" + +/** + * xe_sriov_vfio_get_pf() - Get PF &xe_device. + * @pdev: the VF &pci_dev device + * + * Return: pointer to PF &xe_device, NULL otherwise. + */ +struct xe_device *xe_sriov_vfio_get_pf(struct pci_dev *pdev) +{ + return xe_pci_get_pf(pdev); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_get_pf, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_migration_supported() - Check if migration is supported. + * @xe: the PF &xe_device + * + * Return: true if migration is supported, false otherwise. + */ +bool xe_sriov_vfio_migration_supported(struct xe_device *xe) +{ + return xe_sriov_pf_migration_supported(xe); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_migration_supported, "xe-vfio-pci"= ); + +/** + * xe_sriov_vfio_wait_flr_done() - Wait for VF FLR completion. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * + * This function will wait until VF FLR is processed by PF on all tiles (or + * until timeout occurs). + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_vfio_wait_flr_done(struct xe_device *xe, unsigned int vfid) +{ + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + xe_assert(xe, !xe_pm_runtime_suspended(xe)); + + return xe_sriov_pf_control_wait_flr(xe, vfid); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_wait_flr_done, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_suspend_device() - Suspend VF. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * + * This function will pause VF on all tiles/GTs. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_vfio_suspend_device(struct xe_device *xe, unsigned int vfid) +{ + xe_assert(xe, !xe_pm_runtime_suspended(xe)); + + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + return xe_sriov_pf_control_pause_vf(xe, vfid); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_suspend_device, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_resume_device() - Resume VF. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * + * This function will resume VF on all tiles. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_vfio_resume_device(struct xe_device *xe, unsigned int vfid) +{ + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + xe_assert(xe, !xe_pm_runtime_suspended(xe)); + + return xe_sriov_pf_control_resume_vf(xe, vfid); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_resume_device, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_stop_copy_enter() - Initiate a VF device migration data s= ave. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_vfio_stop_copy_enter(struct xe_device *xe, unsigned int vfid) +{ + xe_assert(xe, !xe_pm_runtime_suspended(xe)); + + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + return xe_sriov_pf_control_trigger_save_vf(xe, vfid); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_stop_copy_enter, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_stop_copy_exit() - Finish a VF device migration data save. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_vfio_stop_copy_exit(struct xe_device *xe, unsigned int vfid) +{ + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + xe_assert(xe, !xe_pm_runtime_suspended(xe)); + + return xe_sriov_pf_control_finish_save_vf(xe, vfid); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_stop_copy_exit, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_resume_data_enter() - Initiate a VF device migration data= restore. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_vfio_resume_data_enter(struct xe_device *xe, unsigned int vfi= d) +{ + xe_assert(xe, !xe_pm_runtime_suspended(xe)); + + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + return xe_sriov_pf_control_trigger_restore_vf(xe, vfid); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_resume_data_enter, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_resume_data_exit() - Finish a VF device migration data re= store. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_vfio_resume_data_exit(struct xe_device *xe, unsigned int vfid) +{ + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + xe_assert(xe, !xe_pm_runtime_suspended(xe)); + + return xe_sriov_pf_control_finish_restore_vf(xe, vfid); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_resume_data_exit, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_error() - Move VF device to error state. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * + * Reset is needed to move it out of error state. + * + * Return: 0 on success or a negative error code on failure. + */ +int xe_sriov_vfio_error(struct xe_device *xe, unsigned int vfid) +{ + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + xe_assert(xe, !xe_pm_runtime_suspended(xe)); + + return xe_sriov_pf_control_stop_vf(xe, vfid); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_error, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_data_read() - Read migration data from the VF device. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * @buf: start address of userspace buffer + * @len: requested read size from userspace + * + * Return: number of bytes that has been successfully read, + * 0 if no more migration data is available, -errno on failure. + */ +ssize_t xe_sriov_vfio_data_read(struct xe_device *xe, unsigned int vfid, + char __user *buf, size_t len) +{ + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + return xe_sriov_pf_migration_read(xe, vfid, buf, len); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_data_read, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_data_write() - Write migration data to the VF device. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * @buf: start address of userspace buffer + * @len: requested write size from userspace + * + * Return: number of bytes that has been successfully written, -errno on f= ailure. + */ +ssize_t xe_sriov_vfio_data_write(struct xe_device *xe, unsigned int vfid, + const char __user *buf, size_t len) +{ + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + return xe_sriov_pf_migration_write(xe, vfid, buf, len); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_data_write, "xe-vfio-pci"); + +/** + * xe_sriov_vfio_stop_copy_size() - Get a size estimate of VF device migra= tion data. + * @xe: the PF &xe_device + * @vfid: the VF identifier (can't be 0) + * + * Return: migration data size in bytes or a negative error code on failur= e. + */ +ssize_t xe_sriov_vfio_stop_copy_size(struct xe_device *xe, unsigned int vf= id) +{ + if (vfid =3D=3D PFID || vfid > xe_sriov_pf_get_totalvfs(xe)) + return -EINVAL; + + xe_assert(xe, !xe_pm_runtime_suspended(xe)); + + return xe_sriov_pf_migration_size(xe, vfid); +} +EXPORT_SYMBOL_FOR_MODULES(xe_sriov_vfio_stop_copy_size, "xe-vfio-pci"); diff --git a/include/drm/intel/xe_sriov_vfio.h b/include/drm/intel/xe_sriov= _vfio.h new file mode 100644 index 0000000000000..bcd7085a81c55 --- /dev/null +++ b/include/drm/intel/xe_sriov_vfio.h @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright =C2=A9 2025 Intel Corporation + */ + +#ifndef _XE_SRIOV_VFIO_H_ +#define _XE_SRIOV_VFIO_H_ + +#include + +struct pci_dev; +struct xe_device; + +struct xe_device *xe_sriov_vfio_get_pf(struct pci_dev *pdev); +bool xe_sriov_vfio_migration_supported(struct xe_device *xe); +int xe_sriov_vfio_wait_flr_done(struct xe_device *xe, unsigned int vfid); +int xe_sriov_vfio_suspend_device(struct xe_device *xe, unsigned int vfid); +int xe_sriov_vfio_resume_device(struct xe_device *xe, unsigned int vfid); +int xe_sriov_vfio_stop_copy_enter(struct xe_device *xe, unsigned int vfid); +int xe_sriov_vfio_stop_copy_exit(struct xe_device *xe, unsigned int vfid); +int xe_sriov_vfio_resume_data_enter(struct xe_device *xe, unsigned int vfi= d); +int xe_sriov_vfio_resume_data_exit(struct xe_device *xe, unsigned int vfid= ); +int xe_sriov_vfio_error(struct xe_device *xe, unsigned int vfid); +ssize_t xe_sriov_vfio_data_read(struct xe_device *xe, unsigned int vfid, + char __user *buf, size_t len); +ssize_t xe_sriov_vfio_data_write(struct xe_device *xe, unsigned int vfid, + const char __user *buf, size_t len); +ssize_t xe_sriov_vfio_stop_copy_size(struct xe_device *xe, unsigned int vf= id); + +#endif --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ACB2232F766; Wed, 5 Nov 2025 15:13:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355603; cv=fail; b=f4eFNJNCL53+uMacW14y7DvJz5bl9CkLuXlJGwF4u81UqOQVgE++wS4sbRtCmUkxCY79eBG60KFM544WPxJ7CeMbNErJXp+dWQeBMLXFh9wGjldPWk/7c1rNLK2vNUxG2CkA3jE11SA5jDRzBJPDQ34c6HKRNNmWCxp06LB6eC0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355603; c=relaxed/simple; bh=aYRB8q9cDvkTpx3HEHi7osef/GTyXrOsLah1jLPjpE0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=U/S+v3BnOHOnz0ifjWd6wUdWA9CUB7vXe+qmrfH79k8Ms0x5okV19XV/hFKYvU6nUf3cWhI5zrkeO0Y8ISkQmoON6PQ9yh/wNESjh+BUSaKP1aeHtie48jE+ulE/OvUGwkOz5fLh8CaP78PtX+Q2PlSxLnXEdpC3ARHTGLnU2KA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=l5i72wDe; arc=fail smtp.client-ip=192.198.163.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="l5i72wDe" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355601; x=1793891601; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=aYRB8q9cDvkTpx3HEHi7osef/GTyXrOsLah1jLPjpE0=; b=l5i72wDeV7+3v0s+miiNin6d9IPH7Ycp1NCv9GXiK4YBFt45o0oB3+xn rSfLUm0rxRuBXE0ewf70RRmu6EjiyHOAniYHlgWFdIki5OF6HzboeQmsv VssR612QQg/8A330QZokUoRcvB6bgP2znaUYJD1jmQVZxfB1fYCROUMUA N2ij9bdfSmaXCzr/RS43HqGrld9KB30aEVfK2yQWr5tSi2FG3jupuR+fs saWPFwylgWIOO4SFp03tJiV6AQE9VMaXuP9Q8kATkpn/97glPYV56NX0g yJ8QKA9mIzobvPBPvLWo1wwn91diTJXXjl2FcWTJiCeG5FtVI8ZGK+dGz w==; X-CSE-ConnectionGUID: M0D26ycaT+u6zNbasajgVw== X-CSE-MsgGUID: N+7bhPAASSO0p4bWiwVR2A== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="89933742" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="89933742" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:13:21 -0800 X-CSE-ConnectionGUID: UW9ZVFjGStuiI8IkOzz4kw== X-CSE-MsgGUID: mC01DHJuSFydvPTxgrZh4g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="210957474" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa002.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:13:19 -0800 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:13:17 -0800 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:13:17 -0800 Received: from CO1PR03CU002.outbound.protection.outlook.com (52.101.46.40) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:13:16 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GPMSOl6S5MWQFVEj1MiNgAq4OW0t+lxyc/pncVPU38sIYGmF+yRAoRlOltN+kVYQskoX97JvdSNnaZqL07Zf03U2S2fRXVIMAoD8pej8ptzBBKUHUrhuA8VGT2P3x7m/NMtux54bngOp3uE9WZ/6pDXeLp0apKhADrKYqOJscE7SQaj8sAfY9Rle7zw6pER8eqzyizABxQJJfRASW8CTZ9ypv228fMpQUpnGgSlRwOnOG/zoaNMSOy+V5Q4z2G6e6R4lUMf+JA8i/kJbcNXcYImGkQXb1LvJWEgzK8AaGLgyYmXQiv7jd0eOy02XN7zrl7iwD9wD5Rl2eoLxGUs2OA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=hD4orHszqknZlmgZMJB6uq21LicRPMAMO+CE1Toh4cI=; b=DelFyJ0NI4dZo82EpkR+MupTPH5d8OfgPhB7zgqwlyIF/YvKXS8p+MkctV0Ol3xWTfiboJEJaDrCnPG7pF4D/1x1qGA6wUpTyeN9144K7GI1QvySWQOOnCC39Ef+jMYEUbyHz7TYPPRvmOfroRB1m7QwHelt3J2OKSNEagk7eFP+csTukY2svlSELo0CKshDG3RgMp5GgssqbBet02v2cSsEK1ofP8sZEaMNm5JwIb94NmxDx22jZc9JPTUrOFb6h+VTRbvW1rH/as2ITh2HLc6wpOuz1xJLRs97ApkWpYSANfZpukjf9tMiu7VL7Y7iTbKxrBAsTqBnWkkbYOQQIQ== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH8PR11MB8038.namprd11.prod.outlook.com (2603:10b6:510:25e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Wed, 5 Nov 2025 15:13:09 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:13:09 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 27/28] drm/intel/bmg: Allow device ID usage with single-argument macros Date: Wed, 5 Nov 2025 16:10:25 +0100 Message-ID: <20251105151027.540712-28-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0088.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:78::6) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH8PR11MB8038:EE_ X-MS-Office365-Filtering-Correlation-Id: 89f40a45-4f51-4b95-08a0-08de1c7dd46d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bVRuRXIwRUdxMkxHRVRpRW5yazcxQzdNS1lyYldlQTdmZkxkNlBRamZLZU1W?= =?utf-8?B?aHFRdkE5WjAzQmpSQU5DU2duSFZCcG5FZzhLeGk2bG9hL1pXNWdiRkJBQjUy?= =?utf-8?B?aWpvM2I0WlhDVkNWa3VXTHU3dmJPczFJempkemxDclhkeFM0ci9MVFRSbWhH?= =?utf-8?B?Y0xrdHJRcHExZzZaVTNoZS9Fc3crTDRCNEZML1ozdDd6aERtRkcwd3d6VWRz?= =?utf-8?B?Smwycjc5K2IyUnA3SHJhY2UyYkwzeCtZMHkvOWtvRFRTWmxWZUFWOUNEc2hr?= =?utf-8?B?VHZ1Qnh0dTh6dWtMZzFVTi9SaEV2SVY2V2pkMVYyaXM3a29yOTBSTjJqNFpZ?= =?utf-8?B?WVU2RkVHUElWTUorSFRmcDhmS1FSK1p4YXZzWnNhWGdodGdUc3dlYkdBeTBY?= =?utf-8?B?NVMwczJuYTdMTS9TUnhzZkIvV0NXZ1p0NFFCUFVYTldpLy9DdkVaK21WYjR6?= =?utf-8?B?UXRzZDlZa2QvQmlrTWx5ejBvYmFtazFpRUZWSzh5dHg2MjJKbTMzSkpKZ2Vw?= =?utf-8?B?UHNxeXpyU2FPNlZtYXdiVmpGeHkrbVZOVlJrQVl1aEowRWIzMThQSlNQWGw4?= =?utf-8?B?d1VlaUNhbVZuSE4wNWUxTEFuMWVLcEhjMFB5SUlmekpsL0NmY0lLYkR5SERY?= =?utf-8?B?OTRlTzllWmtaNldtYjZKbTFjSjdObW53QjloOVdlWG5CcVpaSE1OczZtZHZS?= =?utf-8?B?U0VUV1BCY1RiODErcjVkRDNpWm1aMmFsN24veGkrZmR4ckR5eWtwQmNhT3Nz?= =?utf-8?B?R0EyT05lbW0ybkRUT2hsbHA0SFdaNG9hQ2RzeWQ2RXdUOHdYVjZsSlZFQkRZ?= =?utf-8?B?S1pSWndSZFFyZEdwbjJvNTVud2lEc2VxamNMM1pSMExPQVVKSkg5dTJubXB5?= =?utf-8?B?QnBZa2FTOHB5ZDV3TXdlYy9GeC9Qcm56WWdjRlhzNG1TRkFLM2M2UUtlTG9N?= =?utf-8?B?aVRoeGRac3FzVGlPT2tWNUt2ZU9LbFZXaGNaVUxldFhVTmRNRXh5SU5LWmZI?= =?utf-8?B?Nk0vVUg2NmZCbXhFbENzYVZqbXdZUkEyN25hNXlQTkVFQnF1MlBEVytYeWdm?= =?utf-8?B?eDNiMUdkS3VpMS9Rb3dEWCtZc0ZSbmFxMjRxRDNaa3hiNW9xam1pTE9DOFdm?= =?utf-8?B?dXIrUVNkaTkzRm5xYlNpa1dUWXMyOWVrT3N6STRranZleHdTNmFUWVFDb1NR?= =?utf-8?B?KzdFZ3RJWnBweXhIQWoyd1lIUDRsMGwxa0RZcjBra3p4bjAwM2pCVXo2S0xR?= =?utf-8?B?cEZ5NktuN0ZBc0JWWlR1Unk1OGU1ZUYwK2tkMll5dC9vbGkzeHd5OU5kaHVm?= =?utf-8?B?bU15SGRGTGFhOWpscWJEQlJLNlJ1eHMwY0F3NnkybEROMmw1V3h1b1VvYVAx?= =?utf-8?B?d0pDdDc4MUxHQlcyTkNiQTdWaUFxNkxKTmFHa3NzekNIbUJPNlVZVitvTlhF?= =?utf-8?B?MkI3dGxsZVVNblQ4UW5wSEFoblluV2JIVW9HcEdGMHJ6TytZVnIyNEtEYytE?= =?utf-8?B?MS96aHpLUk56Ky9LRU5MNXN0cnd1YjI1S2pldGVuK0J5ZTlBbkg0WHhjM2pl?= =?utf-8?B?ZWtDT0VXV2xKMFlkRVo5dG4zQVV5YTdkQmxYcjN5dDNkU0NhWThCdjhnY0tQ?= =?utf-8?B?cVptVWZhN1R3ZERCZ2w2cmpraHE2aEsvNEE0cVFBL3JSMEo4YlJhbWpjcnVL?= =?utf-8?B?NERsV2xaMGdNdlV1b0ptUHNTTkgvTDJoaGtJRDF2ekhleWo3OCtzNjBub0g1?= =?utf-8?B?Q1JnbjRyK1o3WUo0bW95eWgza1BYVGgvMG5ZbG9WVTZiQUhsRngvdGtxOHNq?= =?utf-8?B?NUxaY2l0c20rU0NuZzFadkwwVUk5QkhsSS9GOUFDcm5NbzlxaFpYcWlKdnlJ?= =?utf-8?B?azhFbzRNRzFObHpKcEJ2Z3NMbzVKNjFIcS91Y3h5dHhncWdhQTZSVmliYzhi?= =?utf-8?B?V2JuYUtQeVJ6MFlITCtCamszM3BqanBvRFE1T0VYK0ZTTXBRMmg4dzZhN2kz?= =?utf-8?Q?IHHZlyv9piY0coqjg56Cd+3wQq8w/s=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UEhtNEpJZXFBNkVXYTZNNExrRCtkUWRVRlhRTzhvNEVFeWlta0diUGlQK2xD?= =?utf-8?B?eXlRWk42M0RhdzYrK0NXa0t4UGI0eHVNcThUUXc3MmNLK0pCUE5wSGtVNUxV?= =?utf-8?B?eEZoZktKRTM4OW8xcUxaaFRqdm9wdjcwajl6VWRHZG5HemZwVi95eXJyTHJp?= =?utf-8?B?N2Fpa1NEUGtjeVVnS2x0dktuc0djSjM4VlNMYno5VXpUdmdIZXFOR3kyUi9C?= =?utf-8?B?RWdzNVhGcElWczdVOEJiQTV4RTJreDU1MzcvbklEdjhZSXNyZkc4UWphOVRw?= =?utf-8?B?VGI0bXdEZXhsVTZ3d1RUQkF4MC9Uek1yTW9sRmc5NEpJd2I1djA4RmJWNHgr?= =?utf-8?B?ZkdSS2N0QUlXVHhDbnAraXZudXUwT3h3dUtYNis3TWk3THpXaHVhSTM3OFpQ?= =?utf-8?B?NlJXLy95aUIxcThQL3ZicE9ocVFvYzk3VEp2MXBWKzBmTGJidTltWE1aSmM3?= =?utf-8?B?eUNDMlMwRzB0dXJXMXhHMFFJODA2MkJwc1pTa2ZhL21vSGJ2MytTb1lXQ2xJ?= =?utf-8?B?U0ZTOC9rZlJVSklSSzhrWVBmQW5wcXFPdkxuVTczOGJEeitWTUJtUXlzcjBT?= =?utf-8?B?R24yUlRNT091QU5YRldDM1FIR1QvUXZBb1lDdzE5UmkzOGFveUp2cERqZWhF?= =?utf-8?B?Qkc1MjU5N3RnUi9VSjJLUWMvcjFKcUJnWUxNdUQ4SithYmI3b0U4YkJUK1d5?= =?utf-8?B?OVppSitVeGhjMUtySU52dzBQOUVBY25yMUczZUxmMi9QR3pTRmFDcm9KeUxJ?= =?utf-8?B?VzNCT25wc1l1VDhacmYvWWVIY3VCRTJnUW8zSERUMUQzb0FLMVhCTDl2NWpm?= =?utf-8?B?dTM0SEQ4eWxucm9JN01JZlZyV1l6SmMxc1NpanlUMjFKeVNLdEZNRllOcmFL?= =?utf-8?B?SDBiUmdleGF2alIycXEvaUU3bk1ISGo3aEE4MWRTOGgxNGVBb3lSenJ0aWd0?= =?utf-8?B?ZkUxM1FKS1dwSGdYb3g2c1A4ZCt3UlYySzMrQU52ZjRJZnpnTHdEWWYyVmtQ?= =?utf-8?B?VitKaGEwc1dGUkM2RHFuQVFoTDQ0bXJhVVE3ai80angxOWIzcUxqQVZCVUZa?= =?utf-8?B?UXJmWVVNS0haRHYrNkhCWjhsSnpIZC9rZGUwd290OEdwaG9jMDBPUWw5R0pi?= =?utf-8?B?WUxFUkY5cjRjbnVLRmlQalE3UEJCWkwyTFhyeXRhQVZnUTFURjdvNk1iU1pN?= =?utf-8?B?Tm8wRFl5c3VjN2ZUQ2hHR29nc2JvYjFMY2Mwc0FPdk1GV2hzS0xqalVzT1Rs?= =?utf-8?B?Z3l2dzU2aGdhT1U4RzVORFE2YkdmSHYzRjkxU1BCRTdQUHBoL0FRczR1YndR?= =?utf-8?B?ZllPSkRyTVdiQXBocUEwV1BubTJVWHN4SDJsTGpGK3QzU2pCbDhDODQyUWJn?= =?utf-8?B?dmtRL1RrbzBsVUd6UmZLNGhmdXNqVm51dnc0V2hsSG0zWU9NKzFaVkRveU5X?= =?utf-8?B?QnJPcEJia2N1cjlQKy8rNHZBRk1LZ2FORVh1cVNLaHNNVFo2WXVKYWZMRFFj?= =?utf-8?B?Tmo3WGdOcGRlZWwzUEFqU25MZ0JscGx6VGo3ZThDN1hoNXdGeHdvWW56OVJr?= =?utf-8?B?dzJlVnhRblNZK3YwdXd6OTFwWEpnS0N3MUpBa1I4Z3pwbE8vUTZjMGppZHRQ?= =?utf-8?B?QjJFZnJqOFVhZGxwd2xPbXBic1hDWjdHdU0wcEVkZU11VXpJSUF0Z29oc2FV?= =?utf-8?B?RlM5V0ZjbWVPYlRQaE83d1NwdVZmdmhmaWJYNWNSVFE3elNuVVBuUnlrWWpV?= =?utf-8?B?L2FoVEVFZjRoSnZXSG9tenZWZ0VVcGhKMFRuWmZlcVZsMWVwbjZTQlUzOTRw?= =?utf-8?B?Z2Fpd0htcUhwY0x6UDRlYUVSV0IrYStueVBISFFaRDVOdVhFdzMyTXBxNjc0?= =?utf-8?B?c0wrMytaQUZvT3ZIVXoyOXZQSXpwaSt4bTM4ZEJSS2MvZTFMd2Jkb293N3VR?= =?utf-8?B?OHgxODVZczJEZU56V2V5YTZTbEtzVkg0dVJzMDFNOVNUNnl3UFN4bFh3LzhI?= =?utf-8?B?QXZQTE9YaU5qanVBbXJTckFiV0xvMUtJK3NTcEdXcDdrZU9FaDRqM2hzc2Fx?= =?utf-8?B?ZWxUZVNsOXlQbVJpZkwxajFWamdVQVBwdnAxR2RlQy94ZTdFakplU01FU1Az?= =?utf-8?B?SWU5bTZiTDR5L3pmS0FoYlRGT0RYSm1OREtGTnA2T0ltU1FTd3B4bmFld3pN?= =?utf-8?B?a2c9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 89f40a45-4f51-4b95-08a0-08de1c7dd46d X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:13:09.6154 (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: oXl1KmgjiCNVrRgBf6kak1VSE8xeIpk0sy0cB4JTf6K7TtIXB8PH1NvNLyMDtMec2AuLAD8l6nYLZUiRyS5SV+sqepO9eXiZMmp4hrJYXlk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB8038 X-OriginatorOrg: intel.com When INTEL_BMG_G21_IDS were added as a subplatform, token concatenation operator usage was omitted, making INTEL_BMG_IDS not usable with single-argument macros. Fix that by adding the missing operator. Signed-off-by: Micha=C5=82 Winiarski Reviewed-by: Lucas De Marchi --- include/drm/intel/pciids.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/drm/intel/pciids.h b/include/drm/intel/pciids.h index b258e79b437ac..52520e684ab19 100644 --- a/include/drm/intel/pciids.h +++ b/include/drm/intel/pciids.h @@ -861,7 +861,7 @@ MACRO__(0xE216, ## __VA_ARGS__) =20 #define INTEL_BMG_IDS(MACRO__, ...) \ - INTEL_BMG_G21_IDS(MACRO__, __VA_ARGS__), \ + INTEL_BMG_G21_IDS(MACRO__, ## __VA_ARGS__), \ MACRO__(0xE220, ## __VA_ARGS__), \ MACRO__(0xE221, ## __VA_ARGS__), \ MACRO__(0xE222, ## __VA_ARGS__), \ --=20 2.51.2 From nobody Fri Dec 19 12:45:19 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19C4E33373A; Wed, 5 Nov 2025 15:13:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355604; cv=fail; b=heGVlflLQ38AybsPNJ9nvsAdloF9r9WP1RprbKCOe1RgzL3edGhx2fgqfhAyKBCVCgoDZBFEuoJNfIlShNNXISI5nwNJ0Eahn/gS/KUmbEf6OvuVWbThX/zTOF7Ku/G0qXGdpZ/R4s/QtPE+AlsmgM70hFm6v+j61iyY3DY8oCU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762355604; c=relaxed/simple; bh=/mXCbEh6UpUx7tHBr07zcLQjr/wJJKTU0ceSNYBoTFU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PeZhEYU5QrLxU6abvrCVkadjzqte0suJ9ZqvcAXbgk0unn6mC0Dchs8Y1MdAp7UR2TQVw/atPIvOZyV+anc82p8zPylDtdzf06F+zoXQ2m0UlGVig0G8Bo3sJuiYyY904yizqfRmbBDtHDbt+/J1aS/SYeMkM5gwq5R1csG2lZQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=J9qeoA39; arc=fail smtp.client-ip=192.198.163.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="J9qeoA39" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1762355602; x=1793891602; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=/mXCbEh6UpUx7tHBr07zcLQjr/wJJKTU0ceSNYBoTFU=; b=J9qeoA39sKMs9CLedCeZDvl3E5z0bmP42A4VWStdJ37cOq8i7+wo2kV1 ElDpzroyoHlhQxorcQPkKRN2R7tZqqCn832CphpDpaQjaarnz/j7Eojlk D46kQecRrCN4juKMYuIMX6DVDCvsVyZM5h+GG1rxHi1hmPuYhfwiik3Pi QAAV8uLRM/5C6VpVXmC6+Iuospql2bwRS+xXfIQU2egHDt7cpDIq0cO2v hzKgNSphMsMZWZcZ7lXR8BSwd1H2X9glZFItck9TP0FbR4s4JXG31/Bhl hYhzUyvnjXU1g1tkv+7GeYuR1nWIJo/EyOkP5b0cgkSIF8Tlr8Viunyiu A==; X-CSE-ConnectionGUID: wYST5+ifTJWdFgrI0q9pbw== X-CSE-MsgGUID: nlBbY4PDSQmhtANaNobT/Q== X-IronPort-AV: E=McAfee;i="6800,10657,11603"; a="63482860" X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="63482860" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:13:21 -0800 X-CSE-ConnectionGUID: hGOpo+0gQBqnfgZ4+2W7eg== X-CSE-MsgGUID: 989OO8UST9OG8WBUiR7Biw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,282,1754982000"; d="scan'208";a="224725971" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2025 07:13:21 -0800 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:13:20 -0800 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27 via Frontend Transport; Wed, 5 Nov 2025 07:13:20 -0800 Received: from BL2PR02CU003.outbound.protection.outlook.com (52.101.52.13) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.27; Wed, 5 Nov 2025 07:13:20 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HVCQ0k2hdl/rNXW7p7mh1rHGsTK4NOVqXr/rRSAJV9yZ112vl4dNuu385ZzHICLTeSdCEGxatsTtmGPQWP7zJN9Q0sQrl3bDfVmBE/dV9YIuHW3Q3NjTd2oZVuax0TPLDJl6teLsELZfQWU3R2ht9uHcaDKRQVH1z243oxcjhMzV3kLoUxbcQD6TPJlBUYagbjX9dD8kmkrAZ+iXHyydKEjt+rEYaNVLn2bF02cBWTh3+HqDwHuhGMRsQquLzWC+EA7VTy/r0Jdv8XGppoAN1TfcWPva3LTzW7b2ZnVzHHQjhXUiCB3QFkpjLd58vmRDJw8B8RZJmHmUazSQETkk3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=qyyS6DTwAPUefEMv/zKDuoCVfAgpNdKeUEejZz3YuGc=; b=d6rrpUC6TdZa3ec3FGpjXYuu/EasCREAzY36UWO/jPqkR44YNXyNM7pYNaxWTxPYvrDcTZEF4sYTuRdWETx0yFhOvBOfJ/TgHxCkZHZsARCDwzthNFVTHAPdiXPAhiA05KQ1VU+YbMbaBA3TYOSwuJb+rcGbIBR3gS//KGpRFuZcPlcECJhWelfvQH1zRD9YF4wtUXzf9hZqGsTHwmE12/wIZ5awEt6zP8Xu1i2XHQTHRvTTTenPyqD8ko3GlQPmRXBCaGVhKZnyVJI1vQAGZt2o0AkAzMzwj02emTOvGx9PIN6TpqAj6D+VSBsHKUqTp8CXAC7DAhqfvsi/0ZUlsg== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by PH8PR11MB8038.namprd11.prod.outlook.com (2603:10b6:510:25e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Wed, 5 Nov 2025 15:13:17 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%5]) with mapi id 15.20.9298.007; Wed, 5 Nov 2025 15:13:14 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: Alex Williamson , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Shameer Kolothum , , , , Matthew Brost , "Michal Wajdeczko" CC: , Jani Nikula , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , "Lukasz Laguna" , Christoph Hellwig , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 28/28] vfio/xe: Add device specific vfio_pci driver variant for Intel graphics Date: Wed, 5 Nov 2025 16:10:26 +0100 Message-ID: <20251105151027.540712-29-michal.winiarski@intel.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251105151027.540712-1-michal.winiarski@intel.com> References: <20251105151027.540712-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BE1P281CA0109.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:7b::14) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|PH8PR11MB8038:EE_ X-MS-Office365-Filtering-Correlation-Id: d3f807ce-2444-45c7-3c1c-08de1c7dd756 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?YjluVG8wRnBWdVRaSkxxQkx1eUZkK0R2eHljM0JQM1VxUXV6alFvdTZGU2NH?= =?utf-8?B?aUQwUHJZb1RqLzZpS3N4RTJPRlNBU2hvWllvTWt1L2VaVVRyeDJDL05uSmxw?= =?utf-8?B?d0tSaDVKSElWSkVJT0poVWhiemZibEgzcExRNjFWOHo4djhQNVpzbzk3blk2?= =?utf-8?B?eks5MFkxcFZicmtRdGpsR1hWYnNRdDdlUmRzYnhmczFVSUlGdjYyVk92bkxN?= =?utf-8?B?L01XZU4zS2Y2aWNVUUVwdW44QmhKdVRjTUVWWEY4RTJXVlJ2d3RXaW9vZVJs?= =?utf-8?B?eXNBTkl3MzVhMkpHYTVEMVlUQkhMN1ZBRmNTMUJpSnNJL3BlSi82SzNPQlJQ?= =?utf-8?B?NEFWMWRlMi94U2FlTGFicUNZNGQzUGFCL2YzSXJLK2xDTnJuV0pHTDFOdjRH?= =?utf-8?B?LzlMTTdVT0JVMkx1NmNvRXk4b0NDSVZvUm9rRWM4MzB4aGhCY2JqSWc4RmEr?= =?utf-8?B?MDFCREVhQkZYN0tyZXNLQkxYbnErZmdaWlF5RFVWZCtFZCtkQjl0ZGVWdjB6?= =?utf-8?B?ZnFNZnI5OW14NCttUTEzQWlKK01HQ01ZZDNaUFJNa0g5N1YzK0lkQm0wMXh4?= =?utf-8?B?N3JMUkFaeTJTQ3N6TDgxcTZpS1phY2RUMkxITWZiUXpmNFVDTTZZQXBYc29L?= =?utf-8?B?eGNwNmp5K0UyME9NbjRBdzVLWHVqQnlLOGVXVGdDUy9Id1FzYmRQaUZQMitY?= =?utf-8?B?SXlmUFBmRE1yaHQzNHgwUXdCKzc4K2NtVDlnQlJsc3ZYbUo3Q2tGWjV0YlZQ?= =?utf-8?B?MU1HV0xXQzNTNGhJUWVmSnBMUmErZUNYUUVGYkZDcjdGOTJzRGJWbjBvckln?= =?utf-8?B?WUlMSkdhK3c3NXVNOEJFMUx6Q29FV0lwaWx1cFl5TnBqSjRZWG1nSjJKakJm?= =?utf-8?B?KzUzSDJxaHUvdHR2YjdzOUphSWxoYjZFT0t0eENmcGFIVTVZVWdIWWsvL2w4?= =?utf-8?B?eS9oOGlld0Q3YzVaVFRydGdvLzlUajArRUFYcmJLNFpTT2tyS2tvQ3c0dGdH?= =?utf-8?B?V2tCSW5zTHNzZWsyVnc5eElubVp6WWd3Qk1qYmxwMUVzdFo5THJBdnZJOXZV?= =?utf-8?B?c2NWTndSZTRiWElmZm5heHpRWGZFdFVIeFhkdXpyVnJ3Ly9hNGg0NkJrUXFH?= =?utf-8?B?bDgvemZ5KzRjUlR6VzlGdjhpdHZaTUpiZVloUEZPVFBMeWkvMkVnUXdEL1NX?= =?utf-8?B?TFFuVFhXQXpJN3RESGovdG5MNHRCT2gzMTZyOWpyYWVDdkhwM2ZscW1Hb0xN?= =?utf-8?B?SHpFdE9EM0FzdVNIT0ZFbWtWcVA0czZVcThnVDdKTVByYVl0aGF4U1ZBSVFt?= =?utf-8?B?aStpeEwzSWdsUGxxdWRMY3hwQWVtMnVTMEx3NFBNRmNrbmVuT3NtSlczV2lB?= =?utf-8?B?Z3A5dVNPcTRlb1Q2T2RnVWFaVjRuYW01QkwzWk16emw4MVkvK1FBR0dleWZr?= =?utf-8?B?dGpGWVZkbTQ4UDFhV1FEZ0pxOXM3amdHYWhrVTJSTGJhNWdSOW9DMisyUlpp?= =?utf-8?B?ZmlDTGJ4eUpDYldLYkhNT0Z3MUJhQ3o4UnR5Qm0vTEF3UmhDK29kTDhKSXlI?= =?utf-8?B?VzFhdFlhZGFHd3dySXZKTEVMeUNidmgzTjlMcHJvTGwwUVN0UURGcnlNU0xV?= =?utf-8?B?NXU2UWdjVS9OV1A4MUdwY2ZBc2NyV0w5Yy9yenYwWEtia3hxNCtTRXY5RFZV?= =?utf-8?B?VjFUbHBDbGVQY3JFMzV2d3MxMCtxb1BpbVdjV1c4UVZPYXFVOVI3ZnJJa1Vo?= =?utf-8?B?YnlYSGp5SGZnT1lkNENzeWl0Ly9Pcmh3Wm9KaUR4ZzVlLzlKOVl4RHNQQkRI?= =?utf-8?B?NEs4ZGVBc0Q0QjhTeUJxK0s0MHRwSEtkUENzQ3JNL1EzSU9MZUtBK3NaSFR4?= =?utf-8?B?Ti9NRkMvcnVRSXB4ZFhuK0pNT2t2ZnBSQ2ZOMDNCZ2FpUW9jL3lWYVNFeXRx?= =?utf-8?B?OWxkbmJSTEpxa2hZZGw5Ym83OGNGWmRVMGgrZW1xV3BTdkJTdVhHM0xhY29M?= =?utf-8?Q?4C776/MsmzXm9ZNlpZIVYev2KrWFN0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K0EwaWhXMTZlRnpPanY2bDYyVW5NaTdiUzlXZGJIeW10cUhPT1RyL05SVklV?= =?utf-8?B?WUtiVTZiOWJ2dEVKNUltNktyRzR4Y2lubXpNdUdya0ZVQmtrd3NOTkd3d0cr?= =?utf-8?B?M3ZUbXlSRWxnbEUwOXZLNS83aFAyZmVUYmNoRy8zRnAveTYwMm5VVjcwNVlW?= =?utf-8?B?Wk1kVC95anNuQ3RFdWpSNWVWdkhDc1ZVZkM3Yml6ZW1JK1VRdDZJV2wzTHRV?= =?utf-8?B?c0dpU2NKaE52QlRUU3V5WmVSRHhNeHBBZHI0dG5vTElQN3JGYXZOMlR4K09k?= =?utf-8?B?a29yY0NyTHdKd2xNY2tRK2pIUzhUZUFJMjB5d01HUG5ZMjFsWE1ERTY4SExj?= =?utf-8?B?cVBlRmc2MHJhVE8wRElJZmY3NFkzN2RzZEJWTEdBZzBUVDZmZTBUQ0F1bVd3?= =?utf-8?B?U0VHaGlkd21KTjd5MDJxdzVvTDhUMmNXdUhrajh0cUpHYXJDSWc4d3hETFJB?= =?utf-8?B?U3o5Smd3YnBpQU1TZVk2WDNwTFNOQ1Ixbmd5dEF4TGYycDQxUlFGWkxIVmh1?= =?utf-8?B?OHhnZ3FVOVRDL0ljaWdlTTBkRHIxMkJZMXNCUk85LytCVUdCNGk3dlVxQ1kx?= =?utf-8?B?WEVXY0owakxSSlhyZXh6Q0ZMa3picWl0dTJIMUo2blNMWjVSaTZzRWFIMmpL?= =?utf-8?B?WXVhSmh2SlUwd2RoSkwwTDlVTGNCbkhuNjc5YUU0UWJVVXlUMlFvQWZDejNy?= =?utf-8?B?Z2xsS1NiendKb3BHNkVGRVVBeEwrUkpxUGE4WW5IZkJKWnMwOG92RytvMEF3?= =?utf-8?B?M2lrbzMwTVRETG9xUWNrT0d5N2tsSStTeEF0cWVZbUxyYytNamZMREhjTEdC?= =?utf-8?B?bjhRUytWaVhhS2FmNE9IL3NEWUtiNkdrRkJKOHhDR08rUnh1QmZTNWRuc0pE?= =?utf-8?B?OXhkejIwSFU1dDZQaHBIcDNKcFVCTnQ5bW8xNFJZaHdQeEpzMlJhSjdpUEY4?= =?utf-8?B?dnhhOFdxT0NrSnNyWW1JV0lTcUFLZ0lhbUFJeTBzaEdYWXVyNnQ1Zks5L005?= =?utf-8?B?VGJic3VVSDBFeVNHM1Q1NXJuOGMydThYVGZUeXkvcmJONUgvbGNmTXFDZFFy?= =?utf-8?B?dWU3d3Q4K3hCQVRXWGhUc1Rxc2FOaU1BTi9PQjI2SzlkS3c3YWpDM1k2K2J4?= =?utf-8?B?UitTSE00NzMybFhYNitFU2xFSWZzMTdiS0U4NzRkcmF5QjlTclVFY3MwcXR6?= =?utf-8?B?d0ZBaG4vb3FibjRpN3ZkeC9OdXdseUlFRTA2cTBBbWJvNGhmZFdHYlZ1MU5w?= =?utf-8?B?VXNNNSs1SDN5bmJ5N2hQcmNhd0VUOGsvNzZqSU9uR2hBQlpjREYwKzNnVm1I?= =?utf-8?B?WTJxbmVEekJhSUtIYnI4em9QVVFHdVlBcE1jZXY3ZjUrTlM2RVBET0Zsc1N2?= =?utf-8?B?KzgrRGdISjBoMTVRUTB1ZFRGbVh5UHJxajJDMWJPNXh1NE8yL2RMQUZzV2Nl?= =?utf-8?B?MDAvM0ZMai9haUltY1lqUGtxeUpiMTlxanBYVDZqWHd2UXZjcCt1RjNBQ0N5?= =?utf-8?B?WnJVdFBscXJwajF4RUJCS01JdVVFSXFKbmFsbTRnSXE1N0V6Y1kwL2d1RGZu?= =?utf-8?B?UUVoWHRwcTRiRCtYQm1RVU9qLzllM3QrSHViT21NblZMWFc0ZEc0ZndHSE10?= =?utf-8?B?T0VHSHk4MFUzbjJBZWt3MW9TOW9HTzkzajJUZytSTnE0NkFEOWViSUhGdFcw?= =?utf-8?B?RXZUdnlOL0w5ODRudDZ6VXFyb3hRNnhMQXh1V3NycmhYdmVydTByeGF3WGh6?= =?utf-8?B?RjVZNVJ1K2MxN1YwalhHVS9wMGljbGVUTjVqWlJVRlhuVlZ2U1h1Z0dGai95?= =?utf-8?B?Q0U5S0VvVDRsZHlnY3RmeEkvTjlweUlrYitvcTIwK21FVkFYd1p0bnI5enNy?= =?utf-8?B?QlltaW0wWEp5RnVCQVNqUU5TUm1EQlpxWCtWemNYdHNWSHpCYnlRZUtMcXI0?= =?utf-8?B?clo2a3RLbUplNS9FY2hGSktGRlBTQkZtOE94TktIZ3NBM0NISFRUaHJ0OEdZ?= =?utf-8?B?c2Z1MnFvRzIyYVZ2WHhvWHlVUXpQZkd5d1BCeGRsRnFkV2F2ZVR3TVZrMkN0?= =?utf-8?B?RFllM28wSVFVMklZdkJFZVhoa0NXQmE1ekMxYUhuc1VNS0xLdE56M3NGRU1a?= =?utf-8?B?T21lc2ZOUnYva2drVkdYeVo2WlA2azdmei9yUUd6Rk1SWWF4THpjbERubzJk?= =?utf-8?B?eGc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: d3f807ce-2444-45c7-3c1c-08de1c7dd756 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 15:13:14.4955 (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: 9KVN4wXTlXNcqUO9x03BrXF9u+MNhq2QubP/9dqJvmIopxbJDLJW2+c5MNxJTa2RrrhQls4436xjZO7Ki56YSkqaQSGyF4xHGHQpsGKsSQA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB8038 X-OriginatorOrg: intel.com In addition to generic VFIO PCI functionality, the driver implements VFIO migration uAPI, allowing userspace to enable migration for Intel Graphics SR-IOV Virtual Functions. The driver binds to VF device, and uses API exposed by Xe driver bound to PF device to control VF device state and transfer the migration data. Signed-off-by: Micha=C5=82 Winiarski Acked-by: Rodrigo Vivi --- MAINTAINERS | 7 + drivers/vfio/pci/Kconfig | 2 + drivers/vfio/pci/Makefile | 2 + drivers/vfio/pci/xe/Kconfig | 12 + drivers/vfio/pci/xe/Makefile | 3 + drivers/vfio/pci/xe/main.c | 556 +++++++++++++++++++++++++++++++++++ 6 files changed, 582 insertions(+) create mode 100644 drivers/vfio/pci/xe/Kconfig create mode 100644 drivers/vfio/pci/xe/Makefile create mode 100644 drivers/vfio/pci/xe/main.c diff --git a/MAINTAINERS b/MAINTAINERS index 9e941f983e27e..5558707d47d4f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -27008,6 +27008,13 @@ L: virtualization@lists.linux.dev S: Maintained F: drivers/vfio/pci/virtio =20 +VFIO XE PCI DRIVER +M: Micha=C5=82 Winiarski +L: kvm@vger.kernel.org +L: intel-xe@lists.freedesktop.org +S: Supported +F: drivers/vfio/pci/xe + VGA_SWITCHEROO R: Lukas Wunner S: Maintained diff --git a/drivers/vfio/pci/Kconfig b/drivers/vfio/pci/Kconfig index 2b0172f546652..c100f0ab87f2d 100644 --- a/drivers/vfio/pci/Kconfig +++ b/drivers/vfio/pci/Kconfig @@ -67,4 +67,6 @@ source "drivers/vfio/pci/nvgrace-gpu/Kconfig" =20 source "drivers/vfio/pci/qat/Kconfig" =20 +source "drivers/vfio/pci/xe/Kconfig" + endmenu diff --git a/drivers/vfio/pci/Makefile b/drivers/vfio/pci/Makefile index cf00c0a7e55c8..f5d46aa9347b9 100644 --- a/drivers/vfio/pci/Makefile +++ b/drivers/vfio/pci/Makefile @@ -19,3 +19,5 @@ obj-$(CONFIG_VIRTIO_VFIO_PCI) +=3D virtio/ obj-$(CONFIG_NVGRACE_GPU_VFIO_PCI) +=3D nvgrace-gpu/ =20 obj-$(CONFIG_QAT_VFIO_PCI) +=3D qat/ + +obj-$(CONFIG_XE_VFIO_PCI) +=3D xe/ diff --git a/drivers/vfio/pci/xe/Kconfig b/drivers/vfio/pci/xe/Kconfig new file mode 100644 index 0000000000000..787be88268685 --- /dev/null +++ b/drivers/vfio/pci/xe/Kconfig @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0-only +config XE_VFIO_PCI + tristate "VFIO support for Intel Graphics" + depends on DRM_XE + select VFIO_PCI_CORE + help + This option enables vendor-specific VFIO driver for Intel Graphics. + In addition to generic VFIO PCI functionality, it implements VFIO + migration uAPI allowing userspace to enable migration for + Intel Graphics SR-IOV Virtual Functions supported by the Xe driver. + + If you don't know what to do here, say N. diff --git a/drivers/vfio/pci/xe/Makefile b/drivers/vfio/pci/xe/Makefile new file mode 100644 index 0000000000000..13aa0fd192cd4 --- /dev/null +++ b/drivers/vfio/pci/xe/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_XE_VFIO_PCI) +=3D xe-vfio-pci.o +xe-vfio-pci-y :=3D main.o diff --git a/drivers/vfio/pci/xe/main.c b/drivers/vfio/pci/xe/main.c new file mode 100644 index 0000000000000..1caa64163be9f --- /dev/null +++ b/drivers/vfio/pci/xe/main.c @@ -0,0 +1,556 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright =C2=A9 2025 Intel Corporation + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +struct xe_vfio_pci_migration_file { + struct file *filp; + /* serializes accesses to migration data */ + struct mutex lock; + struct xe_vfio_pci_core_device *xe_vdev; +}; + +struct xe_vfio_pci_core_device { + struct vfio_pci_core_device core_device; + struct xe_device *xe; + /* VF number used by PF, Xe HW/FW components use vfid indexing starting f= rom 1 */ + unsigned int vfid; + u8 migrate_cap:1; + u8 deferred_reset:1; + /* protects migration state */ + struct mutex state_mutex; + enum vfio_device_mig_state mig_state; + /* protects the reset_done flow */ + spinlock_t reset_lock; + struct xe_vfio_pci_migration_file *migf; +}; + +#define xe_vdev_to_dev(xe_vdev) (&(xe_vdev)->core_device.pdev->dev) + +static void xe_vfio_pci_disable_file(struct xe_vfio_pci_migration_file *mi= gf) +{ + struct xe_vfio_pci_core_device *xe_vdev =3D migf->xe_vdev; + + mutex_lock(&migf->lock); + xe_vdev->migf =3D NULL; + mutex_unlock(&migf->lock); +} + +static void xe_vfio_pci_reset(struct xe_vfio_pci_core_device *xe_vdev) +{ + if (xe_vdev->migf) + xe_vfio_pci_disable_file(xe_vdev->migf); + + xe_vdev->mig_state =3D VFIO_DEVICE_STATE_RUNNING; +} + +static void xe_vfio_pci_state_mutex_lock(struct xe_vfio_pci_core_device *x= e_vdev) +{ + mutex_lock(&xe_vdev->state_mutex); +} + +/* + * This function is called in all state_mutex unlock cases to + * handle a 'deferred_reset' if exists. + */ +static void xe_vfio_pci_state_mutex_unlock(struct xe_vfio_pci_core_device = *xe_vdev) +{ +again: + spin_lock(&xe_vdev->reset_lock); + if (xe_vdev->deferred_reset) { + xe_vdev->deferred_reset =3D false; + spin_unlock(&xe_vdev->reset_lock); + xe_vfio_pci_reset(xe_vdev); + goto again; + } + mutex_unlock(&xe_vdev->state_mutex); + spin_unlock(&xe_vdev->reset_lock); +} + +static void xe_vfio_pci_reset_done(struct pci_dev *pdev) +{ + struct xe_vfio_pci_core_device *xe_vdev =3D pci_get_drvdata(pdev); + int ret; + + if (!xe_vdev->vfid) + return; + + /* + * VF FLR requires additional processing done by PF driver. + * The processing is done after FLR is already finished from PCIe + * perspective. + * In order to avoid a scenario where VF is used while PF processing + * is still in progress, additional synchronization point is needed. + */ + ret =3D xe_sriov_vfio_wait_flr_done(xe_vdev->xe, xe_vdev->vfid); + if (ret) + dev_err(&pdev->dev, "Failed to wait for FLR: %d\n", ret); + + if (!xe_vdev->migrate_cap) + return; + + /* + * As the higher VFIO layers are holding locks across reset and using + * those same locks with the mm_lock we need to prevent ABBA deadlock + * with the state_mutex and mm_lock. + * In case the state_mutex was taken already we defer the cleanup work + * to the unlock flow of the other running context. + */ + spin_lock(&xe_vdev->reset_lock); + xe_vdev->deferred_reset =3D true; + if (!mutex_trylock(&xe_vdev->state_mutex)) { + spin_unlock(&xe_vdev->reset_lock); + return; + } + spin_unlock(&xe_vdev->reset_lock); + xe_vfio_pci_state_mutex_unlock(xe_vdev); + + xe_vfio_pci_reset(xe_vdev); +} + +static const struct pci_error_handlers xe_vfio_pci_err_handlers =3D { + .reset_done =3D xe_vfio_pci_reset_done, + .error_detected =3D vfio_pci_core_aer_err_detected, +}; + +static int xe_vfio_pci_open_device(struct vfio_device *core_vdev) +{ + struct xe_vfio_pci_core_device *xe_vdev =3D + container_of(core_vdev, struct xe_vfio_pci_core_device, core_device.vdev= ); + struct vfio_pci_core_device *vdev =3D &xe_vdev->core_device; + int ret; + + ret =3D vfio_pci_core_enable(vdev); + if (ret) + return ret; + + vfio_pci_core_finish_enable(vdev); + + return 0; +} + +static int xe_vfio_pci_release_file(struct inode *inode, struct file *filp) +{ + struct xe_vfio_pci_migration_file *migf =3D filp->private_data; + + xe_vfio_pci_disable_file(migf); + mutex_destroy(&migf->lock); + kfree(migf); + + return 0; +} + +static ssize_t xe_vfio_pci_save_read(struct file *filp, char __user *buf, = size_t len, loff_t *pos) +{ + struct xe_vfio_pci_migration_file *migf =3D filp->private_data; + ssize_t ret; + + if (pos) + return -ESPIPE; + + mutex_lock(&migf->lock); + ret =3D xe_sriov_vfio_data_read(migf->xe_vdev->xe, migf->xe_vdev->vfid, b= uf, len); + mutex_unlock(&migf->lock); + + return ret; +} + +static const struct file_operations xe_vfio_pci_save_fops =3D { + .owner =3D THIS_MODULE, + .read =3D xe_vfio_pci_save_read, + .release =3D xe_vfio_pci_release_file, + .llseek =3D noop_llseek, +}; + +static ssize_t xe_vfio_pci_resume_write(struct file *filp, const char __us= er *buf, + size_t len, loff_t *pos) +{ + struct xe_vfio_pci_migration_file *migf =3D filp->private_data; + ssize_t ret; + + if (pos) + return -ESPIPE; + + mutex_lock(&migf->lock); + ret =3D xe_sriov_vfio_data_write(migf->xe_vdev->xe, migf->xe_vdev->vfid, = buf, len); + mutex_unlock(&migf->lock); + + return ret; +} + +static const struct file_operations xe_vfio_pci_resume_fops =3D { + .owner =3D THIS_MODULE, + .write =3D xe_vfio_pci_resume_write, + .release =3D xe_vfio_pci_release_file, + .llseek =3D noop_llseek, +}; + +static const char *vfio_dev_state_str(u32 state) +{ + switch (state) { + case VFIO_DEVICE_STATE_RUNNING: return "running"; + case VFIO_DEVICE_STATE_RUNNING_P2P: return "running_p2p"; + case VFIO_DEVICE_STATE_STOP_COPY: return "stopcopy"; + case VFIO_DEVICE_STATE_STOP: return "stop"; + case VFIO_DEVICE_STATE_RESUMING: return "resuming"; + case VFIO_DEVICE_STATE_ERROR: return "error"; + default: return ""; + } +} + +enum xe_vfio_pci_file_type { + XE_VFIO_FILE_SAVE =3D 0, + XE_VFIO_FILE_RESUME, +}; + +static struct xe_vfio_pci_migration_file * +xe_vfio_pci_alloc_file(struct xe_vfio_pci_core_device *xe_vdev, + enum xe_vfio_pci_file_type type) +{ + struct xe_vfio_pci_migration_file *migf; + const struct file_operations *fops; + int flags; + + migf =3D kzalloc(sizeof(*migf), GFP_KERNEL); + if (!migf) + return ERR_PTR(-ENOMEM); + + fops =3D type =3D=3D XE_VFIO_FILE_SAVE ? &xe_vfio_pci_save_fops : &xe_vfi= o_pci_resume_fops; + flags =3D type =3D=3D XE_VFIO_FILE_SAVE ? O_RDONLY : O_WRONLY; + migf->filp =3D anon_inode_getfile("xe_vfio_mig", fops, migf, flags); + if (IS_ERR(migf->filp)) { + kfree(migf); + return ERR_CAST(migf->filp); + } + + mutex_init(&migf->lock); + migf->xe_vdev =3D xe_vdev; + xe_vdev->migf =3D migf; + + stream_open(migf->filp->f_inode, migf->filp); + + return migf; +} + +static struct file * +xe_vfio_set_state(struct xe_vfio_pci_core_device *xe_vdev, u32 new) +{ + u32 cur =3D xe_vdev->mig_state; + int ret; + + dev_dbg(xe_vdev_to_dev(xe_vdev), + "state: %s->%s\n", vfio_dev_state_str(cur), vfio_dev_state_str(new)); + + /* + * "STOP" handling is reused for "RUNNING_P2P", as the device doesn't + * have the capability to selectively block outgoing p2p DMA transfers. + * While the device is allowing BAR accesses when the VF is stopped, it + * is not processing any new workload requests, effectively stopping + * any outgoing DMA transfers (not just p2p). + * Any VRAM / MMIO accesses occurring during "RUNNING_P2P" are kept and + * will be migrated to target VF during stop-copy. + */ + if (cur =3D=3D VFIO_DEVICE_STATE_RUNNING && new =3D=3D VFIO_DEVICE_STATE_= RUNNING_P2P) { + ret =3D xe_sriov_vfio_suspend_device(xe_vdev->xe, xe_vdev->vfid); + if (ret) + goto err; + + return NULL; + } + + if ((cur =3D=3D VFIO_DEVICE_STATE_RUNNING_P2P && new =3D=3D VFIO_DEVICE_S= TATE_STOP) || + (cur =3D=3D VFIO_DEVICE_STATE_STOP && new =3D=3D VFIO_DEVICE_STATE_RU= NNING_P2P)) + return NULL; + + if (cur =3D=3D VFIO_DEVICE_STATE_RUNNING_P2P && new =3D=3D VFIO_DEVICE_ST= ATE_RUNNING) { + ret =3D xe_sriov_vfio_resume_device(xe_vdev->xe, xe_vdev->vfid); + if (ret) + goto err; + + return NULL; + } + + if (cur =3D=3D VFIO_DEVICE_STATE_STOP && new =3D=3D VFIO_DEVICE_STATE_STO= P_COPY) { + struct xe_vfio_pci_migration_file *migf; + + migf =3D xe_vfio_pci_alloc_file(xe_vdev, XE_VFIO_FILE_SAVE); + if (IS_ERR(migf)) { + ret =3D PTR_ERR(migf); + goto err; + } + get_file(migf->filp); + + ret =3D xe_sriov_vfio_stop_copy_enter(xe_vdev->xe, xe_vdev->vfid); + if (ret) { + fput(migf->filp); + goto err; + } + + return migf->filp; + } + + if (cur =3D=3D VFIO_DEVICE_STATE_STOP_COPY && new =3D=3D VFIO_DEVICE_STAT= E_STOP) { + if (xe_vdev->migf) { + fput(xe_vdev->migf->filp); + xe_vfio_pci_disable_file(xe_vdev->migf); + } + + ret =3D xe_sriov_vfio_stop_copy_exit(xe_vdev->xe, xe_vdev->vfid); + if (ret) + goto err; + + return NULL; + } + + if (cur =3D=3D VFIO_DEVICE_STATE_STOP && new =3D=3D VFIO_DEVICE_STATE_RES= UMING) { + struct xe_vfio_pci_migration_file *migf; + + migf =3D xe_vfio_pci_alloc_file(xe_vdev, XE_VFIO_FILE_RESUME); + if (IS_ERR(migf)) { + ret =3D PTR_ERR(migf); + goto err; + } + get_file(migf->filp); + + ret =3D xe_sriov_vfio_resume_data_enter(xe_vdev->xe, xe_vdev->vfid); + if (ret) { + fput(migf->filp); + goto err; + } + + return migf->filp; + } + + if (cur =3D=3D VFIO_DEVICE_STATE_RESUMING && new =3D=3D VFIO_DEVICE_STATE= _STOP) { + if (xe_vdev->migf) { + fput(xe_vdev->migf->filp); + xe_vfio_pci_disable_file(xe_vdev->migf); + } + + ret =3D xe_sriov_vfio_resume_data_exit(xe_vdev->xe, xe_vdev->vfid); + if (ret) + goto err; + + return NULL; + } + + WARN(true, "Unknown state transition %d->%d", cur, new); + return ERR_PTR(-EINVAL); + +err: + dev_dbg(xe_vdev_to_dev(xe_vdev), + "Failed to transition state: %s->%s err=3D%d\n", + vfio_dev_state_str(cur), vfio_dev_state_str(new), ret); + return ERR_PTR(ret); +} + +static struct file * +xe_vfio_pci_set_device_state(struct vfio_device *core_vdev, + enum vfio_device_mig_state new_state) +{ + struct xe_vfio_pci_core_device *xe_vdev =3D + container_of(core_vdev, struct xe_vfio_pci_core_device, core_device.vdev= ); + enum vfio_device_mig_state next_state; + struct file *f =3D NULL; + int ret; + + xe_vfio_pci_state_mutex_lock(xe_vdev); + while (new_state !=3D xe_vdev->mig_state) { + ret =3D vfio_mig_get_next_state(core_vdev, xe_vdev->mig_state, + new_state, &next_state); + if (ret) { + xe_sriov_vfio_error(xe_vdev->xe, xe_vdev->vfid); + f =3D ERR_PTR(ret); + break; + } + f =3D xe_vfio_set_state(xe_vdev, next_state); + if (IS_ERR(f)) + break; + + xe_vdev->mig_state =3D next_state; + + /* Multiple state transitions with non-NULL file in the middle */ + if (f && new_state !=3D xe_vdev->mig_state) { + fput(f); + f =3D ERR_PTR(-EINVAL); + break; + } + } + xe_vfio_pci_state_mutex_unlock(xe_vdev); + + return f; +} + +static int xe_vfio_pci_get_device_state(struct vfio_device *core_vdev, + enum vfio_device_mig_state *curr_state) +{ + struct xe_vfio_pci_core_device *xe_vdev =3D + container_of(core_vdev, struct xe_vfio_pci_core_device, core_device.vdev= ); + + xe_vfio_pci_state_mutex_lock(xe_vdev); + *curr_state =3D xe_vdev->mig_state; + xe_vfio_pci_state_mutex_unlock(xe_vdev); + + return 0; +} + +static int xe_vfio_pci_get_data_size(struct vfio_device *vdev, + unsigned long *stop_copy_length) +{ + struct xe_vfio_pci_core_device *xe_vdev =3D + container_of(vdev, struct xe_vfio_pci_core_device, core_device.vdev); + + xe_vfio_pci_state_mutex_lock(xe_vdev); + *stop_copy_length =3D xe_sriov_vfio_stop_copy_size(xe_vdev->xe, xe_vdev->= vfid); + xe_vfio_pci_state_mutex_unlock(xe_vdev); + + return 0; +} + +static const struct vfio_migration_ops xe_vfio_pci_migration_ops =3D { + .migration_set_state =3D xe_vfio_pci_set_device_state, + .migration_get_state =3D xe_vfio_pci_get_device_state, + .migration_get_data_size =3D xe_vfio_pci_get_data_size, +}; + +static void xe_vfio_pci_migration_init(struct xe_vfio_pci_core_device *xe_= vdev) +{ + struct vfio_device *core_vdev =3D &xe_vdev->core_device.vdev; + struct pci_dev *pdev =3D to_pci_dev(core_vdev->dev); + struct xe_device *xe =3D xe_sriov_vfio_get_pf(pdev); + int ret; + + if (!xe) + return; + if (!xe_sriov_vfio_migration_supported(xe)) + return; + + ret =3D pci_iov_vf_id(pdev); + if (ret < 0) + return; + + mutex_init(&xe_vdev->state_mutex); + spin_lock_init(&xe_vdev->reset_lock); + + /* Xe HW/FW components use vfid indexing starting from 1 */ + xe_vdev->vfid =3D ret + 1; + xe_vdev->xe =3D xe; + xe_vdev->migrate_cap =3D true; + + core_vdev->migration_flags =3D VFIO_MIGRATION_STOP_COPY | VFIO_MIGRATION_= P2P; + core_vdev->mig_ops =3D &xe_vfio_pci_migration_ops; +} + +static void xe_vfio_pci_migration_fini(struct xe_vfio_pci_core_device *xe_= vdev) +{ + if (!xe_vdev->migrate_cap) + return; + + mutex_destroy(&xe_vdev->state_mutex); +} + +static int xe_vfio_pci_init_dev(struct vfio_device *core_vdev) +{ + struct xe_vfio_pci_core_device *xe_vdev =3D + container_of(core_vdev, struct xe_vfio_pci_core_device, core_device.vdev= ); + + xe_vfio_pci_migration_init(xe_vdev); + + return vfio_pci_core_init_dev(core_vdev); +} + +static void xe_vfio_pci_release_dev(struct vfio_device *core_vdev) +{ + struct xe_vfio_pci_core_device *xe_vdev =3D + container_of(core_vdev, struct xe_vfio_pci_core_device, core_device.vdev= ); + + xe_vfio_pci_migration_fini(xe_vdev); +} + +static const struct vfio_device_ops xe_vfio_pci_ops =3D { + .name =3D "xe-vfio-pci", + .init =3D xe_vfio_pci_init_dev, + .release =3D xe_vfio_pci_release_dev, + .open_device =3D xe_vfio_pci_open_device, + .close_device =3D vfio_pci_core_close_device, + .ioctl =3D vfio_pci_core_ioctl, + .device_feature =3D vfio_pci_core_ioctl_feature, + .read =3D vfio_pci_core_read, + .write =3D vfio_pci_core_write, + .mmap =3D vfio_pci_core_mmap, + .request =3D vfio_pci_core_request, + .match =3D vfio_pci_core_match, + .match_token_uuid =3D vfio_pci_core_match_token_uuid, + .bind_iommufd =3D vfio_iommufd_physical_bind, + .unbind_iommufd =3D vfio_iommufd_physical_unbind, + .attach_ioas =3D vfio_iommufd_physical_attach_ioas, + .detach_ioas =3D vfio_iommufd_physical_detach_ioas, +}; + +static int xe_vfio_pci_probe(struct pci_dev *pdev, const struct pci_device= _id *id) +{ + struct xe_vfio_pci_core_device *xe_vdev; + int ret; + + xe_vdev =3D vfio_alloc_device(xe_vfio_pci_core_device, core_device.vdev, = &pdev->dev, + &xe_vfio_pci_ops); + if (IS_ERR(xe_vdev)) + return PTR_ERR(xe_vdev); + + dev_set_drvdata(&pdev->dev, &xe_vdev->core_device); + + ret =3D vfio_pci_core_register_device(&xe_vdev->core_device); + if (ret) { + vfio_put_device(&xe_vdev->core_device.vdev); + return ret; + } + + return 0; +} + +static void xe_vfio_pci_remove(struct pci_dev *pdev) +{ + struct xe_vfio_pci_core_device *xe_vdev =3D pci_get_drvdata(pdev); + + vfio_pci_core_unregister_device(&xe_vdev->core_device); + vfio_put_device(&xe_vdev->core_device.vdev); +} + +#define INTEL_PCI_VFIO_DEVICE(_id) { \ + PCI_DRIVER_OVERRIDE_DEVICE_VFIO(PCI_VENDOR_ID_INTEL, (_id)) \ +} + +static const struct pci_device_id xe_vfio_pci_table[] =3D { + INTEL_PTL_IDS(INTEL_PCI_VFIO_DEVICE), + INTEL_WCL_IDS(INTEL_PCI_VFIO_DEVICE), + INTEL_BMG_IDS(INTEL_PCI_VFIO_DEVICE), + {} +}; +MODULE_DEVICE_TABLE(pci, xe_vfio_pci_table); + +static struct pci_driver xe_vfio_pci_driver =3D { + .name =3D "xe-vfio-pci", + .id_table =3D xe_vfio_pci_table, + .probe =3D xe_vfio_pci_probe, + .remove =3D xe_vfio_pci_remove, + .err_handler =3D &xe_vfio_pci_err_handlers, + .driver_managed_dma =3D true, +}; +module_pci_driver(xe_vfio_pci_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Micha=C5=82 Winiarski "); +MODULE_DESCRIPTION("VFIO PCI driver with migration support for Intel Graph= ics"); --=20 2.51.2