From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 32007C77B7C for ; Tue, 24 Jun 2025 10:42:24 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DEC6810E510; Tue, 24 Jun 2025 10:42:23 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="H4i0Szax"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id BEA2D10E510 for ; Tue, 24 Jun 2025 10:42:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1750761743; x=1782297743; h=message-id:date:subject:to:cc:references:from: in-reply-to:mime-version; bh=dgB7eLuYmek+ffu0QjKuZnGADelVIAL1ciJkiIltdRs=; b=H4i0SzaxhCA/uf48jqpRprHzZMGD5KDQTtkp0mh4Rn/sFMjJ9vtvJoFv iIuvD0bwVeiCMACtE6hTk4QJD57A/CBRN5vkx+rb4YWlxmwWZ/uh6CsIG bHsE+Ptb85XnKN6rbw8guQn2sUy0sFaotUhD2DGReDptNbH2VcahIam0G 8qxi/O+54OPkiFAsbax6l5kiluA4TtGVcoE8YMkxWc4K4pZTZRA9FB6rX lq1xSfn/5d2bxwCeBna/Sv6R7fzU/QzdrUaAg4t5wj6E50YPUVmQlnys/ YRvAEbfrohZ3WOexGh5VszZCMS8jQxxTwovvO7Zj6RiGTuqM6r1W+hrAg A==; X-CSE-ConnectionGUID: RxhUZmuEQRS380OQTbuWOA== X-CSE-MsgGUID: K091K9XOQsaKADsUL6hFZQ== X-IronPort-AV: E=McAfee;i="6800,10657,11473"; a="70417622" X-IronPort-AV: E=Sophos;i="6.16,261,1744095600"; d="scan'208,217";a="70417622" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jun 2025 03:42:22 -0700 X-CSE-ConnectionGUID: vrCVwz6AQluIMkG3ikrDNw== X-CSE-MsgGUID: 31pBBUTqSXOB2fQI6ygvyg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,261,1744095600"; d="scan'208,217";a="151477129" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by fmviesa007.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jun 2025 03:42:23 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) 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.1544.25; Tue, 24 Jun 2025 03:42:20 -0700 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) 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.1544.25 via Frontend Transport; Tue, 24 Jun 2025 03:42:20 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (40.107.236.85) 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.1544.25; Tue, 24 Jun 2025 03:42:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=b02LVnU3BqDxOfunWpqgRxqV2int2koODwINk6m6nNb30zZN0L+Y/EyMDCdmQv/aPRaLUFeNaTGtPfbvsLZKiERWAZV5+O3uVpnkQBDv4sr1z1UUsO4YgiJwjAZmzRPDv8aAYw5nvKTZ/EyJbXR1J+99YThDldGbxYg49x5MJgQutpJi4JnTBz7+O8dUdv/v7fzOaLsFbzxu5mS4Fni+4FPlG+gvPrmSXKMig7bmbXKzb7Q1cWZAjJHfSplUrWu5MnQ2Tbrzvs8VuqOeFIK6TY1Bhk44VOHerDlDK+WOvuOab6TefxiTFq6LHgx7Ao906PxirLs+5jWPpm+k72IUZg== 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=j+ffCf/JC3hBMhj/iHxgMywUfara1cTY7MWTNA6qHPk=; b=LmeQVdjcV8J9XaQYLsFtBFmRkbYyh4ZX0YiVcTNoC+GI0e88PlOBV3ET3ffxrylvCp6tjsfMankpqsIxZtFD6FhIk4SQ/StJkUNz1miudY+pHj5ln0DydlHc/dkZPl4uyxG/D3AF+n5h87afDxb1p8FxEO7WyCsgOA84h/J6NLLFgRmT+faRZpSOjLL3xXt2Mxle2fZe3YjPbhoQRIsRiHAI7TdeHDbfwoSVJFPg02CavkqIvzo7VCBOdLnaLB0rnX6p0N6/kCXKPP98pM6mrkjbsQltrB3k9kyjBU9sUGQcPZG5lorkTNfKpkzHY1lxcJRryXH7Nr40tB/AgjyVCQ== 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 CH0PR11MB5249.namprd11.prod.outlook.com (2603:10b6:610:e0::17) by CY5PR11MB6366.namprd11.prod.outlook.com (2603:10b6:930:3a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.17; Tue, 24 Jun 2025 10:42:04 +0000 Received: from CH0PR11MB5249.namprd11.prod.outlook.com ([fe80::a665:5444:d558:23c3]) by CH0PR11MB5249.namprd11.prod.outlook.com ([fe80::a665:5444:d558:23c3%5]) with mapi id 15.20.8880.015; Tue, 24 Jun 2025 10:42:04 +0000 Content-Type: multipart/alternative; boundary="------------KggnI2AqjSwAq0zwq9wPtxwG" Message-ID: <89c2a2ba-2ed1-4a30-8013-84d7017a7ddd@intel.com> Date: Tue, 24 Jun 2025 16:11:55 +0530 User-Agent: Mozilla Thunderbird Subject: Re: [v4,08/11] drm/xe/vrsr: Refactor d3cold.allowed to a enum Content-Language: en-GB To: Badal Nilawar , , , CC: , , , , , , , , , References: <20250529111654.3140766-9-badal.nilawar@intel.com> From: "Poosa, Karthik" In-Reply-To: <20250529111654.3140766-9-badal.nilawar@intel.com> X-ClientProxiedBy: MA0PR01CA0114.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:11d::12) To CH0PR11MB5249.namprd11.prod.outlook.com (2603:10b6:610:e0::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH0PR11MB5249:EE_|CY5PR11MB6366:EE_ X-MS-Office365-Filtering-Correlation-Id: 66e7e59b-6d9e-4d45-a046-08ddb30bc1de X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|8096899003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?YlQzdlJ1cFQvbThnaHhqV3kxcGdUNDlBVWJmVUE5OUszOStiRlU1a0Mrek9x?= =?utf-8?B?ckpldG5WQit4SlFLWm1Zemo0R1M3K0JmcVAraVFNbExFU3J1ZlNFc3d0TndD?= =?utf-8?B?S0tmcVFDUVVrc1U2ZjlnWWt6NFAwYmZRSEFoSFNiK1NadVhleDJaYzBGSWhj?= =?utf-8?B?WStuS1l1NXNYZStIZDJjdHgrWkVEVytHQUpnTWJFMU9DcmJhRzhhNlFrMmd5?= =?utf-8?B?SnExZFA1aVJSWnpjWDZBUzNLNUhzaExHS3R6OFZoSUFTNDI0K1laaTBpblNB?= =?utf-8?B?bENyUFQ3ejNlcmM2RDVEMWl5OWZBendOQjBia2ZWZHYzb0VpYjU1UGJGQnV0?= =?utf-8?B?RVl6Y2JrQjY0cTg4QUd3YlpmcGtaYzBxZ0JBRVBMY0IrQ1hPZGhKeDBpa0ZQ?= =?utf-8?B?WTBQUzNrWFo2STU2Z1lsdzkxM1F0ZDRtRkphK0hPWUY5c3M1Q1lTR2FhTk8z?= =?utf-8?B?czFGWW5NMndxOTNHMXFHL2QreVZsc05jaXRvMXErY0dmR1dqSldWTStYNXhr?= =?utf-8?B?cFVjNWZ2UU9MRzF5OHFXdkNvSDFNNGQyYk8zWWFEcDRTYkswczJlYzZxa09l?= =?utf-8?B?d095SC9UL0pySGJuemJJekU1a0VEclBQa0o4cERidVpIcFRBYndsL0JUU0VH?= =?utf-8?B?YVNwRjcwckxkbG1ldjNoTGNJYWtZNWJhNnBLemJlRnZjWStJWEszSWV3eU1v?= =?utf-8?B?TDdwejF0R3BLN1Rzeng4SlZaWjZUTkE0aFZLTlpWeGs5RHNxSnJkc2dzcXFR?= =?utf-8?B?aUhOeUlmdFFwd3l0ekpVUk8zczl1eDJVbnpXaDZDNDA5ZHhNRFcwNUhXazlG?= =?utf-8?B?eGRDNUVHMUkyaWxlaXB2L05rRUZSUDdmZDRmeDJuKzFRQ1BNWDd0V0lKOER1?= =?utf-8?B?L1oyUUY3MEt5YTFhTndlOGVhejd6K0wvcmo5MURTMTh2Q2FVSXlBYjdXREhK?= =?utf-8?B?SUlQcW5nMFhnUFZIVjJsbmxHak9GWU81OVgwYVZJMVlBc0s1U0ZwV1RrbGhE?= =?utf-8?B?aWJtaDNZMVZrUnIwODFmMHlLTXdZS01zb0tlTkxST3UvbTRnWG5tRHBTRGd5?= =?utf-8?B?ZHF0Mm42QmZuV0FiTHhjNnBiemhvL2FpOTk2YnhNRVhNbGxkMStCMjl0UnBT?= =?utf-8?B?U0d2R3VodTJoeWZRSDl4Q0g1UVBZSmQ2cFBSU0g0WitiNEErWmlRTmpvc3pB?= =?utf-8?B?NThidWQ1WjB6VUVFa3NoWUgwVW5qVXJzazJNbGJqMnB0MUhxVWx1eStKaVpB?= =?utf-8?B?WlJWM1pQYkNubHA2WmhkK3lUZytEYklJNm13ZW1JbGpobjNpM0NEWC9PdWhv?= =?utf-8?B?TldXVGNZaVpKS2Y4bVJjVC9aT21VRnE3cE1hdWJzd0J0UldFdGhjYSttczVi?= =?utf-8?B?akFlcUdsUzBWb1hvbkl3UDJiRzNmeFZYWU9JU3dQWVg4M3RaYnhFMC96ZUxj?= =?utf-8?B?RHdjNWo3RFFub2pMUUxWUDRtaE51TktKaXZQU3N0b01veXdJakRGenNpSDhC?= =?utf-8?B?NGhmS0tTZEE2VjRwZ2lvVHFMZmQvbGV0U1VSWkUrS1pUcmRWWmtJU0J3MWx6?= =?utf-8?B?V0JPSVJlMWo4citMZERmSGM0WFl3RXFsZEswRzhzdW9YenpMeCt6WkMyZWxY?= =?utf-8?B?dmZkTk9DeDhmaUQ3MEFuOTF4QmpyVkE2bkd6NndONEhpcXQzc0s1OFhiRjlF?= =?utf-8?B?OFRtZmZsZXJTME83U0FmcCtVTE5VTG1aUnpvUjVEb3ZKVkVjTnZMeE1iNzdL?= =?utf-8?B?YlRnT1BhZ1JVUGRxN2t1aG05S0FUbzJCdlhNYUx0WE9kN0lFVGJUckZMZ3Bl?= =?utf-8?B?L1MySG5OZVJCbUUrNWhUNHNCKzNQMTJ3MVFJSE9BcVNGbTJqOFVwMWdXWGhp?= =?utf-8?B?YStON2c5UG9abk5WZjNHaTZZY2hURElqVXZMSWRYZmdCcXNNNWFOWEJleEl1?= =?utf-8?Q?13Ke0bjVahI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH0PR11MB5249.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(8096899003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YkRST1R2RTZJYlFZeER1SG5mR1NaVTVVUHM3Sm91NEYwYmN5b1pZcGRNN0U2?= =?utf-8?B?dW9HUVYzUkp4MTh1TXg4WVBCbndPWlBpOHd3aTNDYzNBOGJVTW16UWtVUTlL?= =?utf-8?B?a0RGeXpzSWtLTWR4QWFoek5Pc3JqdlRwY1pXV0hCcFd6bHErQ3RBUnhTU1p3?= =?utf-8?B?ZTNhZkhZb1lyOFcwWTBKOXBZSkVsR0d0S1Q4QUk4bGdKd3dIVy9tZnp1OGQ2?= =?utf-8?B?V1V6SEI0Njg3K3BtaTF5TUNGZjNxWjVZR2gySmlPYUVFa1k1Y0FpSEkzR3Yv?= =?utf-8?B?M1JFYklWL1JCM0E5UDY1TVZrS0x5R2NLcDl2LzZteHlaTFh4M0VvZWNhK1Vk?= =?utf-8?B?dzU4REpJQ25XYnpPYUd0aFJuM2ZnT082S1l1dS9xa1ZKNmdqZUJlOW5QSFIr?= =?utf-8?B?M2M3eFRwVVIwcHVrNStTU2ZZdXUwRlM2SVdmU2o0TFIxVGtiWm5JeS9BTzZC?= =?utf-8?B?TXBlMG44M0lJcC9VWkNlWDhkb2JFTG5OczBVcTBtK1NvYjRqa0FDVzRCampq?= =?utf-8?B?ZDBuZW5tSExEckZDY0RPSHJNQjFHc2l0c0VISnhjc3RwQ3NVS1d6ek1WZktQ?= =?utf-8?B?citnZHNJR3kxRFVaTlEyUzNibEdUL05PYU8wMzB3U3NINmgzOWZIanpjeHh1?= =?utf-8?B?Y21aNnNmcHBBcksrSUFVajhXbXRERlBKMUNjZmw2ckhKdUsyZzZWVFAvcWxr?= =?utf-8?B?UWxFTHExRitIMVhua0RwbVNBWVBiVy9wUFFuVFRxY3B3WVcrZUJQQ2IxelF6?= =?utf-8?B?QWdzSzZOZ21QZHRMKzI1VFdCSWdVSzZXNFAxM1RiUUp5M2JKL0RUUlI0MnBI?= =?utf-8?B?UmhGQkY1RWVDTWs5S0hCdFp5WlEzcDVGS2JrWkZORk9HY3Nhb1FFT0xjTDcv?= =?utf-8?B?dmx2eFdLMzFMbVRJWXVHM2VUUkI5M2VBSjI4TnlGc2s0UkRPTW9POXNZZU9O?= =?utf-8?B?OTBNNXo5K2czZDNselRiMHFxTVJNR1AzSU1ObmZhRElzNzlLNkJOMGljYlZE?= =?utf-8?B?NVJXeXozRElXWUJQWHRETkZhb0JFOXlaS25OamNyMkZOTGxUSTkwei9RNHdP?= =?utf-8?B?VEJncklwVmN1YXcxR1k2Tnl5UkdhczM3WHlJaU9mcEcwOEJmWGY4aUhXYzg3?= =?utf-8?B?eklpMllVMzJWU2FNTEQwaGtFemxJbEVMNGR3Y2Q3MnpYMTgxVXI1QmpRdjNF?= =?utf-8?B?Rk5vWWd5VkMzSk1kUjRsMmkvVUl0U2JVeTJELzc0WnhKUzBualFpQnZ2WFdU?= =?utf-8?B?cXpvQk5iQ0hBZy9rd1FiY2thdm1YM1dCNndLbjZzbU1qSXRRc3RSOFhnVkRH?= =?utf-8?B?UmhiUnAxVnZHeThSWE13Zi9FcVREYSswVjdRK2hVV3pRU2IyS0x2d2dGa2hD?= =?utf-8?B?Q0d2Rk5DeHhHNWEvN29Hekx2VVc0SVh0cXpBNGs3di83MEZBR0oxcXhHMk52?= =?utf-8?B?eVhEUGNBWm5GWkNydzVMVzBYUXltNFZBc0laOE5LRTVvNVUzV1pjM0F5OUFW?= =?utf-8?B?Ujk5U3pLSmNZVngvWElseEdZL3lZWEtqVnB3cHBXdk9qRnBvNUc4SDd5QlM0?= =?utf-8?B?TFFsRnQ1VWlnQVp6bjN0ajlwZURDZmFla240Y1NXdmRrUmpFVEJTTzBJWDhY?= =?utf-8?B?ZWljQW5yZGtxeEdLNG1YOUhDdDYrUU1DamY3dFh4ZkE1YjhtNkpjckdBRklq?= =?utf-8?B?SnE2MUtmbFM2REwzT1AxYlYzZVFxM1lRTjJRTUNjU2dqS1FuM0VvaDArMldO?= =?utf-8?B?OW56TlJvN2IrZFE2czRPbEJOQkdlQ3ltTGR3ZDczQXVmU0NuOG5yRW1wQ3VG?= =?utf-8?B?YW00Q2s2SFNkdzAwdnhqMEcyZEZvUFpYQ1BNbzc2WlNvdEZrSXNiNTRIczJN?= =?utf-8?B?MGpwdXJ5VzhrYXNaY3hkbVg5Q0VNNlBXb0RWbW00dlNNM0ZnRHlwRnhtb3I1?= =?utf-8?B?Ky90YnFENnFxOGpLVW9xeDJ1OTFSa3FhNzZrWEdjRXc4T2tvM3lKcFF3NzBV?= =?utf-8?B?a1paS0FndlAramdXNFp0YkFmdW9BWEUxdUNNK3lqelZxYzVzWVNZMzQ2YTV6?= =?utf-8?B?SC9icVIzcExkc0ZUSXpxcEoweDZFa0lIMXRLRCtycmgyT3p5OTAwekxoOWFT?= =?utf-8?B?WDVjRXIrak1ad3hOcWhsZzFSc1gwbHNVcVNGWER1ODZIa2U5MVQybmJ5UDM2?= =?utf-8?B?QXc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 66e7e59b-6d9e-4d45-a046-08ddb30bc1de X-MS-Exchange-CrossTenant-AuthSource: CH0PR11MB5249.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2025 10:42:04.3478 (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: 15QrgBL7J1aRjBXl0+Y22rx9g21UtsOcRXkbMzSsgazoCDOTwahfRGh+oVt5H1Qij6pALxbKQB1xnhfHztmzZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6366 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" --------------KggnI2AqjSwAq0zwq9wPtxwG Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit On 29-05-2025 16:46, Badal Nilawar wrote: > From: Anshuman Gupta > > Add xe_d3_state enum to add support for VRAM Self Refresh > d3cold state. > > Signed-off-by: Anshuman Gupta > --- > drivers/gpu/drm/xe/display/xe_display.c | 6 +++--- > drivers/gpu/drm/xe/xe_device_types.h | 5 +++-- > drivers/gpu/drm/xe/xe_pci.c | 6 +++--- > drivers/gpu/drm/xe/xe_pm.c | 16 ++++++++-------- > drivers/gpu/drm/xe/xe_pm.h | 8 +++++++- > 5 files changed, 24 insertions(+), 17 deletions(-) > > diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c > index b3da88b12b35..7ccd9b447ace 100644 > --- a/drivers/gpu/drm/xe/display/xe_display.c > +++ b/drivers/gpu/drm/xe/display/xe_display.c > @@ -433,7 +433,7 @@ void xe_display_pm_runtime_suspend(struct xe_device *xe) > if (!xe->info.probe_display) > return; > > - if (xe->d3cold.allowed) { > + if (xe->d3cold.target_state) { > xe_display_enable_d3cold(xe); > return; > } > @@ -459,7 +459,7 @@ void xe_display_pm_runtime_suspend_late(struct xe_device *xe) > if (!xe->info.probe_display) > return; > > - if (xe->d3cold.allowed) > + if (xe->d3cold.target_state) > xe_display_pm_suspend_late(xe); > > /* > @@ -537,7 +537,7 @@ void xe_display_pm_runtime_resume(struct xe_device *xe) > if (!xe->info.probe_display) > return; > > - if (xe->d3cold.allowed) { > + if (xe->d3cold.target_state) { > xe_display_disable_d3cold(xe); > return; > } > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h > index 5f9a1a358468..48ca0d8c4c45 100644 > --- a/drivers/gpu/drm/xe/xe_device_types.h > +++ b/drivers/gpu/drm/xe/xe_device_types.h > @@ -20,6 +20,7 @@ > #include "xe_memirq_types.h" > #include "xe_oa_types.h" > #include "xe_platform_types.h" > +#include "xe_pm.h" > #include "xe_pmu_types.h" > #include "xe_pt_types.h" > #include "xe_sriov_types.h" > @@ -510,8 +511,8 @@ struct xe_device { > /** @d3cold.capable: Indicates if root port is d3cold capable */ > bool capable; > > - /** @d3cold.allowed: Indicates if d3cold is a valid device state */ > - bool allowed; > + /** @d3cold.target_state: Indicates d3cold target state */ > + enum xe_d3_state target_state; > > /** @d3cold.vrsr_capable: Indicates if d3cold VRAM Self Refresh is supported */ > bool vrsr_capable; > diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c > index 46a99d6ef1a5..5ae1df345416 100644 > --- a/drivers/gpu/drm/xe/xe_pci.c > +++ b/drivers/gpu/drm/xe/xe_pci.c > @@ -977,7 +977,7 @@ static int xe_pci_runtime_suspend(struct device *dev) > > pci_save_state(pdev); > > - if (xe->d3cold.allowed) { > + if (xe->d3cold.target_state) { > d3cold_toggle(pdev, D3COLD_ENABLE); > pci_disable_device(pdev); > pci_ignore_hotplug(pdev); > @@ -1002,7 +1002,7 @@ static int xe_pci_runtime_resume(struct device *dev) > > pci_restore_state(pdev); > > - if (xe->d3cold.allowed) { > + if (xe->d3cold.target_state) { > err = pci_enable_device(pdev); > if (err) > return err; > @@ -1018,7 +1018,7 @@ static int xe_pci_runtime_idle(struct device *dev) > struct pci_dev *pdev = to_pci_dev(dev); > struct xe_device *xe = pdev_to_xe_device(pdev); > > - xe_pm_d3cold_allowed_toggle(xe); > + xe_pm_d3cold_target_state_toggle(xe); > > return 0; > } > diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c > index c84b9b3f7371..b86e95493cb5 100644 > --- a/drivers/gpu/drm/xe/xe_pm.c > +++ b/drivers/gpu/drm/xe/xe_pm.c > @@ -606,7 +606,7 @@ int xe_pm_runtime_suspend(struct xe_device *xe) > > xe_display_pm_runtime_suspend(xe); > > - if (xe->d3cold.allowed) { > + if (xe->d3cold.target_state) { > err = xe_bo_evict_all(xe); > if (err) > goto out_resume; > @@ -653,7 +653,7 @@ int xe_pm_runtime_resume(struct xe_device *xe) > > xe_rpm_lockmap_acquire(xe); > > - if (xe->d3cold.allowed) { > + if (xe->d3cold.target_state) { > err = xe_pcode_ready(xe, true); > if (err) > goto out; > @@ -676,7 +676,7 @@ int xe_pm_runtime_resume(struct xe_device *xe) > > xe_display_pm_runtime_resume(xe); > > - if (xe->d3cold.allowed) { > + if (xe->d3cold.target_state) { > err = xe_bo_restore_late(xe); > if (err) > goto out; > @@ -918,13 +918,13 @@ int xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold) > } > > /** > - * xe_pm_d3cold_allowed_toggle - Check conditions to toggle d3cold.allowed > + * xe_pm_d3cold_target_state_toggle - Check conditions to toggle target_state > * @xe: xe device instance > * > * To be called during runtime_pm idle callback. > * Check for all the D3Cold conditions ahead of runtime suspend. > */ > -void xe_pm_d3cold_allowed_toggle(struct xe_device *xe) > +void xe_pm_d3cold_target_state_toggle(struct xe_device *xe) > { > struct ttm_resource_manager *man; > u32 total_vram_used_mb = 0; > @@ -932,7 +932,7 @@ void xe_pm_d3cold_allowed_toggle(struct xe_device *xe) > int i; > > if (!xe->d3cold.capable) { > - xe->d3cold.allowed = false; > + xe->d3cold.target_state = XE_D3HOT; > return; > } > > @@ -947,9 +947,9 @@ void xe_pm_d3cold_allowed_toggle(struct xe_device *xe) > mutex_lock(&xe->d3cold.lock); > > if (total_vram_used_mb < xe->d3cold.vram_threshold) > - xe->d3cold.allowed = true; > + xe->d3cold.target_state = XE_D3COLD_OFF; > else > - xe->d3cold.allowed = false; > + xe->d3cold.target_state = XE_D3HOT; > > mutex_unlock(&xe->d3cold.lock); > } > diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h > index ba550281b130..c6c2bd6187a5 100644 > --- a/drivers/gpu/drm/xe/xe_pm.h > +++ b/drivers/gpu/drm/xe/xe_pm.h > @@ -12,6 +12,12 @@ > > struct xe_device; > > +enum xe_d3_state { > + XE_D3HOT = 0, > + XE_D3COLD_VRSR, > + XE_D3COLD_OFF, > +}; > + > int xe_pm_suspend(struct xe_device *xe); > int xe_pm_resume(struct xe_device *xe); > > @@ -30,7 +36,7 @@ void xe_pm_runtime_get_noresume(struct xe_device *xe); > bool xe_pm_runtime_resume_and_get(struct xe_device *xe); > void xe_pm_assert_unbounded_bridge(struct xe_device *xe); > int xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold); > -void xe_pm_d3cold_allowed_toggle(struct xe_device *xe); > +void xe_pm_d3cold_target_state_toggle(struct xe_device *xe); > bool xe_rpm_reclaim_safe(const struct xe_device *xe); > struct task_struct *xe_pm_read_callback_task(struct xe_device *xe); > int xe_pm_module_init(void); LGTM. Reviewed-by: Karthik Poosa --------------KggnI2AqjSwAq0zwq9wPtxwG Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 7bit
On 29-05-2025 16:46, Badal Nilawar wrote:
From: Anshuman Gupta <anshuman.gupta@intel.com>

Add xe_d3_state enum to add support for VRAM Self Refresh
d3cold state.

Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
---
 drivers/gpu/drm/xe/display/xe_display.c |  6 +++---
 drivers/gpu/drm/xe/xe_device_types.h    |  5 +++--
 drivers/gpu/drm/xe/xe_pci.c             |  6 +++---
 drivers/gpu/drm/xe/xe_pm.c              | 16 ++++++++--------
 drivers/gpu/drm/xe/xe_pm.h              |  8 +++++++-
 5 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
index b3da88b12b35..7ccd9b447ace 100644
--- a/drivers/gpu/drm/xe/display/xe_display.c
+++ b/drivers/gpu/drm/xe/display/xe_display.c
@@ -433,7 +433,7 @@ void xe_display_pm_runtime_suspend(struct xe_device *xe)
 	if (!xe->info.probe_display)
 		return;
 
-	if (xe->d3cold.allowed) {
+	if (xe->d3cold.target_state) {
 		xe_display_enable_d3cold(xe);
 		return;
 	}
@@ -459,7 +459,7 @@ void xe_display_pm_runtime_suspend_late(struct xe_device *xe)
 	if (!xe->info.probe_display)
 		return;
 
-	if (xe->d3cold.allowed)
+	if (xe->d3cold.target_state)
 		xe_display_pm_suspend_late(xe);
 
 	/*
@@ -537,7 +537,7 @@ void xe_display_pm_runtime_resume(struct xe_device *xe)
 	if (!xe->info.probe_display)
 		return;
 
-	if (xe->d3cold.allowed) {
+	if (xe->d3cold.target_state) {
 		xe_display_disable_d3cold(xe);
 		return;
 	}
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 5f9a1a358468..48ca0d8c4c45 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -20,6 +20,7 @@
 #include "xe_memirq_types.h"
 #include "xe_oa_types.h"
 #include "xe_platform_types.h"
+#include "xe_pm.h"
 #include "xe_pmu_types.h"
 #include "xe_pt_types.h"
 #include "xe_sriov_types.h"
@@ -510,8 +511,8 @@ struct xe_device {
 		/** @d3cold.capable: Indicates if root port is d3cold capable */
 		bool capable;
 
-		/** @d3cold.allowed: Indicates if d3cold is a valid device state */
-		bool allowed;
+		/** @d3cold.target_state: Indicates d3cold target state */
+		enum xe_d3_state target_state;
 
 		/** @d3cold.vrsr_capable: Indicates if d3cold VRAM Self Refresh is supported */
 		bool vrsr_capable;
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 46a99d6ef1a5..5ae1df345416 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -977,7 +977,7 @@ static int xe_pci_runtime_suspend(struct device *dev)
 
 	pci_save_state(pdev);
 
-	if (xe->d3cold.allowed) {
+	if (xe->d3cold.target_state) {
 		d3cold_toggle(pdev, D3COLD_ENABLE);
 		pci_disable_device(pdev);
 		pci_ignore_hotplug(pdev);
@@ -1002,7 +1002,7 @@ static int xe_pci_runtime_resume(struct device *dev)
 
 	pci_restore_state(pdev);
 
-	if (xe->d3cold.allowed) {
+	if (xe->d3cold.target_state) {
 		err = pci_enable_device(pdev);
 		if (err)
 			return err;
@@ -1018,7 +1018,7 @@ static int xe_pci_runtime_idle(struct device *dev)
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct xe_device *xe = pdev_to_xe_device(pdev);
 
-	xe_pm_d3cold_allowed_toggle(xe);
+	xe_pm_d3cold_target_state_toggle(xe);
 
 	return 0;
 }
diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
index c84b9b3f7371..b86e95493cb5 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -606,7 +606,7 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
 
 	xe_display_pm_runtime_suspend(xe);
 
-	if (xe->d3cold.allowed) {
+	if (xe->d3cold.target_state) {
 		err = xe_bo_evict_all(xe);
 		if (err)
 			goto out_resume;
@@ -653,7 +653,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
 
 	xe_rpm_lockmap_acquire(xe);
 
-	if (xe->d3cold.allowed) {
+	if (xe->d3cold.target_state) {
 		err = xe_pcode_ready(xe, true);
 		if (err)
 			goto out;
@@ -676,7 +676,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
 
 	xe_display_pm_runtime_resume(xe);
 
-	if (xe->d3cold.allowed) {
+	if (xe->d3cold.target_state) {
 		err = xe_bo_restore_late(xe);
 		if (err)
 			goto out;
@@ -918,13 +918,13 @@ int xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold)
 }
 
 /**
- * xe_pm_d3cold_allowed_toggle - Check conditions to toggle d3cold.allowed
+ * xe_pm_d3cold_target_state_toggle - Check conditions to toggle target_state
  * @xe: xe device instance
  *
  * To be called during runtime_pm idle callback.
  * Check for all the D3Cold conditions ahead of runtime suspend.
  */
-void xe_pm_d3cold_allowed_toggle(struct xe_device *xe)
+void xe_pm_d3cold_target_state_toggle(struct xe_device *xe)
 {
 	struct ttm_resource_manager *man;
 	u32 total_vram_used_mb = 0;
@@ -932,7 +932,7 @@ void xe_pm_d3cold_allowed_toggle(struct xe_device *xe)
 	int i;
 
 	if (!xe->d3cold.capable) {
-		xe->d3cold.allowed = false;
+		xe->d3cold.target_state = XE_D3HOT;
 		return;
 	}
 
@@ -947,9 +947,9 @@ void xe_pm_d3cold_allowed_toggle(struct xe_device *xe)
 	mutex_lock(&xe->d3cold.lock);
 
 	if (total_vram_used_mb < xe->d3cold.vram_threshold)
-		xe->d3cold.allowed = true;
+		xe->d3cold.target_state = XE_D3COLD_OFF;
 	else
-		xe->d3cold.allowed = false;
+		xe->d3cold.target_state = XE_D3HOT;
 
 	mutex_unlock(&xe->d3cold.lock);
 }
diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h
index ba550281b130..c6c2bd6187a5 100644
--- a/drivers/gpu/drm/xe/xe_pm.h
+++ b/drivers/gpu/drm/xe/xe_pm.h
@@ -12,6 +12,12 @@
 
 struct xe_device;
 
+enum xe_d3_state {
+	XE_D3HOT = 0,
+	XE_D3COLD_VRSR,
+	XE_D3COLD_OFF,
+};
+
 int xe_pm_suspend(struct xe_device *xe);
 int xe_pm_resume(struct xe_device *xe);
 
@@ -30,7 +36,7 @@ void xe_pm_runtime_get_noresume(struct xe_device *xe);
 bool xe_pm_runtime_resume_and_get(struct xe_device *xe);
 void xe_pm_assert_unbounded_bridge(struct xe_device *xe);
 int xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold);
-void xe_pm_d3cold_allowed_toggle(struct xe_device *xe);
+void xe_pm_d3cold_target_state_toggle(struct xe_device *xe);
 bool xe_rpm_reclaim_safe(const struct xe_device *xe);
 struct task_struct *xe_pm_read_callback_task(struct xe_device *xe);
 int xe_pm_module_init(void);
LGTM.

Reviewed-by: Karthik Poosa <karthik.poosa@intel.com>



    
--------------KggnI2AqjSwAq0zwq9wPtxwG--